diff --git a/apps/dashboard/package.json b/apps/dashboard/package.json index 0a7addba12f..0dad0d63d6a 100644 --- a/apps/dashboard/package.json +++ b/apps/dashboard/package.json @@ -85,7 +85,6 @@ "react-dom": "18.3.1", "react-dropzone": "^14.2.9", "react-hook-form": "7.52.0", - "react-icons": "^5.2.1", "react-intersection-observer": "^9.10.3", "react-markdown": "^9.0.1", "react-responsive-carousel": "^3.2.23", diff --git a/apps/dashboard/src/components/buttons/TransactionButton.tsx b/apps/dashboard/src/components/buttons/TransactionButton.tsx index 9d4accb28f8..e0d7c9c3225 100644 --- a/apps/dashboard/src/components/buttons/TransactionButton.tsx +++ b/apps/dashboard/src/components/buttons/TransactionButton.tsx @@ -3,7 +3,6 @@ import { ToolTipLabel } from "@/components/ui/tooltip"; import { Center, Flex, - Icon, Popover, PopoverArrow, PopoverBody, @@ -12,9 +11,8 @@ import { } from "@chakra-ui/react"; import { CHAIN_ID_TO_GNOSIS } from "constants/mappings"; import { useActiveChainAsDashboardChain } from "lib/v5-adapter"; -import { ArrowLeftRightIcon } from "lucide-react"; +import { ArrowLeftRightIcon, InfoIcon } from "lucide-react"; import { useEffect, useMemo, useRef, useState } from "react"; -import { FiInfo } from "react-icons/fi"; import { useActiveAccount, useActiveWallet, @@ -209,7 +207,7 @@ const ExternalApprovalNotice: React.FC = ({
- + Execute Transaction
@@ -244,7 +242,7 @@ const ExternalApprovalNotice: React.FC = ({
- + Approve Transaction
diff --git a/apps/dashboard/src/components/chain-validation/index.tsx b/apps/dashboard/src/components/chain-validation/index.tsx index a000b4549a9..1d0c5f424be 100644 --- a/apps/dashboard/src/components/chain-validation/index.tsx +++ b/apps/dashboard/src/components/chain-validation/index.tsx @@ -1,7 +1,6 @@ import { InlineCode } from "@/components/ui/inline-code"; import { FormControl, - Icon, Input, InputGroup, Table, @@ -13,28 +12,22 @@ import { } from "@chakra-ui/react"; import { useTrack } from "hooks/analytics/useTrack"; import { useRpcValidation } from "hooks/chains/useRpcValidation"; -import { type ChangeEvent, useMemo, useState } from "react"; -import type { IconType } from "react-icons"; -import { BiCheckCircle, BiErrorCircle } from "react-icons/bi"; -import { RiErrorWarningLine } from "react-icons/ri"; +import { AlertCircleIcon, CheckCircleIcon } from "lucide-react"; +import { type ChangeEvent, useState } from "react"; + import { Button, Card, FormLabel, Link, TableContainer } from "tw-components"; -const StatusCheck = ({ - status, -}: { +const StatusCheck = (props: { status: "success" | "error" | "warning"; }) => { - const values: [string, IconType] = useMemo(() => { - if (status === "error") { - return ["red.500", BiErrorCircle]; - } - if (status === "warning") { - return ["yellow.500", RiErrorWarningLine]; - } - return ["green.500", BiCheckCircle]; - }, [status]); - - return ; + switch (props.status) { + case "error": + return ; + case "warning": + return ; + case "success": + return ; + } }; const ChainValidation: React.FC = () => { diff --git a/apps/dashboard/src/components/contract-components/contract-publish-form/custom-factory.tsx b/apps/dashboard/src/components/contract-components/contract-publish-form/custom-factory.tsx index 5277b7a0b7f..9055c4a6046 100644 --- a/apps/dashboard/src/components/contract-components/contract-publish-form/custom-factory.tsx +++ b/apps/dashboard/src/components/contract-components/contract-publish-form/custom-factory.tsx @@ -3,17 +3,15 @@ import { Box, Flex, FormControl, - Icon, IconButton, Input, ListItem, UnorderedList, } from "@chakra-ui/react"; import type { Abi } from "abitype"; -import { PlusIcon } from "lucide-react"; +import { PlusIcon, TrashIcon } from "lucide-react"; import { type Dispatch, type SetStateAction, useEffect } from "react"; import { Controller, useFieldArray, useFormContext } from "react-hook-form"; -import { FiTrash } from "react-icons/fi"; import { Button, Heading, Text } from "tw-components"; import { useCustomFactoryAbi } from "../hooks"; import { AbiSelector } from "./abi-selector"; @@ -101,7 +99,7 @@ export const CustomFactory: React.FC = ({ } + icon={} aria-label="Remove row" onClick={() => remove(index)} /> diff --git a/apps/dashboard/src/components/contract-components/contract-publish-form/external-links-input.tsx b/apps/dashboard/src/components/contract-components/contract-publish-form/external-links-input.tsx index 04fc82b694d..a102b23ab79 100644 --- a/apps/dashboard/src/components/contract-components/contract-publish-form/external-links-input.tsx +++ b/apps/dashboard/src/components/contract-components/contract-publish-form/external-links-input.tsx @@ -2,12 +2,11 @@ import { Divider, Flex, FormControl, - Icon, IconButton, Input, } from "@chakra-ui/react"; +import { TrashIcon } from "lucide-react"; import { useFormContext } from "react-hook-form"; -import { FiTrash } from "react-icons/fi"; import { FormErrorMessage, FormLabel } from "tw-components"; interface ExternalLinksInputProps { @@ -73,7 +72,7 @@ export const ExternalLinksInput: React.FC = ({ } + icon={} aria-label="Remove row" onClick={() => remove(index)} alignSelf="end" diff --git a/apps/dashboard/src/components/contract-components/publisher/edit-profile.tsx b/apps/dashboard/src/components/contract-components/publisher/edit-profile.tsx index 21b0c331985..d63577244af 100644 --- a/apps/dashboard/src/components/contract-components/publisher/edit-profile.tsx +++ b/apps/dashboard/src/components/contract-components/publisher/edit-profile.tsx @@ -4,7 +4,6 @@ import { useThirdwebClient } from "@/constants/thirdweb.client"; import { Box, FormControl, - Icon, Input, Textarea, useDisclosure, @@ -22,11 +21,9 @@ import type { ProfileMetadata, ProfileMetadataInput } from "constants/schemas"; import { useTrack } from "hooks/analytics/useTrack"; import { useImageFileOrUrl } from "hooks/useImageFileOrUrl"; import { useTxNotifications } from "hooks/useTxNotifications"; +import { EditIcon, GlobeIcon, ImageIcon, PencilIcon } from "lucide-react"; import { useId } from "react"; import { useForm } from "react-hook-form"; -import { BiImage } from "react-icons/bi"; -import { FiEdit, FiGlobe } from "react-icons/fi"; -import { HiPencilAlt } from "react-icons/hi"; import { getContractPublisher, setPublisherProfileUri, @@ -90,7 +87,7 @@ export const EditProfile: React.FC = ({ onClick={onOpen} size="sm" variant="outline" - leftIcon={} + leftIcon={} > Edit Profile @@ -177,7 +174,7 @@ export const EditProfile: React.FC = ({
- + Avatar
@@ -200,7 +197,7 @@ export const EditProfile: React.FC = ({
- + Bio
@@ -240,7 +237,7 @@ export const EditProfile: React.FC = ({
- + Website
diff --git a/apps/dashboard/src/components/contract-components/tables/published-contracts.tsx b/apps/dashboard/src/components/contract-components/tables/published-contracts.tsx index 3348ac06e44..e2eec1c5474 100644 --- a/apps/dashboard/src/components/contract-components/tables/published-contracts.tsx +++ b/apps/dashboard/src/components/contract-components/tables/published-contracts.tsx @@ -1,7 +1,7 @@ import { Alert, AlertIcon, AlertTitle, Flex, Spinner } from "@chakra-ui/react"; import { useTrack } from "hooks/analytics/useTrack"; +import { RefreshCcwIcon } from "lucide-react"; import { useMemo, useState } from "react"; -import { IoRefreshSharp } from "react-icons/io5"; import { Button, Heading, LinkButton, Text } from "tw-components"; import { PublishedContractTable } from "../contract-table-v2"; import { usePublishedContractsQuery } from "../hooks"; @@ -100,7 +100,7 @@ export const PublishedContracts: React.FC = ({
); diff --git a/apps/dashboard/src/components/product-pages/common/GameCard.tsx b/apps/dashboard/src/components/product-pages/common/GameCard.tsx index 06fb787cd7a..d7c6f2e2e64 100644 --- a/apps/dashboard/src/components/product-pages/common/GameCard.tsx +++ b/apps/dashboard/src/components/product-pages/common/GameCard.tsx @@ -1,8 +1,8 @@ import { Box, Flex, useBreakpointValue } from "@chakra-ui/react"; import { GithubIcon } from "components/icons/brand-icons/GithubIcon"; import { useTrack } from "hooks/analytics/useTrack"; +import { GamepadIcon } from "lucide-react"; import NextImage, { type StaticImageData } from "next/image"; -import { IoGameControllerOutline } from "react-icons/io5"; import { Button, Card, @@ -72,7 +72,7 @@ export const GameCard: React.FC = ({ />
))} @@ -87,7 +86,7 @@ export const BillingDowngradeDialog: React.FC = ({ w="full" fontSize="small" textAlign="left" - rightIcon={} + rightIcon={} > {feedback ? DOWNGRADE_OPTIONS[ diff --git a/apps/dashboard/src/components/settings/Account/Billing/Header.tsx b/apps/dashboard/src/components/settings/Account/Billing/Header.tsx index 5c54bf8c635..2ee8385390c 100644 --- a/apps/dashboard/src/components/settings/Account/Billing/Header.tsx +++ b/apps/dashboard/src/components/settings/Account/Billing/Header.tsx @@ -1,5 +1,5 @@ -import { Flex, Icon } from "@chakra-ui/react"; -import { FiAlertCircle, FiCheckCircle, FiInfo } from "react-icons/fi"; +import { Flex } from "@chakra-ui/react"; +import { AlertCircleIcon, CheckCircleIcon, InfoIcon } from "lucide-react"; import { Badge, Text } from "tw-components"; interface BillingHeaderProps { @@ -29,20 +29,8 @@ export const BillingHeader: React.FC = ({ > {validPayment @@ -57,3 +45,16 @@ export const BillingHeader: React.FC = ({ ); }; + +function Icon(props: { + validPayment: boolean; + paymentVerification: boolean; +}) { + if (props.validPayment) { + return ; + } + if (props.paymentVerification) { + return ; + } + return ; +} diff --git a/apps/dashboard/src/components/settings/Account/Billing/index.tsx b/apps/dashboard/src/components/settings/Account/Billing/index.tsx index a0f0240d2fb..e751ad1ace8 100644 --- a/apps/dashboard/src/components/settings/Account/Billing/index.tsx +++ b/apps/dashboard/src/components/settings/Account/Billing/index.tsx @@ -5,15 +5,15 @@ import { AccountStatus, useUpdateAccountPlan, } from "@3rdweb-sdk/react/hooks/useApi"; -import { Flex, Icon } from "@chakra-ui/react"; +import { Flex } from "@chakra-ui/react"; import { StepsCard } from "components/dashboard/StepsCard"; import { OnboardingModal } from "components/onboarding/Modal"; import { AccountForm } from "components/settings/Account/AccountForm"; import { ManageBillingButton } from "components/settings/Account/Billing/ManageButton"; import { useTrack } from "hooks/analytics/useTrack"; import { useTxNotifications } from "hooks/useTxNotifications"; +import { ExternalLinkIcon } from "lucide-react"; import { useCallback, useEffect, useMemo, useState } from "react"; -import { FiExternalLink } from "react-icons/fi"; import { Button, Heading, Text, TrackedLink } from "tw-components"; import { PLANS } from "utils/pricing"; import { LazyOnboardingBilling } from "../../../onboarding/LazyOnboardingBilling"; @@ -284,7 +284,7 @@ export const Billing: React.FC = ({ account, teamId }) => { >
Learn more about thirdweb's pricing - +
diff --git a/apps/dashboard/src/components/smart-wallets/SponsorshipPolicies/index.tsx b/apps/dashboard/src/components/smart-wallets/SponsorshipPolicies/index.tsx index 30922b03ccf..3a9e52aafde 100644 --- a/apps/dashboard/src/components/smart-wallets/SponsorshipPolicies/index.tsx +++ b/apps/dashboard/src/components/smart-wallets/SponsorshipPolicies/index.tsx @@ -25,9 +25,9 @@ import { zodResolver } from "@hookform/resolvers/zod"; import { GatedSwitch } from "components/settings/Account/Billing/GatedSwitch"; import { useTrack } from "hooks/analytics/useTrack"; import { useTxNotifications } from "hooks/useTxNotifications"; +import { TrashIcon } from "lucide-react"; import { useMemo } from "react"; import { useFieldArray, useForm } from "react-hook-form"; -import { LuTrash2 } from "react-icons/lu"; import { isAddress } from "thirdweb/utils"; import { Button, @@ -598,7 +598,7 @@ export function AccountAbstractionSettingsPage( /> } + icon={} onClick={() => { customHeaderFields.remove(customHeaderIdx); }} diff --git a/apps/dashboard/src/contract-ui/tabs/manage/components/InstalledModulesTable.tsx b/apps/dashboard/src/contract-ui/tabs/manage/components/InstalledModulesTable.tsx index 435d2ff478d..decc22e4118 100644 --- a/apps/dashboard/src/contract-ui/tabs/manage/components/InstalledModulesTable.tsx +++ b/apps/dashboard/src/contract-ui/tabs/manage/components/InstalledModulesTable.tsx @@ -18,9 +18,8 @@ import { Skeleton } from "@/components/ui/skeleton"; import { ToolTipLabel } from "@/components/ui/tooltip"; import { useMutation } from "@tanstack/react-query"; import { TransactionButton } from "components/buttons/TransactionButton"; -import { CircleSlash } from "lucide-react"; +import { CircleSlash, TrashIcon } from "lucide-react"; import { useState } from "react"; -import { FaRegTrashAlt } from "react-icons/fa"; import { toast } from "sonner"; import { type ContractOptions, @@ -233,7 +232,7 @@ function ModuleRow(props: { {uninstallMutation.isPending ? ( ) : ( - + )} diff --git a/apps/dashboard/src/contract-ui/tabs/permissions/components/contract-permission.tsx b/apps/dashboard/src/contract-ui/tabs/permissions/components/contract-permission.tsx index 8920ec842a3..0623afff71d 100644 --- a/apps/dashboard/src/contract-ui/tabs/permissions/components/contract-permission.tsx +++ b/apps/dashboard/src/contract-ui/tabs/permissions/components/contract-permission.tsx @@ -1,7 +1,7 @@ import { useIsAdmin } from "@3rdweb-sdk/react/hooks/useContractRoles"; -import { Flex, Icon, Select, Spinner } from "@chakra-ui/react"; +import { Flex, Select, Spinner } from "@chakra-ui/react"; +import { InfoIcon } from "lucide-react"; import { useFormContext } from "react-hook-form"; -import { FiInfo } from "react-icons/fi"; import { type ThirdwebContract, ZERO_ADDRESS } from "thirdweb"; import { Card, Heading, Text } from "tw-components"; import { PermissionEditor } from "./permissions-editor"; @@ -165,12 +165,7 @@ export const ContractPermission: React.FC = ({ padding="10px" gap={3} > - + {isRestricted ? ( <> @@ -205,12 +200,7 @@ export const ContractPermission: React.FC = ({ padding="10px" gap={3} > - + {isRestricted ? ( <> @@ -239,12 +229,7 @@ export const ContractPermission: React.FC = ({ padding="10px" gap={3} > - + {isRestricted ? ( <> diff --git a/apps/dashboard/src/contract-ui/tabs/proposals/components/proposal.tsx b/apps/dashboard/src/contract-ui/tabs/proposals/components/proposal.tsx index 076d8e76dfe..25f43efea44 100644 --- a/apps/dashboard/src/contract-ui/tabs/proposals/components/proposal.tsx +++ b/apps/dashboard/src/contract-ui/tabs/proposals/components/proposal.tsx @@ -4,10 +4,10 @@ import { tokensDelegated, votingTokenDecimals, } from "@3rdweb-sdk/react/hooks/useVote"; -import { Flex, Icon } from "@chakra-ui/react"; +import { Flex } from "@chakra-ui/react"; import { TransactionButton } from "components/buttons/TransactionButton"; +import { CheckIcon, MinusIcon, XIcon } from "lucide-react"; import { useState } from "react"; -import { FiCheck, FiMinus, FiX } from "react-icons/fi"; import { toast } from "sonner"; import { type ThirdwebContract, toTokens } from "thirdweb"; import * as VoteExt from "thirdweb/extensions/vote"; @@ -139,7 +139,7 @@ export const Proposal: React.FC = ({ proposal, contract }) => { txChainID={contract.chain.id} size="sm" transactionCount={1} - rightIcon={} + rightIcon={} onClick={() => castVote(1)} colorScheme="green" isDisabled={sendTx.isPending && voteType !== 1} @@ -151,7 +151,7 @@ export const Proposal: React.FC = ({ proposal, contract }) => { txChainID={contract.chain.id} size="sm" transactionCount={1} - rightIcon={} + rightIcon={} onClick={() => castVote(0)} colorScheme="red" isDisabled={sendTx.isPending && voteType !== 0} @@ -164,7 +164,7 @@ export const Proposal: React.FC = ({ proposal, contract }) => { colorScheme="blackAlpha" size="sm" transactionCount={1} - rightIcon={} + rightIcon={} onClick={() => castVote(2)} isDisabled={sendTx.isPending && voteType !== 2} isLoading={sendTx.isPending && voteType === 2} @@ -177,7 +177,7 @@ export const Proposal: React.FC = ({ proposal, contract }) => {
diff --git a/apps/portal/src/components/Document/Cards/GithubTemplateCard.tsx b/apps/portal/src/components/Document/Cards/GithubTemplateCard.tsx index 9662dc5da56..fbf3c62807c 100644 --- a/apps/portal/src/components/Document/Cards/GithubTemplateCard.tsx +++ b/apps/portal/src/components/Document/Cards/GithubTemplateCard.tsx @@ -1,5 +1,5 @@ import Link from "next/link"; -import { BsGithub } from "react-icons/bs"; +import { GithubIcon } from "../GithubButtonLink"; export function GithubTemplateCard(props: { title: string; @@ -10,7 +10,7 @@ export function GithubTemplateCard(props: {
- +

{props.title}

{props.tag && (
diff --git a/apps/portal/src/components/Document/EditPage.tsx b/apps/portal/src/components/Document/EditPage.tsx index 4043fce9b80..da80c6d40b7 100644 --- a/apps/portal/src/components/Document/EditPage.tsx +++ b/apps/portal/src/components/Document/EditPage.tsx @@ -1,5 +1,5 @@ import Link from "next/link"; -import { BsGithub } from "react-icons/bs"; +import { GithubIcon } from "./GithubButtonLink"; const prefix = "https://github.com/thirdweb-dev/js/edit/main/apps/portal/src/app"; @@ -12,7 +12,7 @@ export function EditPage(props: { path: string }) { className="inline-flex items-center rounded-lg border text-sm duration-200 hover:border-f-300" >
- +
Edit this page
diff --git a/apps/portal/src/components/Document/GithubButtonLink.tsx b/apps/portal/src/components/Document/GithubButtonLink.tsx index 291cdd78526..66a1f5346a2 100644 --- a/apps/portal/src/components/Document/GithubButtonLink.tsx +++ b/apps/portal/src/components/Document/GithubButtonLink.tsx @@ -1,5 +1,22 @@ import Link from "next/link"; -import { BsGithub } from "react-icons/bs"; +import type { SVGProps } from "react"; + +export const GithubIcon = (props: SVGProps) => { + return ( + + GitHub + + + ); +}; export function GithubButtonLink(props: { href: string }) { return ( @@ -9,7 +26,7 @@ export function GithubButtonLink(props: { href: string }) { className="inline-flex items-center rounded-lg border text-sm duration-200 hover:border-f-300" >
- +
View on GitHub
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8bcadfcfce1..8916368e37f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -252,9 +252,6 @@ importers: react-hook-form: specifier: 7.52.0 version: 7.52.0(react@18.3.1) - react-icons: - specifier: ^5.2.1 - version: 5.3.0(react@18.3.1) react-intersection-observer: specifier: ^9.10.3 version: 9.13.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -611,9 +608,6 @@ importers: react-html-parser: specifier: 2.0.2 version: 2.0.2(react@18.3.1) - react-icons: - specifier: ^5.2.1 - version: 5.3.0(react@18.3.1) remark-gfm: specifier: 3.0.1 version: 3.0.1 @@ -12856,11 +12850,6 @@ packages: peerDependencies: react: ^0.14.0 || ^15.0.0 || ^16.0.0-0 - react-icons@5.3.0: - resolution: {integrity: sha512-DnUk8aFbTyQPSkCfF8dbX6kQjXA9DktMeJqfjrg6cK9vwQVMxmcA3BfP4QoiztVmEHtwlTgLFsPuH2NskKT6eg==} - peerDependencies: - react: '*' - react-immutable-proptypes@2.2.0: resolution: {integrity: sha512-Vf4gBsePlwdGvSZoLSBfd4HAP93HDauMY4fDjXhreg/vg6F3Fj/MXDNyTbltPC/xZKmZc+cjLu3598DdYK6sgQ==} peerDependencies: @@ -32473,10 +32462,6 @@ snapshots: htmlparser2: 3.10.1 react: 18.3.1 - react-icons@5.3.0(react@18.3.1): - dependencies: - react: 18.3.1 - react-immutable-proptypes@2.2.0(immutable@3.8.2): dependencies: immutable: 3.8.2