diff --git a/src/app/globals.css b/src/app/globals.css
index 756266f6f8..787e4c6612 100644
--- a/src/app/globals.css
+++ b/src/app/globals.css
@@ -97,11 +97,10 @@
--alert-error: 0 78% 98%;
--alert-error-icon: 0 84% 60%;
- /* we plan to add the whole alpha color palettes */
- --whiteAlpha-800: rgba(255, 255, 255, 0.8);
- --blackAlpha-800: rgba(0, 0, 0, 0.8);
- --blackAlpha-300: rgba(0, 0, 0, 0.3);
- --blackAlpha-100: rgba(0, 0, 0, 0.1);
+ --blackAlpha-soft: rgba(0, 0, 0, 0.06);
+ --blackAlpha-medium: rgba(0, 0, 0, 0.16);
+ --blackAlpha-hard: rgba(0, 0, 0, 0.8);
+
/* not sure about this approach, we should think about this one too */
--gray: 240 3% 46%; /* gray.500 from Chakra */
@@ -127,8 +126,12 @@
--github-active: 0 0% 15%;
--farcaster: 261 55% 61%;
- --farcaster-hover: 261 55% 55%;
- --farcaster-active: 239 75% 50%;
+ --farcaster-hover: 261 55% 49%;
+ --farcaster-active: 261 54% 37%;
+
+ --uniswap: 331 100% 45%;
+ --uniswap-hover: 332 100% 35%;
+ --uniswap-active: 331 100% 25%;
/**
* Missing reward colors to work with the current Chakra driven solution.
@@ -247,8 +250,13 @@
--google-active: 212 96% 78%;
--github-hover: 0 0% 44%;
--github-active: 0 0% 68%;
- --farcaster-hover: 239 75% 75%;
- --farcaster-active: 238 76% 81%;
+
+ --farcaster-hover: 261 54% 69%;
+ --farcaster-active: 262 54% 77%;
+
+ --uniswap-hover: 331 100% 55%;
+ --uniswap-active: 331 100% 65%;
+
}
}
diff --git a/src/components/[guild]/AddAndOrderRoles/components/DraggableRoleCard.tsx b/src/components/[guild]/AddAndOrderRoles/components/DraggableRoleCard.tsx
index 42488eddfb..e32b32cad5 100644
--- a/src/components/[guild]/AddAndOrderRoles/components/DraggableRoleCard.tsx
+++ b/src/components/[guild]/AddAndOrderRoles/components/DraggableRoleCard.tsx
@@ -1,7 +1,7 @@
import { HStack, Heading, Icon, Spacer } from "@chakra-ui/react"
import { DotsSixVertical } from "@phosphor-icons/react"
import { MemberCount } from "components/[guild]/RoleCard/components/MemberCount"
-import Visibility from "components/[guild]/Visibility"
+import { Visibility } from "components/[guild]/Visibility"
import Card from "components/common/Card"
import GuildLogo from "components/common/GuildLogo"
import { Role } from "types"
@@ -34,10 +34,10 @@ const DraggableRoleCard = ({ role }: Props) => {
className="!bg-transparent text-muted-foreground"
/>
diff --git a/src/components/[guild]/Requirements/RoleRequirements.tsx b/src/components/[guild]/Requirements/RoleRequirements.tsx
index 0b2f684182..5a28fb4866 100644
--- a/src/components/[guild]/Requirements/RoleRequirements.tsx
+++ b/src/components/[guild]/Requirements/RoleRequirements.tsx
@@ -5,10 +5,13 @@ import { Fragment } from "react"
import { Role } from "types"
import { LogicDivider } from "../LogicDivider"
import useRequirements from "../hooks/useRequirements"
-import AnyOfHeader from "./components/AnyOfHeader"
+import { AnyOfHeader } from "./components/AnyOfHeader"
import { HiddenRequirementAccessIndicator } from "./components/HiddenRequirementAccessIndicator"
-import RequirementComponent, { RequirementSkeleton } from "./components/Requirement"
-import RequirementDisplayComponent from "./components/RequirementDisplayComponent"
+import {
+ Requirement as RequirementComponent,
+ RequirementSkeleton,
+} from "./components/Requirement"
+import { RequirementDisplayComponent } from "./components/RequirementDisplayComponent"
type Props = {
role?: Role // Role can be undefined when the role is private
diff --git a/src/components/[guild]/Requirements/components/AnyOfHeader.tsx b/src/components/[guild]/Requirements/components/AnyOfHeader.tsx
index 0eaf811231..dc1eee562e 100644
--- a/src/components/[guild]/Requirements/components/AnyOfHeader.tsx
+++ b/src/components/[guild]/Requirements/components/AnyOfHeader.tsx
@@ -1,42 +1,15 @@
-import { Box, HStack, Text, useColorModeValue } from "@chakra-ui/react"
-
type Props = {
anyOfNum?: number
}
-const AnyOfHeader = ({ anyOfNum }: Props): JSX.Element => {
- const borderColor = useColorModeValue("blackAlpha.400", "whiteAlpha.400")
- const textColor = useColorModeValue("blackAlpha.500", "whiteAlpha.400")
-
- return (
-
-
-
- {`ANY ${anyOfNum} OF`}
-
-
-
- )
-}
-
-export default AnyOfHeader
+const AnyOfHeader = ({ anyOfNum }: Props): JSX.Element => (
+
+
+
+ {`ANY ${anyOfNum} OF`}
+
+
+
+)
+
+export { AnyOfHeader }
diff --git a/src/components/[guild]/Requirements/components/BlockExplorerUrl.tsx b/src/components/[guild]/Requirements/components/BlockExplorerUrl.tsx
index 69713b16dd..a5bcdf9fde 100644
--- a/src/components/[guild]/Requirements/components/BlockExplorerUrl.tsx
+++ b/src/components/[guild]/Requirements/components/BlockExplorerUrl.tsx
@@ -1,5 +1,5 @@
import { useColorMode } from "@chakra-ui/react"
-import { RequirementLinkButton } from "components/[guild]/Requirements/components/RequirementButton"
+import { RequirementLink } from "components/[guild]/Requirements/components/RequirementButton"
import { NULL_ADDRESS } from "utils/guildCheckout/constants"
import { CHAIN_CONFIG, Chain } from "wagmiConfig/chains"
import { useRequirementContext } from "./RequirementContext"
@@ -35,12 +35,11 @@ const BlockExplorerUrl = ({
: `${blockExplorerUrl}/${path}/${addressProp ?? address}`
return (
-
- {label ?? "View on explorer"}
-
+ label={label ?? "View on explorer"}
+ />
)
}
diff --git a/src/components/[guild]/Requirements/components/DataBlockWithDate.tsx b/src/components/[guild]/Requirements/components/DataBlockWithDate.tsx
index 2a53af8ca0..9f69387b6e 100644
--- a/src/components/[guild]/Requirements/components/DataBlockWithDate.tsx
+++ b/src/components/[guild]/Requirements/components/DataBlockWithDate.tsx
@@ -1,4 +1,4 @@
-import DataBlock from "components/common/DataBlock"
+import { DataBlock } from "components/common/DataBlock"
type Props = {
timestamp: number
@@ -49,4 +49,4 @@ export const BeforeAfterDates = ({
return null
}
-export default DataBlockWithDate
+export { DataBlockWithDate }
diff --git a/src/components/[guild]/Requirements/components/DataBlockWithRelativeDate.tsx b/src/components/[guild]/Requirements/components/DataBlockWithRelativeDate.tsx
index 867c41395f..e70de5b83d 100644
--- a/src/components/[guild]/Requirements/components/DataBlockWithRelativeDate.tsx
+++ b/src/components/[guild]/Requirements/components/DataBlockWithRelativeDate.tsx
@@ -1,4 +1,4 @@
-import DataBlock from "components/common/DataBlock"
+import { DataBlock } from "components/common/DataBlock"
import formatRelativeTimeFromNow from "utils/formatRelativeTimeFromNow"
type Props = {
@@ -9,4 +9,4 @@ const DataBlockWithRelativeDate = ({ timestamp }: Props): JSX.Element => (
{formatRelativeTimeFromNow(timestamp)}
)
-export default DataBlockWithRelativeDate
+export { DataBlockWithRelativeDate }
diff --git a/src/components/[guild]/Requirements/components/Requirement.tsx b/src/components/[guild]/Requirements/components/Requirement.tsx
index 97c5200771..1806d6edbd 100644
--- a/src/components/[guild]/Requirements/components/Requirement.tsx
+++ b/src/components/[guild]/Requirements/components/Requirement.tsx
@@ -1,21 +1,14 @@
-import {
- Box,
- HStack,
- SimpleGrid,
- Skeleton,
- Stack,
- Tag,
- Text,
- VStack,
-} from "@chakra-ui/react"
-import Visibility from "components/[guild]/Visibility"
+import { Badge } from "@/components/ui/Badge"
+import { Skeleton } from "@/components/ui/Skeleton"
+import { Visibility } from "components/[guild]/Visibility"
import dynamic from "next/dynamic"
import React, { ComponentType, PropsWithChildren } from "react"
import { useFormContext } from "react-hook-form"
import { useRequirementContext } from "./RequirementContext"
import { RequirementImage, RequirementImageCircle } from "./RequirementImage"
-import ResetRequirementButton from "./ResetRequirementButton"
-import ViewOriginalPopover from "./ViewOriginalPopover"
+import { ResetRequirementButton } from "./ResetRequirementButton"
+import { ViewOriginalPopover } from "./ViewOriginalPopover"
+
const DataProviderRequirement = dynamic(() => import("./DataProviderRequirement"))
export type RequirementProps = PropsWithChildren<{
@@ -50,71 +43,58 @@ const Requirement = ({
/>
)
- const ChildrenWrapper = childrenWrapper ?? Box
+ const ChildrenWrapper = childrenWrapper ?? "div"
const ImageWrapper = imageWrapper ?? React.Fragment
return (
-
-
-
-
-
-
-
-
-
-
- {requirement?.isNegated && DON'T}
+
+
+
+
+
+
+
+
+
+ {requirement?.isNegated && DON'T}
{requirement?.type === "LINK_VISIT"
? children
: requirement?.data?.customName || children}
- {!setValue ? (
+
+
+
+ {!setValue && (
- ) : null}
-
-
-
+ )}
+ {footer}
{showViewOriginal && (
-
+
-
-
- {children}
-
+
+
{children}
{!!setValue &&
}
-
-
+
+
)}
- {footer}
-
-
+
+
{rightElement}
-
+
)
}
export const RequirementSkeleton = () => (
- Loading requirement...
+
)
-export default Requirement
+export { Requirement }
diff --git a/src/components/[guild]/Requirements/components/RequirementAccessIndicatorUI.tsx b/src/components/[guild]/Requirements/components/RequirementAccessIndicatorUI.tsx
index ac4e78149e..2dfcccc55b 100644
--- a/src/components/[guild]/Requirements/components/RequirementAccessIndicatorUI.tsx
+++ b/src/components/[guild]/Requirements/components/RequirementAccessIndicatorUI.tsx
@@ -31,7 +31,7 @@ const RequirementAccessIndicatorUI = ({
const [openCount, setOpenCount] = useState(0)
return (
-
+
{
diff --git a/src/components/[guild]/Requirements/components/RequirementButton.tsx b/src/components/[guild]/Requirements/components/RequirementButton.tsx
index 95c03dc38e..c404a10e77 100644
--- a/src/components/[guild]/Requirements/components/RequirementButton.tsx
+++ b/src/components/[guild]/Requirements/components/RequirementButton.tsx
@@ -1,39 +1,74 @@
-import { Img } from "@chakra-ui/react"
-import { ArrowSquareOut } from "@phosphor-icons/react"
-import Button from "components/common/Button"
+import { Anchor, AnchorProps, anchorVariants } from "@/components/ui/Anchor"
+import { Button, ButtonProps, buttonVariants } from "@/components/ui/Button"
+import { cn } from "@/lib/utils"
+import { ArrowSquareOut } from "@phosphor-icons/react/dist/ssr"
import { PropsWithChildren, forwardRef } from "react"
-import { Rest } from "types"
-type Props = PropsWithChildren
+type Props = PropsWithChildren
-const RequirementButton = forwardRef(({ children, ...rest }: Props, ref: any) => (
-
-))
+const RequirementButton = forwardRef(
+ (
+ { variant = "unstyled", className, children, ...buttonProps }: Props,
+ ref: any
+ ) => (
+
+ )
+)
-type LinkProps = Props & { imageUrl: string }
+interface LinkProps extends Omit {
+ label: string
+ imageUrl: string
+ variant?: Omit | "link"
+}
-const RequirementLinkButton = ({ children, imageUrl, ...rest }: LinkProps) => (
- (
+ }
- rightIcon={}
- {...rest}
+ className={cn(
+ buttonVariants({
+ variant:
+ variant === "link" ? "unstyled" : (variant as ButtonProps["variant"]),
+ size: "xs",
+ className: [
+ "h-5 rounded-md",
+ {
+ [anchorVariants({ variant: "muted", className: "px-0" })]:
+ variant === "link",
+ "hover:no-underline": variant !== "link",
+ },
+ className,
+ ],
+ })
+ )}
+ {...anchorProps}
>
- {children}
-
+
+ {label}
+
+
)
-export { RequirementButton, RequirementLinkButton }
+export { RequirementButton, RequirementLink }
diff --git a/src/components/[guild]/Requirements/components/RequirementChainIndicator.tsx b/src/components/[guild]/Requirements/components/RequirementChainIndicator.tsx
index 5afe8d54de..5c86c6cf63 100644
--- a/src/components/[guild]/Requirements/components/RequirementChainIndicator.tsx
+++ b/src/components/[guild]/Requirements/components/RequirementChainIndicator.tsx
@@ -1,29 +1,27 @@
-import { Img, Tag, TagLabel, TagProps, useColorModeValue } from "@chakra-ui/react"
+import { Badge, BadgeProps } from "@/components/ui/Badge"
import { Requirement } from "types"
import { CHAIN_CONFIG } from "wagmiConfig/chains"
import { useRequirementContext } from "./RequirementContext"
const RequirementChainIndicator = ({
chain: chainFromProp,
- ...rest
-}: { chain?: Requirement["chain"] } & TagProps) => {
+ ...badgeProps
+}: { chain?: Requirement["chain"] } & BadgeProps) => {
const { chain: chainFromContext } = useRequirementContext() ?? {}
const chain = chainFromProp ?? chainFromContext
- const bg = useColorModeValue("white", "blackAlpha.300")
if (!chain) return null
return (
-
-
+
- {CHAIN_CONFIG[chain].name}
-
+ {CHAIN_CONFIG[chain].name}
+
)
}
-export default RequirementChainIndicator
+export { RequirementChainIndicator }
diff --git a/src/components/[guild]/Requirements/components/RequirementContext.tsx b/src/components/[guild]/Requirements/components/RequirementContext.tsx
index ec8959bfa7..f2be210438 100644
--- a/src/components/[guild]/Requirements/components/RequirementContext.tsx
+++ b/src/components/[guild]/Requirements/components/RequirementContext.tsx
@@ -1,5 +1,6 @@
import { schemas } from "@guildxyz/types"
import { PropsWithChildren, createContext, useContext } from "react"
+import { RequirementType } from "requirements/types"
import { Requirement } from "types"
import { z } from "zod"
@@ -24,12 +25,11 @@ const RequirementProvider = ({
)
}
-type ReqType = z.output["type"]
-const useRequirementContext = () => {
+const useRequirementContext = () => {
const requirement = useContext(RequirementContext)
return requirement as unknown as Extract<
z.output,
- { type: RequirementType }
+ { type: T }
>
}
diff --git a/src/components/[guild]/Requirements/components/RequirementDisplayComponent.tsx b/src/components/[guild]/Requirements/components/RequirementDisplayComponent.tsx
index a26e87420d..7348adec4e 100644
--- a/src/components/[guild]/Requirements/components/RequirementDisplayComponent.tsx
+++ b/src/components/[guild]/Requirements/components/RequirementDisplayComponent.tsx
@@ -1,20 +1,22 @@
import { usePostHogContext } from "@/components/Providers/PostHogProvider"
-import { Icon } from "@chakra-ui/react"
-import { Warning } from "@phosphor-icons/react"
-import DataBlock from "components/common/DataBlock"
+import { Warning } from "@phosphor-icons/react/dist/ssr"
+import { DataBlock } from "components/common/DataBlock"
import { PropsWithChildren } from "react"
import { ErrorBoundary } from "react-error-boundary"
import { REQUIREMENT_DISPLAY_COMPONENTS } from "requirements/requirementDisplayComponents"
-import { Requirement as RequirementType, Rest } from "types"
+import { Requirement as RequirementType } from "types"
import { CHAIN_CONFIG } from "wagmiConfig/chains"
-import Requirement from "./Requirement"
+import { Requirement, RequirementProps } from "./Requirement"
import { RequirementAccessIndicator } from "./RequirementAccessIndicator"
import { RequirementProvider, useRequirementContext } from "./RequirementContext"
-type Props = {
+interface Props extends RequirementProps {
requirement: RequirementType
- rightElement?: JSX.Element
-} & Rest
+}
+
+export const RequirementWarningIcon = () => (
+
+)
const RequirementDisplayComponent = ({
requirement,
@@ -25,7 +27,7 @@ const RequirementDisplayComponent = ({
if (!!requirement.chain && !CHAIN_CONFIG[requirement.chain])
return (
- }>
+ }>
{`Unsupported requirement chain: `}
{requirement.chain}
@@ -33,7 +35,7 @@ const RequirementDisplayComponent = ({
if (!RequirementComponent)
return (
- }>
+ }>
{`Unsupported requirement type: `}
{requirement.type}
@@ -64,11 +66,8 @@ export const InvalidRequirementErrorBoundary = ({
return (
}
- rightElement={rightElement}
- >
- {`Invalid requirement: `}
+ } rightElement={rightElement}>
+ {"Invalid requirement: "}
{requirement.type}
}
@@ -86,4 +85,4 @@ export const InvalidRequirementErrorBoundary = ({
)
}
-export default RequirementDisplayComponent
+export { RequirementDisplayComponent }
diff --git a/src/components/[guild]/Requirements/components/RequirementImage.tsx b/src/components/[guild]/Requirements/components/RequirementImage.tsx
index 23484ec4ba..98c7346336 100644
--- a/src/components/[guild]/Requirements/components/RequirementImage.tsx
+++ b/src/components/[guild]/Requirements/components/RequirementImage.tsx
@@ -1,5 +1,5 @@
-import { Circle, Img, SkeletonCircle, useColorModeValue } from "@chakra-ui/react"
-import { PropsWithChildren } from "react"
+import { Skeleton } from "@/components/ui/Skeleton"
+import { PropsWithChildren, ReactNode } from "react"
type Props = {
isImageLoading?: boolean
@@ -8,49 +8,21 @@ type Props = {
const RequirementImageCircle = ({
isImageLoading,
children,
-}: PropsWithChildren) => {
- const imageBgColor = useColorModeValue("blackAlpha.100", "blackAlpha.300")
-
- return (
-
-
- {children}
-
-
+}: PropsWithChildren) =>
+ isImageLoading ? (
+
+ ) : (
+
+ {children}
+
)
-}
-const RequirementImage = ({ image }) => {
+const RequirementImage = ({ image }: { image: ReactNode | string }) => {
if (typeof image !== "string") return image
if (image.endsWith(".mp4"))
- return (
-
- )
- return (
-
- )
+ return
+ return
}
export { RequirementImage, RequirementImageCircle }
diff --git a/src/components/[guild]/Requirements/components/ResetRequirementButton.tsx b/src/components/[guild]/Requirements/components/ResetRequirementButton.tsx
index f2c1fa8e1b..ca33710a75 100644
--- a/src/components/[guild]/Requirements/components/ResetRequirementButton.tsx
+++ b/src/components/[guild]/Requirements/components/ResetRequirementButton.tsx
@@ -1,27 +1,24 @@
-import { Button } from "@chakra-ui/react"
+import { Button } from "@/components/ui/Button"
+import { Schemas } from "@guildxyz/types"
import useEditRequirement from "components/create-guild/Requirements/hooks/useEditRequirement"
import { useFormContext, useWatch } from "react-hook-form"
import { Requirement } from "types"
import { useRequirementContext } from "./RequirementContext"
+type Props = { requirement: Requirement }
+
export const getDefaultVisitLinkCustomName = (
requirementData: Requirement["data"]
) => `Visit link: [${requirementData.id}]`
-const ResetNewRequirementButton = ({ requirement }) => {
- const { control, setValue } = useFormContext()
+const ResetNewRequirementButton = ({ requirement }: Props) => {
+ const { control, setValue } = useFormContext()
const requirements = useWatch({ name: "requirements", control })
- /**
- * We don't get formFieldId from requirements (and useFieldArray would give a new
- * formFieldId), so we get the actual requirement's index by comparing object
- * value. It works until there're two requirements that are exactly identical,
- * which is not a usecase
- */
- const index = requirements?.findIndex((req) => {
- const reqWithoutFormFieldId = structuredClone(requirement)
- delete reqWithoutFormFieldId.formFieldId
- return JSON.stringify(req) === JSON.stringify(reqWithoutFormFieldId)
- })
+
+ // The ID field doesn't exist in the schema, but react-hook-form will generate a uuid for each field, so it's safe to use it here
+ const index = requirements?.findIndex(
+ (req) => "id" in req && req.id === requirement.id
+ )
const onReset = () => {
setValue(`requirements.${index}.data.customName`, "")
@@ -29,13 +26,13 @@ const ResetNewRequirementButton = ({ requirement }) => {
}
return (
-
diff --git a/src/components/[guild]/RolePlatforms/components/AddRoleRewardModal/components/DynamicSetup/BaseValueModal.tsx b/src/components/[guild]/RolePlatforms/components/AddRoleRewardModal/components/DynamicSetup/BaseValueModal.tsx
index 7bb893eda8..036eb850e8 100644
--- a/src/components/[guild]/RolePlatforms/components/AddRoleRewardModal/components/DynamicSetup/BaseValueModal.tsx
+++ b/src/components/[guild]/RolePlatforms/components/AddRoleRewardModal/components/DynamicSetup/BaseValueModal.tsx
@@ -11,7 +11,7 @@ import {
import { CaretRight } from "@phosphor-icons/react"
import { LogicDivider } from "components/[guild]/LogicDivider"
import { useRequirementHandlerContext } from "components/[guild]/RequirementHandlerContext"
-import RequirementDisplayComponent from "components/[guild]/Requirements/components/RequirementDisplayComponent"
+import { RequirementDisplayComponent } from "components/[guild]/Requirements/components/RequirementDisplayComponent"
import DisplayCard from "components/common/DisplayCard"
import { Modal } from "components/common/Modal"
import AddRequirement from "components/create-guild/Requirements/components/AddRequirement"
diff --git a/src/components/[guild]/RolePlatforms/components/AddRoleRewardModal/components/DynamicSetup/DynamicRewardSetup.tsx b/src/components/[guild]/RolePlatforms/components/AddRoleRewardModal/components/DynamicSetup/DynamicRewardSetup.tsx
index b601cb1bd7..33586e90be 100644
--- a/src/components/[guild]/RolePlatforms/components/AddRoleRewardModal/components/DynamicSetup/DynamicRewardSetup.tsx
+++ b/src/components/[guild]/RolePlatforms/components/AddRoleRewardModal/components/DynamicSetup/DynamicRewardSetup.tsx
@@ -10,7 +10,7 @@ import {
} from "@chakra-ui/react"
import { ArrowsClockwise, Lightning } from "@phosphor-icons/react"
import { useRequirementHandlerContext } from "components/[guild]/RequirementHandlerContext"
-import RequirementDisplayComponent from "components/[guild]/Requirements/components/RequirementDisplayComponent"
+import { RequirementDisplayComponent } from "components/[guild]/Requirements/components/RequirementDisplayComponent"
import AddCard from "components/common/AddCard"
import Button from "components/common/Button"
import Card from "components/common/Card"
diff --git a/src/components/[guild]/SetVisibility/hooks/useVisibilityTooltipLabel.tsx b/src/components/[guild]/SetVisibility/hooks/useVisibilityTooltipLabel.tsx
index 616f85c2bf..68d1a94771 100644
--- a/src/components/[guild]/SetVisibility/hooks/useVisibilityTooltipLabel.tsx
+++ b/src/components/[guild]/SetVisibility/hooks/useVisibilityTooltipLabel.tsx
@@ -29,6 +29,7 @@ const useVisibilityTooltipLabel = (
bgColor={"blackAlpha.600"}
name={role.name}
imageUrl={role.imageUrl}
+ mx="0.5"
/>
) : (
"selected"
diff --git a/src/components/[guild]/Visibility.tsx b/src/components/[guild]/Visibility.tsx
index 621981204d..e60a330d29 100644
--- a/src/components/[guild]/Visibility.tsx
+++ b/src/components/[guild]/Visibility.tsx
@@ -1,19 +1,25 @@
-import { Tag, TagLabel, TagLeftIcon, TagProps, Tooltip } from "@chakra-ui/react"
+import { Badge, BadgeProps } from "@/components/ui/Badge"
+import {
+ Tooltip,
+ TooltipContent,
+ TooltipPortal,
+ TooltipTrigger,
+} from "@/components/ui/Tooltip"
+import { cn } from "@/lib/utils"
import { Visibility as VisibilityType } from "@guildxyz/types"
import useVisibilityTooltipLabel from "./SetVisibility/hooks/useVisibilityTooltipLabel"
import { VISIBILITY_DATA } from "./SetVisibility/visibilityData"
-type Props = {
+interface Props extends BadgeProps {
entityVisibility: VisibilityType
visibilityRoleId: number | null
- showTagLabel?: boolean
-} & TagProps
+}
const Visibility = ({
entityVisibility,
visibilityRoleId,
- showTagLabel,
- ...tagProps
+ className,
+ ...badgeProps
}: Props) => {
const VisibilityIcon = VISIBILITY_DATA[entityVisibility].Icon
@@ -22,19 +28,25 @@ const Visibility = ({
if (entityVisibility === "PUBLIC") return null
return (
-
-
-
- {showTagLabel && (
- {VISIBILITY_DATA[entityVisibility].title}
- )}
-
+
+
+
+
+ {VISIBILITY_DATA[entityVisibility].title}
+
+
+
+
+
+ {label}
+
+
)
}
-export default Visibility
+export { Visibility }
diff --git a/src/components/[guild]/activity/ActivityLogAction/ActivityLogAction.tsx b/src/components/[guild]/activity/ActivityLogAction/ActivityLogAction.tsx
index 7b46fc2ad3..51db39e428 100644
--- a/src/components/[guild]/activity/ActivityLogAction/ActivityLogAction.tsx
+++ b/src/components/[guild]/activity/ActivityLogAction/ActivityLogAction.tsx
@@ -10,7 +10,7 @@ import {
useDisclosure,
} from "@chakra-ui/react"
import { CaretDown } from "@phosphor-icons/react"
-import RequirementDisplayComponent from "components/[guild]/Requirements/components/RequirementDisplayComponent"
+import { RequirementDisplayComponent } from "components/[guild]/Requirements/components/RequirementDisplayComponent"
import Card from "components/common/Card"
import { Requirement } from "types"
import { ACTION, ActivityLogAction as Action } from "../constants"
diff --git a/src/components/[guild]/activity/ActivityLogAction/components/ActivityLogChildAction.tsx b/src/components/[guild]/activity/ActivityLogAction/components/ActivityLogChildAction.tsx
index 6eb21189da..973a6df65f 100644
--- a/src/components/[guild]/activity/ActivityLogAction/components/ActivityLogChildAction.tsx
+++ b/src/components/[guild]/activity/ActivityLogAction/components/ActivityLogChildAction.tsx
@@ -1,5 +1,5 @@
import { Center, HStack, Stack, Text, useBreakpointValue } from "@chakra-ui/react"
-import RequirementDisplayComponent from "components/[guild]/Requirements/components/RequirementDisplayComponent"
+import { RequirementDisplayComponent } from "components/[guild]/Requirements/components/RequirementDisplayComponent"
import { PropsWithChildren } from "react"
import { Requirement } from "types"
import { ACTION } from "../../constants"
diff --git a/src/components/[guild]/activity/ActivityLogAction/components/BeforeAfterActions.tsx b/src/components/[guild]/activity/ActivityLogAction/components/BeforeAfterActions.tsx
index 2c739475c8..a5e9c61858 100644
--- a/src/components/[guild]/activity/ActivityLogAction/components/BeforeAfterActions.tsx
+++ b/src/components/[guild]/activity/ActivityLogAction/components/BeforeAfterActions.tsx
@@ -9,7 +9,7 @@ import {
Text,
} from "@chakra-ui/react"
import { ArrowRight } from "@phosphor-icons/react"
-import RequirementDisplayComponent from "components/[guild]/Requirements/components/RequirementDisplayComponent"
+import { RequirementDisplayComponent } from "components/[guild]/Requirements/components/RequirementDisplayComponent"
import GuildLogo from "components/common/GuildLogo"
import { useColorPalette } from "hooks/useColorPalette"
import { Requirement } from "types"
diff --git a/src/components/common/DataBlock.tsx b/src/components/common/DataBlock.tsx
index 2c212f6151..e3b02e826c 100644
--- a/src/components/common/DataBlock.tsx
+++ b/src/components/common/DataBlock.tsx
@@ -1,5 +1,6 @@
-import { Icon, Skeleton, Text, Tooltip, useColorModeValue } from "@chakra-ui/react"
-import { Warning } from "@phosphor-icons/react"
+import { Skeleton } from "@/components/ui/Skeleton"
+import { Tooltip, TooltipContent, TooltipTrigger } from "@/components/ui/Tooltip"
+import { Warning } from "@phosphor-icons/react/dist/ssr"
import { PropsWithChildren } from "react"
type Props = {
@@ -12,36 +13,26 @@ const DataBlock = ({
error,
children,
}: PropsWithChildren): JSX.Element => {
- const bg = useColorModeValue("blackAlpha.100", "blackAlpha.300")
-
- if (isLoading) return Loading...
+ if (isLoading) return
return (
-
-
- {error && (
-
- )}
-
- {children}
-
-
+
+
+
+ {error && (
+
+ )}
+ {children}
+
+
+
+ {error}
+
)
}
-export default DataBlock
+export { DataBlock }
diff --git a/src/components/common/DataBlockWithCopy.tsx b/src/components/common/DataBlockWithCopy.tsx
index 4b70bbef7d..bff1b8a937 100644
--- a/src/components/common/DataBlockWithCopy.tsx
+++ b/src/components/common/DataBlockWithCopy.tsx
@@ -1,7 +1,8 @@
-import { HStack, Icon, Text, Tooltip, useClipboard } from "@chakra-ui/react"
-import { Check } from "@phosphor-icons/react"
+import { Tooltip, TooltipContent, TooltipTrigger } from "@/components/ui/Tooltip"
+import { useCopyToClipboard } from "@/hooks/useCopyToClipboard"
+import { Check } from "@phosphor-icons/react/dist/ssr"
import { PropsWithChildren } from "react"
-import DataBlock from "./DataBlock"
+import { DataBlock } from "./DataBlock"
type Props = {
text: string
@@ -11,28 +12,21 @@ const DataBlockWithCopy = ({
text,
children,
}: PropsWithChildren): JSX.Element => {
- const { onCopy, hasCopied } = useClipboard(text)
+ const { copyToClipboard, hasCopied } = useCopyToClipboard()
return (
-
- {hasCopied && }
- {hasCopied ? "Copied" : "Click to copy"}
-
- }
- placement="top"
- shouldWrapChildren
- >
-
-
- {children ?? text}
-
-
+
+ copyToClipboard(text)} className="rounded-md">
+
+ {children ?? text}
+
+
+
+ {hasCopied && }
+ {hasCopied ? "Copied" : "Click to copy"}
+
)
}
-export default DataBlockWithCopy
+export { DataBlockWithCopy }
diff --git a/src/components/create-guild/Requirements/components/UnsupportedRequirementTypeCard.tsx b/src/components/create-guild/Requirements/components/UnsupportedRequirementTypeCard.tsx
index 255021b1ea..6f8ecbc6ef 100644
--- a/src/components/create-guild/Requirements/components/UnsupportedRequirementTypeCard.tsx
+++ b/src/components/create-guild/Requirements/components/UnsupportedRequirementTypeCard.tsx
@@ -1,7 +1,6 @@
-import { Icon } from "@chakra-ui/react"
-import { Warning } from "@phosphor-icons/react"
-import Requirement from "components/[guild]/Requirements/components/Requirement"
-import DataBlock from "components/common/DataBlock"
+import { Requirement } from "components/[guild]/Requirements/components/Requirement"
+import { RequirementWarningIcon } from "components/[guild]/Requirements/components/RequirementDisplayComponent"
+import { DataBlock } from "components/common/DataBlock"
import { PropsWithChildren } from "react"
import RequirementBaseCard from "./RequirementBaseCard"
@@ -14,7 +13,7 @@ const UnsupportedRequirementTypeCard = ({
children,
}: PropsWithChildren) => (
- }>
+ }>
{`Unsupported requirement type: `}
{type}
diff --git a/src/components/create-guild/Requirements/hooks/useHandleRequirementState.ts b/src/components/create-guild/Requirements/hooks/useHandleRequirementState.ts
index ed084c0105..45429d8b82 100644
--- a/src/components/create-guild/Requirements/hooks/useHandleRequirementState.ts
+++ b/src/components/create-guild/Requirements/hooks/useHandleRequirementState.ts
@@ -27,7 +27,10 @@ const useHandleRequirementState = (methods) => {
}
const append = (
- req: Schemas["RequirementCreationPayload"]
+ req: Exclude<
+ Schemas["RequirementCreationPayload"],
+ { type: "WORLD_ID_VERIFICATION" }
+ >
): ClientStateRequirementCreateResponse => {
const reqToAdd: ClientStateRequirementCreateResponse = { id: uuidv7(), ...req }
if (freeEntry) {
diff --git a/src/requirements/Airdrop/AirdropRequirement.tsx b/src/requirements/Airdrop/AirdropRequirement.tsx
index 135bc72330..01ec1ae76c 100644
--- a/src/requirements/Airdrop/AirdropRequirement.tsx
+++ b/src/requirements/Airdrop/AirdropRequirement.tsx
@@ -1,6 +1,7 @@
import { Icon, Text, useDisclosure } from "@chakra-ui/react"
import { ArrowSquareIn } from "@phosphor-icons/react"
-import Requirement, {
+import {
+ Requirement,
RequirementProps,
} from "components/[guild]/Requirements/components/Requirement"
import { useRequirementContext } from "components/[guild]/Requirements/components/RequirementContext"
diff --git a/src/requirements/Allowlist/AllowlistRequirement.tsx b/src/requirements/Allowlist/AllowlistRequirement.tsx
index 765dbee42d..b05b7e6243 100644
--- a/src/requirements/Allowlist/AllowlistRequirement.tsx
+++ b/src/requirements/Allowlist/AllowlistRequirement.tsx
@@ -2,7 +2,8 @@ import { Fade, HStack, Icon, Text, useDisclosure } from "@chakra-ui/react"
import { Schemas } from "@guildxyz/types"
import { ArrowSquareIn, ListPlus } from "@phosphor-icons/react"
import RequirementConnectButton from "components/[guild]/Requirements/components/ConnectRequirementPlatformButton"
-import Requirement, {
+import {
+ Requirement,
RequirementProps,
} from "components/[guild]/Requirements/components/Requirement"
import { useRequirementContext } from "components/[guild]/Requirements/components/RequirementContext"
diff --git a/src/requirements/Captcha/CaptchaRequirement.tsx b/src/requirements/Captcha/CaptchaRequirement.tsx
index cc89f5c65b..036d09f2fd 100644
--- a/src/requirements/Captcha/CaptchaRequirement.tsx
+++ b/src/requirements/Captcha/CaptchaRequirement.tsx
@@ -1,10 +1,11 @@
import { Icon } from "@chakra-ui/react"
import { Robot } from "@phosphor-icons/react"
-import Requirement, {
+import {
+ Requirement,
RequirementProps,
} from "components/[guild]/Requirements/components/Requirement"
import { useRequirementContext } from "components/[guild]/Requirements/components/RequirementContext"
-import DataBlock from "components/common/DataBlock"
+import { DataBlock } from "components/common/DataBlock"
import formatRelativeTimeFromNow from "utils/formatRelativeTimeFromNow"
import CompleteCaptcha from "./components/CompleteCaptcha"
diff --git a/src/requirements/CoinbaseEAS/CoinbaseEASRequirement.tsx b/src/requirements/CoinbaseEAS/CoinbaseEASRequirement.tsx
index 0b791e4460..7755556ea2 100644
--- a/src/requirements/CoinbaseEAS/CoinbaseEASRequirement.tsx
+++ b/src/requirements/CoinbaseEAS/CoinbaseEASRequirement.tsx
@@ -1,5 +1,6 @@
import { Img, Text } from "@chakra-ui/react"
-import Requirement, {
+import {
+ Requirement,
RequirementProps,
} from "components/[guild]/Requirements/components/Requirement"
import { useRequirementContext } from "components/[guild]/Requirements/components/RequirementContext"
diff --git a/src/requirements/ContractState/ContractStateForm.tsx b/src/requirements/ContractState/ContractStateForm.tsx
index b39503acf8..b907c42ed4 100644
--- a/src/requirements/ContractState/ContractStateForm.tsx
+++ b/src/requirements/ContractState/ContractStateForm.tsx
@@ -26,7 +26,7 @@ import {
import { Info, Plus, X } from "@phosphor-icons/react"
import Button from "components/common/Button"
import ControlledSelect from "components/common/ControlledSelect"
-import DataBlockWithCopy from "components/common/DataBlockWithCopy"
+import { DataBlockWithCopy } from "components/common/DataBlockWithCopy"
import FormErrorMessage from "components/common/FormErrorMessage"
import { useMemo } from "react"
import { Controller, useFieldArray, useFormContext, useWatch } from "react-hook-form"
diff --git a/src/requirements/ContractState/ContractStateRequirement.tsx b/src/requirements/ContractState/ContractStateRequirement.tsx
index b4fa9af41d..92d20edfad 100644
--- a/src/requirements/ContractState/ContractStateRequirement.tsx
+++ b/src/requirements/ContractState/ContractStateRequirement.tsx
@@ -14,14 +14,15 @@ import {
Tr,
useColorModeValue,
} from "@chakra-ui/react"
-import { CaretDown, Function } from "@phosphor-icons/react"
+import { CaretDown, Function } from "@phosphor-icons/react/dist/ssr"
import BlockExplorerUrl from "components/[guild]/Requirements/components/BlockExplorerUrl"
-import Requirement, {
+import {
+ Requirement,
RequirementProps,
} from "components/[guild]/Requirements/components/Requirement"
import { RequirementButton } from "components/[guild]/Requirements/components/RequirementButton"
import { useRequirementContext } from "components/[guild]/Requirements/components/RequirementContext"
-import DataBlock from "components/common/DataBlock"
+import { DataBlock } from "components/common/DataBlock"
import shortenHex from "utils/shortenHex"
const ADDRESS_REGEX = /^0x[A-F0-9]{40}$/i
@@ -39,7 +40,7 @@ const ContractStateRequirement = (props: RequirementProps) => {
- }>
+ }>
View query
diff --git a/src/requirements/Disco/DiscoRequirement.tsx b/src/requirements/Disco/DiscoRequirement.tsx
index 25d95d75f6..e6c6cdc98f 100644
--- a/src/requirements/Disco/DiscoRequirement.tsx
+++ b/src/requirements/Disco/DiscoRequirement.tsx
@@ -1,9 +1,10 @@
import { Img } from "@chakra-ui/react"
-import Requirement, {
+import {
+ Requirement,
RequirementProps,
} from "components/[guild]/Requirements/components/Requirement"
import { useRequirementContext } from "components/[guild]/Requirements/components/RequirementContext"
-import DataBlock from "components/common/DataBlock"
+import { DataBlock } from "components/common/DataBlock"
import shortenHex from "utils/shortenHex"
type DiscoParamType = {
diff --git a/src/requirements/Discord/DiscordRequirement.tsx b/src/requirements/Discord/DiscordRequirement.tsx
index a45deed732..9019d67622 100644
--- a/src/requirements/Discord/DiscordRequirement.tsx
+++ b/src/requirements/Discord/DiscordRequirement.tsx
@@ -1,12 +1,13 @@
import { Icon, Text } from "@chakra-ui/react"
import { DiscordLogo } from "@phosphor-icons/react"
import ConnectRequirementPlatformButton from "components/[guild]/Requirements/components/ConnectRequirementPlatformButton"
-import DataBlockWithDate from "components/[guild]/Requirements/components/DataBlockWithDate"
-import Requirement, {
+import { DataBlockWithDate } from "components/[guild]/Requirements/components/DataBlockWithDate"
+import {
+ Requirement,
RequirementProps,
} from "components/[guild]/Requirements/components/Requirement"
import { useRequirementContext } from "components/[guild]/Requirements/components/RequirementContext"
-import DataBlock from "components/common/DataBlock"
+import { DataBlock } from "components/common/DataBlock"
import useServerData from "hooks/useServerData"
import formatRelativeTimeFromNow from "utils/formatRelativeTimeFromNow"
diff --git a/src/requirements/Email/EmailRequirement.tsx b/src/requirements/Email/EmailRequirement.tsx
index f2f360fc17..02efe9284e 100644
--- a/src/requirements/Email/EmailRequirement.tsx
+++ b/src/requirements/Email/EmailRequirement.tsx
@@ -1,11 +1,12 @@
import { Icon } from "@chakra-ui/react"
import { EnvelopeSimple } from "@phosphor-icons/react"
import RequirementConnectButton from "components/[guild]/Requirements/components/ConnectRequirementPlatformButton"
-import Requirement, {
+import {
+ Requirement,
RequirementProps,
} from "components/[guild]/Requirements/components/Requirement"
import { useRequirementContext } from "components/[guild]/Requirements/components/RequirementContext"
-import DataBlock from "components/common/DataBlock"
+import { DataBlock } from "components/common/DataBlock"
const EmailRequirement = (props: RequirementProps) => {
const { data, type } = useRequirementContext()
diff --git a/src/requirements/EthereumAttestation/EthereumAttestationRequirement.tsx b/src/requirements/EthereumAttestation/EthereumAttestationRequirement.tsx
index b331434ce3..a4218ca3a7 100644
--- a/src/requirements/EthereumAttestation/EthereumAttestationRequirement.tsx
+++ b/src/requirements/EthereumAttestation/EthereumAttestationRequirement.tsx
@@ -1,10 +1,11 @@
import { Img } from "@chakra-ui/react"
-import Requirement, {
+import {
+ Requirement,
RequirementProps,
} from "components/[guild]/Requirements/components/Requirement"
import { useRequirementContext } from "components/[guild]/Requirements/components/RequirementContext"
-import DataBlock from "components/common/DataBlock"
-import DataBlockWithCopy from "components/common/DataBlockWithCopy"
+import { DataBlock } from "components/common/DataBlock"
+import { DataBlockWithCopy } from "components/common/DataBlockWithCopy"
import useResolveAddress from "hooks/useResolveAddress"
import shortenHex from "utils/shortenHex"
import EthereumAttestationRequirementFooter from "./components/EthereumAttestationRequirementFooter"
diff --git a/src/requirements/EthereumAttestation/components/EthereumAttestationRequirementFooter.tsx b/src/requirements/EthereumAttestation/components/EthereumAttestationRequirementFooter.tsx
index 6c17a96aa6..ee6db1d502 100644
--- a/src/requirements/EthereumAttestation/components/EthereumAttestationRequirementFooter.tsx
+++ b/src/requirements/EthereumAttestation/components/EthereumAttestationRequirementFooter.tsx
@@ -1,7 +1,7 @@
import { HStack, Wrap } from "@chakra-ui/react"
import BlockExplorerUrl from "components/[guild]/Requirements/components/BlockExplorerUrl"
-import { RequirementLinkButton } from "components/[guild]/Requirements/components/RequirementButton"
-import RequirementChainIndicator from "components/[guild]/Requirements/components/RequirementChainIndicator"
+import { RequirementLink } from "components/[guild]/Requirements/components/RequirementButton"
+import { RequirementChainIndicator } from "components/[guild]/Requirements/components/RequirementChainIndicator"
import { useRequirementContext } from "components/[guild]/Requirements/components/RequirementContext"
export const EAS_SCAN_BASE = {
@@ -22,12 +22,11 @@ const EthereumAttestationRequirementFooter = () => {
-
- Schema
-
+ label="Schema"
+ />
{
if (type === "FARCASTER_LIKE") {
@@ -64,6 +63,7 @@ export default function FarcasterAction() {
})
}
}}
+ className={PLATFORM_COLORS.FARCASTER}
>
{type === "FARCASTER_FOLLOW" && farcasterUser?.display_name
? `Follow ${farcasterUser?.display_name}`
diff --git a/src/requirements/Farcaster/components/FarcasterCastSmall.tsx b/src/requirements/Farcaster/components/FarcasterCastSmall.tsx
index b3418d8b4e..6328714e91 100644
--- a/src/requirements/Farcaster/components/FarcasterCastSmall.tsx
+++ b/src/requirements/Farcaster/components/FarcasterCastSmall.tsx
@@ -1,6 +1,6 @@
import { Flex, HStack, Image, Link, Skeleton, Text } from "@chakra-ui/react"
import { Chat, Heart, ShareNetwork, WarningCircle } from "@phosphor-icons/react"
-import DataBlock from "components/common/DataBlock"
+import { DataBlock } from "components/common/DataBlock"
import { FarcasterCastData } from "../types"
const FarcasterCastSmall = ({
diff --git a/src/requirements/Form/FormRequirement.tsx b/src/requirements/Form/FormRequirement.tsx
index c8364f028f..e7ad877160 100644
--- a/src/requirements/Form/FormRequirement.tsx
+++ b/src/requirements/Form/FormRequirement.tsx
@@ -1,6 +1,7 @@
import { Link } from "@chakra-ui/next-js"
import { Icon, Skeleton, Text, Tooltip } from "@chakra-ui/react"
-import Requirement, {
+import {
+ Requirement,
RequirementProps,
} from "components/[guild]/Requirements/components/Requirement"
import { useRequirementContext } from "components/[guild]/Requirements/components/RequirementContext"
diff --git a/src/requirements/Free/FreeRequirement.tsx b/src/requirements/Free/FreeRequirement.tsx
index 60f4c3205d..a1e729d555 100644
--- a/src/requirements/Free/FreeRequirement.tsx
+++ b/src/requirements/Free/FreeRequirement.tsx
@@ -1,6 +1,6 @@
import { Icon } from "@chakra-ui/react"
import { Icon as PhosphorIcon } from "@phosphor-icons/react"
-import Requirement from "components/[guild]/Requirements/components/Requirement"
+import { Requirement } from "components/[guild]/Requirements/components/Requirement"
import REQUIREMENTS from "requirements"
const FreeRequirement = ({ ...rest }) => (
diff --git a/src/requirements/Fuel/FuelRequirement.tsx b/src/requirements/Fuel/FuelRequirement.tsx
index 2c8e434cb0..edcc8f59fc 100644
--- a/src/requirements/Fuel/FuelRequirement.tsx
+++ b/src/requirements/Fuel/FuelRequirement.tsx
@@ -1,10 +1,11 @@
import { Icon, Img, Tag, TagLabel, Text, useColorModeValue } from "@chakra-ui/react"
import { ArrowsLeftRight } from "@phosphor-icons/react"
-import Requirement, {
+import {
+ Requirement,
RequirementProps,
} from "components/[guild]/Requirements/components/Requirement"
import { useRequirementContext } from "components/[guild]/Requirements/components/RequirementContext"
-import DataBlockWithCopy from "components/common/DataBlockWithCopy"
+import { DataBlockWithCopy } from "components/common/DataBlockWithCopy"
import shortenHex from "utils/shortenHex"
const NULL_FUEL_ADDRESS =
diff --git a/src/requirements/Galaxy/GalaxyRequirement.tsx b/src/requirements/Galaxy/GalaxyRequirement.tsx
index 6e52bfacfe..937b073af5 100644
--- a/src/requirements/Galaxy/GalaxyRequirement.tsx
+++ b/src/requirements/Galaxy/GalaxyRequirement.tsx
@@ -1,9 +1,10 @@
import { Link, Text } from "@chakra-ui/react"
-import Requirement, {
+import {
+ Requirement,
RequirementProps,
} from "components/[guild]/Requirements/components/Requirement"
import { useRequirementContext } from "components/[guild]/Requirements/components/RequirementContext"
-import DataBlock from "components/common/DataBlock"
+import { DataBlock } from "components/common/DataBlock"
import { useGalaxyCampaign } from "./hooks/useGalaxyCampaigns"
const GalaxyRequirement = (props: RequirementProps): JSX.Element => {
diff --git a/src/requirements/GitPoap/GitPoapRequirement.tsx b/src/requirements/GitPoap/GitPoapRequirement.tsx
index 53104fd29d..836dd0b295 100644
--- a/src/requirements/GitPoap/GitPoapRequirement.tsx
+++ b/src/requirements/GitPoap/GitPoapRequirement.tsx
@@ -1,9 +1,10 @@
import { Link, Text } from "@chakra-ui/react"
-import Requirement, {
+import {
+ Requirement,
RequirementProps,
} from "components/[guild]/Requirements/components/Requirement"
import { useRequirementContext } from "components/[guild]/Requirements/components/RequirementContext"
-import DataBlock from "components/common/DataBlock"
+import { DataBlock } from "components/common/DataBlock"
import { usePoap } from "../Poap/hooks/usePoaps"
const GitPoapRequirement = (props: RequirementProps) => {
diff --git a/src/requirements/GitcoinPassport/GitcoinPassportRequirement.tsx b/src/requirements/GitcoinPassport/GitcoinPassportRequirement.tsx
index 5df22f8e83..981d47f82e 100644
--- a/src/requirements/GitcoinPassport/GitcoinPassportRequirement.tsx
+++ b/src/requirements/GitcoinPassport/GitcoinPassportRequirement.tsx
@@ -1,5 +1,4 @@
import {
- Icon,
Popover,
PopoverArrow,
PopoverBody,
@@ -14,13 +13,14 @@ import {
Tr,
useColorModeValue,
} from "@chakra-ui/react"
-import { CaretDown } from "@phosphor-icons/react"
-import Requirement, {
+import { CaretDown } from "@phosphor-icons/react/dist/ssr"
+import {
+ Requirement,
RequirementProps,
} from "components/[guild]/Requirements/components/Requirement"
import { RequirementButton } from "components/[guild]/Requirements/components/RequirementButton"
import { useRequirementContext } from "components/[guild]/Requirements/components/RequirementContext"
-import DataBlock from "components/common/DataBlock"
+import { DataBlock } from "components/common/DataBlock"
import { useRoleMembership } from "components/explorer/hooks/useMembership"
import { scorers } from "./components/Score"
import { SetupPassport } from "./components/SetupPassport"
@@ -56,7 +56,7 @@ const GitcoinPassportRequirement = ({ ...rest }: RequirementProps): JSX.Element
Object.keys(requirement.data ?? {}).length > 0 && (
- }>
+ }>
View parameters
diff --git a/src/requirements/Github/GithubRequirement.tsx b/src/requirements/Github/GithubRequirement.tsx
index 748fdcd420..e12b877a5a 100644
--- a/src/requirements/Github/GithubRequirement.tsx
+++ b/src/requirements/Github/GithubRequirement.tsx
@@ -2,13 +2,14 @@ import { Link } from "@chakra-ui/next-js"
import { Icon } from "@chakra-ui/react"
import { GithubLogo } from "@phosphor-icons/react"
import ConnectRequirementPlatformButton from "components/[guild]/Requirements/components/ConnectRequirementPlatformButton"
-import DataBlockWithDate from "components/[guild]/Requirements/components/DataBlockWithDate"
-import DataBlockWithRelativeDate from "components/[guild]/Requirements/components/DataBlockWithRelativeDate"
-import Requirement, {
+import { DataBlockWithDate } from "components/[guild]/Requirements/components/DataBlockWithDate"
+import { DataBlockWithRelativeDate } from "components/[guild]/Requirements/components/DataBlockWithRelativeDate"
+import {
+ Requirement,
RequirementProps,
} from "components/[guild]/Requirements/components/Requirement"
import { useRequirementContext } from "components/[guild]/Requirements/components/RequirementContext"
-import DataBlock from "components/common/DataBlock"
+import { DataBlock } from "components/common/DataBlock"
import pluralize from "utils/pluralize"
const GithubRequirement = (props: RequirementProps) => {
diff --git a/src/requirements/Guild/GuildRequirement.tsx b/src/requirements/Guild/GuildRequirement.tsx
index af3a3a33ec..aa5983a5ea 100644
--- a/src/requirements/Guild/GuildRequirement.tsx
+++ b/src/requirements/Guild/GuildRequirement.tsx
@@ -1,8 +1,9 @@
import { Link } from "@chakra-ui/next-js"
import { Icon, Img, Skeleton, Text } from "@chakra-ui/react"
import { Detective } from "@phosphor-icons/react"
-import DataBlockWithDate from "components/[guild]/Requirements/components/DataBlockWithDate"
-import Requirement, {
+import { DataBlockWithDate } from "components/[guild]/Requirements/components/DataBlockWithDate"
+import {
+ Requirement,
RequirementProps,
} from "components/[guild]/Requirements/components/Requirement"
import { useRequirementContext } from "components/[guild]/Requirements/components/RequirementContext"
diff --git a/src/requirements/Juicebox/JuiceboxRequirement.tsx b/src/requirements/Juicebox/JuiceboxRequirement.tsx
index eac50534fb..867a0821fe 100644
--- a/src/requirements/Juicebox/JuiceboxRequirement.tsx
+++ b/src/requirements/Juicebox/JuiceboxRequirement.tsx
@@ -1,8 +1,9 @@
-import Requirement, {
+import {
+ Requirement,
RequirementProps,
} from "components/[guild]/Requirements/components/Requirement"
import { useRequirementContext } from "components/[guild]/Requirements/components/RequirementContext"
-import DataBlock from "components/common/DataBlock"
+import { DataBlock } from "components/common/DataBlock"
import { useJuiceboxProject } from "./hooks/useJuicebox"
const JuiceboxRequirement = (props: RequirementProps) => {
diff --git a/src/requirements/Lens/LensRequirement.tsx b/src/requirements/Lens/LensRequirement.tsx
index c224fe3ac4..52952a2c93 100644
--- a/src/requirements/Lens/LensRequirement.tsx
+++ b/src/requirements/Lens/LensRequirement.tsx
@@ -1,6 +1,7 @@
import { Link } from "@chakra-ui/next-js"
import { Skeleton } from "@chakra-ui/react"
-import Requirement, {
+import {
+ Requirement,
RequirementProps,
} from "components/[guild]/Requirements/components/Requirement"
import { useRequirementContext } from "components/[guild]/Requirements/components/RequirementContext"
diff --git a/src/requirements/Mirror/MirrorRequirement.tsx b/src/requirements/Mirror/MirrorRequirement.tsx
index abc3be01d5..21cf17e7f7 100644
--- a/src/requirements/Mirror/MirrorRequirement.tsx
+++ b/src/requirements/Mirror/MirrorRequirement.tsx
@@ -1,10 +1,11 @@
import { Text } from "@chakra-ui/react"
import BlockExplorerUrl from "components/[guild]/Requirements/components/BlockExplorerUrl"
-import Requirement, {
+import {
+ Requirement,
RequirementProps,
} from "components/[guild]/Requirements/components/Requirement"
import { useRequirementContext } from "components/[guild]/Requirements/components/RequirementContext"
-import DataBlock from "components/common/DataBlock"
+import { DataBlock } from "components/common/DataBlock"
import shortenHex from "utils/shortenHex"
import { Chain } from "wagmiConfig/chains"
import useMirrorEdition from "./hooks/useMirrorEdition"
diff --git a/src/requirements/Nft/NftRequirement.tsx b/src/requirements/Nft/NftRequirement.tsx
index 9f32262a77..db342a57e7 100644
--- a/src/requirements/Nft/NftRequirement.tsx
+++ b/src/requirements/Nft/NftRequirement.tsx
@@ -3,13 +3,14 @@ import { consts } from "@guildxyz/types"
import { ImageData } from "@nouns/assets"
import { ArrowSquareOut } from "@phosphor-icons/react"
import BlockExplorerUrl from "components/[guild]/Requirements/components/BlockExplorerUrl"
-import Requirement, {
+import {
+ Requirement,
RequirementProps,
} from "components/[guild]/Requirements/components/Requirement"
import { useRequirementContext } from "components/[guild]/Requirements/components/RequirementContext"
import useGuild from "components/[guild]/hooks/useGuild"
import Button from "components/common/Button"
-import DataBlock from "components/common/DataBlock"
+import { DataBlock } from "components/common/DataBlock"
import { env } from "env"
import { Fragment } from "react"
import SearchableVirtualListModal from "requirements/common/SearchableVirtualListModal"
diff --git a/src/requirements/Nft/providedValue/NftAmountProvidedValue.tsx b/src/requirements/Nft/providedValue/NftAmountProvidedValue.tsx
index f6f8bcf2e3..5003550c31 100644
--- a/src/requirements/Nft/providedValue/NftAmountProvidedValue.tsx
+++ b/src/requirements/Nft/providedValue/NftAmountProvidedValue.tsx
@@ -1,7 +1,7 @@
import { HStack, Text } from "@chakra-ui/react"
import { consts } from "@guildxyz/types"
import useGuild from "components/[guild]/hooks/useGuild"
-import DataBlock from "components/common/DataBlock"
+import { DataBlock } from "components/common/DataBlock"
import type { ProvidedValueDisplayProps } from "requirements/requirementProvidedValues"
import { isGuildPinSupportedChain } from "utils/guildCheckout/utils"
import { Chain } from "wagmiConfig/chains"
diff --git a/src/requirements/Noox/NooxRequirement.tsx b/src/requirements/Noox/NooxRequirement.tsx
index 932ca920f9..d135e9b74a 100644
--- a/src/requirements/Noox/NooxRequirement.tsx
+++ b/src/requirements/Noox/NooxRequirement.tsx
@@ -1,9 +1,10 @@
import { Link, Text } from "@chakra-ui/react"
-import Requirement, {
+import {
+ Requirement,
RequirementProps,
} from "components/[guild]/Requirements/components/Requirement"
import { useRequirementContext } from "components/[guild]/Requirements/components/RequirementContext"
-import DataBlock from "components/common/DataBlock"
+import { DataBlock } from "components/common/DataBlock"
import useNooxBadge from "./hooks/useNooxBadge"
const NooxRequirement = (props: RequirementProps) => {
diff --git a/src/requirements/Parallel/ParallelRequirement.tsx b/src/requirements/Parallel/ParallelRequirement.tsx
index 07ace630bd..c2e47c23d6 100644
--- a/src/requirements/Parallel/ParallelRequirement.tsx
+++ b/src/requirements/Parallel/ParallelRequirement.tsx
@@ -1,8 +1,9 @@
-import Requirement, {
+import {
+ Requirement,
RequirementProps,
} from "components/[guild]/Requirements/components/Requirement"
import { useRequirementContext } from "components/[guild]/Requirements/components/RequirementContext"
-import DataBlock from "components/common/DataBlock"
+import { DataBlock } from "components/common/DataBlock"
const ParallelRequirement = (props: RequirementProps) => {
const requirement = useRequirementContext()
diff --git a/src/requirements/Payment/PaymentRequirement.tsx b/src/requirements/Payment/PaymentRequirement.tsx
index e4910f2936..7202a6c1e5 100644
--- a/src/requirements/Payment/PaymentRequirement.tsx
+++ b/src/requirements/Payment/PaymentRequirement.tsx
@@ -1,14 +1,16 @@
import { Icon, Text } from "@chakra-ui/react"
-import { Coins, Warning } from "@phosphor-icons/react"
+import { Coins } from "@phosphor-icons/react"
import BlockExplorerUrl from "components/[guild]/Requirements/components/BlockExplorerUrl"
import BuyPass from "components/[guild]/Requirements/components/GuildCheckout/BuyPass"
import { GuildCheckoutProvider } from "components/[guild]/Requirements/components/GuildCheckout/components/GuildCheckoutContext"
-import Requirement, {
+import {
+ Requirement,
RequirementProps,
} from "components/[guild]/Requirements/components/Requirement"
import { useRequirementContext } from "components/[guild]/Requirements/components/RequirementContext"
+import { RequirementWarningIcon } from "components/[guild]/Requirements/components/RequirementDisplayComponent"
import useGuildPermission from "components/[guild]/hooks/useGuildPermission"
-import DataBlock from "components/common/DataBlock"
+import { DataBlock } from "components/common/DataBlock"
import { useRoleMembership } from "components/explorer/hooks/useMembership"
import useToken from "hooks/useToken"
import { NULL_ADDRESS } from "utils/guildCheckout/constants"
@@ -115,7 +117,7 @@ const OriginalPaymentRequirement = (props: RequirementProps): JSX.Element => {
const PaymentRequirement = (props: RequirementProps) => {
const { type } = useRequirementContext()
return (
- }>
+ }>
{`Unsupported requirement type: `}
{type}
diff --git a/src/requirements/Poap/PoapRequirement.tsx b/src/requirements/Poap/PoapRequirement.tsx
index f24b7ac29a..a9da5a4977 100644
--- a/src/requirements/Poap/PoapRequirement.tsx
+++ b/src/requirements/Poap/PoapRequirement.tsx
@@ -1,9 +1,10 @@
import { Link, Text } from "@chakra-ui/react"
-import Requirement, {
+import {
+ Requirement,
RequirementProps,
} from "components/[guild]/Requirements/components/Requirement"
import { useRequirementContext } from "components/[guild]/Requirements/components/RequirementContext"
-import DataBlock from "components/common/DataBlock"
+import { DataBlock } from "components/common/DataBlock"
import { usePoap } from "./hooks/usePoaps"
const PoapRequirement = (props: RequirementProps) => {
diff --git a/src/requirements/Points/PointsRequirement.tsx b/src/requirements/Points/PointsRequirement.tsx
index a448415c89..c16b852c5c 100644
--- a/src/requirements/Points/PointsRequirement.tsx
+++ b/src/requirements/Points/PointsRequirement.tsx
@@ -1,7 +1,8 @@
import { Link } from "@chakra-ui/next-js"
import { Skeleton } from "@chakra-ui/react"
import { GuildReward } from "@guildxyz/types"
-import Requirement, {
+import {
+ Requirement,
RequirementProps,
RequirementSkeleton,
} from "components/[guild]/Requirements/components/Requirement"
diff --git a/src/requirements/Rep3/Rep3Requirement.tsx b/src/requirements/Rep3/Rep3Requirement.tsx
index 685fe2a633..eba566c93b 100644
--- a/src/requirements/Rep3/Rep3Requirement.tsx
+++ b/src/requirements/Rep3/Rep3Requirement.tsx
@@ -1,9 +1,10 @@
import BlockExplorerUrl from "components/[guild]/Requirements/components/BlockExplorerUrl"
-import Requirement, {
+import {
+ Requirement,
RequirementProps,
} from "components/[guild]/Requirements/components/Requirement"
import { useRequirementContext } from "components/[guild]/Requirements/components/RequirementContext"
-import DataBlock from "components/common/DataBlock"
+import { DataBlock } from "components/common/DataBlock"
import shortenHex from "utils/shortenHex"
const Rep3Requirement = (props: RequirementProps): JSX.Element => {
diff --git a/src/requirements/Snapshot/SnapshotRequirement.tsx b/src/requirements/Snapshot/SnapshotRequirement.tsx
index 2e2d106037..6ac4f2441f 100644
--- a/src/requirements/Snapshot/SnapshotRequirement.tsx
+++ b/src/requirements/Snapshot/SnapshotRequirement.tsx
@@ -1,5 +1,4 @@
import {
- Icon,
Popover,
PopoverArrow,
PopoverBody,
@@ -7,14 +6,15 @@ import {
PopoverTrigger,
Portal,
} from "@chakra-ui/react"
-import { CaretDown } from "@phosphor-icons/react"
-import DataBlockWithDate from "components/[guild]/Requirements/components/DataBlockWithDate"
-import Requirement, {
+import { CaretDown } from "@phosphor-icons/react/dist/ssr"
+import { DataBlockWithDate } from "components/[guild]/Requirements/components/DataBlockWithDate"
+import {
+ Requirement,
RequirementProps,
} from "components/[guild]/Requirements/components/Requirement"
import { RequirementButton } from "components/[guild]/Requirements/components/RequirementButton"
import { useRequirementContext } from "components/[guild]/Requirements/components/RequirementContext"
-import DataBlock from "components/common/DataBlock"
+import { DataBlock } from "components/common/DataBlock"
import useSWRImmutable from "swr/immutable"
import pluralize from "utils/pluralize"
import SnapshotSpaceLink from "./components/SnapshotSpaceLink"
@@ -40,7 +40,7 @@ const SnapshotRequirement = (props: RequirementProps): JSX.Element => {
Object.keys(requirement.data.strategies[0].params ?? {}).length && (
- }>
+ }>
View parameters
diff --git a/src/requirements/Sound/SoundRequirement.tsx b/src/requirements/Sound/SoundRequirement.tsx
index c5c83561bf..6ce09cbcd3 100644
--- a/src/requirements/Sound/SoundRequirement.tsx
+++ b/src/requirements/Sound/SoundRequirement.tsx
@@ -1,6 +1,7 @@
import { Link } from "@chakra-ui/next-js"
import { Img } from "@chakra-ui/react"
-import Requirement, {
+import {
+ Requirement,
RequirementProps,
} from "components/[guild]/Requirements/components/Requirement"
import { useRequirementContext } from "components/[guild]/Requirements/components/RequirementContext"
diff --git a/src/requirements/Token/TokenRequirement.tsx b/src/requirements/Token/TokenRequirement.tsx
index 949b9cd97b..4e421103fd 100644
--- a/src/requirements/Token/TokenRequirement.tsx
+++ b/src/requirements/Token/TokenRequirement.tsx
@@ -1,9 +1,10 @@
import { Text } from "@chakra-ui/react"
import BlockExplorerUrl from "components/[guild]/Requirements/components/BlockExplorerUrl"
-import Requirement, {
+import {
+ Requirement,
RequirementProps,
} from "components/[guild]/Requirements/components/Requirement"
-import RequirementChainIndicator from "components/[guild]/Requirements/components/RequirementChainIndicator"
+import { RequirementChainIndicator } from "components/[guild]/Requirements/components/RequirementChainIndicator"
import { useRequirementContext } from "components/[guild]/Requirements/components/RequirementContext"
import useTokenData from "hooks/useTokenData"
import { CHAIN_CONFIG, Chain } from "wagmiConfig/chains"
diff --git a/src/requirements/Token/providedValue/TokenProvidedValue.tsx b/src/requirements/Token/providedValue/TokenProvidedValue.tsx
index 7a5185afb4..a251c4dcea 100644
--- a/src/requirements/Token/providedValue/TokenProvidedValue.tsx
+++ b/src/requirements/Token/providedValue/TokenProvidedValue.tsx
@@ -1,5 +1,5 @@
-import { HStack, Text, useColorModeValue } from "@chakra-ui/react"
-import RequirementChainIndicator from "components/[guild]/Requirements/components/RequirementChainIndicator"
+import { HStack, Text } from "@chakra-ui/react"
+import { RequirementChainIndicator } from "components/[guild]/Requirements/components/RequirementChainIndicator"
import useTokenData from "hooks/useTokenData"
import type { ProvidedValueDisplayProps } from "requirements/requirementProvidedValues"
import { NULL_ADDRESS } from "utils/guildCheckout/constants"
@@ -14,12 +14,10 @@ const TokenProvidedValue = ({ requirement }: ProvidedValueDisplayProps) => {
data: { symbol },
} = useTokenData(requirementChain, requirementAddress ?? NULL_ADDRESS)
- const tagBg = useColorModeValue("blackAlpha.100", "blackAlpha.300")
-
return (
{symbol ?? "Token"} balance
-
+
)
}
diff --git a/src/requirements/Twitter/TwitterRequirement.tsx b/src/requirements/Twitter/TwitterRequirement.tsx
index 32a2be7b0f..93a819ebf1 100644
--- a/src/requirements/Twitter/TwitterRequirement.tsx
+++ b/src/requirements/Twitter/TwitterRequirement.tsx
@@ -1,14 +1,15 @@
import { Icon, Text } from "@chakra-ui/react"
import { ArrowSquareOut } from "@phosphor-icons/react"
import ConnectRequirementPlatformButton from "components/[guild]/Requirements/components/ConnectRequirementPlatformButton"
-import DataBlockWithDate from "components/[guild]/Requirements/components/DataBlockWithDate"
-import Requirement, {
+import { DataBlockWithDate } from "components/[guild]/Requirements/components/DataBlockWithDate"
+import {
+ Requirement,
RequirementProps,
} from "components/[guild]/Requirements/components/Requirement"
import { useRequirementContext } from "components/[guild]/Requirements/components/RequirementContext"
import useUser from "components/[guild]/hooks/useUser"
-import DataBlock from "components/common/DataBlock"
-import DataBlockWithCopy from "components/common/DataBlockWithCopy"
+import { DataBlock } from "components/common/DataBlock"
+import { DataBlockWithCopy } from "components/common/DataBlockWithCopy"
import XLogo from "static/icons/x.svg"
import useSWRImmutable from "swr/immutable"
import { PlatformType } from "types"
diff --git a/src/requirements/Uniswap/UniswapRequirement.tsx b/src/requirements/Uniswap/UniswapRequirement.tsx
index 9d78ee3ea6..7f4745ce69 100644
--- a/src/requirements/Uniswap/UniswapRequirement.tsx
+++ b/src/requirements/Uniswap/UniswapRequirement.tsx
@@ -1,11 +1,12 @@
import { HStack, Skeleton } from "@chakra-ui/react"
-import Requirement, {
+import {
+ Requirement,
RequirementProps,
} from "components/[guild]/Requirements/components/Requirement"
-import { RequirementLinkButton } from "components/[guild]/Requirements/components/RequirementButton"
-import RequirementChainIndicator from "components/[guild]/Requirements/components/RequirementChainIndicator"
+import { RequirementLink } from "components/[guild]/Requirements/components/RequirementButton"
+import { RequirementChainIndicator } from "components/[guild]/Requirements/components/RequirementChainIndicator"
import { useRequirementContext } from "components/[guild]/Requirements/components/RequirementContext"
-import DataBlock from "components/common/DataBlock"
+import { DataBlock } from "components/common/DataBlock"
import { useRoleMembership } from "components/explorer/hooks/useMembership"
import REQUIREMENTS from "requirements"
import { Chains } from "wagmiConfig/chains"
@@ -61,19 +62,15 @@ const UniswapRequirement = ({ ...rest }: RequirementProps): JSX.Element => {
{/* The Uniswap app didn't seem able to handle testnets in the query param */}
{!hasAccess && !UNISWAP_TESTNETS.has(chain) && (
-
- Add Liquidity
-
+ variant="solid"
+ className="bg-uniswap text-white hover:bg-uniswap-hover active:bg-uniswap-active"
+ label="Add Liquidity"
+ />
)}
}
diff --git a/src/requirements/Uniswap/providedValue/PositionsProvidedValue.tsx b/src/requirements/Uniswap/providedValue/PositionsProvidedValue.tsx
index 2bb2e7387a..e2e6e2438a 100644
--- a/src/requirements/Uniswap/providedValue/PositionsProvidedValue.tsx
+++ b/src/requirements/Uniswap/providedValue/PositionsProvidedValue.tsx
@@ -1,5 +1,5 @@
import { HStack, Skeleton, Text } from "@chakra-ui/react"
-import DataBlock from "components/common/DataBlock"
+import { DataBlock } from "components/common/DataBlock"
import type { ProvidedValueDisplayProps } from "requirements/requirementProvidedValues"
import { Chains } from "wagmiConfig/chains"
import { useSymbolsOfPair } from "../hooks/useSymbolsOfPair"
diff --git a/src/requirements/Unlock/UnlockRequirement.tsx b/src/requirements/Unlock/UnlockRequirement.tsx
index 6d46603e70..f36f87ec65 100644
--- a/src/requirements/Unlock/UnlockRequirement.tsx
+++ b/src/requirements/Unlock/UnlockRequirement.tsx
@@ -1,5 +1,6 @@
import BlockExplorerUrl from "components/[guild]/Requirements/components/BlockExplorerUrl"
-import Requirement, {
+import {
+ Requirement,
RequirementProps,
} from "components/[guild]/Requirements/components/Requirement"
import { useRequirementContext } from "components/[guild]/Requirements/components/RequirementContext"
diff --git a/src/requirements/VisitLink/VisitLinkRequirement.tsx b/src/requirements/VisitLink/VisitLinkRequirement.tsx
index 07a0cacb3e..704f15a163 100644
--- a/src/requirements/VisitLink/VisitLinkRequirement.tsx
+++ b/src/requirements/VisitLink/VisitLinkRequirement.tsx
@@ -16,7 +16,8 @@ import {
} from "@chakra-ui/react"
import { ArrowSquareOut, Link as LinkIcon } from "@phosphor-icons/react"
import { useMembershipUpdate } from "components/[guild]/JoinModal/hooks/useMembershipUpdate"
-import Requirement, {
+import {
+ Requirement,
RequirementProps,
} from "components/[guild]/Requirements/components/Requirement"
import { useRequirementContext } from "components/[guild]/Requirements/components/RequirementContext"
@@ -24,10 +25,11 @@ import {
RequirementImage,
RequirementImageCircle,
} from "components/[guild]/Requirements/components/RequirementImage"
-import ResetRequirementButton, {
+import {
+ ResetRequirementButton,
getDefaultVisitLinkCustomName,
} from "components/[guild]/Requirements/components/ResetRequirementButton"
-import ViewOriginalPopover from "components/[guild]/Requirements/components/ViewOriginalPopover"
+import { ViewOriginalPopover } from "components/[guild]/Requirements/components/ViewOriginalPopover"
import useUser from "components/[guild]/hooks/useUser"
import { Alert } from "components/common/Modal"
import { useRoleMembership } from "components/explorer/hooks/useMembership"
@@ -65,7 +67,8 @@ const VisitLinkRequirement = ({ ...props }: RequirementProps) => {
onError: () => showErrorToast("Something went wrong"),
})
- const isCustomName = data?.customName !== getDefaultVisitLinkCustomName(data)
+ const isCustomName =
+ !!data?.customName && data.customName !== getDefaultVisitLinkCustomName(data)
const [, first, , link, , second] = isCustomName
? (VISIT_LINK_REGEX.exec(data.customName) ?? [])
: []
@@ -107,7 +110,7 @@ const VisitLinkRequirement = ({ ...props }: RequirementProps) => {
footer={
(isCustomName || !!data?.customImage) && (
-
+
} />
diff --git a/src/requirements/WalletActivity/WalletActivityRequirement.tsx b/src/requirements/WalletActivity/WalletActivityRequirement.tsx
index 0239119fcf..3f6f39876f 100644
--- a/src/requirements/WalletActivity/WalletActivityRequirement.tsx
+++ b/src/requirements/WalletActivity/WalletActivityRequirement.tsx
@@ -7,13 +7,14 @@ import {
Wallet,
} from "@phosphor-icons/react"
import { BeforeAfterDates } from "components/[guild]/Requirements/components/DataBlockWithDate"
-import Requirement, {
+import {
+ Requirement,
RequirementProps,
} from "components/[guild]/Requirements/components/Requirement"
-import RequirementChainIndicator from "components/[guild]/Requirements/components/RequirementChainIndicator"
+import { RequirementChainIndicator } from "components/[guild]/Requirements/components/RequirementChainIndicator"
import { useRequirementContext } from "components/[guild]/Requirements/components/RequirementContext"
-import DataBlock from "components/common/DataBlock"
-import DataBlockWithCopy from "components/common/DataBlockWithCopy"
+import { DataBlock } from "components/common/DataBlock"
+import { DataBlockWithCopy } from "components/common/DataBlockWithCopy"
import { ForwardRefExoticComponent, RefAttributes } from "react"
import formatRelativeTimeFromNow from "utils/formatRelativeTimeFromNow"
import pluralize from "utils/pluralize"
diff --git a/src/requirements/WalletActivity/providedValue/ContractDeployProvidedValue.tsx b/src/requirements/WalletActivity/providedValue/ContractDeployProvidedValue.tsx
index 5191e92649..3cff6fbcd9 100644
--- a/src/requirements/WalletActivity/providedValue/ContractDeployProvidedValue.tsx
+++ b/src/requirements/WalletActivity/providedValue/ContractDeployProvidedValue.tsx
@@ -1,20 +1,12 @@
-import { HStack, Text, useColorModeValue } from "@chakra-ui/react"
-import RequirementChainIndicator from "components/[guild]/Requirements/components/RequirementChainIndicator"
+import { HStack, Text } from "@chakra-ui/react"
+import { RequirementChainIndicator } from "components/[guild]/Requirements/components/RequirementChainIndicator"
import type { ProvidedValueDisplayProps } from "requirements/requirementProvidedValues"
-const ContractDeployProvidedValue = ({ requirement }: ProvidedValueDisplayProps) => {
- const tagBg = useColorModeValue("blackAlpha.100", "blackAlpha.300")
-
- return (
-
- Deployed contracts
-
-
- )
-}
+const ContractDeployProvidedValue = ({ requirement }: ProvidedValueDisplayProps) => (
+
+ Deployed contracts
+
+
+)
export default ContractDeployProvidedValue
diff --git a/src/requirements/WalletActivity/providedValue/TxCountProvidedValue.tsx b/src/requirements/WalletActivity/providedValue/TxCountProvidedValue.tsx
index 034942bdc8..4addd89549 100644
--- a/src/requirements/WalletActivity/providedValue/TxCountProvidedValue.tsx
+++ b/src/requirements/WalletActivity/providedValue/TxCountProvidedValue.tsx
@@ -1,16 +1,12 @@
-import { HStack, Text, useColorModeValue } from "@chakra-ui/react"
-import RequirementChainIndicator from "components/[guild]/Requirements/components/RequirementChainIndicator"
+import { HStack, Text } from "@chakra-ui/react"
+import { RequirementChainIndicator } from "components/[guild]/Requirements/components/RequirementChainIndicator"
import type { ProvidedValueDisplayProps } from "requirements/requirementProvidedValues"
-const TxCountProvidedValue = ({ requirement }: ProvidedValueDisplayProps) => {
- const tagBg = useColorModeValue("blackAlpha.100", "blackAlpha.300")
-
- return (
-
- Number of transactions
-
-
- )
-}
+const TxCountProvidedValue = ({ requirement }: ProvidedValueDisplayProps) => (
+
+ Number of transactions
+
+
+)
export default TxCountProvidedValue
diff --git a/src/requirements/Web3Inbox/Web3InboxRequirement.tsx b/src/requirements/Web3Inbox/Web3InboxRequirement.tsx
index 0fc53feedc..c034ac4e4e 100644
--- a/src/requirements/Web3Inbox/Web3InboxRequirement.tsx
+++ b/src/requirements/Web3Inbox/Web3InboxRequirement.tsx
@@ -1,6 +1,7 @@
import { Link, Text } from "@chakra-ui/react"
import { ArrowSquareOut } from "@phosphor-icons/react"
-import Requirement, {
+import {
+ Requirement,
RequirementProps,
} from "components/[guild]/Requirements/components/Requirement"
import { useRequirementContext } from "components/[guild]/Requirements/components/RequirementContext"
diff --git a/src/requirements/Yup/YupRequirement.tsx b/src/requirements/Yup/YupRequirement.tsx
index 7c12e985b0..8401527545 100644
--- a/src/requirements/Yup/YupRequirement.tsx
+++ b/src/requirements/Yup/YupRequirement.tsx
@@ -1,8 +1,9 @@
-import Requirement, {
+import {
+ Requirement,
RequirementProps,
} from "components/[guild]/Requirements/components/Requirement"
import { useRequirementContext } from "components/[guild]/Requirements/components/RequirementContext"
-import DataBlock from "components/common/DataBlock"
+import { DataBlock } from "components/common/DataBlock"
const YupRequirement = (props: RequirementProps): JSX.Element => {
const requirement = useRequirementContext()
diff --git a/src/requirements/types.ts b/src/requirements/types.ts
index 742372869f..6f63b67d26 100644
--- a/src/requirements/types.ts
+++ b/src/requirements/types.ts
@@ -3,9 +3,10 @@ import { Icon } from "@phosphor-icons/react"
import { UseControllerProps } from "react-hook-form"
import { Requirement } from "types"
-export type RequirementType =
- | Schemas["Requirement"]["type"]
- | "WORLD_ID_VERIFICATION"
+export type RequirementType = Exclude<
+ Schemas["Requirement"]["type"],
+ "WORLD_ID_VERIFICATION"
+>
export type RequirementFormProps = {
baseFieldPath: string
diff --git a/src/rewards/Token/DynamicRewardModal.tsx b/src/rewards/Token/DynamicRewardModal.tsx
index 67f1a789ce..85091edef3 100644
--- a/src/rewards/Token/DynamicRewardModal.tsx
+++ b/src/rewards/Token/DynamicRewardModal.tsx
@@ -24,7 +24,7 @@ import {
useDisclosure,
} from "@chakra-ui/react"
import { Lightning, PencilSimple, Question } from "@phosphor-icons/react"
-import RequirementDisplayComponent from "components/[guild]/Requirements/components/RequirementDisplayComponent"
+import { RequirementDisplayComponent } from "components/[guild]/Requirements/components/RequirementDisplayComponent"
import useGuildPermission from "components/[guild]/hooks/useGuildPermission"
import Card from "components/common/Card"
import dynamic from "next/dynamic"
diff --git a/src/types.ts b/src/types.ts
index a1ac66e1b9..153e353ad5 100644
--- a/src/types.ts
+++ b/src/types.ts
@@ -462,13 +462,17 @@ type Trait = {
}
}
-type Requirement = z.output
-type RequirementCreateResponseOutput = z.output<
- typeof schemas.RequirementCreateResponseSchema
+type Requirement = Exclude<
+ z.output,
+ { type: "WORLD_ID_VERIFICATION" }
+>
+type RequirementCreateResponseOutput = Exclude<
+ z.output,
+ { type: "WORLD_ID_VERIFICATION" }
>
type ClientStateRequirementCreateResponse = Omit<
- Schemas["RequirementCreateResponse"],
+ Exclude,
/**
* These props won't be included in the response when we only store the requirement
* object on client side, so we omit them from the type & add them back as optional
diff --git a/src/v2/components/CircularProgressBar.tsx b/src/v2/components/CircularProgressBar.tsx
index 971630ea26..20730adf31 100644
--- a/src/v2/components/CircularProgressBar.tsx
+++ b/src/v2/components/CircularProgressBar.tsx
@@ -30,7 +30,7 @@ export const CircularProgressBar: React.FC = ({
>
{
- const [_, copy] = useCopyToClipboard()
- const [showSuccess, setShowSuccess] = useState(false)
+ const { hasCopied, copyToClipboard } = useCopyToClipboard()
+
return (
@@ -15,13 +14,9 @@ export const CopyLink = ({ href }: { href: string }) => {
{
- copy(href)
- setShowSuccess(true)
- window.setTimeout(() => setShowSuccess(false), 1000)
- }}
+ onClick={() => copyToClipboard(href)}
icon={
- showSuccess ? (
+ hasCopied ? (
) : (
diff --git a/src/v2/components/CopyableAddress.tsx b/src/v2/components/CopyableAddress.tsx
index 6089388032..aa4270661c 100644
--- a/src/v2/components/CopyableAddress.tsx
+++ b/src/v2/components/CopyableAddress.tsx
@@ -1,6 +1,6 @@
+import { useCopyToClipboard } from "@/hooks/useCopyToClipboard"
import { cn } from "@/lib/utils"
-import { ButtonHTMLAttributes, useRef, useState } from "react"
-import { useCopyToClipboard } from "usehooks-ts"
+import { ButtonHTMLAttributes, useRef } from "react"
import shortenHex from "utils/shortenHex"
import { Button } from "./ui/Button"
import { Tooltip, TooltipContent, TooltipTrigger } from "./ui/Tooltip"
@@ -19,20 +19,14 @@ const CopyableAddress = ({
...props
}: Props): JSX.Element => {
const buttonRef = useRef(null)
- const [, copyToClipboard] = useCopyToClipboard()
- const [forceOpenTooltip, setForceOpenTooltip] = useState(false)
+ const { hasCopied, copyToClipboard } = useCopyToClipboard()
return (
-
+
- copyToClipboard(address).then(() => {
- setForceOpenTooltip(true)
- setTimeout(() => setForceOpenTooltip(false), 3000)
- })
- }
+ onClick={() => copyToClipboard(address)}
variant="unstyled"
className={cn("h-max p-0", className)}
{...props}
@@ -41,7 +35,7 @@ const CopyableAddress = ({
- {forceOpenTooltip ? "Copied" : "Click to copy address"}
+ {hasCopied ? "Copied" : "Click to copy address"}
)
diff --git a/src/v2/components/ui/ColorPicker.tsx b/src/v2/components/ui/ColorPicker.tsx
index 18f38715b6..a0e31b07e1 100644
--- a/src/v2/components/ui/ColorPicker.tsx
+++ b/src/v2/components/ui/ColorPicker.tsx
@@ -42,9 +42,7 @@ export const ColorPicker = ({ fieldName, onChange }: Props) => {
as={Palette}
pos="absolute"
pointerEvents={"none"}
- color={
- isIconLight ? "var(--whiteAlpha-800)" : "var(--blackAlpha-800)"
- }
+ color={isIconLight ? "white" : "black"}
/>
{
+ const [_, _originalCopyToClipboard] = _useCopyToClipBoard()
+
+ const [hasCopied, setHasCopied] = useState(false)
+ const copyToClipboard = useCallback(
+ (text: string) => {
+ _originalCopyToClipboard(text)
+ setHasCopied(true)
+ },
+ [_originalCopyToClipboard]
+ )
+
+ useEffect(() => {
+ let timeoutId: number | null = null
+
+ if (hasCopied) {
+ timeoutId = window.setTimeout(() => {
+ setHasCopied(false)
+ }, options.timeout)
+ }
+
+ return () => {
+ if (timeoutId) {
+ window.clearTimeout(timeoutId)
+ }
+ }
+ }, [options.timeout, hasCopied])
+
+ return {
+ hasCopied,
+ copyToClipboard,
+ }
+}
+
+export { useCopyToClipboard }
diff --git a/tailwind.config.ts b/tailwind.config.ts
index c2bce705ba..f81369c487 100644
--- a/tailwind.config.ts
+++ b/tailwind.config.ts
@@ -24,6 +24,11 @@ const config = {
},
colors: {
gray: "hsl(var(--gray))",
+ blackAlpha: {
+ DEFAULT: "var(--blackAlpha-medium)",
+ soft: "var(--blackAlpha-soft)",
+ hard: "var(--blackAlpha-hard)",
+ },
banner: {
DEFAULT: "var(--banner)",
dark: "var(--banner-dark)",
@@ -170,6 +175,11 @@ const config = {
hover: "hsl(var(--farcaster-hover))",
active: "hsl(var(--farcaster-active))",
},
+ uniswap: {
+ DEFAULT: "hsl(var(--uniswap))",
+ hover: "hsl(var(--uniswap-hover))",
+ active: "hsl(var(--uniswap-active))",
+ },
},
opacity: {
banner: "var(--banner-opacity)"