diff --git a/package.json b/package.json index d248ac8e10..05078338ab 100644 --- a/package.json +++ b/package.json @@ -149,7 +149,6 @@ "react-native-paper": "^4.12.5", "react-native-pell-rich-editor": "^1.8.8", "react-native-pie-chart": "^3.0.1", - "react-native-popover-view": "^5.1.8", "react-native-popup-menu": "^0.16.1", "react-native-qrcode-svg": "^6.2.0", "react-native-reanimated": "^3.6.2", diff --git a/packages/components/BoxDetailTeritori/BoxDetailTeritori.tsx b/packages/components/BoxDetailTeritori/BoxDetailTeritori.tsx deleted file mode 100644 index aae1147747..0000000000 --- a/packages/components/BoxDetailTeritori/BoxDetailTeritori.tsx +++ /dev/null @@ -1,29 +0,0 @@ -import React from "react"; - -import { neutral77 } from "../../utils/style/colors"; -import { fontSemibold12, fontSemibold14 } from "../../utils/style/fonts"; -import { layout } from "../../utils/style/layout"; -import { BrandText } from "../BrandText"; -import { TertiaryBox } from "../boxes/TertiaryBox"; - -export const BoxDetailTeritori: React.FC<{ - title: string; - descripation: string; -}> = ({ title, descripation }) => { - return ( - - - {title} - - - {descripation} - - - ); -}; diff --git a/packages/components/FilePreview/AssetsPagination/AssetsPagination.tsx b/packages/components/FilePreview/AssetsPagination/AssetsPagination.tsx deleted file mode 100644 index bae8529296..0000000000 --- a/packages/components/FilePreview/AssetsPagination/AssetsPagination.tsx +++ /dev/null @@ -1,50 +0,0 @@ -import React from "react"; -import { View } from "react-native"; - -import { LeftContainer } from "./LeftContainer"; -import { PaginationProps } from "./PaginationProps.type"; -import { RightContainer } from "./RightContainer"; -import { layout } from "../../../utils/style/layout"; -import { SpacerRow } from "../../spacer"; - -export const AssetsPagination = ({ - currentPage, - maxPage, - onChangePage, -}: PaginationProps) => { - const handleChangePage = (pageIndex: number) => { - if (pageIndex < 0) { - pageIndex = 0; - } else if (pageIndex >= maxPage) { - pageIndex = maxPage - 1; - } - if (pageIndex !== currentPage) { - onChangePage(pageIndex); - } - }; - - return ( - - - - - - - - ); -}; diff --git a/packages/components/FilePreview/AssetsPagination/LeftContainer.tsx b/packages/components/FilePreview/AssetsPagination/LeftContainer.tsx deleted file mode 100644 index 1cf6c0a19a..0000000000 --- a/packages/components/FilePreview/AssetsPagination/LeftContainer.tsx +++ /dev/null @@ -1,90 +0,0 @@ -import React from "react"; -import { TextInput, View } from "react-native"; - -import { PaginationProps } from "./PaginationProps.type"; -import { - neutral17, - neutral77, - secondaryColor, -} from "../../../utils/style/colors"; -import { fontSemibold14 } from "../../../utils/style/fonts"; -import { layout } from "../../../utils/style/layout"; -import { BrandText } from "../../BrandText"; -import { SEARCH_BAR_INPUT_HEIGHT } from "../../Search/SearchBarInput"; -import { TertiaryBox } from "../../boxes/TertiaryBox"; - -export const LeftContainer = ({ - currentPage, - maxPage, - onChangePage, -}: PaginationProps) => { - return ( - - - - Page {currentPage + 1} of {maxPage} - - - - - | Go to page: - - - { - onChangePage(+value.nativeEvent.text - 1); - }} - /> - - - - ); -}; diff --git a/packages/components/FilePreview/AssetsPagination/PaginationBlock.tsx b/packages/components/FilePreview/AssetsPagination/PaginationBlock.tsx deleted file mode 100644 index 3adaecd8b0..0000000000 --- a/packages/components/FilePreview/AssetsPagination/PaginationBlock.tsx +++ /dev/null @@ -1,23 +0,0 @@ -import React from "react"; -import { TouchableOpacity } from "react-native"; - -import { PaginationBlockProps } from "./PaginationProps.type"; -import { SVG } from "../../SVG"; -import { TertiaryBox } from "../../boxes/TertiaryBox"; - -export const PaginationBlock = ({ source, onPress }: PaginationBlockProps) => { - return ( - onPress()}> - - - - - ); -}; diff --git a/packages/components/FilePreview/AssetsPagination/PaginationProps.type.ts b/packages/components/FilePreview/AssetsPagination/PaginationProps.type.ts deleted file mode 100644 index dba5ddc9af..0000000000 --- a/packages/components/FilePreview/AssetsPagination/PaginationProps.type.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { SvgProps } from "react-native-svg"; - -export interface PaginationProps { - currentPage: number; - maxPage: number; - onChangePage: (page: number) => void; -} - -export interface PaginationBlockProps { - source: React.FC | string; - onPress: () => void; -} diff --git a/packages/components/FilePreview/AssetsPagination/RightContainer.tsx b/packages/components/FilePreview/AssetsPagination/RightContainer.tsx deleted file mode 100644 index 45656162b3..0000000000 --- a/packages/components/FilePreview/AssetsPagination/RightContainer.tsx +++ /dev/null @@ -1,137 +0,0 @@ -import React from "react"; -import { TouchableOpacity, View } from "react-native"; - -import { PaginationBlock } from "./PaginationBlock"; -import { PaginationProps } from "./PaginationProps.type"; -import chevronLeftDoubleSVG from "../../../../assets/icons/chevron-left-double.svg"; -import chevronLeftSVG from "../../../../assets/icons/chevron-left.svg"; -import chevronRightDoubleSVG from "../../../../assets/icons/chevron-right-double.svg"; -import chevronRightSVG from "../../../../assets/icons/chevron-right.svg"; -import { primaryColor } from "../../../utils/style/colors"; -import { fontSemibold14 } from "../../../utils/style/fonts"; -import { layout } from "../../../utils/style/layout"; -import { BrandText } from "../../BrandText"; -import { TertiaryBox } from "../../boxes/TertiaryBox"; -import { SpacerRow } from "../../spacer"; - -export const RightContainer = ({ - currentPage, - maxPage, - onChangePage, -}: PaginationProps) => { - return ( - - - onChangePage(0)} - source={chevronLeftDoubleSVG} - /> - - - onChangePage(currentPage - 1)} - source={chevronLeftSVG} - /> - - - - { - onChangePage( - currentPage + 1 >= maxPage ? currentPage - 1 : currentPage, - ); - }} - > - - - {currentPage + 1 >= maxPage ? currentPage : currentPage + 1} - - - - - - - - { - onChangePage( - currentPage + 2 > maxPage ? currentPage : currentPage + 1, - ); - }} - > - - - {currentPage + 2 > maxPage ? maxPage : currentPage + 2} - - - - - - - onChangePage(currentPage + 1)} - source={chevronRightSVG} - /> - - - onChangePage(maxPage - 1)} - source={chevronRightDoubleSVG} - /> - - - ); -}; diff --git a/packages/components/FilePreview/EditableAudioPreview.tsx b/packages/components/FilePreview/EditableAudioPreview.tsx index 9d2909fc98..09baf409f4 100644 --- a/packages/components/FilePreview/EditableAudioPreview.tsx +++ b/packages/components/FilePreview/EditableAudioPreview.tsx @@ -26,7 +26,7 @@ import { LocalFileData } from "../../utils/types/files"; import { BrandText } from "../BrandText"; import { OptimizedImage } from "../OptimizedImage"; import { SVG } from "../SVG"; -import { FileUploader } from "../fileUploader"; +import { FileUploader } from "../inputs/fileUploader"; import { SelectPicture } from "../mini/SelectPicture"; interface AudioPreviewProps { diff --git a/packages/components/FilePreview/SelectedFilesPreview/ItemView.tsx b/packages/components/FilePreview/SelectedFilesPreview/ItemView.tsx deleted file mode 100644 index c200e1cf42..0000000000 --- a/packages/components/FilePreview/SelectedFilesPreview/ItemView.tsx +++ /dev/null @@ -1,63 +0,0 @@ -import React from "react"; -import { TouchableOpacity, Image } from "react-native"; - -import { secondaryColor } from "../../../utils/style/colors"; -import { fontSemibold13 } from "../../../utils/style/fonts"; -import { layout } from "../../../utils/style/layout"; -import { BrandText } from "../../BrandText"; -import { PrimaryBox } from "../../boxes/PrimaryBox"; - -export const ItemView = ({ - label, - uri, - onPress, -}: { - label: number; - uri: string; - onPress: () => void; -}) => { - return ( - - - - - - - - {label} - - - - ); -}; diff --git a/packages/components/FilePreview/SelectedFilesPreview/SelectedFilesPreview.tsx b/packages/components/FilePreview/SelectedFilesPreview/SelectedFilesPreview.tsx deleted file mode 100644 index ce164b8719..0000000000 --- a/packages/components/FilePreview/SelectedFilesPreview/SelectedFilesPreview.tsx +++ /dev/null @@ -1,104 +0,0 @@ -import React, { useEffect, useState } from "react"; -import { View } from "react-native"; - -import { ItemView } from "./ItemView"; -import { neutral33, neutral55 } from "../../../utils/style/colors"; -import { fontSemibold20 } from "../../../utils/style/fonts"; -import { LocalFileData } from "../../../utils/types/files"; -import { BrandText } from "../../BrandText"; -import { PrimaryBox } from "../../boxes/PrimaryBox"; -import { SpacerColumn } from "../../spacer"; -import { AssetsPagination } from "../AssetsPagination/AssetsPagination"; - -const RowSplitValue = 7; -const itemsPerPage = 14; // Number of items to display per page - -export const SelectedFilesPreview: React.FC<{ - assets: LocalFileData[]; - onSelect: (item: LocalFileData) => void; -}> = ({ assets, onSelect }) => { - const [currentPage, setCurrentPage] = useState(0); - const [totalPage, setTotalPage] = useState(1); - - useEffect(() => { - if (assets) { - setTotalPage(Math.ceil(assets.length / itemsPerPage)); - } - }, [assets]); - - const indexOfLastItem = currentPage * itemsPerPage + itemsPerPage; - const indexOfFirstItem = indexOfLastItem - itemsPerPage; - const currentItems = assets.slice(indexOfFirstItem, indexOfLastItem); - - return ( - - - {currentItems.length > 0 ? ( - <> - - {currentItems.slice(0, RowSplitValue).map((item, index) => ( - { - onSelect(item); - }} - /> - ))} - - - {currentItems.slice(RowSplitValue).map((item, index) => ( - { - onSelect(item); - }} - /> - ))} - - - ) : ( - - - Select assets to preview - - - )} - - {assets.length > 0 && ( - - setCurrentPage(page)} - /> - - - )} - - ); -}; diff --git a/packages/components/HeaderContent/HeaderContent.tsx b/packages/components/HeaderContent/HeaderContent.tsx deleted file mode 100644 index 2282ad88b3..0000000000 --- a/packages/components/HeaderContent/HeaderContent.tsx +++ /dev/null @@ -1,28 +0,0 @@ -import React from "react"; -import { View, ViewStyle } from "react-native"; - -import { neutral77 } from "../../utils/style/colors"; -import { fontSemibold15 } from "../../utils/style/fonts"; -import { layout } from "../../utils/style/layout"; -import { BrandText } from "../BrandText"; - -export const HeaderContent: React.FC<{ - header: string; - children: React.ReactNode; - style?: ViewStyle; -}> = ({ header, children, style }) => { - return ( - - - {header} - - {children} - - ); -}; - -const listToggle: ViewStyle = { - flexDirection: "row", - alignItems: "center", - marginTop: layout.spacing_x1_5, -}; diff --git a/packages/components/NetworkSelector/CustomNetworkSelector.tsx b/packages/components/NetworkSelector/CustomNetworkSelector.tsx deleted file mode 100644 index 719e07ea21..0000000000 --- a/packages/components/NetworkSelector/CustomNetworkSelector.tsx +++ /dev/null @@ -1,98 +0,0 @@ -import React from "react"; -import { StyleProp, TouchableOpacity, View, ViewStyle } from "react-native"; - -import { NetworkSelectorMenu } from "./NetworkSelectorMenu"; -import chevronDownSVG from "../../../assets/icons/chevron-down.svg"; -import chevronUpSVG from "../../../assets/icons/chevron-up.svg"; -import { useDropdowns } from "../../hooks/useDropdowns"; -import { useSelectedNetworkInfo } from "../../hooks/useSelectedNetwork"; -import { NetworkFeature, NetworkKind } from "../../networks"; -import { neutral17, neutral77, secondaryColor } from "../../utils/style/colors"; -import { fontSemibold14 } from "../../utils/style/fonts"; -import { layout } from "../../utils/style/layout"; -import { BrandText } from "../BrandText"; -import { SVG } from "../SVG"; -import { TertiaryBox } from "../boxes/TertiaryBox"; -import { Label } from "../inputs/TextInputCustom"; - -export const CustomNetworkSelector: React.FC<{ - label: string; - style?: StyleProp; - forceNetworkId?: string; - forceNetworkKind?: NetworkKind; - forceNetworkFeatures?: NetworkFeature[]; -}> = ({ - style, - forceNetworkId, - forceNetworkKind, - forceNetworkFeatures, - label, -}) => { - const [isDropdownOpen, setDropdownState, ref] = useDropdowns(); - const selectedNetworkInfo = useSelectedNetworkInfo(); - - return ( - - - - - setDropdownState()} - > - - {selectedNetworkInfo?.displayName} - - - - - - {isDropdownOpen && ( - {}} - optionsMenuwidth={416} - style={{ width: "100%", marginTop: layout.spacing_x0_75 }} - forceNetworkId={forceNetworkId} - forceNetworkKind={forceNetworkKind} - forceNetworkFeatures={forceNetworkFeatures} - /> - )} - - ); -}; diff --git a/packages/components/TopMenu/TopMenuHighlightedNews.tsx b/packages/components/TopMenu/TopMenuHighlightedNews.tsx index 247132d0a4..67ee8f9e8c 100644 --- a/packages/components/TopMenu/TopMenuHighlightedNews.tsx +++ b/packages/components/TopMenu/TopMenuHighlightedNews.tsx @@ -2,7 +2,7 @@ import React from "react"; import { Image } from "react-native"; import { TopMenuSection } from "./TopMenuSection"; -import { useBanners } from "../../hooks/useBanners"; +import { useBanners } from "../../hooks/marketing/useBanners"; import { useSelectedNetworkId } from "../../hooks/useSelectedNetwork"; import { web3ToWeb2URI } from "../../utils/ipfs"; import FlexCol from "../FlexCol"; diff --git a/packages/components/applicationTable/CollectionNameCell.tsx b/packages/components/applicationTable/CollectionNameCell.tsx deleted file mode 100644 index 53e94760aa..0000000000 --- a/packages/components/applicationTable/CollectionNameCell.tsx +++ /dev/null @@ -1,55 +0,0 @@ -import { View, ViewStyle } from "react-native"; - -import avaPNG from "../../../assets/default-images/ava.png"; -import checkBadgeSVG from "../../../assets/icons/certified.svg"; -import { useIsMobile } from "../../hooks/useIsMobile"; -import { fontSemibold11, fontSemibold13 } from "../../utils/style/fonts"; -import { layout } from "../../utils/style/layout"; -import { BrandText } from "../BrandText"; -import { OmniLink } from "../OmniLink"; -import { SVG } from "../SVG"; -import { RoundedGradientImage } from "../images/RoundedGradientImage"; - -interface Props { - rowData: any; // currently i don't know the data types will change it once i will work on functionality - style: ViewStyle; -} - -export const CollectionNameCell = ({ rowData, style }: Props) => { - const isMobile = useIsMobile(); - - return ( - - - - {rowData.collectionNameData} - - - - - - ); -}; diff --git a/packages/components/applicationTable/InnerCellText.tsx b/packages/components/applicationTable/InnerCellText.tsx deleted file mode 100644 index 5a08083680..0000000000 --- a/packages/components/applicationTable/InnerCellText.tsx +++ /dev/null @@ -1,63 +0,0 @@ -import { ReactNode } from "react"; -import { StyleProp, TextStyle, View, ViewStyle } from "react-native"; - -import cryptoLogoSVG from "../../../assets/icons/crypto-logo.svg"; -import SolanaCircleSVG from "../../../assets/icons/networks/solana-circle.svg"; -import { useIsMobile } from "../../hooks/useIsMobile"; -import { secondaryColor } from "../../utils/style/colors"; -import { fontSemibold11, fontSemibold13 } from "../../utils/style/fonts"; -import { layout } from "../../utils/style/layout"; -import { BrandText } from "../BrandText"; -import { SVG } from "../SVG"; - -export const InnerCellText: React.FC<{ - style?: StyleProp; - textStyle?: StyleProp; - children: ReactNode; - isSolanaIcon?: boolean; - isCryptoLogo?: boolean; -}> = ({ - children, - style, - textStyle, - isSolanaIcon = false, - isCryptoLogo = false, -}) => { - const isMobile = useIsMobile(); - return ( - - {isSolanaIcon && ( - - - - )} - {isCryptoLogo && ( - - - - )} - - {children} - - - ); -}; diff --git a/packages/components/applicationTable/LinkIconAndRedirect.tsx b/packages/components/applicationTable/LinkIconAndRedirect.tsx deleted file mode 100644 index d7c75b9dd3..0000000000 --- a/packages/components/applicationTable/LinkIconAndRedirect.tsx +++ /dev/null @@ -1,36 +0,0 @@ -import { - Linking, - StyleProp, - TouchableOpacity, - View, - ViewStyle, -} from "react-native"; - -import externalLinkSVG from "../../../assets/icons/external-link.svg"; -import { secondaryColor } from "../../utils/style/colors"; -import { layout } from "../../utils/style/layout"; -import { SVG } from "../SVG"; - -export const LinkIconAndRedirect: React.FC<{ - style?: StyleProp; - value: string; -}> = ({ value, style }) => { - return ( - - { - Linking.openURL(value); - }} - > - - - - ); -}; diff --git a/packages/components/applicationTable/PercentageVolumeCell.tsx b/packages/components/applicationTable/PercentageVolumeCell.tsx deleted file mode 100644 index 37c5a466a8..0000000000 --- a/packages/components/applicationTable/PercentageVolumeCell.tsx +++ /dev/null @@ -1,46 +0,0 @@ -import { StyleProp, View, ViewStyle } from "react-native"; - -import downArrowSVG from "../../../assets/icons/downArrow.svg"; -import upArrowSVG from "../../../assets/icons/upArrow.svg"; -import { useIsMobile } from "../../hooks/useIsMobile"; -import { errorColor, successColor } from "../../utils/style/colors"; -import { fontSemibold11, fontSemibold13 } from "../../utils/style/fonts"; -import { layout } from "../../utils/style/layout"; -import { BrandText } from "../BrandText"; -import { SVG } from "../SVG"; - -export const PercentageVolumeCell: React.FC<{ - value: string; - style?: StyleProp; -}> = ({ value, style }) => { - const isMobile = useIsMobile(); - const isPositive = value.includes("+"); - - return ( - - {isPositive ? : } - - {value} - - - ); -}; diff --git a/packages/components/carousels/NewsCarouselSection.tsx b/packages/components/carousels/NewsCarouselSection.tsx index 880e5cbf66..cebbd5babd 100644 --- a/packages/components/carousels/NewsCarouselSection.tsx +++ b/packages/components/carousels/NewsCarouselSection.tsx @@ -1,4 +1,3 @@ -import { useQuery } from "@tanstack/react-query"; import React, { useEffect, useRef } from "react"; import { View, TouchableOpacity } from "react-native"; import Carousel, { ICarouselInstance } from "react-native-reanimated-carousel"; @@ -8,13 +7,13 @@ import chevronRightSVG from "../../../assets/icons/chevron-right.svg"; import { News } from "../../api/marketplace/v1/marketplace"; import { useMaxResolution } from "../../hooks/useMaxResolution"; import { useSelectedNetworkId } from "../../hooks/useSelectedNetwork"; -import { getNetwork } from "../../networks"; -import { getMarketplaceClient } from "../../utils/backend"; import { FullWidthSeparator } from "../FullWidthSeparator"; import { SVG } from "../SVG"; import { Section } from "../Section"; import { NewsBox } from "../hub/NewsBox"; +import { useNews } from "@/hooks/marketing/useNews"; + export const NewsCarouselSection: React.FC = () => { const { width } = useMaxResolution(); const carouselRef = useRef(null); @@ -62,22 +61,3 @@ export const NewsCarouselSection: React.FC = () => { ); }; - -const useNews = (networkId: string) => { - const { data } = useQuery( - ["news", networkId], - async () => { - const backendClient = getMarketplaceClient(networkId); - if (!backendClient) { - return []; - } - const network = getNetwork(networkId); - const { news } = await backendClient.News({ testnet: network?.testnet }); - return news; - }, - { - staleTime: Infinity, - }, - ); - return data; -}; diff --git a/packages/components/fileUploader/FileUploader.web.tsx b/packages/components/fileUploader/FileUploader.web.tsx deleted file mode 100644 index e121b56d69..0000000000 --- a/packages/components/fileUploader/FileUploader.web.tsx +++ /dev/null @@ -1,228 +0,0 @@ -import React, { FC, SyntheticEvent, useRef, useState } from "react"; -import { TouchableOpacity, View } from "react-native"; - -import { FileUploaderProps } from "./FileUploader.type"; -import { formatFile } from "./formatFile"; -import uploadSVG from "../../../assets/icons/upload.svg"; -import { useFeedbacks } from "../../context/FeedbacksProvider"; -import { - gradientColorBlue, - gradientColorDarkerBlue, - gradientColorTurquoise, - neutral17, - neutral77, - withAlpha, -} from "../../utils/style/colors"; -import { fontSemibold14 } from "../../utils/style/fonts"; -import { layout } from "../../utils/style/layout"; -import { BrandText } from "../BrandText"; -import { DeleteButton } from "../FilePreview/DeleteButton"; -import { SVG } from "../SVG"; -import { LegacyPrimaryBox } from "../boxes/LegacyPrimaryBox"; -import { GradientText } from "../gradientText"; -import { Label } from "../inputs/TextInputCustom"; - -export const FileUploader: FC = ({ - label, - style, - fileImageStyle, - onUpload, - // multiple is not used at true for now, needs to refactor in parents - multiple, - mimeTypes, - children, - maxUpload, - setIsLoading, -}) => { - const { setToastError } = useFeedbacks(); - const hiddenFileInput = useRef(null); - const [file, setFile] = useState(""); - - const handleFiles = async (files: File[]) => { - const _files = multiple ? files : [files[0]]; - let supportedFiles = [...files].filter((file) => - mimeTypes?.includes(file.type), - ); - - if (maxUpload && supportedFiles.length) { - supportedFiles = supportedFiles.slice(0, maxUpload); - } - - if (supportedFiles.length === 0) { - setToastError({ - title: "Unsupported file type.", - message: "Sorry we couldn't upload file.", - }); - return; - } else if (multiple && supportedFiles.length !== _files.length) { - setToastError({ - title: "Unsupported file type.", - message: "Sorry we couldn't upload some files at the moment.", - }); - } - if (!multiple) { - setFile(URL.createObjectURL(_files[0])); - } - - const formattedFiles = await Promise.all( - supportedFiles.map(async (file) => await formatFile(file)), - ); - - onUpload(formattedFiles); - }; - - const handleChange = async (event: SyntheticEvent) => { - setIsLoading?.(true); - const targetEvent = event.target as HTMLInputElement; - - if (targetEvent.files && targetEvent.files[0]) { - await handleFiles(targetEvent?.files as unknown as File[]); - } - setIsLoading?.(false); - }; - - const handleClick = () => { - hiddenFileInput?.current?.click?.(); - }; - - const dropHandler = async (ev: any) => { - setIsLoading?.(true); - ev.preventDefault(); - if (ev.dataTransfer.items) { - const files = [...ev.dataTransfer.items] - .filter((item: any) => item.kind === "file") - .map((item: any) => item.getAsFile()); - await handleFiles(files); - } else { - await handleFiles(ev.dataTransfer.files); - } - setIsLoading?.(false); - }; - - const dragOverHandler = (ev: SyntheticEvent) => { - ev.preventDefault(); - }; - - const InputComponent = ( - - ); - - if (children) { - return ( - <> - {children({ onPress: handleClick })} - {InputComponent} - - ); - } - - return ( - <> - - {!!label && } - -
- {file ? ( - <> - { - setFile(""); - onUpload([]); - }} - style={{ top: 12, right: 12 }} - /> - Uploaded file - - ) : ( - - - - - - - - Browse file - - - Or drag & drop here - - - - - - )} -
-
-
- {InputComponent} - - ); -}; diff --git a/packages/components/hub/HubLanding.tsx b/packages/components/hub/HubLanding.tsx index e71475cbd7..5969401a57 100644 --- a/packages/components/hub/HubLanding.tsx +++ b/packages/components/hub/HubLanding.tsx @@ -11,7 +11,7 @@ import { Sort, SortDirection, } from "../../api/marketplace/v1/marketplace"; -import { useBanners } from "../../hooks/useBanners"; +import { useBanners } from "../../hooks/marketing/useBanners"; import { useMaxResolution } from "../../hooks/useMaxResolution"; import { useSelectedNetworkId } from "../../hooks/useSelectedNetwork"; import { Link } from "../Link"; diff --git a/packages/components/inputs/FileUploaderSmall/FileUploaderSmall.type.ts b/packages/components/inputs/FileUploaderSmall/FileUploaderSmall.type.ts index c0b28964e7..4e34f06d21 100644 --- a/packages/components/inputs/FileUploaderSmall/FileUploaderSmall.type.ts +++ b/packages/components/inputs/FileUploaderSmall/FileUploaderSmall.type.ts @@ -20,3 +20,7 @@ export interface FileUploaderSmallProps { onPressDelete?: () => void; disabled?: boolean; } + +export interface FileUploaderSmallHandle { + resetFiles: () => void; +} diff --git a/packages/components/inputs/FileUploaderSmall/FileUploaderSmall.web.tsx b/packages/components/inputs/FileUploaderSmall/FileUploaderSmall.web.tsx index a40451f0ec..6cda44ab67 100644 --- a/packages/components/inputs/FileUploaderSmall/FileUploaderSmall.web.tsx +++ b/packages/components/inputs/FileUploaderSmall/FileUploaderSmall.web.tsx @@ -1,7 +1,16 @@ -import React, { FC, SyntheticEvent, useRef, useState } from "react"; +import React, { + forwardRef, + SyntheticEvent, + useImperativeHandle, + useRef, + useState, +} from "react"; import { View } from "react-native"; -import { FileUploaderSmallProps } from "./FileUploaderSmall.type"; +import { + FileUploaderSmallHandle, + FileUploaderSmallProps, +} from "./FileUploaderSmall.type"; import { useFeedbacks } from "../../../context/FeedbacksProvider"; import { secondaryColor } from "../../../utils/style/colors"; import { fontSemibold14 } from "../../../utils/style/fonts"; @@ -10,173 +19,191 @@ import { BrandText } from "../../BrandText"; import { SVGorImageIcon } from "../../SVG/SVGorImageIcon"; import { PrimaryBox } from "../../boxes/PrimaryBox"; import { Label } from "../TextInputCustom"; +import { formatFile } from "../fileUploader/formatFile"; import addSVG from "@/assets/icons/add-circle.svg"; import filesSVG from "@/assets/icons/files.svg"; import { DeleteButton } from "@/components/FilePreview/DeleteButton"; import { OptimizedImage } from "@/components/OptimizedImage"; import { CustomPressable } from "@/components/buttons/CustomPressable"; -import { formatFile } from "@/components/fileUploader/formatFile"; import { SpacerRow } from "@/components/spacer"; import { pluralOrNot } from "@/utils/text"; import { LocalFileData } from "@/utils/types/files"; -export const FileUploaderSmall: FC = ({ - label, - style, - onUpload, - multiple, - mimeTypes, - maxUpload, - filesCount, - setIsLoading, - required, - boxStyle, - imageToShow, - onPressDelete, - disabled, -}) => { - const { setToast } = useFeedbacks(); - const hiddenFileInput = useRef(null); - const [hovered, setHovered] = useState(false); - const [addedFiles, setAddedFiles] = useState([]); +export const FileUploaderSmall = forwardRef< + FileUploaderSmallHandle, + FileUploaderSmallProps +>( + ( + { + label, + style, + onUpload, + multiple, + mimeTypes, + maxUpload, + filesCount, + setIsLoading, + required, + boxStyle, + imageToShow, + onPressDelete, + disabled, + }, + forwardRef, + ) => { + const { setToast } = useFeedbacks(); + const hiddenFileInputRef = useRef(null); + const [hovered, setHovered] = useState(false); + const [addedFiles, setAddedFiles] = useState([]); - const handleFiles = async (files: File[]) => { - const _files = multiple ? files : [files[0]]; - let supportedFiles = [...files].filter((file) => - mimeTypes?.includes(file.type), - ); - if (maxUpload && supportedFiles.length) { - supportedFiles = supportedFiles.slice(0, maxUpload); - } + useImperativeHandle(forwardRef, () => ({ + resetFiles: () => { + if (hiddenFileInputRef.current) { + hiddenFileInputRef.current.value = ""; + setAddedFiles([]); + } + }, + })); - if ( - supportedFiles.length === 0 || - (multiple && supportedFiles.length !== _files.length) - ) { - setToast({ - title: "Unsupported file type", - duration: 5000, - mode: "normal", - type: "error", - }); - return; - } - const formattedFiles = await Promise.all( - supportedFiles.map(async (file) => await formatFile(file)), - ); - setAddedFiles(formattedFiles); - onUpload(formattedFiles); - }; + const handleFiles = async (files: File[]) => { + const _files = multiple ? files : [files[0]]; + let supportedFiles = [...files].filter((file) => + mimeTypes?.includes(file.type), + ); + if (maxUpload && supportedFiles.length) { + supportedFiles = supportedFiles.slice(0, maxUpload); + } - const handleChange = async (event: SyntheticEvent) => { - setIsLoading?.(true); - const targetEvent = event.target as HTMLInputElement; + if ( + supportedFiles.length === 0 || + (multiple && supportedFiles.length !== _files.length) + ) { + setToast({ + title: "Unsupported file type", + duration: 5000, + mode: "normal", + type: "error", + }); + return; + } + const formattedFiles = await Promise.all( + supportedFiles.map(async (file) => await formatFile(file)), + ); + setAddedFiles(formattedFiles); + onUpload(formattedFiles); + }; - if (targetEvent.files && targetEvent.files[0]) { - await handleFiles(targetEvent?.files as unknown as File[]); - } - setIsLoading?.(false); - }; - const handleClick = () => { - hiddenFileInput?.current?.click?.(); - }; + const handleChange = async (event: SyntheticEvent) => { + setIsLoading?.(true); + const targetEvent = event.target as HTMLInputElement; - const InputComponent = ( - - ); + if (targetEvent.files && targetEvent.files[0]) { + await handleFiles(targetEvent?.files as unknown as File[]); + } + setIsLoading?.(false); + }; + const handleClick = () => { + hiddenFileInputRef?.current?.click?.(); + }; - return ( - setHovered(true)} - onHoverOut={() => setHovered(false)} - onPress={handleClick} - disabled={disabled} - > - {!!label && ( - - )} + const InputComponent = ( + + ); - {imageToShow ? ( - - {onPressDelete && ( - - )} - - - ) : ( - - - 0 ? filesSVG : addSVG} - iconSize={32} + return ( + setHovered(true)} + onHoverOut={() => setHovered(false)} + onPress={handleClick} + disabled={disabled} + > + {!!label && ( + + )} + + {imageToShow ? ( + + {onPressDelete && ( + + )} + - - - - {!multiple && filesCount && filesCount === addedFiles.length - ? addedFiles[0].file.name - : !multiple && !filesCount - ? "Select file" - : multiple && filesCount - ? filesCount + ` ${pluralOrNot("file", filesCount)} selected` - : multiple && !filesCount - ? "Select files" - : ""} - - - )} + + 0 ? filesSVG : addSVG} + iconSize={32} + /> + - {InputComponent} - - ); -}; + + + {!multiple && filesCount && filesCount === addedFiles.length + ? addedFiles[0].file.name + : !multiple && !filesCount + ? "Select file" + : multiple && filesCount + ? filesCount + + ` ${pluralOrNot("file", filesCount)} selected` + : multiple && !filesCount + ? "Select files" + : ""} + + + )} + + {InputComponent} + + ); + }, +); diff --git a/packages/components/fileUploader/FileUploader.tsx b/packages/components/inputs/fileUploader/FileUploader.tsx similarity index 79% rename from packages/components/fileUploader/FileUploader.tsx rename to packages/components/inputs/fileUploader/FileUploader.tsx index 6689f66e82..6d399ce211 100644 --- a/packages/components/fileUploader/FileUploader.tsx +++ b/packages/components/inputs/fileUploader/FileUploader.tsx @@ -2,7 +2,6 @@ import React, { useState } from "react"; import { View, Image, TouchableOpacity } from "react-native"; import { FileUploaderProps } from "./FileUploader.type"; -import uploadSVG from "../../../assets/icons/upload.svg"; import { gradientColorBlue, gradientColorDarkerBlue, @@ -10,24 +9,34 @@ import { neutral17, neutral77, withAlpha, -} from "../../utils/style/colors"; -import { fontSemibold14 } from "../../utils/style/fonts"; -import { layout } from "../../utils/style/layout"; -import { BrandText } from "../BrandText"; -import { DeleteButton } from "../FilePreview/DeleteButton"; -import { SVG } from "../SVG"; -import { LegacyPrimaryBox } from "../boxes/LegacyPrimaryBox"; -import { GradientText } from "../gradientText"; -import { Label } from "../inputs/TextInputCustom"; +} from "../../../utils/style/colors"; +import { fontSemibold14 } from "../../../utils/style/fonts"; +import { layout } from "../../../utils/style/layout"; +import { BrandText } from "../../BrandText"; +import { DeleteButton } from "../../FilePreview/DeleteButton"; +import { SVG } from "../../SVG"; +import { LegacyPrimaryBox } from "../../boxes/LegacyPrimaryBox"; +import { GradientText } from "../../gradientText"; +import { Label } from "../TextInputCustom"; + +import uploadSVG from "@/assets/icons/upload.svg"; //FIXME: Doesn't work for now => Only the .web version is used -export const FileUploader: React.FC = ({ label, style }) => { +export const FileUploader: React.FC = ({ + label, + style, + required, +}) => { const [files, setFiles] = useState([]); return ( - {!!label && } + {!!label && ( + + )} void }) => React.ReactNode; maxUpload?: number; setIsLoading?: (value: boolean) => void; + required?: boolean; } diff --git a/packages/components/inputs/fileUploader/FileUploader.web.tsx b/packages/components/inputs/fileUploader/FileUploader.web.tsx new file mode 100644 index 0000000000..76263b68e4 --- /dev/null +++ b/packages/components/inputs/fileUploader/FileUploader.web.tsx @@ -0,0 +1,236 @@ +import React, { FC, SyntheticEvent, useRef, useState } from "react"; +import { View } from "react-native"; + +import { FileUploaderProps } from "./FileUploader.type"; +import { formatFile } from "./formatFile"; +import { useFeedbacks } from "../../../context/FeedbacksProvider"; +import { + neutral17, + neutral77, + secondaryColor, +} from "../../../utils/style/colors"; +import { fontSemibold14 } from "../../../utils/style/fonts"; +import { layout } from "../../../utils/style/layout"; +import { BrandText } from "../../BrandText"; +import { DeleteButton } from "../../FilePreview/DeleteButton"; +import { SVG } from "../../SVG"; +import { GradientText } from "../../gradientText"; +import { Label } from "../TextInputCustom"; + +import uploadSVG from "@/assets/icons/upload.svg"; +import { PrimaryBox } from "@/components/boxes/PrimaryBox"; +import { CustomPressable } from "@/components/buttons/CustomPressable"; + +export const FileUploader: FC = ({ + label, + style, + fileImageStyle, + onUpload, + // multiple is not used at true for now, needs to refactor in parents + multiple, + mimeTypes, + children, + maxUpload, + setIsLoading, + required, +}) => { + const { setToast } = useFeedbacks(); + const hiddenFileInput = useRef(null); + const [file, setFile] = useState(""); + const [hovered, setHovered] = useState(false); + + const handleFiles = async (files: File[]) => { + const _files = multiple ? files : [files[0]]; + let supportedFiles = [...files].filter((file) => + mimeTypes?.includes(file.type), + ); + + if (maxUpload && supportedFiles.length) { + supportedFiles = supportedFiles.slice(0, maxUpload); + } + + if ( + supportedFiles.length === 0 || + (multiple && supportedFiles.length !== _files.length) + ) { + setToast({ + title: "Unsupported file type", + duration: 5000, + mode: "normal", + type: "error", + }); + return; + } + if (!multiple) { + setFile(URL.createObjectURL(_files[0])); + } + + const formattedFiles = await Promise.all( + supportedFiles.map(async (file) => await formatFile(file)), + ); + + onUpload(formattedFiles); + }; + + const handleChange = async (event: SyntheticEvent) => { + setIsLoading?.(true); + const targetEvent = event.target as HTMLInputElement; + + if (targetEvent.files && targetEvent.files[0]) { + await handleFiles(targetEvent?.files as unknown as File[]); + } + setIsLoading?.(false); + }; + + const handleClick = () => { + hiddenFileInput?.current?.click?.(); + }; + + const dropHandler = async (ev: any) => { + setIsLoading?.(true); + ev.preventDefault(); + if (ev.dataTransfer.items) { + const files = [...ev.dataTransfer.items] + .filter((item: any) => item.kind === "file") + .map((item: any) => item.getAsFile()); + await handleFiles(files); + } else { + await handleFiles(ev.dataTransfer.files); + } + setIsLoading?.(false); + }; + + const dragOverHandler = (ev: SyntheticEvent) => { + ev.preventDefault(); + }; + + const InputComponent = ( + + ); + + if (children) { + return ( + <> + {children({ onPress: handleClick })} + {InputComponent} + + ); + } + + return ( + <> + setHovered(true)} + onHoverOut={() => setHovered(false)} + onPress={handleClick} + > + {!!label && ( + + )} +
+ {file ? ( + <> + { + setFile(""); + onUpload([]); + }} + style={{ top: 12, right: 12 }} + /> + Uploaded file + + ) : ( + + + + + + + + Browse file + + + Or drag & drop here + + + + + + )} +
+
+ {InputComponent} + + ); +}; diff --git a/packages/components/fileUploader/formatFile.ts b/packages/components/inputs/fileUploader/formatFile.ts similarity index 78% rename from packages/components/fileUploader/formatFile.ts rename to packages/components/inputs/fileUploader/formatFile.ts index 449bff02fb..ae50f50375 100644 --- a/packages/components/fileUploader/formatFile.ts +++ b/packages/components/inputs/fileUploader/formatFile.ts @@ -1,11 +1,11 @@ +import { getAudioData } from "../../../utils/audio"; import { AUDIO_MIME_TYPES, IMAGE_MIME_TYPES, VIDEO_MIME_TYPES, -} from "./../../utils/mime"; -import { getAudioData } from "../../utils/audio"; -import { FileType, LocalFileData } from "../../utils/types/files"; -import { getVideoData } from "../../utils/video"; +} from "../../../utils/mime"; +import { FileType, LocalFileData } from "../../../utils/types/files"; +import { getVideoData } from "../../../utils/video"; export const formatFile = async (file: File): Promise => { let fileType: FileType = "file"; diff --git a/packages/components/fileUploader/index.ts b/packages/components/inputs/fileUploader/index.ts similarity index 100% rename from packages/components/fileUploader/index.ts rename to packages/components/inputs/fileUploader/index.ts diff --git a/packages/components/music/UploadMusicModal/UploadTrack.tsx b/packages/components/music/UploadMusicModal/UploadTrack.tsx index c98a7cc2aa..5402837b9e 100644 --- a/packages/components/music/UploadMusicModal/UploadTrack.tsx +++ b/packages/components/music/UploadMusicModal/UploadTrack.tsx @@ -38,8 +38,8 @@ import { BrandText } from "../../BrandText"; import { EditableAudioPreview } from "../../FilePreview/EditableAudioPreview"; import { SVG } from "../../SVG"; import { PrimaryButton } from "../../buttons/PrimaryButton"; -import { FileUploader } from "../../fileUploader"; import { TextInputCustom } from "../../inputs/TextInputCustom"; +import { FileUploader } from "../../inputs/fileUploader"; import { FeedPostingProgressBar } from "../../loaders/FeedPostingProgressBar"; import { FeedFeeText } from "../../socialFeed/FeedFeeText"; import { SpacerColumn, SpacerRow } from "../../spacer"; diff --git a/packages/components/navigation/getNormalModeScreens.tsx b/packages/components/navigation/getNormalModeScreens.tsx index daefa37c4d..018b0473b1 100644 --- a/packages/components/navigation/getNormalModeScreens.tsx +++ b/packages/components/navigation/getNormalModeScreens.tsx @@ -3,9 +3,6 @@ import React from "react"; import { platformScreens } from "./platformSpecific"; import { getNav, screenTitle } from "./util"; -import { AdministrationDashboardScreen } from "@/screens/AdministrationDashboard/AdministrationDashboardScreen"; -import { AllProjectAdministrationDashScreen } from "@/screens/AllProjectAdministrationDash/AllProjectAdministrationDashScreen"; -import { ApplicationRewiewScreen } from "@/screens/ApplicationRewiew/ApplicationRewiew"; import { BurnCapitalScreen } from "@/screens/BurnCapital/BurnCapitalScreen"; import { ComingSoonScreen } from "@/screens/ComingSoon/ComingSoon"; import { CoreDAOScreen } from "@/screens/CoreDAO/CoreDAOScreen"; @@ -19,11 +16,9 @@ import { GovernanceScreen } from "@/screens/Governance/GovernanceScreen"; import { GuardiansScreen } from "@/screens/Guardians/GuardiansScreen"; import { HashtagFeedScreen } from "@/screens/HashtagFeed/HashtagFeedScreen"; import { HomeScreen } from "@/screens/Home/HomeScreen"; -import { LaunchpadApplyScreen } from "@/screens/Launchpad/LaunchpadApplyScreen"; -import { LaunchpadCreateScreen } from "@/screens/Launchpad/LaunchpadCreateScreen"; -import { LaunchpadScreen } from "@/screens/Launchpad/LaunchpadScreen"; +import { LaunchpadApplyScreen } from "@/screens/Launchpad/LaunchpadApply/LaunchpadApplyScreen"; +import { LaunchpadScreen } from "@/screens/Launchpad/LaunchpadHome/LaunchpadScreen"; import { MintCollectionScreen } from "@/screens/Launchpad/MintCollectionScreen"; -import { LaunchpadApplicationsScreen } from "@/screens/LaunchpadApplications/LaunchpadApplicationsScreen"; import { LaunchpadERC20CreateSaleScreen } from "@/screens/LaunchpadERC20/LaunchpadERC20Sales/LaunchpadERC20CreateSaleScreen"; import { LaunchpadERC20SalesScreen } from "@/screens/LaunchpadERC20/LaunchpadERC20Sales/LaunchpadERC20SalesScreen"; import { LaunchpadERC20Screen } from "@/screens/LaunchpadERC20/LaunchpadERC20Screen"; @@ -53,7 +48,6 @@ import { ProjectsMakeRequestScreen } from "@/screens/Projects/ProjectsMakeReques import { ProjectsManagerScreen } from "@/screens/Projects/ProjectsManagerScreen"; import { ProjectsPaymentScreen } from "@/screens/Projects/ProjectsPaymentScreen"; import { ProjectsScreen } from "@/screens/Projects/ProjectsScreen"; -import { ReadyLaunchpadApplicationsScreen } from "@/screens/ReadyLaunchpadApplications/ReadyLaunchpadApplicationsScreen"; import { RiotGameBreedingScreen } from "@/screens/RiotGame/RiotGameBreedingScreen"; import { RiotGameEnrollScreen } from "@/screens/RiotGame/RiotGameEnrollScreen"; import { RiotGameFightScreen } from "@/screens/RiotGame/RiotGameFightScreen"; @@ -131,47 +125,6 @@ export const getNormalModeScreens = ({ appMode }: { appMode: AppMode }) => { component={RiotersFooterScreen} options={{ header: () => null, title: screenTitle("Rioters Footer") }} /> - null, - title: screenTitle("Administration Dashboard"), - }} - /> - null, - title: screenTitle("Launchpad Applications"), - }} - /> - null, - title: screenTitle("Ready Launchpad Applications"), - }} - /> - null, - title: screenTitle("All Launchpad Applications"), - }} - /> - null, - title: screenTitle("Application Review"), - }} - /> - { title: screenTitle("Launchpad (Apply)"), }} /> - null, - title: screenTitle("Launchpad (Apply)"), - }} - /> + void; - height?: number; - style?: StyleProp; -}> = ({ style, sortDirection, onChangeSortDirection, height = 48 }) => { - const handlePress = () => { - if (sortDirection === SortDirection.SORT_DIRECTION_DESCENDING) { - onChangeSortDirection(SortDirection.SORT_DIRECTION_ASCENDING); - } else { - onChangeSortDirection(SortDirection.SORT_DIRECTION_DESCENDING); - } - }; - - return ( - - - - - - {sortDirection === SortDirection.SORT_DIRECTION_ASCENDING - ? "Highest " - : "Lowest "} - Total Vol - - - - - - ); -}; diff --git a/packages/components/video/UploadVideoModal.tsx b/packages/components/video/UploadVideoModal.tsx index 406414286c..3690abd5a0 100644 --- a/packages/components/video/UploadVideoModal.tsx +++ b/packages/components/video/UploadVideoModal.tsx @@ -44,8 +44,8 @@ import { OptimizedImage } from "../OptimizedImage"; import { SVG } from "../SVG"; import { CustomPressable } from "../buttons/CustomPressable"; import { PrimaryButton } from "../buttons/PrimaryButton"; -import { FileUploader } from "../fileUploader"; import { TextInputCustom } from "../inputs/TextInputCustom"; +import { FileUploader } from "../inputs/fileUploader"; import { FeedPostingProgressBar } from "../loaders/FeedPostingProgressBar"; import { SelectAudioVideo } from "../mini/SelectAudioVideo"; import { SelectPicture } from "../mini/SelectPicture"; diff --git a/packages/hooks/dao/useDAOProposalById.ts b/packages/hooks/dao/useDAOProposalById.ts new file mode 100644 index 0000000000..9225fb2787 --- /dev/null +++ b/packages/hooks/dao/useDAOProposalById.ts @@ -0,0 +1,148 @@ +import { GnoJSONRPCProvider } from "@gnolang/gno-js-client"; +import { useQuery, useQueryClient } from "@tanstack/react-query"; +import { useCallback } from "react"; + +import { useDAOFirstProposalModule } from "./useDAOProposalModules"; +import { + cosmwasmToAppProposal, + GnoDAOProposal, + gnoToAppProposal, +} from "./useDAOProposals"; + +import { useFeedbacks } from "@/context/FeedbacksProvider"; +import { DaoProposalSingleQueryClient } from "@/contracts-clients/dao-proposal-single/DaoProposalSingle.client"; +import { + NetworkKind, + mustGetNonSigningCosmWasmClient, + parseUserId, +} from "@/networks"; +import { extractGnoJSONString } from "@/utils/gno"; + +const daoProposalByIdQueryKey = ( + daoId: string | undefined, + proposalId: number | undefined, +) => ["dao-proposals", daoId, proposalId]; + +export const useDAOProposalById = ( + daoId: string | undefined, + proposalId: number | undefined, +) => { + const { setToast } = useFeedbacks(); + const [network, daoAddress] = parseUserId(daoId); + const { daoProposal: cosmWasmDAOProposal, ...cosmWasmOther } = + useCosmWasmDAOProposalById(daoId, proposalId); + + const { data: gnoDAOProposal, ...gnoOther } = useQuery( + daoProposalByIdQueryKey(daoId, proposalId), + async () => { + try { + if (network?.kind !== NetworkKind.Gno) + throw new Error("Not a Gno network"); + if (!proposalId) throw new Error("Missing proposal id"); + + const provider = new GnoJSONRPCProvider(network.endpoint); + + const gnoProposal: GnoDAOProposal = extractGnoJSONString( + await provider.evaluateExpression( + daoAddress, + `getProposalJSON(0, ${proposalId})`, + ), + ); + + return gnoToAppProposal(gnoProposal); + } catch (err) { + const title = + "Failed to fetch the Gno DAO proposal\nThis proposal might not exist in this DAO"; + const message = err instanceof Error ? err.message : `${err}`; + setToast({ + title, + message, + type: "error", + mode: "normal", + }); + console.error(title, message); + return null; + } + }, + { + staleTime: Infinity, + enabled: !!(daoId && network?.kind === NetworkKind.Gno && proposalId), + }, + ); + + if (network?.kind === NetworkKind.Gno) { + return { + daoProposal: gnoDAOProposal, + ...gnoOther, + }; + } + + return { + daoProposal: cosmWasmDAOProposal, + ...cosmWasmOther, + }; +}; + +const useCosmWasmDAOProposalById = ( + daoId: string | undefined, + proposalId: number | undefined, +) => { + const { setToast } = useFeedbacks(); + const [network] = parseUserId(daoId); + const networkId = network?.id; + const { daoFirstProposalModule } = useDAOFirstProposalModule(daoId); + const proposalModuleAddress = daoFirstProposalModule?.address; + + const { data, ...other } = useQuery( + daoProposalByIdQueryKey(daoId, proposalId), + async () => { + try { + if (!networkId) throw new Error("Missing network id"); + if (!proposalModuleAddress) + throw new Error("No proposal module address"); + if (!proposalId) throw new Error("Missing proposal id"); + + const cosmwasmClient = await mustGetNonSigningCosmWasmClient(networkId); + const daoProposalClient = new DaoProposalSingleQueryClient( + cosmwasmClient, + proposalModuleAddress, + ); + + const daoProposal = await daoProposalClient.proposal({ + proposalId, + }); + + return cosmwasmToAppProposal(daoProposal); + } catch (err) { + const title = + "Failed to fetch the Cosmos DAO proposal\nThis proposal might not exist in this DAO"; + const message = err instanceof Error ? err.message : `${err}`; + setToast({ + title, + message, + type: "error", + mode: "normal", + }); + console.error(title, message); + return null; + } + }, + { + staleTime: Infinity, + enabled: !!(networkId && proposalModuleAddress && proposalId), + }, + ); + return { daoProposal: data, ...other }; +}; + +export const useInvalidateDAOProposalById = ( + daoId: string | undefined, + proposalId: number | undefined, +) => { + const queryClient = useQueryClient(); + return useCallback( + () => + queryClient.invalidateQueries(daoProposalByIdQueryKey(daoId, proposalId)), + [queryClient, daoId, proposalId], + ); +}; diff --git a/packages/hooks/dao/useDAOProposals.ts b/packages/hooks/dao/useDAOProposals.ts index 1c144c2e2b..6ff82b99b0 100644 --- a/packages/hooks/dao/useDAOProposals.ts +++ b/packages/hooks/dao/useDAOProposals.ts @@ -31,7 +31,7 @@ type GnoProposalVotes = { abstain: number; }; -type GnoDAOProposal = { +export type GnoDAOProposal = { id: number; title: string; description: string; @@ -51,7 +51,7 @@ export const useDAOProposals = (daoId: string | undefined) => { const { daoProposals: cosmWasmDAOProposals, ...cosmWasmOther } = useCosmWasmDAOProposals(daoId); const { data: gnoDAOProposals, ...gnoOther } = useQuery( - [daoProposalsQueryKey(daoId), NetworkKind.Gno], + daoProposalsQueryKey(daoId), async () => { if (network?.kind !== NetworkKind.Gno) return []; const provider = new GnoJSONRPCProvider(network.endpoint); @@ -67,47 +67,7 @@ export const useDAOProposals = (daoId: string | undefined) => { for (let i = 0; i < gnoProposals.length; i++) { const prop = gnoProposals[i]; - const title = prop.title; - const description = prop.description; - const status = prop.status.toLowerCase() as Status; - const proposer = prop.proposer; - const yesVotes = prop.votes.yes; - const noVotes = prop.votes.no; - const abstainVotes = prop.votes.abstain; - const threshold = - prop.threshold.thresholdQuorum.threshold.percent / 10000; - const quorum = prop.threshold.thresholdQuorum.quorum.percent / 10000; - const actions = prop.messages.map((m) => JSON.stringify(m)); - // TODO: render actions - proposals.push({ - id: i, - proposal: { - title, - description, - votes: { - yes: yesVotes.toString(), - no: noVotes.toString(), - abstain: abstainVotes.toString(), - }, - allow_revoting: false, - expiration: "TODO" as any, - msgs: prop.messages.map((m) => ({ - ...m, - gno: true, - })), - actions, - proposer, - start_height: prop.startHeight, - status, - threshold: { - threshold_quorum: { - threshold: { percent: `${threshold}` }, - quorum: { percent: `${quorum}` }, - }, - }, - total_power: prop.totalPower.toString(), - }, - }); + proposals.push(gnoToAppProposal(prop)); } return proposals; }, @@ -133,7 +93,7 @@ const useCosmWasmDAOProposals = (daoId: string | undefined) => { const proposalModuleAddress = daoFirstProposalModule?.address; const { data, ...other } = useQuery( - [daoProposalsQueryKey(daoId), NetworkKind.Cosmos], + daoProposalsQueryKey(daoId), async () => { if (!networkId || !proposalModuleAddress) return null; @@ -153,13 +113,7 @@ const useCosmWasmDAOProposals = (daoId: string | undefined) => { }); if (listProposals.proposals.length === 0) break; allProposals.push( - ...listProposals.proposals.map((p) => ({ - ...p, - proposal: { - ...p.proposal, - actions: [] as string[], - }, - })), + ...listProposals.proposals.map((p) => cosmwasmToAppProposal(p)), ); startAfter += listProposals.proposals.length; } @@ -178,3 +132,61 @@ export const useInvalidateDAOProposals = (daoId: string | undefined) => { [queryClient, daoId], ); }; + +export const gnoToAppProposal = (proposal: GnoDAOProposal) => { + // TODO: render actions + const title = proposal.title; + const description = proposal.description; + const status = proposal.status.toLowerCase() as Status; + const proposer = proposal.proposer; + const yesVotes = proposal.votes.yes; + const noVotes = proposal.votes.no; + const abstainVotes = proposal.votes.abstain; + const threshold = + proposal.threshold.thresholdQuorum.threshold.percent / 10000; + const quorum = proposal.threshold.thresholdQuorum.quorum.percent / 10000; + const actions = proposal.messages.map((m) => JSON.stringify(m)); + + const appProposal: AppProposalResponse = { + id: proposal.id, + proposal: { + title, + description, + votes: { + yes: yesVotes.toString(), + no: noVotes.toString(), + abstain: abstainVotes.toString(), + }, + allow_revoting: false, + expiration: "TODO" as any, + msgs: proposal.messages.map((m) => ({ + ...m, + gno: true, + })), + actions, + proposer, + start_height: proposal.startHeight, + status, + threshold: { + threshold_quorum: { + threshold: { percent: `${threshold}` }, + quorum: { percent: `${quorum}` }, + }, + }, + total_power: proposal.totalPower.toString(), + }, + }; + + return appProposal; +}; + +export const cosmwasmToAppProposal = (proposal: ProposalResponse) => { + const appPrpoposal: AppProposalResponse = { + ...proposal, + proposal: { + ...proposal.proposal, + actions: [] as string[], + }, + }; + return appPrpoposal; +}; diff --git a/packages/hooks/useBanners.ts b/packages/hooks/marketing/useBanners.ts similarity index 100% rename from packages/hooks/useBanners.ts rename to packages/hooks/marketing/useBanners.ts diff --git a/packages/hooks/marketing/useNews.ts b/packages/hooks/marketing/useNews.ts new file mode 100644 index 0000000000..88cdc1fd5d --- /dev/null +++ b/packages/hooks/marketing/useNews.ts @@ -0,0 +1,23 @@ +import { useQuery } from "@tanstack/react-query"; + +import { getNetwork } from "@/networks"; +import { getMarketplaceClient } from "@/utils/backend"; + +export const useNews = (networkId: string) => { + const { data } = useQuery( + ["news", networkId], + async () => { + const backendClient = getMarketplaceClient(networkId); + if (!backendClient) { + return []; + } + const network = getNetwork(networkId); + const { news } = await backendClient.News({ testnet: network?.testnet }); + return news; + }, + { + staleTime: Infinity, + }, + ); + return data; +}; diff --git a/packages/screens/AdministrationDashboard/AdministrationDashboardScreen.tsx b/packages/screens/AdministrationDashboard/AdministrationDashboardScreen.tsx deleted file mode 100644 index 60365538f3..0000000000 --- a/packages/screens/AdministrationDashboard/AdministrationDashboardScreen.tsx +++ /dev/null @@ -1,217 +0,0 @@ -import React, { useState } from "react"; -import { TouchableOpacity, View, useWindowDimensions } from "react-native"; - -import { ApplicationStatusCard } from "./component/ApplicationStatusCard"; -import { ApplicationTable } from "./component/ApplicationTable"; -import { CurrentlyHighlightedProject } from "./component/CurrentlyHighLightedProject"; -import { GenesisExplore } from "./component/GenesisExplore"; - -import { BrandText } from "@/components/BrandText"; -import { ScreenContainer } from "@/components/ScreenContainer"; -import { SecondaryBox } from "@/components/boxes/SecondaryBox"; -import { Tabs } from "@/components/tabs/Tabs"; -import { useAppNavigation } from "@/hooks/navigation/useAppNavigation"; -import { primaryColor } from "@/utils/style/colors"; -import { - fontSemibold13, - fontSemibold20, - fontSemibold28, -} from "@/utils/style/fonts"; -import { layout } from "@/utils/style/layout"; - -const MD_BREAKPOINT = 820; -type TabsListType = "pendingApllications" | "pendingConfirmations"; -type SecTabsListType = - | "highlightedNewsHero" - | "upcomingProjectsCarousel" - | "liveSaleinProgress"; - -const dummyData = [ - { - rank: 1, - collectionNameData: "The R!ot", - collectionNetwork: "teritori", - TwitterURL: "https://www.lipsum.com/", - DiscordURL: "https://www.lipsum.com/", - expectedTotalSupply: 3000, - expectedPublicMintPrice: "550 L", - expectedMintDate: new Date(), - }, - { - rank: 2, - collectionNameData: "throw back push chair", - collectionNetwork: "solanaL", - TwitterURL: "https://www.lipsum.com/", - DiscordURL: "https://www.lipsum.com/", - expectedTotalSupply: 3000, - expectedPublicMintPrice: "550 L", - expectedMintDate: new Date(), - }, - { - rank: 3, - collectionNameData: "cachablesadly back push chair", - collectionNetwork: "solanaL", - TwitterURL: "https://www.lipsum.com/", - DiscordURL: "https://www.lipsum.com/", - expectedTotalSupply: 3000, - expectedPublicMintPrice: "550 L", - expectedMintDate: new Date(), - }, -]; - -export const AdministrationDashboardScreen: React.FC = () => { - const navigation = useAppNavigation(); - const { width } = useWindowDimensions(); - - const tabs = { - pendingApllications: { - name: "Pending Apllications", - badgeCount: 32, - }, - pendingConfirmations: { - name: "Pending Confirmations", - badgeCount: 42, - }, - }; - - const secTabs = { - highlightedNewsHero: { - name: "Highlighted News Hero", - badgeCount: 3, - }, - upcomingProjectsCarousel: { - name: "Upcoming Projects Carousel", - badgeCount: 12, - }, - liveSaleinProgress: { - name: "Live Sale in Progress", - badgeCount: 52, - }, - }; - - const [selectedTab, setSelectedTab] = useState( - "pendingApllications", - ); - - const [selectedSecTab, setSelectedSecTab] = useState( - "highlightedNewsHero", - ); - - const [isEditHighlighted, setIsEditHighlighted] = useState(false); - - return ( - } - headerChildren={ - Administration Dashboard - } - responsive - onBackPress={() => navigation.goBack()} - > - - - - Launchpad Administration Overview - - - - = MD_BREAKPOINT ? "row" : "column", - justifyContent: "center", - }} - > - {}} //TODO: don't forget to rewrite onPress function if possible - isReady={false} - /> - {}} // TODO: don't forget to rewrite onPress function if possible - style={{ - marginHorizontal: - width >= MD_BREAKPOINT ? layout.spacing_x1_5 : 0, - marginVertical: width >= MD_BREAKPOINT ? 0 : layout.spacing_x1_5, - }} - isReady={false} - /> - navigation.navigate("ReadyLaunchpadApplications")} - isReady - /> - - - - - - - - - navigation.navigate("LaunchpadApplications")} - > - - - Load More - - - - - - - - {isEditHighlighted ? ( - - ) : ( - - )} - - - - ); -}; diff --git a/packages/screens/AdministrationDashboard/component/ApplicationStatusCard.tsx b/packages/screens/AdministrationDashboard/component/ApplicationStatusCard.tsx deleted file mode 100644 index 6a06135acb..0000000000 --- a/packages/screens/AdministrationDashboard/component/ApplicationStatusCard.tsx +++ /dev/null @@ -1,70 +0,0 @@ -import React from "react"; -import { View, StyleProp, TouchableOpacity } from "react-native"; - -import chevronRightSVG from "../../../../assets/icons/chevron-right.svg"; - -import { BrandText } from "@/components/BrandText"; -import { SVG } from "@/components/SVG"; -import { BoxStyle } from "@/components/boxes/Box"; -import { PrimaryBox } from "@/components/boxes/PrimaryBox"; -import { - neutral00, - neutral11, - neutral30, - neutral44, -} from "@/utils/style/colors"; -import { fontSemibold16, fontSemibold24 } from "@/utils/style/fonts"; -import { layout } from "@/utils/style/layout"; - -export const ApplicationStatusCard: React.FC<{ - label: string; - count: number; - style?: StyleProp; - onPress: () => void; - isReady?: boolean; -}> = ({ label, style, count, isReady, onPress }) => { - return ( - - - {label} - - {count} - - - - - - - ); -}; diff --git a/packages/screens/AdministrationDashboard/component/ApplicationTable.tsx b/packages/screens/AdministrationDashboard/component/ApplicationTable.tsx deleted file mode 100644 index 4d1a4bf994..0000000000 --- a/packages/screens/AdministrationDashboard/component/ApplicationTable.tsx +++ /dev/null @@ -1,163 +0,0 @@ -import moment from "moment"; -import React from "react"; -import { FlatList, View } from "react-native"; - -import dotsSVG from "../../../../assets/icons/dots.svg"; - -import { SVG } from "@/components/SVG"; -import { CollectionNameCell } from "@/components/applicationTable/CollectionNameCell"; -import { InnerCellText } from "@/components/applicationTable/InnerCellText"; -import { LinkIconAndRedirect } from "@/components/applicationTable/LinkIconAndRedirect"; -import { TableHeader } from "@/components/table/TableHeader"; -import { TableColumns } from "@/components/table/utils"; -import { useIsMobile } from "@/hooks/useIsMobile"; -import { mineShaftColor } from "@/utils/style/colors"; -import { layout, screenContentMaxWidthLarge } from "@/utils/style/layout"; - -const TABLE_COLUMNS: TableColumns = { - rank: { - label: "#", - flex: 1, - }, - collectionNameData: { - label: "Collection Name", - flex: 5, - }, - collectionNetwork: { - label: "Collection Network", - flex: 3, - }, - TwitterURL: { - label: "Twitter URL", - flex: 2, - }, - DiscordURL: { - label: "Discord URL", - flex: 2, - }, - expectedTotalSupply: { - label: "Expected Total Supply", - flex: 3, - }, - expectedPublicMintPrice: { - label: "Expected Public Mint Price", - flex: 3, - }, - expectedMintDate: { - label: "Expected Mint Date", - flex: 3, - }, -}; - -export const ApplicationTable: React.FC<{ - rows: any[]; // currently i don't know the data types will change it once i will work on functionality -}> = ({ rows }) => { - const isMobile = useIsMobile(); - - return ( - - - - } - keyExtractor={(item) => item.id} - style={{ - minHeight: 220, - borderTopColor: mineShaftColor, - borderTopWidth: 1, - }} - /> - - ); -}; - -const ApplicationRowData: React.FC<{ rowData: any }> = ({ rowData }) => { - const isMobile = useIsMobile(); - - return ( - - - {rowData.rank} - - - - {rowData["collectionNetwork"]} - - {!isMobile && ( - <> - - - - {rowData.expectedTotalSupply} - - - {rowData.expectedPublicMintPrice} - - - - {moment(rowData.expectedMintDate).format("MMM D YYYY")} - - - - - )} - - ); -}; diff --git a/packages/screens/AdministrationDashboard/component/CarouselHero.tsx b/packages/screens/AdministrationDashboard/component/CarouselHero.tsx deleted file mode 100644 index 4db2fd87a1..0000000000 --- a/packages/screens/AdministrationDashboard/component/CarouselHero.tsx +++ /dev/null @@ -1,91 +0,0 @@ -import React, { useRef, useState } from "react"; -import { useWindowDimensions, View, ViewStyle } from "react-native"; -import Carousel, { ICarouselInstance } from "react-native-reanimated-carousel"; - -import guardianPng from "../../../../assets/default-images/guardian_1.png"; - -import { OptimizedImage } from "@/components/OptimizedImage"; -import { neutral00, neutral44, secondaryColor } from "@/utils/style/colors"; -import { layout } from "@/utils/style/layout"; - -const MD_BREAKPOINT = 820; - -const data: string[] = [guardianPng, guardianPng, guardianPng]; - -export const CarouselHero = () => { - const { width } = useWindowDimensions(); - const isBreakPoint = width >= MD_BREAKPOINT; - const [currentPage, setCurrentPage] = useState(0); - const carouselRef = useRef(null); - - return ( - - g.enableTrackpadTwoFingerGesture(true)} - onProgressChange={(_, absoluteProgress) => { - setCurrentPage(Math.round(absoluteProgress)); - }} - autoPlay - pagingEnabled - autoPlayInterval={7000} - renderItem={({ item, index }) => ( - - )} - /> - - - {data.map((_, index) => ( - - ))} - - - ); -}; - -const pagination: ViewStyle = { - flexDirection: "row", - justifyContent: "center", - alignItems: "center", - marginTop: layout.spacing_x1_5, - position: "absolute", - bottom: 10, - backgroundColor: neutral00, - padding: layout.spacing_x1, - borderRadius: 100, -}; - -const paginationDot: ViewStyle = { - width: 8, - height: 4, - borderRadius: 4, - marginRight: 4, - backgroundColor: neutral44, -}; - -const activeDot: ViewStyle = { - width: 16, - backgroundColor: secondaryColor, -}; diff --git a/packages/screens/AdministrationDashboard/component/CurrentlyHighLightedProject.tsx b/packages/screens/AdministrationDashboard/component/CurrentlyHighLightedProject.tsx deleted file mode 100644 index 764f120963..0000000000 --- a/packages/screens/AdministrationDashboard/component/CurrentlyHighLightedProject.tsx +++ /dev/null @@ -1,63 +0,0 @@ -import React from "react"; -import { TouchableOpacity, View, ViewStyle } from "react-native"; - -import { GuardiansBox } from "./GuardiansBox"; -import blackCricleSVG from "../../../../assets/icons/black-check.svg"; - -import { BrandText } from "@/components/BrandText"; -import { SVG } from "@/components/SVG"; -import { BoxStyle } from "@/components/boxes/Box"; -import { neutral17, neutralA3, primaryColor } from "@/utils/style/colors"; -import { fontSemibold13, fontSemibold14 } from "@/utils/style/fonts"; -import { layout } from "@/utils/style/layout"; - -type Props = { - setIsEditHighlighted: (val: boolean) => void; -}; - -export const CurrentlyHighlightedProject = ({ - setIsEditHighlighted, -}: Props) => { - return ( - - setIsEditHighlighted(false)} - style={{ alignSelf: "flex-start" }} - > - - - - Save changes - - - - - - Select the desired collections to display and drag them in the desired - order. - - - - - - - ); -}; - -const boxBtn: BoxStyle = { - flexDirection: "row", - alignSelf: "flex-start", - borderRadius: 6, - alignItems: "center", - justifyContent: "center", - paddingHorizontal: layout.spacing_x1_5, - paddingVertical: layout.spacing_x1, - backgroundColor: primaryColor, - marginTop: layout.spacing_x3, -}; - -const marginVertical24: ViewStyle = { - marginVertical: layout.spacing_x4, -}; diff --git a/packages/screens/AdministrationDashboard/component/GenesisExplore.tsx b/packages/screens/AdministrationDashboard/component/GenesisExplore.tsx deleted file mode 100644 index cb8768c79d..0000000000 --- a/packages/screens/AdministrationDashboard/component/GenesisExplore.tsx +++ /dev/null @@ -1,115 +0,0 @@ -import React from "react"; -import { TouchableOpacity, View, useWindowDimensions } from "react-native"; - -import { CarouselHero } from "./CarouselHero"; -import penSVG from "../../../../assets/icons/pen.svg"; - -import { BrandText } from "@/components/BrandText"; -import { SVG } from "@/components/SVG"; -import { PrimaryBox } from "@/components/boxes/PrimaryBox"; -import { SecondaryBox } from "@/components/boxes/SecondaryBox"; -import { GradientText } from "@/components/gradientText"; -import { useAppNavigation } from "@/hooks/navigation/useAppNavigation"; -import { neutral17, primaryColor } from "@/utils/style/colors"; -import { - fontSemibold12, - fontSemibold13, - fontSemibold14, - fontSemibold24, -} from "@/utils/style/fonts"; -import { layout } from "@/utils/style/layout"; - -const MD_BREAKPOINT = 820; -const LG_BREAKPOINT = 1200; -type Props = { setIsEditHighlighted: (val: boolean) => void }; - -export const GenesisExplore = ({ setIsEditHighlighted }: Props) => { - const navigation = useAppNavigation(); - const { width } = useWindowDimensions(); - const isBreakPoint = width >= MD_BREAKPOINT; - - return ( - - - setIsEditHighlighted(true)} - style={{ alignSelf: "flex-start" }} - > - - - - - - Edit Hero - - - - - - - Genesis Guardians - - EXCLUSIVE GENESIS TERITORI COLLECTION - - navigation.navigate("AllProjectAdministrationDash")} - > - - - Explore collection - - - - - - {width >= LG_BREAKPOINT && } - - - ); -}; diff --git a/packages/screens/AdministrationDashboard/component/GuardiansBox.tsx b/packages/screens/AdministrationDashboard/component/GuardiansBox.tsx deleted file mode 100644 index 3fe2b6d49b..0000000000 --- a/packages/screens/AdministrationDashboard/component/GuardiansBox.tsx +++ /dev/null @@ -1,202 +0,0 @@ -import React, { useState } from "react"; -import { - FlatList, - ImageBackground, - TouchableOpacity, - View, - useWindowDimensions, - ViewStyle, -} from "react-native"; - -import { GuardiansList } from "./GuardiansList"; -import guardianPng from "../../../../assets/default-images/guardian_1.png"; -import addCircleSVG from "../../../../assets/icons/add-circle.svg"; -import dotSVG from "../../../../assets/icons/dot-more.svg"; -import downSVG from "../../../../assets/icons/down.svg"; -import trashSVG from "../../../../assets/icons/trash-white.svg"; -import upSVG from "../../../../assets/icons/up.svg"; - -import { BrandText } from "@/components/BrandText"; -import { SVG } from "@/components/SVG"; -import { BoxStyle } from "@/components/boxes/Box"; -import { PrimaryBox } from "@/components/boxes/PrimaryBox"; -import { TertiaryBox } from "@/components/boxes/TertiaryBox"; -import { SearchInput } from "@/components/sorts/SearchInput"; -import { neutral33, neutral00 } from "@/utils/style/colors"; -import { fontSemibold14 } from "@/utils/style/fonts"; - -const MD_BREAKPOINT = 820; - -export const GuardiansBox = () => { - const { width } = useWindowDimensions(); - - const [guardiansHandler, setGuardiansHandler] = useState([1, 2]); - const [openedList, setOpenedList] = useState(); - - return ( - = MD_BREAKPOINT ? "row" : "column" }}> - {guardiansHandler?.map((d: number, index: number) => { - return ( - <> - = MD_BREAKPOINT ? "19%" : "100%" }, - ]} - > - - - {index + 1} - - - - - - - - setOpenedList((old) => (old === index ? -1 : index)) - } - style={toggleBox} - > - - Genesis Guardians - - - {openedList === index ? ( - - ) : ( - - )} - - - {openedList === index ? ( - - - {}} //TODO: don't forget to rewrite onPress function if possible - /> - ( - - )} - keyExtractor={(item) => item.id} - style={{ - marginTop: 16, - marginLeft: 5, - }} - contentContainerStyle={{ - height: 180, - }} - /> - - - ) : ( - - - - - - )} - - - - ); - })} - {guardiansHandler?.length < 5 ? ( - = MD_BREAKPOINT ? "19%" : "100%", - marginTop: 52, - padding: 12, - height: 325, - }} - > - setGuardiansHandler([...guardiansHandler, 1])} - style={plusBox} - > - - - - - Add more - - - - ) : null} - - ); -}; - -const dotBackground: ViewStyle = { - backgroundColor: neutral33, - height: 35, - width: 35, - borderRadius: 100, - alignItems: "center", - justifyContent: "center", -}; - -const trashBtnBox: ViewStyle = { - backgroundColor: neutral00, - height: 35, - width: 35, - borderRadius: 100, - alignItems: "center", - justifyContent: "center", - position: "absolute", - right: 16, - bottom: 10, -}; - -const insideBoxMap: ViewStyle = { - flexDirection: "row", - justifyContent: "space-between", - alignItems: "center", - height: 40, -}; - -const toggleBox: ViewStyle = { - flexDirection: "row", - justifyContent: "space-between", - alignItems: "center", - marginBottom: 16, -}; - -const viewBox: ViewStyle = { - width: "19%", - marginHorizontal: 8, -}; - -const herosLisBox: BoxStyle = { - padding: 12, - marginTop: 12, - height: 325, -}; - -const plusBox: ViewStyle = { - flexDirection: "row", - alignItems: "center", - justifyContent: "center", - width: "100%", - height: "100%", -}; - -const imageBgStyle: ViewStyle = { - alignItems: "center", - justifyContent: "center", - height: 260, - width: "100%", -}; diff --git a/packages/screens/AdministrationDashboard/component/GuardiansList.tsx b/packages/screens/AdministrationDashboard/component/GuardiansList.tsx deleted file mode 100644 index 0799977870..0000000000 --- a/packages/screens/AdministrationDashboard/component/GuardiansList.tsx +++ /dev/null @@ -1,69 +0,0 @@ -import React, { FC, useState } from "react"; -import { Image, TouchableOpacity, ViewStyle } from "react-native"; -import Popover from "react-native-popover-view"; - -import { TooltipContant } from "./TooltipContant"; -import avaPNG from "../../../../assets/default-images/ava.png"; -import checkBadgeSVG from "../../../../assets/icons/certified.svg"; - -import { BrandText } from "@/components/BrandText"; -import { SVG } from "@/components/SVG"; -import { neutral44, neutral11 } from "@/utils/style/colors"; -import { fontSemibold16 } from "@/utils/style/fonts"; -import { layout } from "@/utils/style/layout"; - -export const GuardiansList: FC<{ index: number }> = ({ index }) => { - const [viewPopover, setViewPopover] = useState(-1); - - const setViewPopoverHandler = (index: number) => { - setViewPopover((old) => (old === index ? -1 : index)); - }; - - return ( - <> - setViewPopoverHandler(index + 1)} - style={listToggle} - > - - - Meebits - - -
- } - onRequestClose={() => setViewPopover(-1)} - popoverStyle={popoverStyle} - backgroundStyle={{ opacity: 0 }} - > - - - - ); -}; - -const listToggle: ViewStyle = { - flexDirection: "row", - alignItems: "center", - marginVertical: 5, -}; - -const popoverStyle = { - backgroundColor: neutral11, - width: 425, - padding: layout.spacing_x2, - borderWidth: 2, - borderColor: neutral44, - borderRadius: 12, -}; diff --git a/packages/screens/AdministrationDashboard/component/TooltipContant.tsx b/packages/screens/AdministrationDashboard/component/TooltipContant.tsx deleted file mode 100644 index e5bd2ccc06..0000000000 --- a/packages/screens/AdministrationDashboard/component/TooltipContant.tsx +++ /dev/null @@ -1,110 +0,0 @@ -import React from "react"; -import { Image, View, ViewStyle } from "react-native"; - -import avaPNG from "../../../../assets/default-images/ava.png"; -import checkBadgeSVG from "../../../../assets/icons/certified.svg"; -import SolanaCircleSVG from "../../../../assets/icons/networks/solana-circle.svg"; - -import { BrandText } from "@/components/BrandText"; -import { HeaderContent } from "@/components/HeaderContent/HeaderContent"; -import { SVG } from "@/components/SVG"; -import { InnerCellText } from "@/components/applicationTable/InnerCellText"; -import { lightblue, neutral00 } from "@/utils/style/colors"; -import { fontSemibold16 } from "@/utils/style/fonts"; -import { layout } from "@/utils/style/layout"; - -export const TooltipContant = () => { - return ( - <> - - - - - - - Meebits - - - - - - - Complete and ready to mint - - - - - - - - - Solana - - - - - - Yes - - - - - - ); -}; - -const listToggle: ViewStyle = { - flexDirection: "row", - alignItems: "center", -}; - -const flexRowCenter: ViewStyle = { - flexDirection: "row", - alignItems: "center", - justifyContent: "space-between", -}; diff --git a/packages/screens/AllProjectAdministrationDash/AllProjectAdministrationDashScreen.tsx b/packages/screens/AllProjectAdministrationDash/AllProjectAdministrationDashScreen.tsx deleted file mode 100644 index 20583d8a36..0000000000 --- a/packages/screens/AllProjectAdministrationDash/AllProjectAdministrationDashScreen.tsx +++ /dev/null @@ -1,145 +0,0 @@ -import React, { useState } from "react"; -import { View } from "react-native"; - -import { AllApplicationTable } from "./component/AllApplicationTable"; - -import { BrandText } from "@/components/BrandText"; -import { ScreenContainer } from "@/components/ScreenContainer"; -import { HighVolSortButton } from "@/components/sorts/HighVolSortButton"; -import { Tabs } from "@/components/tabs/Tabs"; -import { useAppNavigation } from "@/hooks/navigation/useAppNavigation"; -import { useIsMobile } from "@/hooks/useIsMobile"; -import { neutral33 } from "@/utils/style/colors"; -import { fontSemibold20, fontSemibold28 } from "@/utils/style/fonts"; -import { layout } from "@/utils/style/layout"; - -type TabsListType = "all" | "verified" | "ethereum" | "solana" | "cosmos"; - -const dummyData = [ - { - rank: 1, - collectionNameData: "Meebits", - floor: "3.9", - totalVol: "2,052,499,51", - vol: "78,231.57", - volPerctage: "+24.26%", - }, - { - rank: 1, - collectionNameData: "Meebits", - floor: "3.9", - totalVol: "2,052,499,51", - vol: "78,231.57", - volPerctage: "-24.26%", - }, - { - rank: 1, - collectionNameData: "Meebits", - floor: "3.9", - totalVol: "2,052,499,51", - vol: "78,231.57", - volPerctage: "+24.26%", - }, - { - rank: 1, - collectionNameData: "Meebits", - floor: "3.9", - totalVol: "2,052,499,51", - vol: "78,231.57", - volPerctage: "-24.26%", - }, -]; - -export const AllProjectAdministrationDashScreen: React.FC = () => { - const navigation = useAppNavigation(); - const isMobile = useIsMobile(); - - const tabs = { - all: { - name: "All", - }, - verified: { - name: "Verified", - }, - ethereum: { - name: "Ethereum", - }, - solana: { - name: "Solana", - }, - cosmos: { - name: "Cosmos", - }, - }; - - const [selectedTab, setSelectedTab] = useState("all"); - - return ( - } - headerChildren={ - Administration Dashboard - } - responsive - onBackPress={() => navigation.goBack()} - > - - - All Projects - - - - - - {!isMobile && ( - {}} // TODO: don't forget to rewrite onPress function if possible - height={42} - /> - )} - - - - - - - ); -}; diff --git a/packages/screens/AllProjectAdministrationDash/component/AllApplicationTable.tsx b/packages/screens/AllProjectAdministrationDash/component/AllApplicationTable.tsx deleted file mode 100644 index 7f7de49d45..0000000000 --- a/packages/screens/AllProjectAdministrationDash/component/AllApplicationTable.tsx +++ /dev/null @@ -1,145 +0,0 @@ -import React from "react"; -import { FlatList, View } from "react-native"; - -import dotsSVG from "../../../../assets/icons/dots.svg"; - -import { BrandText } from "@/components/BrandText"; -import { SVG } from "@/components/SVG"; -import { CollectionNameCell } from "@/components/applicationTable/CollectionNameCell"; -import { InnerCellText } from "@/components/applicationTable/InnerCellText"; -import { PercentageVolumeCell } from "@/components/applicationTable/PercentageVolumeCell"; -import { TableHeader } from "@/components/table/TableHeader"; -import { TableColumns } from "@/components/table/utils"; -import { useIsMobile } from "@/hooks/useIsMobile"; -import { mineShaftColor } from "@/utils/style/colors"; -import { fontSemibold11, fontSemibold13 } from "@/utils/style/fonts"; -import { layout, screenContentMaxWidthLarge } from "@/utils/style/layout"; - -const TABLE_COLUMNS: TableColumns = { - rank: { - label: "#", - flex: 1, - }, - collectionNameData: { - label: "Collection Name", - flex: 5, - }, - floor: { - label: "Floor", - flex: 3, - }, - totalVol: { - label: "Total Vol", - flex: 3, - }, - vol: { - label: "24h Vol", - flex: 3, - }, - volPerctage: { - label: "24h Vol %", - flex: 3, - }, -}; - -export const AllApplicationTable: React.FC<{ - rows: any[]; -}> = ({ rows }) => { - const isMobile = useIsMobile(); - - return ( - - - } - keyExtractor={(item) => item.id} - style={{ - minHeight: 220, - borderTopColor: mineShaftColor, - borderTopWidth: 1, - }} - /> - - ); -}; - -const ApplicationRowData: React.FC<{ rowData: any }> = ({ rowData }) => { - const isMobile = useIsMobile(); - - return ( - - - {rowData.rank} - - - - {rowData.floor} - - {!isMobile && ( - <> - - {rowData.totalVol} - - - {rowData.vol} - - - - - - - )} - - ); -}; diff --git a/packages/screens/ApplicationRewiew/ApplicationRewiew.tsx b/packages/screens/ApplicationRewiew/ApplicationRewiew.tsx deleted file mode 100644 index d2a0ea9607..0000000000 --- a/packages/screens/ApplicationRewiew/ApplicationRewiew.tsx +++ /dev/null @@ -1,39 +0,0 @@ -import React from "react"; -import { View } from "react-native"; - -import { ApplicationDetail } from "./component/ApplicationDetail"; -import { CreatorInformation } from "./component/CreatorInformation"; -import { InvestmentInformation } from "./component/InvestmentInformation"; -import { ProjectInformation } from "./component/ProjectInformation"; -import { TeamInformation } from "./component/TeamInformation"; - -import { BrandText } from "@/components/BrandText"; -import { ScreenContainer } from "@/components/ScreenContainer"; -import { useAppNavigation } from "@/hooks/navigation/useAppNavigation"; -import { fontSemibold20 } from "@/utils/style/fonts"; -import { layout } from "@/utils/style/layout"; - -export const ApplicationRewiewScreen: React.FC = () => { - const navigation = useAppNavigation(); - - return ( - } - headerChildren={ - Launchpad Applications - } - responsive - onBackPress={() => navigation.goBack()} - > - - - - - - - - - - - ); -}; diff --git a/packages/screens/ApplicationRewiew/component/ApplicationCard.tsx b/packages/screens/ApplicationRewiew/component/ApplicationCard.tsx deleted file mode 100644 index 50b9400a4c..0000000000 --- a/packages/screens/ApplicationRewiew/component/ApplicationCard.tsx +++ /dev/null @@ -1,21 +0,0 @@ -import React from "react"; - -import { BrandText } from "@/components/BrandText"; -import { TertiaryBox } from "@/components/boxes/TertiaryBox"; -import { neutral77 } from "@/utils/style/colors"; -import { fontSemibold12, fontSemibold14 } from "@/utils/style/fonts"; - -export const ApplicationCard: React.FC<{ - rowData: { title: string; value: string }; -}> = ({ rowData }) => { - return ( - - - {rowData?.title} - - - {rowData?.value} - - - ); -}; diff --git a/packages/screens/ApplicationRewiew/component/ApplicationDetail.tsx b/packages/screens/ApplicationRewiew/component/ApplicationDetail.tsx deleted file mode 100644 index 31110d2dd2..0000000000 --- a/packages/screens/ApplicationRewiew/component/ApplicationDetail.tsx +++ /dev/null @@ -1,126 +0,0 @@ -import React from "react"; -import { - View, - useWindowDimensions, - Image, - TouchableOpacity, -} from "react-native"; - -import { ApplicationCard } from "./ApplicationCard"; -import { ApplicationSocialCard } from "./ApplicationSocialCard"; -import guardianPng from "../../../../assets/default-images/guardian_profile.png"; -import discordSVG from "../../../../assets/icons/discord.svg"; -import twitterSVG from "../../../../assets/icons/twitter.svg"; -import websiteSVG from "../../../../assets/icons/website.svg"; - -import { BrandText } from "@/components/BrandText"; -import { TertiaryBadge } from "@/components/badges/TertiaryBadge"; -import { SecondaryBox } from "@/components/boxes/SecondaryBox"; -import { primaryColor, primaryTextColor } from "@/utils/style/colors"; -import { fontSemibold14, fontSemibold28 } from "@/utils/style/fonts"; - -const dummyData = [ - { title: "Supply", value: "5000" }, - { title: "Price", value: "5 SOL" }, - { title: "Limit Buy", value: "5 by address" }, -]; - -const applicationSocialData = [ - { icon: discordSVG, name: "Discord" }, - { icon: websiteSVG, name: "Website" }, - { icon: twitterSVG, name: "Twitter" }, -]; -const LG_BREAKPOINT = 1250; - -export const ApplicationDetail: React.FC = () => { - const { width } = useWindowDimensions(); - - return ( - = LG_BREAKPOINT ? "row" : "column-reverse", - alignItems: width >= LG_BREAKPOINT ? "flex-start" : "center", - justifyContent: "center", - marginTop: 72, - paddingBottom: 40, - }} - > - {/* ===== Left container */} - - - - - - Yellow Block Generation - - - {dummyData?.map((item, index) => ( - - ))} - - - - For decades, the destruction of ecosystems and social relations has - turned people into soulless robots. At the same time, inequality - explodes every year and misery becomes the norm for the silent - majority. - - - A minority of powerful & wealthy leaders, called the “The Legion'', - have set up a technological & political system allowing them to - continue to develop their wealth and safety. - - - Of course this system only serves the happy few elite members of the - society while the majority survives in an increasingly uncertain - world. - - - - {applicationSocialData?.map((item, index) => ( - - ))} - - - - - Approve - - - - - {/* ===== Right container */} - - - - - ); -}; diff --git a/packages/screens/ApplicationRewiew/component/ApplicationSocialCard.tsx b/packages/screens/ApplicationRewiew/component/ApplicationSocialCard.tsx deleted file mode 100644 index 81969bbcd3..0000000000 --- a/packages/screens/ApplicationRewiew/component/ApplicationSocialCard.tsx +++ /dev/null @@ -1,36 +0,0 @@ -import React from "react"; - -import { BrandText } from "@/components/BrandText"; -import { SVG } from "@/components/SVG"; -import { SecondaryBox } from "@/components/boxes/SecondaryBox"; -import { neutral22, neutral33 } from "@/utils/style/colors"; -import { fontSemibold14 } from "@/utils/style/fonts"; - -export const ApplicationSocialCard: React.FC<{ socialData: any }> = ({ - socialData, -}) => { - return ( - - - - - - {socialData?.name} - - - ); -}; diff --git a/packages/screens/ApplicationRewiew/component/CreatorInformation.tsx b/packages/screens/ApplicationRewiew/component/CreatorInformation.tsx deleted file mode 100644 index e73546a253..0000000000 --- a/packages/screens/ApplicationRewiew/component/CreatorInformation.tsx +++ /dev/null @@ -1,67 +0,0 @@ -import React from "react"; -import { View, useWindowDimensions } from "react-native"; - -import { BoxDetailTeritori } from "@/components/BoxDetailTeritori/BoxDetailTeritori"; -import { BrandText } from "@/components/BrandText"; -import { neutral33 } from "@/utils/style/colors"; -import { fontSemibold20 } from "@/utils/style/fonts"; - -const MD_BREAKPOINT = 800; - -export const CreatorInformation: React.FC = () => { - const { width } = useWindowDimensions(); - - return ( - - Creator information - = MD_BREAKPOINT ? "row" : "column", - marginTop: 16, - gap: 12, - flexWrap: "wrap", - }} - > - - - - - - - - - = MD_BREAKPOINT ? "row" : "column", - marginTop: 12, - gap: 12, - }} - > - - - - - - ); -}; diff --git a/packages/screens/ApplicationRewiew/component/InvestmentInformation.tsx b/packages/screens/ApplicationRewiew/component/InvestmentInformation.tsx deleted file mode 100644 index d31b3ad8a8..0000000000 --- a/packages/screens/ApplicationRewiew/component/InvestmentInformation.tsx +++ /dev/null @@ -1,58 +0,0 @@ -import React from "react"; -import { View, useWindowDimensions } from "react-native"; - -import { LinkCard } from "./LinkCard"; - -import { BoxDetailTeritori } from "@/components/BoxDetailTeritori/BoxDetailTeritori"; -import { BrandText } from "@/components/BrandText"; -import { fontSemibold20 } from "@/utils/style/fonts"; - -const MD_BREAKPOINT = 800; - -export const InvestmentInformation: React.FC = () => { - const { width } = useWindowDimensions(); - - return ( - - Investment information - = MD_BREAKPOINT ? "row" : "column", - marginTop: 16, - gap: 12, - flexWrap: "wrap", - }} - > - - - - - - ); -}; diff --git a/packages/screens/ApplicationRewiew/component/LinkCard.tsx b/packages/screens/ApplicationRewiew/component/LinkCard.tsx deleted file mode 100644 index 9ab05c3da2..0000000000 --- a/packages/screens/ApplicationRewiew/component/LinkCard.tsx +++ /dev/null @@ -1,40 +0,0 @@ -import React from "react"; -import { FlatList, View } from "react-native"; - -import { BrandText } from "@/components/BrandText"; -import { TertiaryBox } from "@/components/boxes/TertiaryBox"; -import { neutral77 } from "@/utils/style/colors"; -import { fontSemibold12, fontSemibold14 } from "@/utils/style/fonts"; - -export const LinkCard: React.FC<{ title: any; linksData: any }> = ({ - title, - linksData, -}) => { - return ( - - - {title} - - ( - - - {item?.title} - - - {item?.link} - - - )} - /> - - ); -}; diff --git a/packages/screens/ApplicationRewiew/component/ProjectInformation.tsx b/packages/screens/ApplicationRewiew/component/ProjectInformation.tsx deleted file mode 100644 index 88b6869f9f..0000000000 --- a/packages/screens/ApplicationRewiew/component/ProjectInformation.tsx +++ /dev/null @@ -1,53 +0,0 @@ -import React from "react"; -import { useWindowDimensions, View } from "react-native"; - -import { LinkCard } from "./LinkCard"; - -import { BoxDetailTeritori } from "@/components/BoxDetailTeritori/BoxDetailTeritori"; -import { BrandText } from "@/components/BrandText"; -import { fontSemibold20 } from "@/utils/style/fonts"; - -const MD_BREAKPOINT = 800; - -export const ProjectInformation: React.FC = () => { - const { width } = useWindowDimensions(); - - return ( - - Project information - = MD_BREAKPOINT ? "row" : "column", - marginTop: 16, - flexWrap: "wrap", - gap: 12, - }} - > - - - - - - - - - ); -}; diff --git a/packages/screens/ApplicationRewiew/component/TeamInformation.tsx b/packages/screens/ApplicationRewiew/component/TeamInformation.tsx deleted file mode 100644 index 25ef4f0943..0000000000 --- a/packages/screens/ApplicationRewiew/component/TeamInformation.tsx +++ /dev/null @@ -1,58 +0,0 @@ -import React from "react"; -import { useWindowDimensions, View } from "react-native"; - -import { LinkCard } from "./LinkCard"; - -import { BoxDetailTeritori } from "@/components/BoxDetailTeritori/BoxDetailTeritori"; -import { BrandText } from "@/components/BrandText"; -import { fontSemibold20 } from "@/utils/style/fonts"; - -const MD_BREAKPOINT = 800; - -export const TeamInformation: React.FC = () => { - const { width } = useWindowDimensions(); - - return ( - - Team information - = MD_BREAKPOINT ? "row" : "column", - marginTop: 16, - gap: 12, - }} - > - - - - - - ); -}; diff --git a/packages/screens/FeedNewArticle/FeedNewArticleScreen.tsx b/packages/screens/FeedNewArticle/FeedNewArticleScreen.tsx index 5379e54f53..c7e5e8dc04 100644 --- a/packages/screens/FeedNewArticle/FeedNewArticleScreen.tsx +++ b/packages/screens/FeedNewArticle/FeedNewArticleScreen.tsx @@ -11,8 +11,8 @@ import { SVG } from "@/components/SVG"; import { ScreenContainer } from "@/components/ScreenContainer"; import { WalletStatusBox } from "@/components/WalletStatusBox"; import { TertiaryBox } from "@/components/boxes/TertiaryBox"; -import { FileUploader } from "@/components/fileUploader"; import { Label, TextInputCustom } from "@/components/inputs/TextInputCustom"; +import { FileUploader } from "@/components/inputs/fileUploader"; import { FeedPostingProgressBar } from "@/components/loaders/FeedPostingProgressBar"; import { RichText } from "@/components/socialFeed/RichText"; import { PublishValues } from "@/components/socialFeed/RichText/RichText.type"; diff --git a/packages/screens/Launchpad/CreateCollection.type.ts b/packages/screens/Launchpad/CreateCollection.type.ts deleted file mode 100644 index 94e6093e24..0000000000 --- a/packages/screens/Launchpad/CreateCollection.type.ts +++ /dev/null @@ -1,71 +0,0 @@ -export interface NewCollectionAssetsFormValues { - nftApiKey?: string; -} - -export interface ExistingBaseUrlFormValues { - baseTokenUri?: string; - coverImageUrl?: string; -} - -export interface NewCollectionBasicFormValues { - name?: string; - description?: string; - symbol?: string; - externalLink?: string; -} -export interface NewCollectionDetailsFormValues { - websiteLink?: string; - twitterProfileUrl?: string; - twitterFollowers: string; - discordName?: string; - email?: string; - projectType?: string; - projectDesciption?: string; -} - -export interface NewCollectionMintFormValues { - token?: string; - unitPrice?: string; - perAddressLimit: string; - startTime?: string; -} -export interface TeamandInvestmentFormValues { - teamDesciption?: string; - teamLink?: string; - partner?: string; - investDesciption?: string; - investLink?: string; - roadmap?: string; -} - -export interface NewCollectionAdditionalFormValues { - artwork?: string; - collectionSupply?: string; - mintPrice?: string; - mintDate?: string; - whitelistSpotPercentage?: string; -} - -export interface ExistingWhitelistDetailsFormValues { - whitelistAddress: string; -} -export interface NewWhitelistDetailsFormValues { - unitPrice: string; - memberLimit: string; - perAddresaLimit: string; - startTime: string; - endTime: string; -} - -export interface NewConfigureRoyaltyDetailsFormValues { - PaymentAddress: string; - SharePercentage: string; -} - -export interface NewMetadataDetailsFormValues { - name: string; - description: string; - externalURL: string; - youtubeURL: string; - attributes: string; -} diff --git a/packages/screens/Launchpad/LaunchpadApplyScreen.tsx b/packages/screens/Launchpad/LaunchpadApply/LaunchpadApplyScreen.tsx similarity index 89% rename from packages/screens/Launchpad/LaunchpadApplyScreen.tsx rename to packages/screens/Launchpad/LaunchpadApply/LaunchpadApplyScreen.tsx index 7338a709e1..2df6c998b0 100644 --- a/packages/screens/Launchpad/LaunchpadApplyScreen.tsx +++ b/packages/screens/Launchpad/LaunchpadApply/LaunchpadApplyScreen.tsx @@ -1,10 +1,9 @@ import React from "react"; import { StyleSheet, View } from "react-native"; -import { LaunchpadBanner } from "./components/LaunchpadBanner"; +import { LaunchpadBanner } from "../components/LaunchpadBanner"; import { BrandText } from "@/components/BrandText"; -import { OmniLink } from "@/components/OmniLink"; import { ScreenContainer } from "@/components/ScreenContainer"; import { LargeBoxButton, @@ -25,7 +24,7 @@ const BUTTONS: LargeBoxButtonProps[] = [ title: "Create", description: "Upload your assets, enter collection metadata and deploy your collection.", - buttonTitle: "Open", + buttonTitle: "Coming soon", }, { title: "My Collections", @@ -57,9 +56,7 @@ export const LaunchpadApplyScreen: ScreenFC<"LaunchpadApply"> = () => { url="https://airtable.com/shr1kU7kXW0267gNV" /> - - - +
diff --git a/packages/screens/Launchpad/LaunchpadCreateScreen.tsx b/packages/screens/Launchpad/LaunchpadCreateScreen.tsx deleted file mode 100644 index 59de032397..0000000000 --- a/packages/screens/Launchpad/LaunchpadCreateScreen.tsx +++ /dev/null @@ -1,139 +0,0 @@ -import React, { useState } from "react"; -import { View } from "react-native"; - -import { LaunchpadAdditional } from "./components/LaunchpadAdditional"; -import { LaunchpadAssetsandMetadata } from "./components/LaunchpadAssetsandMetadata"; -import { LaunchpadBasic } from "./components/LaunchpadBasic"; -import { LaunchpadDetails } from "./components/LaunchpadDetails"; -import { LaunchpadMinting } from "./components/LaunchpadMinting"; -import { LaunchpadSteper } from "./components/LaunchpadSteper"; -import { LaunchpadTeamandInvestment } from "./components/LaunchpadTeamandInvestment"; - -import { BrandText } from "@/components/BrandText"; -import { ScreenContainer } from "@/components/ScreenContainer"; -import { PrimaryButton } from "@/components/buttons/PrimaryButton"; -import { SecondaryButton } from "@/components/buttons/SecondaryButton"; -import { SpacerColumn } from "@/components/spacer"; -import { NetworkFeature } from "@/networks"; -import { ScreenFC, useAppNavigation } from "@/utils/navigation"; -import { neutral33 } from "@/utils/style/colors"; -import { layout } from "@/utils/style/layout"; - -const StepContent = ({ step }: { step: number }) => { - switch (step) { - case 1: - return ; - case 2: - return ; - case 3: - return ; - case 4: - return ; - case 5: - return ; - case 6: - return ; - default: - return <>; - } -}; - -const stepOptions = [ - { key: 1, title: "Basic" }, - { key: 2, title: "Details" }, - { key: 3, title: "Team & Investments" }, - { key: 4, title: "Additional" }, - { key: 5, title: "Minting" }, - { key: 6, title: "Assets & Metadata" }, -]; - -export const LaunchpadCreateScreen: ScreenFC<"LaunchpadCreate"> = () => { - const navigation = useAppNavigation(); - - const [selectedStep, setSelectedStep] = useState(1); - const [isLoading, setLoading] = useState(false); - - const onSubmit = () => { - setLoading(true); - setTimeout(() => { - setLoading(false); - }, 1000); - }; - - return ( - } - forceNetworkFeatures={[NetworkFeature.SocialFeed]} - headerChildren={Launchpad Submission Form} - onBackPress={() => navigation.navigate("LaunchpadApply")} - > - - - - - - - - - - - {selectedStep !== 1 && ( - { - setSelectedStep(selectedStep - 1); - }} - /> - )} - { - if (stepOptions.length === selectedStep) { - onSubmit(); - } else { - setSelectedStep(selectedStep + 1); - } - }} - /> - - - - - ); -}; diff --git a/packages/screens/Launchpad/LaunchpadScreen.tsx b/packages/screens/Launchpad/LaunchpadHome/LaunchpadScreen.tsx similarity index 100% rename from packages/screens/Launchpad/LaunchpadScreen.tsx rename to packages/screens/Launchpad/LaunchpadHome/LaunchpadScreen.tsx diff --git a/packages/screens/Launchpad/components/AssetsTab.tsx b/packages/screens/Launchpad/components/AssetsTab.tsx deleted file mode 100644 index a4984faa7b..0000000000 --- a/packages/screens/Launchpad/components/AssetsTab.tsx +++ /dev/null @@ -1,133 +0,0 @@ -import React, { useState } from "react"; -import { useForm } from "react-hook-form"; -import { SafeAreaView, View } from "react-native"; - -import { TextInputLaunchpadRequired } from "./inputs/TextInputLaunchpadRequired"; -import { MetadataUpdateModal } from "./modals/MetadataUpdateModal"; -import { NewCollectionAssetsFormValues } from "../CreateCollection.type"; - -import { SelectedFilesPreview } from "@/components/FilePreview/SelectedFilesPreview/SelectedFilesPreview"; -import { FileUploaderSmall } from "@/components/inputs/FileUploaderSmall"; -import { IMAGE_MIME_TYPES } from "@/utils/mime"; -import { neutral33 } from "@/utils/style/colors"; -import { layout } from "@/utils/style/layout"; -import { LocalFileData } from "@/utils/types/files"; - -export const AssetsTab: React.FC = () => { - const [files, setFiles] = useState([]); - const [selectedFile, setSelectedFile] = useState(); - - const [medataUpdateModalVisible, setMedataUpdateModalVisible] = - useState(false); - - const { control } = useForm({ - defaultValues: { - nftApiKey: "", - }, - mode: "onBlur", - }); - return ( - - - {/* ===== Left container */} - - - - - label="NFT.Storage API Key" - placeHolder="My Awesome Collection" - name="nftApiKey" - control={control} - /> - - { - setFiles(files); - }} - mimeTypes={IMAGE_MIME_TYPES} - /> - - {}} - mimeTypes={IMAGE_MIME_TYPES} - multiple - /> - - - - - - - {/* ===== Right container */} - - { - setMedataUpdateModalVisible(true); - setSelectedFile(item); - }} - /> - - - {selectedFile && ( - setMedataUpdateModalVisible(false)} - isVisible={medataUpdateModalVisible} - item={selectedFile} - /> - )} - - - ); -}; diff --git a/packages/screens/Launchpad/components/ConfigureRoyaltyDetails.tsx b/packages/screens/Launchpad/components/ConfigureRoyaltyDetails.tsx deleted file mode 100644 index a860034455..0000000000 --- a/packages/screens/Launchpad/components/ConfigureRoyaltyDetails.tsx +++ /dev/null @@ -1,65 +0,0 @@ -import React from "react"; -import { useForm } from "react-hook-form"; -import { View } from "react-native"; - -import { TextInputLaunchpadRequiredSublabel } from "./inputs/TextInputLaunchpadRequiredSublabel"; -import { NewConfigureRoyaltyDetailsFormValues } from "../CreateCollection.type"; - -import { BrandText } from "@/components/BrandText"; -import { SpacerColumn } from "@/components/spacer"; -import { neutral55, neutral77 } from "@/utils/style/colors"; -import { - fontSemibold13, - fontSemibold14, - fontSemibold20, -} from "@/utils/style/fonts"; - -export const ConfigureRoyaltyDetails: React.FC = () => { - const { control } = useForm({ - defaultValues: { - PaymentAddress: "", - SharePercentage: "", - }, - mode: "onBlur", - }); - - return ( - - - Royalty Details - - - Information about royalty - - - - - label="Payment Address " - placeHolder="teritori123456789qwertyuiopasdfghjklzxcvbnm" - name="PaymentAddress" - sublabel={ - - - Address to receive royalties - - - } - control={control} - /> - - - label="Share Percentage " - placeHolder="8%" - name="SharePercentage" - sublabel={ - - - Percentage of royalties to be paid - - - } - control={control} - /> - - ); -}; diff --git a/packages/screens/Launchpad/components/ExistingWhitelist.tsx b/packages/screens/Launchpad/components/ExistingWhitelist.tsx deleted file mode 100644 index 107a6dcb96..0000000000 --- a/packages/screens/Launchpad/components/ExistingWhitelist.tsx +++ /dev/null @@ -1,34 +0,0 @@ -import React from "react"; -import { useForm } from "react-hook-form"; -import { View } from "react-native"; - -import { TextInputLaunchpadRequired } from "./inputs/TextInputLaunchpadRequired"; -import { ExistingWhitelistDetailsFormValues } from "../CreateCollection.type"; - -import { SpacerColumn } from "@/components/spacer"; - -export const ExistingWhitelist: React.FC = () => { - const { control } = useForm({ - defaultValues: { - whitelistAddress: "", - }, - mode: "onBlur", - }); - - return ( - - - - - label="Whitelist Address" - placeHolder="teritori123456789qwertyuiopasdfghjklzxcvbnm" - name="whitelistAddress" - control={control} - /> - - ); -}; diff --git a/packages/screens/Launchpad/components/LaunchpadAdditional.tsx b/packages/screens/Launchpad/components/LaunchpadAdditional.tsx deleted file mode 100644 index cc21e4f1ac..0000000000 --- a/packages/screens/Launchpad/components/LaunchpadAdditional.tsx +++ /dev/null @@ -1,148 +0,0 @@ -import React, { useState } from "react"; -import { Controller, useForm } from "react-hook-form"; -import { View } from "react-native"; - -import { SelectionDropdown } from "./dropdowns/SelectionDropdown"; -import { TextInputLaunchpadRequired } from "./inputs/TextInputLaunchpadRequired"; -import { TextInputLaunchpadRequiredSublabel } from "./inputs/TextInputLaunchpadRequiredSublabel"; -import { NewCollectionAdditionalFormValues } from "../CreateCollection.type"; - -import { BrandText } from "@/components/BrandText"; -import { DateTimeInput } from "@/components/inputs/DateTimeInput"; -import { SpacerColumn } from "@/components/spacer"; -import { neutral55, neutral77 } from "@/utils/style/colors"; -import { - fontSemibold13, - fontSemibold14, - fontSemibold20, -} from "@/utils/style/fonts"; - -export const LaunchpadAdditional: React.FC = () => { - const dropdownOptions = ["Yes", "No"]; - - const [isReadyForMint, setIsReadyForMint] = useState(""); - const [isEscrowMintProceeds, setIsEscrowMintProceeds] = useState(""); - const [isDox, setIsDox] = useState(""); - - const { control, getFieldState, watch } = - useForm({ - defaultValues: { - artwork: "", - collectionSupply: "", - mintPrice: "", - mintDate: "", - whitelistSpotPercentage: "", - }, - mode: "onBlur", - }); - const mintDate = watch("mintDate"); - - return ( - - - Additional Information - - - Fill the additional information - - - - - label="Please describe your artwork: " - sublabel={ - - - 1. Is it completely original? - - - 2. Who is the artist? - - - 3. How did your team meet the artist? - - - } - placeHolder="Describe here..." - name="artwork" - control={control} - multiline - /> - - - - - label="What is your expected collection supply?" - placeHolder="Type here..." - name="collectionSupply" - control={control} - /> - - - label="What is your expected public sale mint price?" - sublabel={ - - - Just type the number in your Network currency: - - - } - placeHolder="0" - name="mintPrice" - control={control} - /> - - - label="What is your expected mint date? " - placeHolder="dd.mm.yyyy | hh:mm PM" - name="mintDate" - control={control} - /> - - - name="mintDate" - control={control} - render={({ field: { onChange } }) => ( - - )} - /> - - - - - - - - label="We'd love to offer TeritoriDAO members 10% of your whitelist supply if your project is willing. Please let us know how many whitelist spots you'd be willing to allocate our DAO: " - placeHolder="0" - name="whitelistSpotPercentage" - control={control} - /> - - - ); -}; diff --git a/packages/screens/Launchpad/components/LaunchpadAssetsandMetadata.tsx b/packages/screens/Launchpad/components/LaunchpadAssetsandMetadata.tsx deleted file mode 100644 index b51515d79a..0000000000 --- a/packages/screens/Launchpad/components/LaunchpadAssetsandMetadata.tsx +++ /dev/null @@ -1,78 +0,0 @@ -import React, { useState } from "react"; -import { View } from "react-native"; - -import { AssetsTab } from "./AssetsTab"; -import { UriTab } from "./UriTab"; - -import { BrandText } from "@/components/BrandText"; -import { SpacerColumn } from "@/components/spacer"; -import { Tabs } from "@/components/tabs/Tabs"; -import { neutral77, primaryColor } from "@/utils/style/colors"; -import { fontSemibold14, fontSemibold28 } from "@/utils/style/fonts"; - -const AssetsandMetadataTabItems = { - assets: { - name: "Upload assets & metadata", - }, - uri: { - name: "Use an existing base URI", - }, -}; - -export const LaunchpadAssetsandMetadata: React.FC = () => { - const [selectedTab, setSelectedTab] = - useState("assets"); - - return ( - - - Assets & Metadata - - - - - Make sure you check out{" "} - - documentation - {" "} - on how to create your collection - - - - - - - {selectedTab === "assets" && } - {selectedTab === "uri" && } - - ); -}; diff --git a/packages/screens/Launchpad/components/LaunchpadBasic.tsx b/packages/screens/Launchpad/components/LaunchpadBasic.tsx deleted file mode 100644 index 7039155e8c..0000000000 --- a/packages/screens/Launchpad/components/LaunchpadBasic.tsx +++ /dev/null @@ -1,115 +0,0 @@ -import React, { useState } from "react"; -import { useForm } from "react-hook-form"; -import { View } from "react-native"; - -import { TextInputLaunchpadRequired } from "./inputs/TextInputLaunchpadRequired"; -import { NewCollectionBasicFormValues } from "../CreateCollection.type"; - -import { BrandText } from "@/components/BrandText"; -import { CustomNetworkSelector } from "@/components/NetworkSelector/CustomNetworkSelector"; -import { FileUploaderSmall } from "@/components/inputs/FileUploaderSmall"; -import { SpacerColumn } from "@/components/spacer"; -import { IMAGE_MIME_TYPES } from "@/utils/mime"; -import { neutral77, primaryColor } from "@/utils/style/colors"; -import { fontSemibold14, fontSemibold28 } from "@/utils/style/fonts"; -import { layout } from "@/utils/style/layout"; -import { LocalFileData } from "@/utils/types/files"; - -export const LaunchpadBasic: React.FC = () => { - const { control } = useForm({ - defaultValues: { - name: "", - description: "", - symbol: "", - externalLink: "", - }, - mode: "onBlur", - }); - const [coverImage, setCoverImage] = useState(); - - return ( - - - Create Collection - - - - - Make sure you check out{" "} - - documentation - {" "} - on how to create your collection - - - - - - - label="Name" - placeHolder="My Awesome Collection" - name="name" - control={control} - /> - - - label="Description" - placeHolder="My Awesome Collection Description" - name="description" - control={control} - /> - - - label="Symbol" - placeHolder="Symbol" - name="symbol" - control={control} - /> - - setCoverImage(files[0])} - filesCount={0} - mimeTypes={IMAGE_MIME_TYPES} - required - imageToShow={coverImage} - onPressDelete={() => setCoverImage(undefined)} - /> - - - label="External Link" - placeHolder="https://collection..." - name="externalLink" - control={control} - required={false} - /> - - - - - ); -}; diff --git a/packages/screens/Launchpad/components/LaunchpadDetails.tsx b/packages/screens/Launchpad/components/LaunchpadDetails.tsx deleted file mode 100644 index 35335407d6..0000000000 --- a/packages/screens/Launchpad/components/LaunchpadDetails.tsx +++ /dev/null @@ -1,154 +0,0 @@ -import React, { useState } from "react"; -import { useForm } from "react-hook-form"; -import { View } from "react-native"; - -import { MultipleSelectionDropdown } from "./dropdowns/MultipleSelectionDropdown"; -import { SelectionDropdown } from "./dropdowns/SelectionDropdown"; -import { TextInputLaunchpadRequired } from "./inputs/TextInputLaunchpadRequired"; -import { TextInputLaunchpadRequiredSublabel } from "./inputs/TextInputLaunchpadRequiredSublabel"; -import { NewCollectionDetailsFormValues } from "../CreateCollection.type"; - -import { BrandText } from "@/components/BrandText"; -import { SpacerColumn } from "@/components/spacer"; -import { neutral55, neutral77 } from "@/utils/style/colors"; -import { - fontSemibold13, - fontSemibold14, - fontSemibold20, -} from "@/utils/style/fonts"; -import { layout } from "@/utils/style/layout"; - -export const LaunchpadDetails: React.FC = () => { - const dropdownOptions = ["Yes", "No"]; - const projectOptions = ["PFP", "Utility", "Metaverse", "P2E", "Other"]; - - const [isDerivativeProject, setIsDerivativeProject] = useState(""); - const [isPreviouslyApplied, setIsPreviouslyApplied] = useState(""); - const [projectTypes, setProjectTypes] = useState([]); - - const { control } = useForm({ - defaultValues: { - websiteLink: "", - twitterProfileUrl: "", - twitterFollowers: "", - discordName: "", - email: "", - projectDesciption: "", - projectType: "", - }, - mode: "onBlur", - }); - - return ( - - - Collection details - - - Information about your collection - - - - - label="Website Link" - placeHolder="https://website..." - name="websiteLink" - control={control} - required={false} - /> - - - required - label="Twitter Profile " - placeHolder="https://twitter..." - name="twitterProfileUrl" - control={control} - /> - - - required - label="How many Twitter followers does your project have? " - placeHolder="10,000" - name="twitterFollowers" - control={control} - /> - - - required - label="Discord name of your main contact: " - placeHolder="nickname#0000" - name="discordName" - control={control} - /> - - - required - label="Main contact email address: " - placeHolder="contact@email.com" - name="email" - control={control} - /> - - - - { - if (projectTypes.includes(item)) { - setProjectTypes(projectTypes.filter((data) => data !== item)); - } else { - setProjectTypes([...projectTypes, item]); - } - }} - label="Project type:" - sublabel={ - - - Multiple answers allowed - - - } - style={{ zIndex: 2 }} - /> - - - label="Describe your project: " - sublabel={ - - - 1. What's your concept? - - - 2. How is it different? - - - 3. What's your goal? - - - } - placeHolder="Describe here..." - name="projectDesciption" - control={control} - /> - - - - - ); -}; diff --git a/packages/screens/Launchpad/components/LaunchpadMinting.tsx b/packages/screens/Launchpad/components/LaunchpadMinting.tsx deleted file mode 100644 index 783321b345..0000000000 --- a/packages/screens/Launchpad/components/LaunchpadMinting.tsx +++ /dev/null @@ -1,140 +0,0 @@ -import React, { useState } from "react"; -import { useForm } from "react-hook-form"; -import { View } from "react-native"; - -import { ConfigureRoyaltyDetails } from "./ConfigureRoyaltyDetails"; -import { ExistingWhitelist } from "./ExistingWhitelist"; -import { NavBar } from "./NavBar"; -import { NewWhitelist } from "./NewWhitelist"; -import { TextInputLaunchpadRequired } from "./inputs/TextInputLaunchpadRequired"; -import { TextInputLaunchpadRequiredSublabel } from "./inputs/TextInputLaunchpadRequiredSublabel"; -import { NewCollectionMintFormValues } from "../CreateCollection.type"; - -import { BrandText } from "@/components/BrandText"; -import { SpacerColumn } from "@/components/spacer"; -import { neutral55, neutral77 } from "@/utils/style/colors"; -import { - fontSemibold13, - fontSemibold14, - fontSemibold20, -} from "@/utils/style/fonts"; -import { layout } from "@/utils/style/layout"; - -const CreateWhitelistTabItems = { - nowhitelist: { - name: "No whitelist", - }, - existinghitelist: { - name: "Existing whitelist", - }, - newhitelist: { - name: "New whitelist", - }, -}; - -const CreateRoyaltyTabItems = { - noroyalty: { - name: "No royalty", - }, - configureroyaltydetails: { - name: "Configure royalty details", - }, -}; - -export const LaunchpadMinting: React.FC = () => { - const { control } = useForm({ - defaultValues: { - token: "", - unitPrice: "", - perAddressLimit: "", - startTime: "", - }, - mode: "onBlur", - }); - - const [selectedWhitelistTab, setSelectedWhitelistTab] = - useState("nowhitelist"); - - const [selectedRoyaltyTab, setSelectedRoyaltyTab] = - useState("noroyalty"); - - return ( - - - Minting details - - - Information about your minting settings - - - - - label="Number of Tokens " - placeHolder="0" - name="token" - control={control} - /> - - - label="Unit Price" - sublabel={ - - - Price of each token (min. 50 TORI) - - - } - placeHolder="0" - name="unitPrice" - control={control} - /> - - - label="Per Address Limit " - sublabel={ - - - Start time for the minting - - - } - placeHolder="0" - name="perAddressLimit" - control={control} - /> - - - label="Start Time " - placeHolder="--.--.---- --:--" - name="startTime" - control={control} - /> - - - - {selectedWhitelistTab === "existinghitelist" && } - {selectedWhitelistTab === "newhitelist" && } - - - - {selectedRoyaltyTab === "configureroyaltydetails" && ( - - )} - - - ); -}; diff --git a/packages/screens/Launchpad/components/LaunchpadSteper.tsx b/packages/screens/Launchpad/components/LaunchpadSteper.tsx deleted file mode 100644 index 1e490f0d2f..0000000000 --- a/packages/screens/Launchpad/components/LaunchpadSteper.tsx +++ /dev/null @@ -1,107 +0,0 @@ -import React from "react"; -import { TouchableOpacity, View } from "react-native"; - -import ChevronRightSvg from "../../../../assets/icons/chevron-right.svg"; - -import { BrandText } from "@/components/BrandText"; -import { SVG } from "@/components/SVG"; -import { PrimaryBox } from "@/components/boxes/PrimaryBox"; -import { - neutral17, - neutral22, - neutral77, - primaryColor, - primaryTextColor, -} from "@/utils/style/colors"; -import { fontSemibold14 } from "@/utils/style/fonts"; -import { layout } from "@/utils/style/layout"; - -interface LaunchpadSteperProps { - step: number; - onStepPress: (item: number) => void; - stepOptions: { key: number; title: string }[]; -} - -export const LaunchpadSteper = ({ - step, - onStepPress, - stepOptions, -}: LaunchpadSteperProps) => { - return ( - - {stepOptions.map((item, index) => ( - { - onStepPress(item.key); - }} - key={index} - style={[ - { - flexDirection: "row", - alignItems: "center", - justifyContent: "center", - paddingHorizontal: layout.spacing_x2, - paddingVertical: layout.spacing_x1, - }, - ]} - > - - - {item.key} - - - - {item.title} - - {stepOptions.length !== index + 1 && ( - - )} - - ))} - - ); -}; diff --git a/packages/screens/Launchpad/components/LaunchpadTeamandInvestment.tsx b/packages/screens/Launchpad/components/LaunchpadTeamandInvestment.tsx deleted file mode 100644 index cc0ddf8e59..0000000000 --- a/packages/screens/Launchpad/components/LaunchpadTeamandInvestment.tsx +++ /dev/null @@ -1,153 +0,0 @@ -import React from "react"; -import { useForm } from "react-hook-form"; -import { View } from "react-native"; - -import { TextInputLaunchpadRequiredSublabel } from "./inputs/TextInputLaunchpadRequiredSublabel"; -import { TeamandInvestmentFormValues } from "../CreateCollection.type"; - -import { BrandText } from "@/components/BrandText"; -import { SpacerColumn } from "@/components/spacer"; -import { neutral55, neutral77 } from "@/utils/style/colors"; -import { - fontSemibold13, - fontSemibold14, - fontSemibold20, -} from "@/utils/style/fonts"; - -export const LaunchpadTeamandInvestment: React.FC = () => { - const { control } = useForm({ - defaultValues: { - teamDesciption: "", - teamLink: "", - partner: "", - investDesciption: "", - investLink: "", - roadmap: "", - }, - mode: "onBlur", - }); - - return ( - - - Team & Investments - - - Fill the information about the team and investors - - - - - label="Describe your team: " - sublabel={ - - - 1. How many core members are you? ( Working on the project daily - ) - - - 2. Who does what in your team? - - - 3. Past accomplishments or projects? - - - 4. How did you guys meet? - - - 5. Please add Linkedin links for all your members. - - - } - placeHolder="Describe here..." - name="teamDesciption" - control={control} - /> - - - required={false} - label="Team links and attachments " - sublabel={ - - - Please provide any relevant links regarding your team. You can - also post a google drive link. - - - } - placeHolder="Type here..." - name="teamDesciption" - control={control} - /> - - - label="Do you have any partners on the project? " - sublabel={ - - - If yes, who are they? What do they do for you? - - - } - placeHolder="Type here..." - name="partner" - control={control} - /> - - - label="What have you invested in this project so far? " - sublabel={ - - - 1. How much upfront capital has been invested? - - - 2. Have you raised outside funding for the project? - - - 3. How long has the project been worked on? - - - 4. Is there a proof of concept or demo to show? - - - } - placeHolder="Type here..." - name="investDesciption" - control={control} - /> - - - required={false} - label="Investment links and attachments " - sublabel={ - - - Please provide any relevant links regarding your investment. You - can also post a google drive link. - - - } - placeHolder="Type here..." - name="investLink" - control={control} - /> - - - label="Whitepaper and roadmap: " - sublabel={ - - - Please provide any relevant links regarding your whitepaper and - roadmap. You can also post a google drive link. - - - } - placeHolder="Type here..." - name="roadmap" - control={control} - /> - - - ); -}; diff --git a/packages/screens/Launchpad/components/NavBar.tsx b/packages/screens/Launchpad/components/NavBar.tsx deleted file mode 100644 index 2cf9e7819e..0000000000 --- a/packages/screens/Launchpad/components/NavBar.tsx +++ /dev/null @@ -1,79 +0,0 @@ -import React from "react"; -import { TouchableOpacity, View } from "react-native"; - -import { BrandText } from "@/components/BrandText"; -import { - neutral33, - primaryColor, - primaryTextColor, - secondaryColor, -} from "@/utils/style/colors"; - -interface NavDefinition { - name: string; -} - -export const NavBar = ({ - items, - onSelect, - selected, -}: { - items: T; - selected: keyof T; - onSelect: (key: keyof T) => void; -}) => { - return ( - - - {getKeys(items).map((key) => { - return ( - { - onSelect(key); - }} - style={{ - height: "100%", - borderRightColor: neutral33, - borderRightWidth: 1, - flex: 1, - }} - > - - - {items[key].name} - - - - ); - })} - - - ); -}; -const getKeys = Object.keys as (obj: T) => (keyof T)[]; diff --git a/packages/screens/Launchpad/components/NewWhitelist.tsx b/packages/screens/Launchpad/components/NewWhitelist.tsx deleted file mode 100644 index 722b8edb9b..0000000000 --- a/packages/screens/Launchpad/components/NewWhitelist.tsx +++ /dev/null @@ -1,126 +0,0 @@ -import React, { useState } from "react"; -import { useForm } from "react-hook-form"; -import { View } from "react-native"; - -import { TextInputLaunchpadRequiredSublabel } from "./inputs/TextInputLaunchpadRequiredSublabel"; -import { NewWhitelistDetailsFormValues } from "../CreateCollection.type"; - -import { BrandText } from "@/components/BrandText"; -import { CsvTextRowsInput } from "@/components/inputs/CsvTextRowsInput"; -import { Separator } from "@/components/separators/Separator"; -import { SpacerColumn } from "@/components/spacer"; -import { neutral55, neutral77 } from "@/utils/style/colors"; -import { - fontSemibold13, - fontSemibold14, - fontSemibold20, -} from "@/utils/style/fonts"; - -export const NewWhitelist: React.FC = () => { - const { control } = useForm({ - defaultValues: { - unitPrice: "", - memberLimit: "", - perAddresaLimit: "", - startTime: "", - endTime: "", - }, - mode: "onBlur", - }); - const [whitelistedAddresses, setWhitelistedAddresses] = useState(); - - return ( - - - Whitelist Minting Details - - - Information about your minting settings - - - - label="Unit Price " - placeHolder="0" - name="unitPrice" - sublabel={ - - - Token price for whitelisted addressess (min. 25 TORI) - - - } - control={control} - /> - - - label="Member Limit " - placeHolder="0" - name="memberLimit" - sublabel={ - - - Maximum number of whitelisted addresses - - - } - control={control} - /> - - - label="Per Address Limit" - placeHolder="0" - name="perAddresaLimit" - sublabel={ - - - Maximum number of tokens per whitelisted address - - - } - control={control} - /> - - - label="Start Time " - placeHolder="0" - name="startTime" - sublabel={ - - - Start time for minting tokens to whitelisted addresses - - - } - control={control} - /> - - - label="End Time " - placeHolder="0" - name="endTime" - sublabel={ - - - End time for minting tokens to whitelisted addresses - - - } - control={control} - /> - - - - Whitelist File - - - TXT file that contains the whitelisted addresses - - - - setWhitelistedAddresses(rows)} - /> - - ); -}; diff --git a/packages/screens/Launchpad/components/UriTab.tsx b/packages/screens/Launchpad/components/UriTab.tsx deleted file mode 100644 index cb35085845..0000000000 --- a/packages/screens/Launchpad/components/UriTab.tsx +++ /dev/null @@ -1,66 +0,0 @@ -import React from "react"; -import { useForm } from "react-hook-form"; -import { View } from "react-native"; - -import { TextInputLaunchpadRequired } from "./inputs/TextInputLaunchpadRequired"; -import { ExistingBaseUrlFormValues } from "../CreateCollection.type"; - -import { BrandText } from "@/components/BrandText"; -import { SpacerColumn } from "@/components/spacer"; -import { neutral77 } from "@/utils/style/colors"; -import { fontSemibold14 } from "@/utils/style/fonts"; -import { layout } from "@/utils/style/layout"; - -export const UriTab: React.FC = () => { - const { control } = useForm({ - defaultValues: { - baseTokenUri: "", - coverImageUrl: "", - }, - mode: "onBlur", - }); - - return ( - - - - - Though Teritori's tr721 contract allows for off-chain metadata - storage, it is recommended to use a decentralized storage solution, - such as IPFS. You may head over to NFT.Storage and upload your - assets & metadata manually to get a base URI for your collection. - - - - - - label="Base Token URI" - placeHolder="ipfs://" - name="baseTokenUri" - control={control} - /> - - - name="coverImageUrl" - label="Cover Image URL" - placeHolder="ipfs://" - control={control} - /> - - - - ); -}; diff --git a/packages/screens/Launchpad/components/dropdowns/DropdownProps.type.ts b/packages/screens/Launchpad/components/dropdowns/DropdownProps.type.ts deleted file mode 100644 index 1a60de0b94..0000000000 --- a/packages/screens/Launchpad/components/dropdowns/DropdownProps.type.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { ViewStyle } from "react-native"; - -export interface SelectionDropdownProps { - style?: ViewStyle; - onDropdownClosed?: () => void; - dropdownOptions: string[]; - placeHolder?: string; - setItem: (item: string) => void; - item?: string; - label: string; -} - -export interface MultipleSelectionDropdownProps { - style?: ViewStyle; - onDropdownClosed?: () => void; - dropdownOptions: string[]; - placeHolder?: string; - setItems: (item: string) => void; - items: string[]; - label: string; - sublabel?: React.ReactElement; -} diff --git a/packages/screens/Launchpad/components/dropdowns/MultipleSelectionDropdown.tsx b/packages/screens/Launchpad/components/dropdowns/MultipleSelectionDropdown.tsx deleted file mode 100644 index 71fe7a422c..0000000000 --- a/packages/screens/Launchpad/components/dropdowns/MultipleSelectionDropdown.tsx +++ /dev/null @@ -1,145 +0,0 @@ -import React from "react"; -import { TouchableOpacity, View } from "react-native"; - -import chevronDownSVG from "./../../../../../assets/icons/chevron-down.svg"; -import chevronUpSVG from "./../../../../../assets/icons/chevron-up.svg"; -import { MultipleSelectionDropdownProps } from "./DropdownProps.type"; -import { CheckboxDappStore } from "../../../DAppStore/components/CheckboxDappStore"; - -import { BrandText } from "@/components/BrandText"; -import { SVG } from "@/components/SVG"; -import { PrimaryBox } from "@/components/boxes/PrimaryBox"; -import { TertiaryBox } from "@/components/boxes/TertiaryBox"; -import { Label } from "@/components/inputs/TextInputCustom"; -import { Separator } from "@/components/separators/Separator"; -import { SpacerColumn } from "@/components/spacer"; -import { useDropdowns } from "@/hooks/useDropdowns"; -import { - neutral17, - neutral44, - neutral55, - neutral77, - secondaryColor, -} from "@/utils/style/colors"; -import { fontMedium14, fontSemibold14 } from "@/utils/style/fonts"; -import { layout } from "@/utils/style/layout"; - -export const MultipleSelectionDropdown = ({ - style, - dropdownOptions, - placeHolder, - items, - label, - setItems, - sublabel, -}: MultipleSelectionDropdownProps) => { - const [isDropdownOpen, setDropdownState, ref] = useDropdowns(); - - return ( - - - - {sublabel && sublabel} - - - - setDropdownState()} - > - - {items?.length > 0 ? items.join(", ") : placeHolder} - - - - - - {isDropdownOpen && ( - - {dropdownOptions.map((item, index) => ( - { - setItems(item); - }} - key={index} - style={{ - paddingTop: layout.spacing_x1_5, - width: "100%", - }} - > - - - - - {item} - - - {dropdownOptions.length - 1 !== index && ( - <> - - - - )} - - ))} - - )} - - - ); -}; diff --git a/packages/screens/Launchpad/components/dropdowns/SelectionDropdown.tsx b/packages/screens/Launchpad/components/dropdowns/SelectionDropdown.tsx deleted file mode 100644 index e6e9154a00..0000000000 --- a/packages/screens/Launchpad/components/dropdowns/SelectionDropdown.tsx +++ /dev/null @@ -1,133 +0,0 @@ -import React from "react"; -import { TouchableOpacity, View } from "react-native"; - -import chevronDownSVG from "./../../../../../assets/icons/chevron-down.svg"; -import chevronUpSVG from "./../../../../../assets/icons/chevron-up.svg"; -import { SelectionDropdownProps } from "./DropdownProps.type"; - -import { BrandText } from "@/components/BrandText"; -import { SVG } from "@/components/SVG"; -import { PrimaryBox } from "@/components/boxes/PrimaryBox"; -import { TertiaryBox } from "@/components/boxes/TertiaryBox"; -import { Label } from "@/components/inputs/TextInputCustom"; -import { Separator } from "@/components/separators/Separator"; -import { SpacerColumn } from "@/components/spacer"; -import { useDropdowns } from "@/hooks/useDropdowns"; -import { - neutral17, - neutral44, - neutral55, - neutral77, - secondaryColor, -} from "@/utils/style/colors"; -import { fontMedium14, fontSemibold14 } from "@/utils/style/fonts"; -import { layout } from "@/utils/style/layout"; - -export const SelectionDropdown = ({ - style, - dropdownOptions, - placeHolder, - item, - label, - setItem, -}: SelectionDropdownProps) => { - const [isDropdownOpen, setDropdownState, ref] = useDropdowns(); - - return ( - - - - - - setDropdownState()} - > - - {item ? item : placeHolder} - - - - - - {isDropdownOpen && ( - - {dropdownOptions.map((item, index) => ( - { - setDropdownState(false); - setItem(item); - }} - key={index} - style={{ - paddingTop: layout.spacing_x1_5, - width: "100%", - }} - > - - {item} - - - {dropdownOptions.length - 1 !== index && ( - <> - - - - )} - - ))} - - )} - - - ); -}; diff --git a/packages/screens/Launchpad/components/inputs/TextInputLaunchpad.tsx b/packages/screens/Launchpad/components/inputs/TextInputLaunchpad.tsx deleted file mode 100644 index 05caff1d5e..0000000000 --- a/packages/screens/Launchpad/components/inputs/TextInputLaunchpad.tsx +++ /dev/null @@ -1,42 +0,0 @@ -import React from "react"; -import { Control, FieldValues, Path } from "react-hook-form"; -import { TextInputProps } from "react-native"; - -import { TextInputCustom } from "@/components/inputs/TextInputCustom"; -import { layout } from "@/utils/style/layout"; - -interface TextInputCustomProps - extends Omit { - label: string; - placeHolder: string; - control: Control; - name: Path; - sublabel?: React.ReactElement; - multiline?: boolean; - required?: boolean; -} - -export const TextInputLaunchpad = ({ - control, - name, - label, - placeHolder, - sublabel, - required = false, -}: TextInputCustomProps) => { - return ( - - rules={{ required }} - labelStyle={{ maxWidth: 416 }} - label={label} - placeHolder={placeHolder} - sublabel={sublabel} - name={name} - control={control} - variant="labelOutside" - containerStyle={{ marginBottom: layout.spacing_x2 }} - boxMainContainerStyle={{ minHeight: 0 }} - height={40} - /> - ); -}; diff --git a/packages/screens/Launchpad/components/inputs/TextInputLaunchpadRequired.tsx b/packages/screens/Launchpad/components/inputs/TextInputLaunchpadRequired.tsx deleted file mode 100644 index 81cace33b9..0000000000 --- a/packages/screens/Launchpad/components/inputs/TextInputLaunchpadRequired.tsx +++ /dev/null @@ -1,34 +0,0 @@ -import React from "react"; -import { Control, FieldValues, Path } from "react-hook-form"; -import { TextInputProps } from "react-native"; - -import { TextInputLaunchpad } from "./TextInputLaunchpad"; - -interface TextInputCustomProps - extends Omit { - label: string; - placeHolder: string; - control: Control; - name: Path; - sublabel?: React.ReactElement; - multiline?: boolean; - required?: boolean; -} - -export const TextInputLaunchpadRequired = ({ - control, - name, - label, - placeHolder, - required = true, -}: TextInputCustomProps) => { - return ( - - required={required} - label={label} - placeHolder={placeHolder} - name={name} - control={control} - /> - ); -}; diff --git a/packages/screens/Launchpad/components/inputs/TextInputLaunchpadRequiredSublabel.tsx b/packages/screens/Launchpad/components/inputs/TextInputLaunchpadRequiredSublabel.tsx deleted file mode 100644 index 197ba39c15..0000000000 --- a/packages/screens/Launchpad/components/inputs/TextInputLaunchpadRequiredSublabel.tsx +++ /dev/null @@ -1,35 +0,0 @@ -import React from "react"; -import { Control, FieldValues, Path } from "react-hook-form"; -import { TextInputProps } from "react-native"; - -import { TextInputLaunchpad } from "./TextInputLaunchpad"; - -interface TextInputCustomProps - extends Omit { - label: string; - placeHolder: string; - control: Control; - name: Path; - sublabel: React.ReactElement; - required?: boolean; -} - -export const TextInputLaunchpadRequiredSublabel = ({ - control, - name, - label, - placeHolder, - sublabel, - required = true, -}: TextInputCustomProps) => { - return ( - - required={required} - label={label} - placeHolder={placeHolder} - sublabel={sublabel} - name={name} - control={control} - /> - ); -}; diff --git a/packages/screens/Launchpad/components/modals/MetadataUpdateModal.tsx b/packages/screens/Launchpad/components/modals/MetadataUpdateModal.tsx deleted file mode 100644 index 8bef7d6134..0000000000 --- a/packages/screens/Launchpad/components/modals/MetadataUpdateModal.tsx +++ /dev/null @@ -1,147 +0,0 @@ -import React from "react"; -import { useForm } from "react-hook-form"; -import { Image, View } from "react-native"; - -import ModalBase from "../../../../components/modals/ModalBase"; -import { NewMetadataDetailsFormValues } from "../../CreateCollection.type"; -import { TextInputLaunchpadRequired } from "../inputs/TextInputLaunchpadRequired"; - -import { BrandText } from "@/components/BrandText"; -import { PrimaryBox } from "@/components/boxes/PrimaryBox"; -import { PrimaryButton } from "@/components/buttons/PrimaryButton"; -import { Separator } from "@/components/separators/Separator"; -import { neutral77, secondaryColor } from "@/utils/style/colors"; -import { fontSemibold16, fontSemibold20 } from "@/utils/style/fonts"; -import { layout } from "@/utils/style/layout"; -import { LocalFileData } from "@/utils/types/files"; - -export const MetadataUpdateModal: React.FC<{ - onClose: () => void; - isVisible: boolean; - item: LocalFileData; -}> = ({ onClose, isVisible, item }) => { - const { control } = useForm({ - defaultValues: { - name: "", - description: "", - externalURL: "", - youtubeURL: "", - attributes: "", - }, - mode: "onBlur", - }); - - return ( - - - - - - - Update Metadata - - - Asset filename: {item?.fileName} - - - - } - hideMainSeparator - childrenBottom={ - - - - - - - } - > - - - - - name="name" - label="Name" - control={control} - placeHolder="Token name" - /> - - - name="description" - label="Description" - control={control} - placeHolder="Token description" - /> - - - name="externalURL" - label="External URL" - control={control} - placeHolder="https://" - /> - - - name="youtubeURL" - label="Youtube URL" - control={control} - placeHolder="https://" - /> - - - name="attributes" - label="Attributes" - control={control} - placeHolder="Enter trait types and values" - /> - - - ); -}; diff --git a/packages/screens/LaunchpadApplications/LaunchpadApplicationsScreen.tsx b/packages/screens/LaunchpadApplications/LaunchpadApplicationsScreen.tsx deleted file mode 100644 index 141a5d296d..0000000000 --- a/packages/screens/LaunchpadApplications/LaunchpadApplicationsScreen.tsx +++ /dev/null @@ -1,112 +0,0 @@ -import React, { useState } from "react"; -import { View } from "react-native"; - -import { LaunchpadApplicationsTable } from "./component/LaunchpadApplicationsTable"; - -import { BrandText } from "@/components/BrandText"; -import { ScreenContainer } from "@/components/ScreenContainer"; -import { HighVolSortButton } from "@/components/sorts/HighVolSortButton"; -import { Tabs } from "@/components/tabs/Tabs"; -import { useAppNavigation } from "@/hooks/navigation/useAppNavigation"; -import { useIsMobile } from "@/hooks/useIsMobile"; -import { neutral33 } from "@/utils/style/colors"; -import { fontSemibold20, fontSemibold28 } from "@/utils/style/fonts"; -import { layout } from "@/utils/style/layout"; - -type TabsListType = "pendingApllications" | "pendingConfirmations"; - -const dummyData = { - rank: 1, - collectionNameData: "The R!ot", - collectionNetwork: "teritori", - TwitterURL: "https://www.lipsum.com/", - DiscordURL: "https://www.lipsum.com/", - expectedTotalSupply: 3000, - expectedPublicMintPrice: "550 L", - expectedMintDate: new Date(), -}; - -export const LaunchpadApplicationsScreen: React.FC = () => { - const navigation = useAppNavigation(); - const isMobile = useIsMobile(); - - const tabs = { - pendingApllications: { - name: "Pending Apllications", - badgeCount: 32, - }, - pendingConfirmations: { - name: "Pending Confirmations", - badgeCount: 42, - }, - }; - - const [selectedTab, setSelectedTab] = useState( - "pendingApllications", - ); - - return ( - } - headerChildren={ - Administration Dashboard - } - responsive - onBackPress={() => navigation.goBack()} - > - - - Launchpad Applications - - - - - - {!isMobile && ( - {}} // TODO: don't forget to rewrite onPress function if possible - height={42} - /> - )} - - - - - - - ); -}; diff --git a/packages/screens/LaunchpadApplications/component/LaunchpadApplicationsTable.tsx b/packages/screens/LaunchpadApplications/component/LaunchpadApplicationsTable.tsx deleted file mode 100644 index 8dc32a0cfb..0000000000 --- a/packages/screens/LaunchpadApplications/component/LaunchpadApplicationsTable.tsx +++ /dev/null @@ -1,167 +0,0 @@ -import moment from "moment"; -import React from "react"; -import { FlatList, View } from "react-native"; - -import dotsSVG from "../../../../assets/icons/dots.svg"; - -import { SVG } from "@/components/SVG"; -import { CollectionNameCell } from "@/components/applicationTable/CollectionNameCell"; -import { InnerCellText } from "@/components/applicationTable/InnerCellText"; -import { LinkIconAndRedirect } from "@/components/applicationTable/LinkIconAndRedirect"; -import { TableHeader } from "@/components/table/TableHeader"; -import { TableColumns } from "@/components/table/utils"; -import { useIsMobile } from "@/hooks/useIsMobile"; -import { mineShaftColor } from "@/utils/style/colors"; -import { layout, screenContentMaxWidthLarge } from "@/utils/style/layout"; - -const TABLE_COLUMNS: TableColumns = { - rank: { - label: "#", - flex: 1, - }, - collectionNameData: { - label: "Collection Name", - flex: 5, - }, - collectionNetwork: { - label: "Collection Network", - flex: 3, - }, - TwitterURL: { - label: "Twitter URL", - flex: 2, - }, - DiscordURL: { - label: "Discord URL", - flex: 2, - }, - expectedTotalSupply: { - label: "Expected Total Supply", - flex: 3, - }, - expectedPublicMintPrice: { - label: "Expected Public Mint Price", - flex: 3, - }, - expectedMintDate: { - label: "Expected Mint Date", - flex: 3, - }, -}; - -export const LaunchpadApplicationsTable: React.FC<{ - rows: any[]; -}> = ({ rows }) => { - const isMobile = useIsMobile(); - - return ( - - - - } - keyExtractor={(item) => item.id} - style={{ - minHeight: 220, - borderTopColor: mineShaftColor, - borderTopWidth: 1, - }} - /> - - ); -}; - -const ApplicationRowData: React.FC<{ rowData: any }> = ({ rowData }) => { - const isMobile = useIsMobile(); - - return ( - - - {rowData.rank} - - - - {rowData["collectionNetwork"]} - - {!isMobile && ( - <> - - - - {rowData.expectedTotalSupply} - - - {rowData.expectedPublicMintPrice} - - - - {moment(rowData.expectedMintDate).format("MMM D YYYY")} - - - - - )} - - ); -}; diff --git a/packages/screens/Projects/ProjectsMakeRequestScreen/ShortPresentation.tsx b/packages/screens/Projects/ProjectsMakeRequestScreen/ShortPresentation.tsx index 102e6d8a61..635ccb565d 100644 --- a/packages/screens/Projects/ProjectsMakeRequestScreen/ShortPresentation.tsx +++ b/packages/screens/Projects/ProjectsMakeRequestScreen/ShortPresentation.tsx @@ -7,9 +7,9 @@ import { MakeRequestFooter } from "./Footer"; import addSVG from "../../../../assets/icons/add.svg"; import { BrandText } from "../../../components/BrandText"; import { PrimaryButtonOutline } from "../../../components/buttons/PrimaryButtonOutline"; -import { FileUploader } from "../../../components/fileUploader"; import { RoundedGradientImage } from "../../../components/images/RoundedGradientImage"; import { TextInputCustom } from "../../../components/inputs/TextInputCustom"; +import { FileUploader } from "../../../components/inputs/fileUploader"; import { SpacerColumn } from "../../../components/spacer"; import { useNameSearch } from "../../../hooks/search/useNameSearch"; import { useSelectedNetworkId } from "../../../hooks/useSelectedNetwork"; diff --git a/packages/screens/ReadyLaunchpadApplications/ReadyLaunchpadApplicationsScreen.tsx b/packages/screens/ReadyLaunchpadApplications/ReadyLaunchpadApplicationsScreen.tsx deleted file mode 100644 index 8bfb6bba11..0000000000 --- a/packages/screens/ReadyLaunchpadApplications/ReadyLaunchpadApplicationsScreen.tsx +++ /dev/null @@ -1,114 +0,0 @@ -import React, { useState } from "react"; -import { View } from "react-native"; - -import { ReadyLaunchApplicationTable } from "./component/ReadyLaunchApplicationTable"; - -import { BrandText } from "@/components/BrandText"; -import { ScreenContainer } from "@/components/ScreenContainer"; -import { HighVolSortButton } from "@/components/sorts/HighVolSortButton"; -import { Tabs } from "@/components/tabs/Tabs"; -import { useAppNavigation } from "@/hooks/navigation/useAppNavigation"; -import { useIsMobile } from "@/hooks/useIsMobile"; -import { neutral33 } from "@/utils/style/colors"; -import { fontSemibold20, fontSemibold28 } from "@/utils/style/fonts"; -import { layout } from "@/utils/style/layout"; - -type TabsListType = "readyForListing" | "waitingForApproval"; - -const dummyData = { - rank: 1, - collectionNameData: "The R!ot", - collectionNetwork: "teritori", - projectReadinessForMint: "Complete and ready to mint", - whitelistQuantity: "0", - premiumMarketingPackage: "No", - basicMarketingPackage: "Yes", -}; - -export const ReadyLaunchpadApplicationsScreen: React.FC = () => { - const navigation = useAppNavigation(); - const isMobile = useIsMobile(); - - const tabs = { - readyForListing: { - name: "Ready for listing", - badgeCount: 32, - }, - waitingForApproval: { - name: "Waiting for approval", - badgeCount: 42, - }, - }; - - const [selectedTab, setSelectedTab] = - useState("readyForListing"); - - return ( - } - headerChildren={ - Administration Dashboard - } - responsive - onBackPress={() => navigation.goBack()} - > - - - Launchpad Applications - - - - - - {!isMobile && ( - {}} // TODO: don't forget to rewrite onPress function if possible - height={42} - /> - )} - - - - - - - ); -}; diff --git a/packages/screens/ReadyLaunchpadApplications/component/CellBadgeRow.tsx b/packages/screens/ReadyLaunchpadApplications/component/CellBadgeRow.tsx deleted file mode 100644 index fecbcfb36c..0000000000 --- a/packages/screens/ReadyLaunchpadApplications/component/CellBadgeRow.tsx +++ /dev/null @@ -1,27 +0,0 @@ -import React from "react"; -import { View, ViewStyle } from "react-native"; - -import { InnerCellText } from "@/components/applicationTable/InnerCellText"; -import { lightblue, neutral00 } from "@/utils/style/colors"; - -export const CellBadgeRow: React.FC<{ - style: ViewStyle; - text: string; -}> = ({ style, text }) => { - return ( - - - {text} - - - ); -}; diff --git a/packages/screens/ReadyLaunchpadApplications/component/ReadyLaunchApplicationTable.tsx b/packages/screens/ReadyLaunchpadApplications/component/ReadyLaunchApplicationTable.tsx deleted file mode 100644 index 25d5ff8d31..0000000000 --- a/packages/screens/ReadyLaunchpadApplications/component/ReadyLaunchApplicationTable.tsx +++ /dev/null @@ -1,167 +0,0 @@ -import React from "react"; -import { FlatList, View } from "react-native"; - -import { CellBadgeRow } from "./CellBadgeRow"; -import dotsSVG from "../../../../assets/icons/dots.svg"; - -import { BrandText } from "@/components/BrandText"; -import { SVG } from "@/components/SVG"; -import { CollectionNameCell } from "@/components/applicationTable/CollectionNameCell"; -import { InnerCellText } from "@/components/applicationTable/InnerCellText"; -import { TableHeader } from "@/components/table/TableHeader"; -import { TableColumns } from "@/components/table/utils"; -import { useIsMobile } from "@/hooks/useIsMobile"; -import { lightblue, mineShaftColor, neutral00 } from "@/utils/style/colors"; -import { fontSemibold11, fontSemibold13 } from "@/utils/style/fonts"; -import { layout, screenContentMaxWidthLarge } from "@/utils/style/layout"; - -const TABLE_COLUMNS: TableColumns = { - rank: { - label: "#", - flex: 1, - }, - collectionNameData: { - label: "Collection Name", - flex: 5, - }, - collectionNetwork: { - label: "Collection Network", - flex: 3, - }, - projectReadinessForMint: { - label: "Project Readiness for Mint", - flex: 3, - }, - whitelistQuantity: { - label: "Whitelist quantity", - flex: 2, - }, - premiumMarketingPackage: { - label: "Premium marketing package", - flex: 2, - }, - basicMarketingPackage: { - label: "Basic marketing package", - flex: 2, - }, -}; - -export const ReadyLaunchApplicationTable: React.FC<{ - rows: any[]; -}> = ({ rows }) => { - const isMobile = useIsMobile(); - - return ( - - - } - keyExtractor={(item) => item.id} - style={{ - minHeight: 220, - borderTopColor: mineShaftColor, - borderTopWidth: 1, - }} - /> - - ); -}; - -const ApplicationRowData: React.FC<{ rowData: any }> = ({ rowData }) => { - const isMobile = useIsMobile(); - - return ( - - - {rowData.rank} - - - - {rowData["collectionNetwork"]} - - {!isMobile && ( - <> - - - - - - - {rowData.basicMarketingPackage} - - - - - - )} - - ); -}; diff --git a/packages/screens/UserPublicProfile/components/mintUploader/mintUploader.web.tsx b/packages/screens/UserPublicProfile/components/mintUploader/mintUploader.web.tsx index 1468f83e0a..272b3f8ec7 100644 --- a/packages/screens/UserPublicProfile/components/mintUploader/mintUploader.web.tsx +++ b/packages/screens/UserPublicProfile/components/mintUploader/mintUploader.web.tsx @@ -9,8 +9,8 @@ import { DeleteButton } from "@/components/FilePreview/DeleteButton"; import { OptimizedImage } from "@/components/OptimizedImage"; import { SVG } from "@/components/SVG"; import { PrimaryBox } from "@/components/boxes/PrimaryBox"; -import { FileUploaderProps } from "@/components/fileUploader/FileUploader.type"; -import { formatFile } from "@/components/fileUploader/formatFile"; +import { FileUploaderProps } from "@/components/inputs/fileUploader/FileUploader.type"; +import { formatFile } from "@/components/inputs/fileUploader/formatFile"; import { AnimatedLoader } from "@/components/loaders/AnimatedLoader"; import { SpacerColumn } from "@/components/spacer"; import { useFeedbacks } from "@/context/FeedbacksProvider"; diff --git a/packages/utils/navigation.ts b/packages/utils/navigation.ts index ecb6498e21..adff9bbb23 100644 --- a/packages/utils/navigation.ts +++ b/packages/utils/navigation.ts @@ -30,15 +30,9 @@ export type RootStackParamList = { id: string; }; RiotersFooter: undefined; - AdministrationDashboard: undefined; - LaunchpadApplications: undefined; - ApplicationReview: undefined; - ReadyLaunchpadApplications: undefined; - AllProjectAdministrationDash: undefined; Launchpad: undefined; LaunchpadApply: undefined; - LaunchpadCreate: undefined; LaunchpadERC20: undefined; LaunchpadERC20Tokens?: { network?: string }; @@ -203,11 +197,6 @@ const navConfig: { GovernanceProposal: "governance/:id", UserPublicProfile: "user/:id/:tab?", RiotersFooter: "rioters-footer", - AdministrationDashboard: "launchpad/admin", - LaunchpadApplications: "launchpad/applications", - ApplicationReview: "launchpad/application-review", - ReadyLaunchpadApplications: "launchpad/ready-applications", - AllProjectAdministrationDash: "launchpad/all-projects", // === RiotGame RiotGame: "riot-game", @@ -223,7 +212,6 @@ const navConfig: { // ==== Launchpad Launchpad: "launchpad", LaunchpadApply: "launchpad/apply", - LaunchpadCreate: "launchpad/create", // ==== Launchpad ERC20 LaunchpadERC20: "launchpad-erc20", diff --git a/packages/utils/style/colors.ts b/packages/utils/style/colors.ts index da6c983192..0e43f3cc1f 100644 --- a/packages/utils/style/colors.ts +++ b/packages/utils/style/colors.ts @@ -77,8 +77,6 @@ export const currencyATOMcolor = "#5C26F5"; export const currencyOSMOcolor = "#A401D4"; export const currencyGNOcolor = "#232800"; -export const lightblue = "#D2DEFC"; - // Returns hexa color modified with alpha export const withAlpha = (color: string, opacity: number) => { const _opacity = Math.round(Math.min(Math.max(opacity || 1, 0), 1) * 255); diff --git a/yarn.lock b/yarn.lock index 536fc36fa7..7b057ed53d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6029,7 +6029,7 @@ __metadata: languageName: node linkType: hard -"@react-native/normalize-color@npm:*, @react-native/normalize-color@npm:^2.0.0, @react-native/normalize-color@npm:^2.1.0": +"@react-native/normalize-color@npm:^2.0.0, @react-native/normalize-color@npm:^2.1.0": version: 2.1.0 resolution: "@react-native/normalize-color@npm:2.1.0" checksum: 8ccbd40b3c7629f1dc97b3e9aadd95fd3507fcf2e37535a6299a70436ab891c34cbdc4240b07380553d6e85dd909e23d5773b5be1da2906b026312e0b0768838 @@ -10201,17 +10201,6 @@ __metadata: languageName: node linkType: hard -"deprecated-react-native-prop-types@npm:^2.3.0": - version: 2.3.0 - resolution: "deprecated-react-native-prop-types@npm:2.3.0" - dependencies: - "@react-native/normalize-color": "*" - invariant: "*" - prop-types: "*" - checksum: d14f4be1dfe780a7fa9197a31b4a9a2b409c8cf1bf677713fd92d06733dee1043578662d1a8858541cf06164ae91d295db6e595f29bf13e808d9fb37bc58c90b - languageName: node - linkType: hard - "deprecated-react-native-prop-types@npm:^4.0.0": version: 4.2.3 resolution: "deprecated-react-native-prop-types@npm:4.2.3" @@ -13426,7 +13415,7 @@ __metadata: languageName: node linkType: hard -"invariant@npm:*, invariant@npm:2.2.4, invariant@npm:^2.2.1, invariant@npm:^2.2.4": +"invariant@npm:2.2.4, invariant@npm:^2.2.1, invariant@npm:^2.2.4": version: 2.2.4 resolution: "invariant@npm:2.2.4" dependencies: @@ -17252,7 +17241,7 @@ __metadata: languageName: node linkType: hard -"prop-types@npm:*, prop-types@npm:^15.5.6, prop-types@npm:^15.5.8, prop-types@npm:^15.7.2, prop-types@npm:^15.8.0, prop-types@npm:^15.8.1": +"prop-types@npm:^15.5.6, prop-types@npm:^15.5.8, prop-types@npm:^15.7.2, prop-types@npm:^15.8.0, prop-types@npm:^15.8.1": version: 15.8.1 resolution: "prop-types@npm:15.8.1" dependencies: @@ -17826,16 +17815,6 @@ __metadata: languageName: node linkType: hard -"react-native-popover-view@npm:^5.1.8": - version: 5.1.8 - resolution: "react-native-popover-view@npm:5.1.8" - dependencies: - deprecated-react-native-prop-types: ^2.3.0 - prop-types: ^15.8.1 - checksum: d219dccbf89d9536ef4edf73a7576b6cb9d828cb8cc92fa851821d0e55e7b9bbff2a3907e88c2e3a0e267301e5c2c50980bb4507640fac1eba6d9d0429bca615 - languageName: node - linkType: hard - "react-native-popup-menu@npm:^0.16.1": version: 0.16.1 resolution: "react-native-popup-menu@npm:0.16.1" @@ -20325,7 +20304,6 @@ __metadata: react-native-paper: ^4.12.5 react-native-pell-rich-editor: ^1.8.8 react-native-pie-chart: ^3.0.1 - react-native-popover-view: ^5.1.8 react-native-popup-menu: ^0.16.1 react-native-qrcode-svg: ^6.2.0 react-native-reanimated: ^3.6.2