- Chainlib is a new marketplace built on the Polygon blockchain,
- where authors can publish books and readers can support them
- directly. We eliminate middlemen, ensure fair compensation,
- and provide a platform where creativity thrives and readers
- discover unique voices.
-
-
-
-
-
- Why Chainlib Exists?
-
-
-
- We believe creators deserve fair pay for their publications.
- ChainLib empowers authors to earn more from their work and
- give readers direct access to their favorite writers. By using
- blockchain technology, we've created a transparent and
- decentralized way of supporting literary creation and
- readership.
-
-
-
-
-
+ {/* People Image Banner */}
+
- {/* What Makes Us Different Section - Updated to match image */}
-
-
-
-
-
- What Makes Us Different
-
-
+ {/* What is Chainlib */}
+
+
+
+
+
+ What is Chainlib?
+
+
-
-
- {/* Decentralized Storage Feature */}
-
-
-
-
-
-
-
-
- Decentralized Storage
-
-
- Books live on IPFS, never locked behind servers.
-
-
-
+
+
+ Chainlib is a new marketplace built on the Polygon blockchain, where authors can publish books and readers can support them directly. We eliminate middlemen, ensure fair compensation, and provide a platform where creativity thrives and readers discover unique voices.
+
+
- {/* NFT Publishing Feature */}
-
-
-
-
-
+
+
+
+
+ Why Chainlib Exists?
+
+
+
+
+ We believe creators deserve fair pay for their publications. ChainLib empowers authors to earn more from their work and give readers direct access to their favorite writers. By using blockchain technology, we have created a transparent and decentralized way of supporting literary creation and readership.
+
+
+
-
-
- NFT Publishing
-
-
- Every published work is a tradable asset, linked to a
- tokenbound account.{" "}
-
-
-
+
-
-
-
-
-
-
-
-
- Smart Contracts
-
-
- Royalties, rights, and revenue handled transparently and
- automatically.
-
+ {/* What Makes Us Different Section - Updated to match image */}
+
+
+
+ What Makes Us Different
+
-
- {/* Reader Rewards Feature */}
-
-
-
-
-
-
-
-
- Reader Rewards
-
-
- Read, review, and grow your rank in our engaged reading
- community.
-
-
-
-
-
-
-
-
+
+
+ {/* Decentralized Storage Feature */}
+
+
+
+
+
+
+
+
+ Decentralized Storage
+
+
+
+ Books live on IPFS, never locked behind servers.
+
+
+
+
- {/* Join Our Community */}
-
-
-
-
-
- Join Our Community of Book Lovers
-
-
+ {/* NFT Publishing Feature */}
+
+
+
+
+
+
+
+
+ NFT Publishing
+
+
+
+ Every published work is a tradable asset, linked to a
+ tokenbound account.
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ {/* Smart Contracts Feature */}
+
+
+
+
+
+
+
+
+ Smart Contracts
+
+
+
+ Royalties, rights, and revenue handled transparently and
+ automatically.
+
+
+
+
-
-
+ {/* Reader Rewards Feature */}
+
+
+
+
+
+
+
+
+ Reader Rewards
+
+
+
+ Read, review, and grow your rank in our engaged reading
+ community.
+
+
+ Curious to see what 's inside? we 're excited to welcome
+ you!
+
+
+
+
+ >
+ );
+}
diff --git a/src/app/auth/_component/slide.tsx b/src/app/auth/_component/slide.tsx
new file mode 100644
index 0000000..0adce45
--- /dev/null
+++ b/src/app/auth/_component/slide.tsx
@@ -0,0 +1,57 @@
+"use client"
+
+import Logo from '@/app/_components/Logo';
+import { cn } from '@/lib/utils';
+import { IMessageCard } from "@/types/types";
+import { AnimatePresence, motion } from "framer-motion";
+import { usePathname, useSearchParams } from 'next/navigation';
+
+const SignInMessageCard: IMessageCard[] = [{
+ step: 1, heading: "Your Stories Still Matter.", message: "Your words have power. Your ideas have a place. Sign in to keep building the library only you can create. The world is still reading."
+}]
+
+const SignUpMessageCards: IMessageCard[] = [{
+ step: 1, heading: "It Starts With a Story", message: "Every great book begins with a single idea. We give that idea a stage, a voice, and the freedom to reach the world."
+},
+{ step: 2, heading: "You Own Your Voice", message: "No middlemen. No boundaries. With ChainLib, your content stays yours. Publish with purpose and keep the rewards you earn." }, {
+ step: 3, heading: "Write. Connect. Impact."
+ , message: "From local readers to global fans, your story matters. We helps you reach more people, build your community, and leave your mark."
+}]
+
+
+export default function Slide() {
+ const pathname = usePathname()
+ const searchParams = useSearchParams()
+
+ const step = Number(searchParams.get("step") ?? 1)
+ const messageCards: IMessageCard[] = pathname === "/sign-in" ? SignInMessageCard : SignUpMessageCards
+ const messageCard = messageCards[step - 1]
+
+ return (
+ <>
+
+ {head === "E-Book" ? "Publish a standalone digital book and make it instantly available to readers to use." : "Start a book series and release your story in multiple parts over time."}
+
+
+
+
)
+}
+
+export default PublishTypeModal;
diff --git a/src/app/author/[authorId]/_components/analytics-header.tsx b/src/app/author/[authorId]/_components/analytics-header.tsx
new file mode 100644
index 0000000..24258c9
--- /dev/null
+++ b/src/app/author/[authorId]/_components/analytics-header.tsx
@@ -0,0 +1,16 @@
+import React from "react";
+
+import Link from "next/link";
+import { ArrowLeft } from "lucide-react";
+const AnalyticsHeader = () => {
+ return (
+
+ "Native Invisibility" delves into the complex and often
+ insidious ways in which indigenous peoples and their unique
+ experiences are rendered unseen and unheard in the modern era.
+
+ Your book is now live and ready to be discovered by readers around the
+ world.
+
+
+
+
+
+ );
+};
+
+export default SuccessModal;
diff --git a/src/app/author/[authorId]/publish/_components/book-preview-modal.tsx b/src/app/author/[authorId]/publish/_components/book-preview-modal.tsx
new file mode 100644
index 0000000..df9d95c
--- /dev/null
+++ b/src/app/author/[authorId]/publish/_components/book-preview-modal.tsx
@@ -0,0 +1,180 @@
+"use client";
+
+import type React from "react";
+
+import {
+ BadgeCheck,
+ Bell,
+ ChevronLeft,
+ Layout,
+ Link2,
+ Maximize2,
+ Minus,
+ PenLine,
+ Plus,
+} from "lucide-react";
+import Image from "next/image";
+import { useEffect } from "react";
+
+interface BookPreviewModalProps {
+ isOpen: boolean;
+ onClose: () => void;
+ bookTitle?: string;
+ authorName?: string;
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ bookContent?: any;
+}
+
+const BookPreviewModal: React.FC = ({
+ isOpen,
+ onClose,
+ authorName = "Brianna Wiest",
+ bookContent,
+}) => {
+ useEffect(() => {
+ if (isOpen) {
+ document.body.style.overflow = "hidden";
+ } else {
+ document.body.style.overflow = "auto";
+ }
+
+ return () => {
+ document.body.style.overflow = "auto";
+ };
+ }, [isOpen]);
+
+ if (!isOpen) return null;
+
+ const sampleContent = `to be for the rest of your life. How genuinely are you going to live? How afraid are you going to be? For how many more years are you going to let your demons conquer you?
+
+ You are only in your 20s. It is not too late to start over.
+
+ In fact, I hope you start over all the time. Not by burning bridges or ditching town or closing yourself to what you have, but by no longer fearing what you don't. I hope you spend your free afternoons working on the skills you need to have the job you want someday. I hope you accept that you're not supposed to look the way you did in high school, or really want the same things. I hope you ask yourself: "What do I want now?" every time it occurs to you to do so. I hope you learn that there is only one way to guide your life, and it is by consistently focusing on the next right step.
+
+ Genuinely unhappy people are never upset by their circumstances; they are upset because they have externalized their power. They put their faith in finding the right person as opposed to being able to attract and choose the right person. They put their faith in finding the right job, in the right economy, as opposed to honing their skills to the point that a company would be remiss to overlook them.
+
+ If you want to genuinely start over, clear the slate of everything you ever thought about how to get your life together. Don't predict, project, mind-read, assume. Don't imagine a better elevator speech. Don't only think of what it makes sense to do. Think of what it feels right to do. Not what your impulses say, not what your laziness says, not what your fear says. Those things have probably gotten you where you are. But a layer beneath them is a more resolute voice, and it will tell you which way to go. You only have to get quiet, listen, and act.
+
+ Learn to live your life more than you're inclined to sit around wondering about it. You can't reflect your way into a new existence, but you can think yourself into paralysis. If you know, at your core, that you must start over, it's not a matter of whether`;
+
+ return (
+
+
+ {/* Header */}
+
+
+
+
+
+
+
+
+
+
+
+ Page 1-37
+
+
+
+
+
+
+
+
+
+
+
+
+ Joseph Yanum
+
+ @joeyyanum
+
+
+
+
+
+ {/* Main Content */}
+
+ {/* Sidebar */}
+
+
+
+ Book Preview
+
+
+
+
+
+ Table of Content
+
+
+
+
+
+
+ {["Cover", "Praise", "Title", "Chapter 1", "How it Started", "Let Go", "Chapter 2", "How it started", "Where Are We"].map(el =>
+ Darrin Collins is a dedicated researcher and writer deeply committed to exploring issues of cultural visibility, marginalization, and the intersection of identity and technology. His work in Native Invisibility reflects a long-standing interest in amplifying underrepresented voices and fostering a more equitable understanding of diverse experiences in the contemporary world.
+
+
+}
+
+interface IBookData {
+ id: string;
+ title: string;
+ author: string;
+ isVerified: boolean;
+ price: number;
+ rating: number;
+ amount: number;
+ seriesCount: number;
+}
\ No newline at end of file
diff --git a/src/app/books/[bookId]/page.tsx b/src/app/books/[bookId]/page.tsx
index 4cb879f..76a65b5 100644
--- a/src/app/books/[bookId]/page.tsx
+++ b/src/app/books/[bookId]/page.tsx
@@ -1,312 +1,254 @@
-import React from "react";
+import BackButton from "@/app/_components/backButton";
+import Footer from "@/app/_components/Footer";
+import Navbar from "@/app/_components/Navbar";
+import BookSection from "@/app/_components/ui/BookSection";
+import strkImg from "@/assets/icons/strk.png";
+import { bookData, relatedBooks } from "@/data";
+import { BadgeCheck, Heart, Star } from "lucide-react";
import Image from "next/image";
import Link from "next/link";
-import strkImg from "@/assets/icons/strk.png";
-import authorImg from "@/assets/images/author1.png";
-import RelatedBooks from "./RelatedBooks";
-interface PageProps {
- params: {
- bookId: string;
- };
-}
+// interface BookPageProps {
+// params: {
+// bookId: string;
+// };
+// }
-const BookDetails = ({ params }: PageProps) => {
- const { bookId } = params;
- const bookData = {
- title: "Native Invisibility",
- author: "Darrin Collins",
- authorImage: authorImg,
- rating: 4.5,
- reviews: 109,
- description:
- '"Native Invisibility" delves into the complex and often insidious ways in which Indigenous peoples and their unique experiences are rendered unseen and unheard in the modern era.',
- price: 12,
- strikeCount: "193 STRK",
- genre: "Fiction",
- category: "Comic",
- pageCount: "21 Pages",
- language: "English",
- publishDate: "12 April, 2025",
- isbn: "978-3-16-148410-0",
- publisherNote:
- "Native Invisibility unveils the crucial ways Indigenous cultures are often unseen in our modern world. This vital book fosters understanding and action for recognition and justice.",
- authorBio:
- "Darrin Collins is a dedicated researcher and writer deeply committed to exploring issues of cultural visibility, marginalization, and the intersection of identity and technology. His work in Native Invisibility reflects a long-standing interest in amplifying underrepresented voices and fostering a more nuanced understanding of diverse experiences in the contemporary world.",
- isVerified: true,
- coverImage: "/images/bookCover1.png",
- };
+const authorBooks = [...relatedBooks]; // Using the same data for demo purposes
- return (
-
- {/* Back Button */}
-
-
- Back
-
+export default function Page() {
+ // export default function Page({ params }: BookPageProps) {
+ // const { bookId } = params;
-