diff --git a/AI_DISCLOSURE.md b/AI_DISCLOSURE.md new file mode 100644 index 0000000..5d8a76c --- /dev/null +++ b/AI_DISCLOSURE.md @@ -0,0 +1,3 @@ +# AI disclosure + +This contribution was created with AI assistance using OpenAI Codex. The changes were reviewed, tested locally, and checked against the task requirements by the submitting contributor. diff --git a/app/layout.tsx b/app/layout.tsx index be9a6b9..e931f44 100644 --- a/app/layout.tsx +++ b/app/layout.tsx @@ -1,4 +1,4 @@ -import type { Metadata, ResolvingMetadata, Viewport } from "next"; +import type { Metadata, Viewport } from "next"; import { Inter } from "next/font/google"; import { cn } from "@/lib/utils"; import { Providers } from "@/components/providers/providers"; @@ -6,22 +6,35 @@ import "./globals.css"; const inter = Inter({ subsets: ["latin"] }); -export async function generateMetadata( - { params, searchParams }: any, - parent: ResolvingMetadata -): Promise { - return { - title: "Gibwork | Find Talent, Find Work", +export const metadata: Metadata = { + metadataBase: new URL("https://gib.work"), + title: "Gibwork | Find Talent, Find Work", + description: + "Post work, fund it in escrow, and pay on approval. Gibwork connects builders, designers, and creators with paid tasks and open-source bounties on Solana.", + alternates: { + canonical: "/", + }, + openGraph: { + title: "Gibwork — find talent, find work", description: - "Gibwork connects skilled professionals with freelance work opportunities, offering seamless integration with all Solana tokens for secure and efficient transactions.", - openGraph: { - images: [`https://cdn.gib.work/metadata/default.png`], - }, - }; -} + "Post work, fund it in escrow, and pay on approval. Find paid tasks and open-source bounties on Gibwork.", + url: "https://gib.work/", + images: ["https://cdn.gib.work/metadata/default.png"], + }, + twitter: { + card: "summary_large_image", + title: "Gibwork — find talent, find work", + description: + "Post work, fund it in escrow, and pay on approval. Find paid tasks and open-source bounties on Gibwork.", + images: ["https://cdn.gib.work/metadata/default.png"], + }, +}; export const viewport: Viewport = { - themeColor: "#ffffff", + themeColor: [ + { media: "(prefers-color-scheme: light)", color: "#ffffff" }, + { media: "(prefers-color-scheme: dark)", color: "#0a0a0a" }, + ], }; export default function RootLayout({ diff --git a/components/faq.tsx b/components/faq.tsx index 5e4acab..9686c78 100644 --- a/components/faq.tsx +++ b/components/faq.tsx @@ -41,9 +41,7 @@ export function Faq() { How do I create Work on Gibwork? - Under the earnings display on the apps home page, click the - "Create" buttons for creating Open Source Bounties and Task. These buttons guide you through the process of creating and posting jobs on the - platform. + From the home page, choose Create to post an open-source bounty or a task. The guided flow helps you describe the work, set the reward, and publish it for contributors. @@ -58,23 +56,28 @@ export function Faq() { How do I get paid for completed work? - Once your work is approved by the creator, the funds will be released to your noncustodial wallet. + Once the creator approves your completed work, the reward is released to your Gibwork balance. Work is funded in escrow before you start, so the reward is available for release when the work is accepted. What payment methods does gibwork support? - We only support wallet transactions, i.e., depositing the winning amount directly to - your wallet in the form of crypto or stablecoins. + Work is funded and paid in SPL tokens on Solana. USDC and SOL are common options, and you can connect a wallet when you are ready to manage on-chain funds. - {/* + + Do I need a crypto wallet to get started? + + No. You can sign up with email or a supported social sign-in without bringing a wallet. You can connect a wallet later if you want to manage on-chain funds directly. + + + {/* Are there any fees for using gibwork? Gibwork charges a 5% service fee on transactions, the lowest in the industry! */} - {/* + {/* What is the purpose of the $WORK token? The $WORK Token provide access to a range of utilities within the platform, which could include community voting rights and participation in allocation of rewards funded by operational revenue. diff --git a/components/hero.tsx b/components/hero.tsx index a85820f..96e7cee 100644 --- a/components/hero.tsx +++ b/components/hero.tsx @@ -2,7 +2,7 @@ import { SolanaLogoType } from "@/components/logo/solana"; import { Button } from "@/components/ui/button"; -import { ArrowRight } from "lucide-react"; +import { ArrowRight, Smartphone } from "lucide-react"; import Image from "next/image"; import dashboard from "@/public/dashboard-2.png"; import { Badge } from "@/components/ui/badge"; @@ -40,6 +40,7 @@ export function Hero() { @@ -53,13 +54,22 @@ export function Hero() { connects you with the perfect match. - - + - * @type ReactElement + * @type keyof JSX.IntrinsicElements * @description * The component to be rendered as the text * */ - as?: ReactElement; + as?: keyof JSX.IntrinsicElements; /** * @default "" @@ -65,6 +65,7 @@ const SparklesText: React.FC = ({ colors = { first: "#9E7AFF", second: "#FE8BBB" }, className, sparklesCount = 10, + as = "div", ...props }) => { const [sparkles, setSparkles] = useState([]); @@ -102,10 +103,12 @@ const SparklesText: React.FC = ({ const interval = setInterval(updateStars, 100); return () => clearInterval(interval); - }, [colors.first, colors.second]); + }, [colors.first, colors.second, sparklesCount]); + + const Component = as; return ( -
= ({ ))} {text} -
+ ); }; diff --git a/lib/site-config.ts b/lib/site-config.ts index c69be15..78e7877 100644 --- a/lib/site-config.ts +++ b/lib/site-config.ts @@ -8,6 +8,7 @@ export const siteConfig = { youtubeUrl: "https://www.youtube.com/@gibwork_", xUrl: "https://twitter.com/intent/follow?screen_name=gib_work", appUrl: "https://app.gib.work/", + iosAppUrl: "https://apps.apple.com/us/app/gibwork/id6757281508", xHandle: "gib_work", themeColor: "#ffffff", };