Repository: hiteshchoudhary/devui Branch: main Commit: 1a21d47a1fb6 Files: 82 Total size: 572.3 KB Directory structure: gitextract_hoj68ou7/ ├── .eslintrc.json ├── .gitignore ├── README.md ├── next.config.js ├── package.json ├── postcss.config.js ├── prettier.config.js ├── src/ │ ├── app/ │ │ ├── about-us/ │ │ │ └── page.tsx │ │ ├── globals.css │ │ ├── layout.tsx │ │ ├── page.tsx │ │ └── templates/ │ │ ├── [id]/ │ │ │ └── page.tsx │ │ └── page.tsx │ ├── components/ │ │ ├── common/ │ │ │ ├── Button.tsx │ │ │ ├── MainNavbar.tsx │ │ │ ├── MobileNavbar.tsx │ │ │ └── Select.tsx │ │ ├── lib/ │ │ │ ├── CodePreviewer.tsx │ │ │ ├── CodeSnippetRenderer.tsx │ │ │ ├── PreviewCard.tsx │ │ │ └── WidthHandler.tsx │ │ └── templates/ │ │ ├── authentication/ │ │ │ ├── forgot-password.jsx │ │ │ ├── index.ts │ │ │ ├── login.jsx │ │ │ └── register.jsx │ │ ├── chat/ │ │ │ ├── chat-screen.jsx │ │ │ ├── create-group-chat.jsx │ │ │ ├── create-normal-chat.jsx │ │ │ ├── empty-chats.jsx │ │ │ ├── group-information.jsx │ │ │ ├── index.ts │ │ │ ├── login.jsx │ │ │ └── register.jsx │ │ ├── social-media/ │ │ │ ├── bookmark-posts.jsx │ │ │ ├── change-password.jsx │ │ │ ├── edit-profile.jsx │ │ │ ├── index.ts │ │ │ ├── login.jsx │ │ │ ├── my-profile.jsx │ │ │ ├── post-detail.jsx │ │ │ ├── post-listing.jsx │ │ │ ├── register.jsx │ │ │ └── user-profile.jsx │ │ ├── todo/ │ │ │ ├── empty-todos.jsx │ │ │ ├── index.ts │ │ │ └── todos.jsx │ │ └── youtube/ │ │ ├── change-password.jsx │ │ ├── channel-empty-playlist.jsx │ │ ├── channel-empty-subscribed.jsx │ │ ├── channel-empty-tweet.jsx │ │ ├── channel-empty-video.jsx │ │ ├── channel-playlist-videos.jsx │ │ ├── channel-playlist.jsx │ │ ├── channel-subscribed.jsx │ │ ├── channel-tweets.jsx │ │ ├── channel-video-list.jsx │ │ ├── dashboard.jsx │ │ ├── data.jsx │ │ ├── delete-video.jsx │ │ ├── edit-channel-info.jsx │ │ ├── edit-personal-info.jsx │ │ ├── edit-video.jsx │ │ ├── empty-videos.jsx │ │ ├── index.ts │ │ ├── login.jsx │ │ ├── mychannel-empty-tweet.jsx │ │ ├── mychannel-empty-video.jsx │ │ ├── mychannel-tweets.jsx │ │ ├── privacy-policy.jsx │ │ ├── register.jsx │ │ ├── terms-and-conditions.jsx │ │ ├── upload-video.jsx │ │ ├── uploaded-video.jsx │ │ ├── uploading-video.jsx │ │ ├── video-cards.jsx │ │ ├── video-detail.jsx │ │ └── video-list.jsx │ ├── types/ │ │ └── utils.ts │ └── utils/ │ ├── index.ts │ └── screens.tsx ├── tailwind.config.ts └── tsconfig.json ================================================ FILE CONTENTS ================================================ ================================================ FILE: .eslintrc.json ================================================ { "extends": "next/core-web-vitals", "rules": { // next no-img-element "@next/next/no-img-element": "off" } } ================================================ FILE: .gitignore ================================================ # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. # dependencies /node_modules /.pnp .pnp.js # testing /coverage # next.js /.next/ /out/ # production /build # misc .DS_Store *.pem # debug npm-debug.log* yarn-debug.log* yarn-error.log* # local env files .env*.local # vercel .vercel # typescript *.tsbuildinfo next-env.d.ts ================================================ FILE: README.md ================================================ # DevUI A complete front end solution for learners ================================================ FILE: next.config.js ================================================ /** @type {import('next').NextConfig} */ const nextConfig = { images: { domains: ["via.placeholder.com"] }, }; module.exports = nextConfig; ================================================ FILE: package.json ================================================ { "name": "devui", "description": "Common app templates in plain HTML and TailwindCSS", "version": "0.1.0", "private": true, "scripts": { "dev": "next dev", "build": "next build", "start": "next start", "lint": "next lint" }, "dependencies": { "@headlessui/react": "^1.7.17", "@heroicons/react": "^2.0.18", "@types/node": "20.5.6", "@types/react": "18.2.21", "@types/react-dom": "18.2.7", "@uiw/codemirror-extensions-langs": "^4.21.11", "@uiw/codemirror-themes-all": "^4.21.11", "@uiw/react-codemirror": "^4.21.11", "autoprefixer": "10.4.15", "eslint": "8.47.0", "eslint-config-next": "13.4.19", "next": "13.4.19", "postcss": "8.4.28", "react": "18.2.0", "react-dom": "18.2.0", "tailwindcss": "3.3.3", "typescript": "5.2.2" }, "devDependencies": { "@types/prettier": "^3.0.0", "prettier": "^3.0.2", "prettier-plugin-tailwindcss": "^0.5.3" } } ================================================ FILE: postcss.config.js ================================================ module.exports = { plugins: { tailwindcss: {}, autoprefixer: {}, }, } ================================================ FILE: prettier.config.js ================================================ module.exports = { plugins: ["prettier-plugin-tailwindcss"], }; ================================================ FILE: src/app/about-us/page.tsx ================================================ import React from "react"; const AboutUs = () => { return
AboutUs
; }; export default AboutUs; ================================================ FILE: src/app/globals.css ================================================ @tailwind base; @tailwind components; @tailwind utilities; .resizing, .resizing * { @apply !cursor-ew-resize !select-none; } .resizing .iframe-overlay { display: block !important; } .no-scrollbar::-webkit-scrollbar { display: none; } .CodeMirror__Main__Editor { @apply overflow-hidden rounded-md; } .CodeMirror__Main__Editor .cm-scroller { @apply rounded-md px-4 py-2 pb-0; } ================================================ FILE: src/app/layout.tsx ================================================ import MainNavbar from "@/components/common/MainNavbar"; import type { Metadata } from "next"; import { Inter } from "next/font/google"; import "./globals.css"; const inter = Inter({ subsets: ["latin"] }); export const metadata: Metadata = { title: "DevUI | For learners", description: "Common app templates in plain HTML and TailwindCSS", }; export default function RootLayout({ children, }: { children: React.ReactNode; }) { return (
{children}
); } ================================================ FILE: src/app/page.tsx ================================================ import Button from "@/components/common/Button"; import { CodeBracketSquareIcon, LifebuoyIcon, } from "@heroicons/react/24/outline"; import Image from "next/image"; import Link from "next/link"; export default function Home() { return (
Hero

A complete front end solution for learners

DevUI is a comprehensive and easy-to-use open-source UI templates library ( powered by TailwindCSS) designed to enhance your productivity as a learner

); } ================================================ FILE: src/app/templates/[id]/page.tsx ================================================ "use client"; import Select from "@/components/common/Select"; import CodePreviewer from "@/components/lib/CodePreviewer"; import { SelectOptionType } from "@/types/utils"; import { applications, getComponentByAppPageId } from "@/utils/screens"; import { useParams } from "next/navigation"; import { useEffect, useState } from "react"; const TemplateDetails = () => { const { id } = useParams(); const [loadingUi, setLoadingUi] = useState(true); const [selectedPageUI, setSelectedPageUI] = useState( null, ); const [app, setApp] = useState<(typeof applications)[0] | null>(null); useEffect(() => { if (!applications) return; const _app = applications.find((app) => app.id === id) || applications[0]; setApp(_app); setSelectedPageUI(_app.pages[0]); // set 1st page as default selected page setLoadingUi(false); }, [applications]); if (loadingUi) return

Loading screens...

; return (

Already registered?{" "} Sign in to your account

register_image
); }; export default ForgotPassword; ================================================ FILE: src/components/templates/authentication/index.ts ================================================ import Register from "./register"; import Login from "./login"; import ForgotPassword from "./forgot-password"; const Authentication = { Register, Login, ForgotPassword }; export default Authentication; ================================================ FILE: src/components/templates/authentication/login.jsx ================================================ import React from "react"; const Login = () => { return (

DevUI

Log in

Before we start, please log into your account

Forgot password?


OR


Don't have an account?{" "} Create an account

register_image
); }; export default Login; ================================================ FILE: src/components/templates/authentication/register.jsx ================================================ const Register = () => { return (

DevUI

Register

Before we start, please create your account

Already registered?{" "} Sign in to your account

register_image
); }; export default Register; ================================================ FILE: src/components/templates/chat/chat-screen.jsx ================================================ import React from "react"; import { PaperAirplaneIcon, PlusCircleIcon } from "@heroicons/react/20/solid"; import { Bars3BottomLeftIcon, BellIcon, EllipsisVerticalIcon, FaceSmileIcon, FunnelIcon, MagnifyingGlassIcon, PaperClipIcon, ShareIcon, } from "@heroicons/react/24/outline"; import { classNames } from "@/utils"; const chatListDummyData = [ { avatar: "https://images.pexels.com/photos/18096595/pexels-photo-18096595/free-photo-of-music-on-street.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2", fullName: "Jane Smith", lastMessage: "Hi there! How have you been? It's been a while since we last caught up. Let's plan to meet up soon.", dateTime: "2 hours ago", }, { avatar: "https://images.pexels.com/photos/18094275/pexels-photo-18094275.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2", fullName: "Alice Smith", lastMessage: "How's it going on your end? I heard you had an exciting trip last week. Tell me all about it!", dateTime: "4 hours ago", }, { avatar: "https://images.pexels.com/photos/13847652/pexels-photo-13847652.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2", fullName: "Bob Johnson", lastMessage: "What's for dinner tonight? I'm craving some Italian food. Any recommendations?", dateTime: "Yesterday", }, { avatar: "https://images.pexels.com/photos/13847596/pexels-photo-13847596.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2", fullName: "Emily Davis", lastMessage: "Can you help me with this coding problem? I'm stuck on it for hours now.", dateTime: "2 days ago", }, { avatar: "https://images.pexels.com/photos/7775636/pexels-photo-7775636.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2", fullName: "Michael Wilson", lastMessage: "See you tomorrow at the park. Don't forget to bring your running shoes!", dateTime: "2 weeks ago", }, { avatar: "https://images.pexels.com/photos/18107025/pexels-photo-18107025/free-photo-of-man-reading-newspaper.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2", fullName: "Sophia Anderson", lastMessage: "I miss you so much! It's been ages since we hung out. Let's plan something soon.", dateTime: "2 weeks ago", }, { avatar: "https://images.pexels.com/photos/7775640/pexels-photo-7775640.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2", fullName: "Liam Brown", lastMessage: "Let's meet up for coffee. I have some exciting news to share with you!", dateTime: "3 weeks ago", }, { avatar: "https://images.pexels.com/photos/18096595/pexels-photo-18096595/free-photo-of-music-on-street.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2", fullName: "Olivia Lee", lastMessage: "I have some big news! Guess what? I'm getting married next month!", dateTime: "4 weeks ago", }, { avatar: "https://images.pexels.com/photos/7775636/pexels-photo-7775636.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2", fullName: "Noah White", lastMessage: "How's the weather there? I'm planning a weekend hike and hoping for good weather.", dateTime: "1 month ago", }, { avatar: "https://images.pexels.com/photos/13847596/pexels-photo-13847596.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2", fullName: "Ava Garcia", lastMessage: "Good morning! Did you catch the sunrise today? It was breathtaking.", dateTime: "2 months ago", }, { avatar: "https://images.pexels.com/photos/7775640/pexels-photo-7775640.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2", fullName: "Ethan Martinez", lastMessage: "Let's go for a long walk by the beach this evening. The weather is perfect.", dateTime: "3 months ago", }, { avatar: "https://images.pexels.com/photos/18107025/pexels-photo-18107025/free-photo-of-man-reading-newspaper.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2", fullName: "Mia Jones", lastMessage: "Happy birthday! I hope you have an amazing day filled with joy and surprises.", dateTime: "4 months ago", }, { avatar: "https://images.pexels.com/photos/7775640/pexels-photo-7775640.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2", fullName: "James Harris", lastMessage: "What's new with you lately? I've been swamped with work, but I miss our chats.", dateTime: "5 months ago", }, ]; const chatMessagesDummyData = [ { fullName: "Dan Abramov", message: "I'm good too, just catching up on some reading and enjoying the weather outside.", time: "5 minutes ago", isOwnMessage: true, hasAttachments: true, avatar: "https://images.pexels.com/photos/18148932/pexels-photo-18148932/free-photo-of-bench-city-man-people.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2", }, { fullName: "Jane Smith", message: "That sounds lovely! What book are you currently reading?", time: "10 minutes ago", isOwnMessage: false, avatar: "https://images.pexels.com/photos/18107024/pexels-photo-18107024/free-photo-of-an-old-city-view.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2", }, { fullName: "Dan Abramov", message: "I'm reading 'The Great Gatsby' by F. Scott Fitzgerald. It's a classic!", time: "15 minutes ago", isOwnMessage: true, avatar: "https://images.pexels.com/photos/18148932/pexels-photo-18148932/free-photo-of-bench-city-man-people.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2", }, { fullName: "Jane Smith", message: "Oh, I've heard great things about that book. Enjoy your reading!", time: "20 minutes ago", isOwnMessage: false, avatar: "https://images.pexels.com/photos/18107024/pexels-photo-18107024/free-photo-of-an-old-city-view.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2", }, { fullName: "Dan Abramov", message: "Thanks! It's such a beautifully written novel.", time: "25 minutes ago", isOwnMessage: true, avatar: "https://images.pexels.com/photos/18148932/pexels-photo-18148932/free-photo-of-bench-city-man-people.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2", }, { fullName: "Dan Abramov", message: "I can't wait to see what happens next in the series. It's been so captivating!", time: "45 minutes ago", isOwnMessage: true, avatar: "https://images.pexels.com/photos/18148932/pexels-photo-18148932/free-photo-of-bench-city-man-people.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2", }, { fullName: "Jane Smith", message: "I completely understand. It's always exciting when a series keeps you hooked.", time: "50 minutes ago", isOwnMessage: false, avatar: "https://images.pexels.com/photos/18107024/pexels-photo-18107024/free-photo-of-an-old-city-view.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2", }, { fullName: "Dan Abramov", message: "Absolutely! Well, I should get back to work now. Catch up with you later!", time: "55 minutes ago", isOwnMessage: true, avatar: "https://images.pexels.com/photos/18148932/pexels-photo-18148932/free-photo-of-bench-city-man-people.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2", }, { fullName: "Dan Abramov", message: "Sounds like a plan! Let's do it!", time: "18 hours ago", isOwnMessage: true, avatar: "https://images.pexels.com/photos/18148932/pexels-photo-18148932/free-photo-of-bench-city-man-people.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2", }, { fullName: "Jane Smith", message: "Count me in too!", time: "19 hours ago", isOwnMessage: false, avatar: "https://images.pexels.com/photos/18107024/pexels-photo-18107024/free-photo-of-an-old-city-view.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2", }, { fullName: "Dan Abramov", message: "Great! I'll make a reservation then.", time: "20 hours ago", isOwnMessage: true, avatar: "https://images.pexels.com/photos/18148932/pexels-photo-18148932/free-photo-of-bench-city-man-people.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2", }, { fullName: "Jane Smith", message: "Awesome! Looking forward to it.", time: "21 hours ago", isOwnMessage: false, avatar: "https://images.pexels.com/photos/18107024/pexels-photo-18107024/free-photo-of-an-old-city-view.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2", }, { fullName: "Dan Abramov", message: "Catch up with you later!", time: "22 hours ago", isOwnMessage: true, avatar: "https://images.pexels.com/photos/18148932/pexels-photo-18148932/free-photo-of-bench-city-man-people.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2", }, { fullName: "Jane Smith", message: "Sure thing! Take care!", time: "23 hours ago", isOwnMessage: false, avatar: "https://images.pexels.com/photos/18107024/pexels-photo-18107024/free-photo-of-an-old-city-view.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2", }, { fullName: "Jane Smith", message: "That's the spirit! Keep up the good work.", time: "6 days ago", isOwnMessage: false, hasAttachments: true, avatar: "https://images.pexels.com/photos/18107024/pexels-photo-18107024/free-photo-of-an-old-city-view.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2", }, ]; const dummyAttachments = [ "https://images.pexels.com/photos/18094275/pexels-photo-18094275.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2", "https://images.pexels.com/photos/18148932/pexels-photo-18148932/free-photo-of-bench-city-man-people.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2", "https://images.pexels.com/photos/18107024/pexels-photo-18107024/free-photo-of-an-old-city-view.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2", ]; const ChatScreen = () => { return (

Inbox

4
avatar
    {chatListDummyData.map((item, i) => { return (
  • avatar

    {item.fullName}

    {item.dateTime}

    {item.lastMessage}

  • ); })}
avatar

Jane smith

avatar

Jane Smith

{chatMessagesDummyData.map((message, i) => { return (
avatar

{message.fullName} {message.time}

{message.message}
{message?.hasAttachments ? (
{dummyAttachments.map((img, i) => { return ( avatar ); })}
) : null}
); })}
avatar
); }; export default ChatScreen; ================================================ FILE: src/components/templates/chat/create-group-chat.jsx ================================================ import { BellIcon, PlusCircleIcon, XMarkIcon, } from "@heroicons/react/24/outline"; import React from "react"; const selectedUsers = [ { name: "John Smith", avatar: "https://images.pexels.com/photos/18096595/pexels-photo-18096595/free-photo-of-music-on-street.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2", }, { name: "Emily Gardener", avatar: "https://images.pexels.com/photos/18094275/pexels-photo-18094275.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2", }, { name: "Olivia Root", avatar: "https://images.pexels.com/photos/13847652/pexels-photo-13847652.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2", }, { name: "John Denny", avatar: "https://images.pexels.com/photos/13847596/pexels-photo-13847596.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2", }, { name: "Emily Rose", avatar: "https://images.pexels.com/photos/7775636/pexels-photo-7775636.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2", }, ]; const CreateGroupChat = () => { return (

Inbox

4
avatar

Create a Group

{selectedUsers.map((user) => { return (
avatar

{user.name}

); })}
); }; export default CreateGroupChat; ================================================ FILE: src/components/templates/chat/create-normal-chat.jsx ================================================ import { BellIcon, PlusCircleIcon, XMarkIcon, } from "@heroicons/react/24/outline"; import React from "react"; const CreateOneOnOneChat = () => { return (

Inbox

4
avatar

Create Chat

); }; export default CreateOneOnOneChat; ================================================ FILE: src/components/templates/chat/empty-chats.jsx ================================================ import React from "react"; import { PlusCircleIcon } from "@heroicons/react/20/solid"; import { BellIcon, InboxIcon } from "@heroicons/react/24/outline"; const EmptyChats = () => { return (

Inbox

4
avatar

No chats found?

Try to initiate chat with your saved contacts by clicking the button below

); }; export default EmptyChats; ================================================ FILE: src/components/templates/chat/group-information.jsx ================================================ import { TrashIcon, UserMinusIcon, XMarkIcon } from "@heroicons/react/20/solid"; import { BellIcon, ExclamationTriangleIcon, PencilIcon, PlusCircleIcon, UserGroupIcon, } from "@heroicons/react/24/outline"; import React from "react"; const participants = [ { fullName: "Eva Brown", email: "eva.brown@example.com", avatar: "https://images.pexels.com/photos/18096595/pexels-photo-18096595/free-photo-of-music-on-street.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2", }, { fullName: "John Doe", email: "john.doe@example.com", avatar: "https://images.pexels.com/photos/18094275/pexels-photo-18094275.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2", }, { fullName: "Jane Smith", email: "jane.smith@example.com", avatar: "https://images.pexels.com/photos/13847652/pexels-photo-13847652.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2", }, { fullName: "Alice Johnson", email: "alice.johnson@example.com", avatar: "https://images.pexels.com/photos/13847596/pexels-photo-13847596.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2", }, { fullName: "Bob Wilson", email: "bob.wilson@example.com", avatar: "https://images.pexels.com/photos/7775636/pexels-photo-7775636.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2", }, { fullName: "Eva Brown", email: "eva.brown@example.com", avatar: "https://images.pexels.com/photos/18107025/pexels-photo-18107025/free-photo-of-man-reading-newspaper.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2", }, { fullName: "David Lee", email: "david.lee@example.com", avatar: "https://images.pexels.com/photos/7775640/pexels-photo-7775640.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2", }, ]; const GroupChatInfo = () => { return (

Inbox

4
avatar
); }; export default GroupChatInfo; ================================================ FILE: src/components/templates/chat/index.ts ================================================ import EmptyChats from "./empty-chats"; import ChatScreen from "./chat-screen"; import CreateGroupChat from "./create-group-chat"; import CreateOneOnOneChat from "./create-normal-chat"; import GroupInfo from "./group-information"; import Register from "./register"; import Login from "./login"; const Chat = { EmptyChats, ChatScreen, CreateGroupChat, CreateOneOnOneChat, GroupInfo, Register, Login, }; export default Chat; ================================================ FILE: src/components/templates/chat/login.jsx ================================================ const SocialLogin = () => { return (

Login

Login

Login to access your account


OR


Don't have an account?{" "} Create an account

); }; export default SocialLogin; ================================================ FILE: src/components/templates/chat/register.jsx ================================================ import { PlusIcon } from "@heroicons/react/24/outline"; const SocialRegister = () => { return (

Register

Register

Before we chat, please create your account

Already registered?{" "} Sign in to your account

); }; export default SocialRegister; ================================================ FILE: src/components/templates/social-media/bookmark-posts.jsx ================================================ import React from "react"; import { BellIcon, BookmarkIcon, EllipsisVerticalIcon, HeartIcon, LinkIcon, MagnifyingGlassIcon, } from "@heroicons/react/24/outline"; import { ChatBubbleOvalLeftEllipsisIcon, PlusCircleIcon, ShareIcon, } from "@heroicons/react/24/solid"; const posts = [ { id: 1, authorImage: "https://images.pexels.com/photos/18264716/pexels-photo-18264716.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", authorName: "Mystical Wanderer", createdOn: "15 minutes ago", text: "Uncovering ancient secrets and mystical wonders. The journey is the destination. 🔮🌟 #MythologyQuest", images: [], likeCount: 46, commentCount: 13, bookmarked: true, liked: true, }, { id: 2, authorImage: "https://images.pexels.com/photos/13847596/pexels-photo-13847596.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", authorName: "Aqua Explorer", createdOn: "1 hour ago", text: "Swimming with the dolphins today, and it was magical! 🐬🌊 #OceanAdventure", images: [ "https://images.pexels.com/photos/18107024/pexels-photo-18107024/free-photo-of-an-old-city-view.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", ], likeCount: 102, commentCount: 18, bookmarked: true, liked: false, }, { id: 3, authorImage: "https://images.pexels.com/photos/7775637/pexels-photo-7775637.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", authorName: "Solar Flare ", createdOn: "59 minutes ago", text: "Harnessing the power of the sun for a brighter future. ☀️🔋 #SolarEnergy", images: [ "https://images.pexels.com/photos/18107025/pexels-photo-18107025/free-photo-of-man-reading-newspaper.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", "https://images.pexels.com/photos/18148933/pexels-photo-18148933/free-photo-of-city-road-man-people.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", "https://images.pexels.com/photos/18148937/pexels-photo-18148937/free-photo-of-city-road-traffic-landscape.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", ], likeCount: 802, commentCount: 99, bookmarked: true, liked: true, }, { id: 4, authorImage: "https://images.pexels.com/photos/7775642/pexels-photo-7775642.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", authorName: "Aurora Starlight", createdOn: "17 hours ago", text: "Embracing the lunar magic tonight. The full moon is my muse. 🌕🌌 #MoonlightDreams", images: [], likeCount: 420, commentCount: 20, bookmarked: true, liked: false, link: { image: "https://images.pexels.com/photos/7775642/pexels-photo-7775642.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", title: "Aurora Starlight", caption: "Digital artist | Creative mind | Color magician 🎨🖌️🖼️", url: "https://www.aurorastarry.com/", }, }, { id: 5, authorImage: "https://images.pexels.com/photos/3532553/pexels-photo-3532553.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", authorName: "Nova Sparks", createdOn: "1 day ago", text: "💡 Tech Poll: Which emerging technology excites you the most?", images: [], likeCount: 207, commentCount: 63, bookmarked: true, liked: false, poll: [ { name: "Artificial Intelligence", }, { name: "Virtual Reality", }, { name: "Quantum Computing", }, { name: "5G Connectivity", }, ], }, { id: 6, authorImage: "https://images.pexels.com/photos/569314/pexels-photo-569314.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", authorName: "Zen Garden", createdOn: "7 days ago", text: "🧘‍♂️ Mindfulness Poll: Which mindfulness practice resonates with you the most?", images: [], likeCount: 97, commentCount: 13, liked: true, bookmarked: true, poll: [ { name: "Meditation", votePercentage: 30, }, { name: "Yoga", selected: true, votePercentage: 33, }, { name: "Deep Breathing", votePercentage: 27, }, { name: "Tai Chi", votePercentage: 20, }, ], }, { id: 7, authorImage: "https://images.pexels.com/photos/1739942/pexels-photo-1739942.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", authorName: "Pixel Painter", createdOn: "1 months ago", text: "🎨 Art Poll: What's your preferred art medium for creating masterpieces?", images: [], likeCount: 99, commentCount: 13, bookmarked: true, liked: false, poll: [ { name: "Acrylic Paint", votePercentage: 20, }, { name: "Watercolor", votePercentage: 19, }, { name: "Digital Art", votePercentage: 18, }, { name: "Charcoal Sketching", votePercentage: 43, }, ], }, ]; const BookmarkPosts = () => { return (

My Profile

{/* Empty */}
{/* Post Lists */} {posts.map((post) => (
{/* Author Profile */}
{post.authorName}
{/* Center-Right Content */}
{/* Post Metadata */}

{post.authorName}

{post.createdOn}
{/* Post Text */}

{post.text}

{/* Post Images */} {post.images.length > 0 && (
{post.images.map((image, i) => ( {`attachment-${i}`} ))}
)} {/* Link Preview */} {post.link && (
{post.link.title}
{/* Link Content */}

{post.link.title}

{post.link.caption}

{post.link.url}
)} {/* Polls */} {post.poll && post.poll.map((option) => ( ))} {/* Post Actions Buttons */}
{/* Like Button */} {/* Comment Button */} {/* Share and Bookmarked Button */}
))}
{/* Trending Topics */}
); }; export default BookmarkPosts; ================================================ FILE: src/components/templates/social-media/change-password.jsx ================================================ import React from "react"; import { BellIcon, MagnifyingGlassIcon } from "@heroicons/react/24/outline"; import { PlusCircleIcon } from "@heroicons/react/24/solid"; const ChangePassword = () => { return (

My Profile

{/* Empty */}
{/* Change Password Form */}
{/* Trending Topics */}
); }; export default ChangePassword; ================================================ FILE: src/components/templates/social-media/edit-profile.jsx ================================================ import React from "react"; import { BellIcon, MagnifyingGlassIcon } from "@heroicons/react/24/outline"; import { PlusCircleIcon } from "@heroicons/react/24/solid"; import { PencilIcon } from "@heroicons/react/20/solid"; const EditProfile = () => { return (

My Profile

{/* Empty */}
{/* Edit profile Form */}
{/* Trending Topics */}
); }; export default EditProfile; ================================================ FILE: src/components/templates/social-media/index.ts ================================================ import PostListing from "./post-listing"; import PostDetail from "./post-detail"; import UserProfile from "./user-profile"; import MyProfile from "./my-profile"; import EditProfile from "./edit-profile"; import ChangePassword from "./change-password"; import BookmarkedPosts from "./bookmark-posts"; import Register from "./register"; import Login from "./login"; const SocialMedia = { PostListing, PostDetail, UserProfile, MyProfile, EditProfile, ChangePassword, BookmarkedPosts, Register, Login, }; export default SocialMedia; ================================================ FILE: src/components/templates/social-media/login.jsx ================================================ const SocialLogin = () => { return (

Login

Login

Login to access your account


OR


Don't have an account?{" "} Create an account

); }; export default SocialLogin; ================================================ FILE: src/components/templates/social-media/my-profile.jsx ================================================ import React from "react"; import { BellIcon, BookmarkIcon, EllipsisVerticalIcon, HeartIcon, LinkIcon, MagnifyingGlassIcon, } from "@heroicons/react/24/outline"; import { ChatBubbleOvalLeftEllipsisIcon, PlusCircleIcon, ShareIcon, } from "@heroicons/react/24/solid"; const posts = [ { id: 1, authorImage: "https://images.pexels.com/photos/7775642/pexels-photo-7775642.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", authorName: "Aurora Starlight", createdOn: "15 minutes ago", text: "Uncovering ancient secrets and mystical wonders. The journey is the destination. 🔮🌟 #MythologyQuest", images: [], likeCount: 46, commentCount: 13, bookmarked: false, liked: true, }, { id: 2, authorImage: "https://images.pexels.com/photos/7775642/pexels-photo-7775642.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", authorName: "Aurora Starlight", createdOn: "1 hour ago", text: "Swimming with the dolphins today, and it was magical! 🐬🌊 #OceanAdventure", images: [ "https://images.pexels.com/photos/18107024/pexels-photo-18107024/free-photo-of-an-old-city-view.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", ], likeCount: 102, commentCount: 18, bookmarked: true, liked: false, }, { id: 3, authorImage: "https://images.pexels.com/photos/7775642/pexels-photo-7775642.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", authorName: "Aurora Starlight", createdOn: "59 minutes ago", text: "Harnessing the power of the sun for a brighter future. ☀️🔋 #SolarEnergy", images: [ "https://images.pexels.com/photos/18107025/pexels-photo-18107025/free-photo-of-man-reading-newspaper.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", "https://images.pexels.com/photos/18148933/pexels-photo-18148933/free-photo-of-city-road-man-people.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", "https://images.pexels.com/photos/18148937/pexels-photo-18148937/free-photo-of-city-road-traffic-landscape.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", ], likeCount: 802, commentCount: 99, bookmarked: true, liked: true, }, { id: 4, authorImage: "https://images.pexels.com/photos/7775642/pexels-photo-7775642.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", authorName: "Aurora Starlight", createdOn: "17 hours ago", text: "Embracing the lunar magic tonight. The full moon is my muse. 🌕🌌 #MoonlightDreams", images: [], likeCount: 420, commentCount: 20, bookmarked: false, liked: false, link: { image: "https://images.pexels.com/photos/7775642/pexels-photo-7775642.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", title: "Aurora Starlight", caption: "Digital artist | Creative mind | Color magician 🎨🖌️🖼️", url: "https://www.aurorastarry.com/", }, }, { id: 5, authorImage: "https://images.pexels.com/photos/7775642/pexels-photo-7775642.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", authorName: "Aurora Starlight", createdOn: "1 day ago", text: "💡 Tech Poll: Which emerging technology excites you the most?", images: [], likeCount: 207, commentCount: 63, bookmarked: false, liked: false, poll: [ { name: "Artificial Intelligence", }, { name: "Virtual Reality", }, { name: "Quantum Computing", }, { name: "5G Connectivity", }, ], }, { id: 6, authorImage: "https://images.pexels.com/photos/7775642/pexels-photo-7775642.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", authorName: "Aurora Starlight", createdOn: "7 days ago", text: "🧘‍♂️ Mindfulness Poll: Which mindfulness practice resonates with you the most?", images: [], likeCount: 97, commentCount: 13, liked: true, bookmarked: false, poll: [ { name: "Meditation", votePercentage: 30, }, { name: "Yoga", selected: true, votePercentage: 33, }, { name: "Deep Breathing", votePercentage: 27, }, { name: "Tai Chi", votePercentage: 20, }, ], }, { id: 7, authorImage: "https://images.pexels.com/photos/7775642/pexels-photo-7775642.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", authorName: "Aurora Starlight", createdOn: "1 months ago", text: "🎨 Art Poll: What's your preferred art medium for creating masterpieces?", images: [], likeCount: 99, commentCount: 13, bookmarked: true, liked: false, poll: [ { name: "Acrylic Paint", votePercentage: 20, }, { name: "Watercolor", votePercentage: 19, }, { name: "Digital Art", votePercentage: 18, }, { name: "Charcoal Sketching", votePercentage: 43, }, ], }, ]; const Profile = () => { return (

My Profile

{/* Empty */}
{/* Post Lists */} {posts.map((post) => (
{/* Author Profile */}
{post.authorName}
{/* Center-Right Content */}
{/* Post Metadata */}

{post.authorName}

{post.createdOn}
{/* Post Text */}

{post.text}

{/* Post Images */} {post.images.length > 0 && (
{post.images.map((image, i) => ( {`attachment-${i}`} ))}
)} {/* Link Preview */} {post.link && (
{post.link.title}
{/* Link Content */}

{post.link.title}

{post.link.caption}

{post.link.url}
)} {/* Polls */} {post.poll && post.poll.map((option) => ( ))} {/* Post Actions Buttons */}
{/* Like Button */} {/* Comment Button */} {/* Share and Bookmarked Button */}
))}
{/* Trending Topics */}
); }; export default Profile; ================================================ FILE: src/components/templates/social-media/post-detail.jsx ================================================ import React from "react"; import { BellIcon, BookmarkIcon, EllipsisVerticalIcon, FaceSmileIcon, HeartIcon, LinkIcon, MagnifyingGlassIcon, PlusIcon, } from "@heroicons/react/24/outline"; import { ChatBubbleOvalLeftEllipsisIcon, PaperAirplaneIcon, PlusCircleIcon, ShareIcon, ChatBubbleLeftRightIcon, } from "@heroicons/react/24/solid"; const post = { id: 1, authorImage: "https://images.pexels.com/photos/7775637/pexels-photo-7775637.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", authorName: "Solar Flare ", createdOn: "59 minutes ago", text: "Harnessing the power of the sun for a brighter future. ☀️🔋 #SolarEnergy", images: [ "https://images.pexels.com/photos/18107025/pexels-photo-18107025/free-photo-of-man-reading-newspaper.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", "https://images.pexels.com/photos/18148933/pexels-photo-18148933/free-photo-of-city-road-man-people.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", "https://images.pexels.com/photos/18148937/pexels-photo-18148937/free-photo-of-city-road-traffic-landscape.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", ], likeCount: 802, commentCount: 99, liked: true, bookmarked: true, comments: [ { id: 1, authorImage: "https://images.pexels.com/photos/3532554/pexels-photo-3532554.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", authorName: "Isabella Andrews", createdOn: "58 minutes ago", text: "Such an important mission! How can individuals contribute to this solar revolution, Solar Flare?", images: [ "https://images.pexels.com/photos/18148936/pexels-photo-18148936.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", ], likeCount: 420, commentCount: 20, liked: false, bookmarked: true, replies: [ { id: 1, authorImage: "https://images.pexels.com/photos/7775642/pexels-photo-7775642.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", authorName: "Aurora Starlight", createdOn: "55 minutes ago", text: "Embracing the lunar magic tonight. The full moon is my muse. 🌕🌌 #MoonlightDreams", images: [], likeCount: 10, commentCount: 2, liked: true, bookmarked: false, replies: [], }, ], }, { id: 2, authorImage: "https://images.pexels.com/photos/1092422/pexels-photo-1092422.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", authorName: "Daniel Greenfield", createdOn: "45 minutes ago", text: "Absolutely love your commitment to clean energy, Solar Flare! Keep up the great work! 💚♻️", images: [ "https://images.pexels.com/photos/1114619/pexels-photo-1114619.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", ], likeCount: 45, liked: false, bookmarked: false, commentCount: 0, replies: [], }, { id: 3, authorImage: "https://images.pexels.com/photos/998716/pexels-photo-998716.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", authorName: "Matthew Advocate", createdOn: "30 minutes ago", text: "Your efforts are helping us move towards a sustainable future. Kudos, Solar Flare! 🌞🌱", images: [ "https://images.pexels.com/photos/998714/pexels-photo-998714.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", ], liked: false, bookmarked: false, likeCount: 60, commentCount: 2, replies: [ { id: 1, authorImage: "https://images.pexels.com/photos/909489/pexels-photo-909489.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", authorName: "Sophia Innovator", createdOn: "28 minutes ago", text: "Every ray of sunshine counts! Have you considered integrating solar in urban spaces, Solar Flare?", images: [], likeCount: 2, commentCount: 1, liked: true, bookmarked: true, replies: [], }, { id: 2, authorImage: "https://images.pexels.com/photos/909487/pexels-photo-909487.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", authorName: "Michael Tech", createdOn: "2 minutes ago", text: "Your dedication to solar energy is inspiring, Solar Flare! Are there any upcoming projects we can look forward to?", images: [], liked: true, bookmarked: true, likeCount: 1, commentCount: 0, replies: [], }, ], }, { id: 4, authorImage: "https://images.pexels.com/photos/909483/pexels-photo-909483.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", authorName: "Samuel Eco", createdOn: "45 seconds ago", text: "You're doing incredible work for the environment, Solar Flare. 💪🌿 Let's all go solar!", images: [], likeCount: 9, commentCount: 1, replies: [], liked: false, bookmarked: false, }, ], }; const PostDetail = () => { return (

View Post

{/* Profile */}
{/* Post Card */}
{/* Author Profile */}
{post.authorName}
{/* Center-Right Content */}
{/* Post Metadata */}

{post.authorName}

{post.createdOn}
{/* Post Text */}

{post.text}

{/* Post Images */} {post.images.length > 0 && (
{post.images.map((image, i) => ( {`attachment-${i}`} ))}
)} {/* Link Preview */} {post.link && (
{post.link.title}
{/* Link Content */}

{post.link.title}

{post.link.caption}

{post.link.url}
)} {/* Post Actions Buttons */}
{/* Like Button */} {/* Comment Button */} {/* Share and bookmarked Button */}
{/* Add Comment Form */}
avatar
{/* Post Comments */} {post.comments.map((comment) => (
{/* Author Profile */}
0 ? "before:bg-white" : "before:bg-transparent" }`} >
{comment.authorName}
{/* Center-Right Content */}
{/* Post Metadata */}

{comment.authorName}

{comment.createdOn}
{/* Post Text */}

{comment.text}

{/* Post Images */} {comment.images.length > 0 && (
{comment.images.map((image, i) => ( {`attachment-${i}`} ))}
)} {/* Post Actions Buttons */}
{/* Like Button */} {/* Comment Button */}
{/* Nested Comments */} {comment.replies.map((comment) => (
{/* Author Profile */}
{comment.authorName}
{/* Center-Right Content */}
{/* Post Metadata */}

{comment.authorName}

{comment.createdOn}
{/* Post Text */}

{comment.text}

{/* Post Images */} {comment.images.length > 0 && (
{comment.images.map((image, i) => ( {`attachment-${i}`} ))}
)} {/* Post Actions Buttons */}
{/* Like Button */}
))}
))}
{/* Trending Topics */}
); }; export default PostDetail; ================================================ FILE: src/components/templates/social-media/post-listing.jsx ================================================ import React from "react"; import { BellIcon, BookmarkIcon, EllipsisVerticalIcon, FaceSmileIcon, HeartIcon, LinkIcon, MagnifyingGlassIcon, PlusIcon, } from "@heroicons/react/24/outline"; import { ChatBubbleOvalLeftEllipsisIcon, PaperAirplaneIcon, PlusCircleIcon, ShareIcon, } from "@heroicons/react/24/solid"; const posts = [ { id: 1, authorImage: "https://images.pexels.com/photos/18264716/pexels-photo-18264716.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", authorName: "Mystical Wanderer", createdOn: "15 minutes ago", text: "Uncovering ancient secrets and mystical wonders. The journey is the destination. 🔮🌟 #MythologyQuest", images: [], likeCount: 46, commentCount: 13, bookmarked: false, liked: true, }, { id: 2, authorImage: "https://images.pexels.com/photos/13847596/pexels-photo-13847596.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", authorName: "Aqua Explorer", createdOn: "1 hour ago", text: "Swimming with the dolphins today, and it was magical! 🐬🌊 #OceanAdventure", images: [ "https://images.pexels.com/photos/18107024/pexels-photo-18107024/free-photo-of-an-old-city-view.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", ], likeCount: 102, commentCount: 18, bookmarked: true, liked: false, }, { id: 3, authorImage: "https://images.pexels.com/photos/7775637/pexels-photo-7775637.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", authorName: "Solar Flare ", createdOn: "59 minutes ago", text: "Harnessing the power of the sun for a brighter future. ☀️🔋 #SolarEnergy", images: [ "https://images.pexels.com/photos/18107025/pexels-photo-18107025/free-photo-of-man-reading-newspaper.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", "https://images.pexels.com/photos/18148933/pexels-photo-18148933/free-photo-of-city-road-man-people.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", "https://images.pexels.com/photos/18148937/pexels-photo-18148937/free-photo-of-city-road-traffic-landscape.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", ], likeCount: 802, commentCount: 99, bookmarked: true, liked: true, }, { id: 4, authorImage: "https://images.pexels.com/photos/7775642/pexels-photo-7775642.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", authorName: "Aurora Starlight", createdOn: "17 hours ago", text: "Embracing the lunar magic tonight. The full moon is my muse. 🌕🌌 #MoonlightDreams", images: [], likeCount: 420, commentCount: 20, bookmarked: false, liked: false, link: { image: "https://images.pexels.com/photos/7775642/pexels-photo-7775642.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", title: "Aurora Starlight", caption: "Digital artist | Creative mind | Color magician 🎨🖌️🖼️", url: "https://www.aurorastarry.com/", }, }, { id: 5, authorImage: "https://images.pexels.com/photos/3532553/pexels-photo-3532553.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", authorName: "Nova Sparks", createdOn: "1 day ago", text: "💡 Tech Poll: Which emerging technology excites you the most?", images: [], likeCount: 207, commentCount: 63, bookmarked: false, liked: false, poll: [ { name: "Artificial Intelligence", }, { name: "Virtual Reality", }, { name: "Quantum Computing", }, { name: "5G Connectivity", }, ], }, { id: 6, authorImage: "https://images.pexels.com/photos/569314/pexels-photo-569314.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", authorName: "Zen Garden", createdOn: "7 days ago", text: "🧘‍♂️ Mindfulness Poll: Which mindfulness practice resonates with you the most?", images: [], likeCount: 97, commentCount: 13, liked: true, bookmarked: false, poll: [ { name: "Meditation", votePercentage: 30, }, { name: "Yoga", selected: true, votePercentage: 33, }, { name: "Deep Breathing", votePercentage: 27, }, { name: "Tai Chi", votePercentage: 20, }, ], }, { id: 7, authorImage: "https://images.pexels.com/photos/1739942/pexels-photo-1739942.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", authorName: "Pixel Painter", createdOn: "1 months ago", text: "🎨 Art Poll: What's your preferred art medium for creating masterpieces?", images: [], likeCount: 99, commentCount: 13, bookmarked: true, liked: false, poll: [ { name: "Acrylic Paint", votePercentage: 20, }, { name: "Watercolor", votePercentage: 19, }, { name: "Digital Art", votePercentage: 18, }, { name: "Charcoal Sketching", votePercentage: 43, }, ], }, ]; const PostListing = () => { return (

All Posts

{/* Profile */}
{/* Create Post Form */}
avatar
{/* Post Lists */} {posts.map((post) => (
{/* Author Profile */}
{post.authorName}
{/* Center-Right Content */}
{/* Post Metadata */}

{post.authorName}

{post.createdOn}
{/* Post Text */}

{post.text}

{/* Post Images */} {post.images.length > 0 && (
{post.images.map((image, i) => ( {`attachment-${i}`} ))}
)} {/* Link Preview */} {post.link && (
{post.link.title}
{/* Link Content */}

{post.link.title}

{post.link.caption}

{post.link.url}
)} {/* Polls */} {post.poll && post.poll.map((option) => ( ))} {/* Post Actions Buttons */}
{/* Like Button */} {/* Comment Button */} {/* Share and Bookmarked Button */}
))}
{/* Trending Topics */}
); }; export default PostListing; ================================================ FILE: src/components/templates/social-media/register.jsx ================================================ import { PlusIcon } from "@heroicons/react/24/outline"; const SocialRegister = () => { return (

Register

Register

Before we post, please create your account

Already registered?{" "} Sign in to your account

); }; export default SocialRegister; ================================================ FILE: src/components/templates/social-media/user-profile.jsx ================================================ import React from "react"; import { BellIcon, BookmarkIcon, EllipsisVerticalIcon, HeartIcon, LinkIcon, MagnifyingGlassIcon, } from "@heroicons/react/24/outline"; import { ChatBubbleOvalLeftEllipsisIcon, PlusCircleIcon, ShareIcon, } from "@heroicons/react/24/solid"; const posts = [ { id: 1, authorImage: "https://images.pexels.com/photos/569314/pexels-photo-569314.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", authorName: "Zen Garden", createdOn: "15 minutes ago", text: "Uncovering ancient secrets and mystical wonders. The journey is the destination. 🔮🌟 #MythologyQuest", images: [], likeCount: 46, commentCount: 13, bookmarked: false, liked: true, }, { id: 2, authorImage: "https://images.pexels.com/photos/569314/pexels-photo-569314.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", authorName: "Zen Garden", createdOn: "1 hour ago", text: "Swimming with the dolphins today, and it was magical! 🐬🌊 #OceanAdventure", images: [ "https://images.pexels.com/photos/18107024/pexels-photo-18107024/free-photo-of-an-old-city-view.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", ], likeCount: 102, commentCount: 18, bookmarked: true, liked: false, }, { id: 3, authorImage: "https://images.pexels.com/photos/569314/pexels-photo-569314.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", authorName: "Zen Garden", createdOn: "59 minutes ago", text: "Harnessing the power of the sun for a brighter future. ☀️🔋 #SolarEnergy", images: [ "https://images.pexels.com/photos/18107025/pexels-photo-18107025/free-photo-of-man-reading-newspaper.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", "https://images.pexels.com/photos/18148933/pexels-photo-18148933/free-photo-of-city-road-man-people.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", "https://images.pexels.com/photos/18148937/pexels-photo-18148937/free-photo-of-city-road-traffic-landscape.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", ], likeCount: 802, commentCount: 99, bookmarked: true, liked: true, }, { id: 4, authorImage: "https://images.pexels.com/photos/569314/pexels-photo-569314.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", authorName: "Zen Garden", createdOn: "17 hours ago", text: "Embracing the lunar magic tonight. The full moon is my muse. 🌕🌌 #MoonlightDreams", images: [], likeCount: 420, commentCount: 20, bookmarked: false, liked: false, link: { image: "https://images.pexels.com/photos/569314/pexels-photo-569314.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", title: "Zen Garden", caption: "Digital artist | Creative mind | Color magician 🎨🖌️🖼️", url: "http://www.zengardenmindfulness.com/", }, }, { id: 5, authorImage: "https://images.pexels.com/photos/569314/pexels-photo-569314.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", authorName: "Zen Garden", createdOn: "1 day ago", text: "💡 Tech Poll: Which emerging technology excites you the most?", images: [], likeCount: 207, commentCount: 63, bookmarked: false, liked: false, poll: [ { name: "Artificial Intelligence", }, { name: "Virtual Reality", }, { name: "Quantum Computing", }, { name: "5G Connectivity", }, ], }, { id: 6, authorImage: "https://images.pexels.com/photos/569314/pexels-photo-569314.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", authorName: "Zen Garden", createdOn: "7 days ago", text: "🧘‍♂️ Mindfulness Poll: Which mindfulness practice resonates with you the most?", images: [], likeCount: 97, commentCount: 13, liked: true, bookmarked: false, poll: [ { name: "Meditation", votePercentage: 30, }, { name: "Yoga", selected: true, votePercentage: 33, }, { name: "Deep Breathing", votePercentage: 27, }, { name: "Tai Chi", votePercentage: 20, }, ], }, { id: 7, authorImage: "https://images.pexels.com/photos/569314/pexels-photo-569314.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", authorName: "Zen Garden", createdOn: "1 months ago", text: "🎨 Art Poll: What's your preferred art medium for creating masterpieces?", images: [], likeCount: 99, commentCount: 13, bookmarked: true, liked: false, poll: [ { name: "Acrylic Paint", votePercentage: 20, }, { name: "Watercolor", votePercentage: 19, }, { name: "Digital Art", votePercentage: 18, }, { name: "Charcoal Sketching", votePercentage: 43, }, ], }, ]; const UserProfile = () => { return (

Profile

{/* Empty */}
{/* Post Lists */} {posts.map((post) => (
{/* Author Profile */}
{post.authorName}
{/* Center-Right Content */}
{/* Post Metadata */}

{post.authorName}

{post.createdOn}
{/* Post Text */}

{post.text}

{/* Post Images */} {post.images.length > 0 && (
{post.images.map((image, i) => ( {`attachment-${i}`} ))}
)} {/* Link Preview */} {post.link && (
{post.link.title}
{/* Link Content */}

{post.link.title}

{post.link.caption}

{post.link.url}
)} {/* Polls */} {post.poll && post.poll.map((option) => ( ))} {/* Post Actions Buttons */}
{/* Like Button */} {/* Comment Button */} {/* Share and Bookmarked Button */}
))}
{/* Trending Topics */}
); }; export default UserProfile; ================================================ FILE: src/components/templates/todo/empty-todos.jsx ================================================ import React from "react"; import { PlusCircleIcon } from "@heroicons/react/20/solid"; import { InboxIcon } from "@heroicons/react/24/outline"; const EmptyTodos = () => { return (

All todos

No todos found?

No todo has been added till now. Click the below button to create a new task.

); }; export default EmptyTodos; ================================================ FILE: src/components/templates/todo/index.ts ================================================ import TodosList from "./todos"; import EmptyTodos from "./empty-todos"; const Todo = { TodosList, EmptyTodos, }; export default Todo; ================================================ FILE: src/components/templates/todo/todos.jsx ================================================ import { PlusCircleIcon } from "@heroicons/react/20/solid"; import { PencilIcon, TrashIcon } from "@heroicons/react/24/outline"; const todos = [ { task: "Complete coding challenge", date: "10 Aug 2023", }, { task: "Read programming article", date: "15 Aug 2023", }, { task: "Debug the issue in the backend", date: "20 Aug 2023", }, { task: "Review pull requests", date: "25 Aug 2023", }, { task: "Prepare presentation on algorithms", date: "05 Sept 2023", }, { task: "Attend programming meetup", date: "18 Sept 2023", }, { task: "Optimize database queries", date: "10 Oct 2023", }, { task: "Participate in hackathon", date: "05 Nov 2023", }, { task: "Contribute to open source project", date: "15 Nov 2023", }, ]; const TodosList = () => { return (

All todos

  • {todos.map(({ task, date }, i) => { return (
  • {task}

    {date}
  • ); })}
); }; export default TodosList; ================================================ FILE: src/components/templates/youtube/change-password.jsx ================================================ "use client"; import { classNames } from "@/utils"; import React from "react"; import { MagnifyingGlassIcon, XCircleIcon } from "@heroicons/react/24/outline"; import { bottomTotalItems, navItems, logo } from "./data"; const ChangePassword = () => { return (
cover-photo
Channel

React Patterns

@reactpatterns

Password

Please enter your current password to change your password.

Your new password must be more than 8 characters.


); }; export default ChangePassword; ================================================ FILE: src/components/templates/youtube/channel-empty-playlist.jsx ================================================ "use client"; import { classNames } from "@/utils"; import React from "react"; import { MagnifyingGlassIcon, UserPlusIcon, XCircleIcon, } from "@heroicons/react/24/outline"; import { bottomTotalItems, navItems, logo, icons } from "./data"; const ChannelEmptyPlaylist = () => { return (
cover-photo
Channel

React Patterns

@reactpatterns

600k Subscribers · 220 Subscribed

{icons.collections}

No playlist created

There are no playlist created on this channel.

); }; export default ChannelEmptyPlaylist; ================================================ FILE: src/components/templates/youtube/channel-empty-subscribed.jsx ================================================ "use client"; import { classNames } from "@/utils"; import React from "react"; import { MagnifyingGlassIcon, UserPlusIcon, UsersIcon, XCircleIcon, } from "@heroicons/react/24/outline"; import { bottomTotalItems, navItems, logo } from "./data"; const ChannelEmptySubscribed = () => { return (
cover-photo
Channel

React Patterns

@reactpatterns

600k Subscribers · 220 Subscribed

No people subscribers

This channel has yet to subscribe a new channel.

); }; export default ChannelEmptySubscribed; ================================================ FILE: src/components/templates/youtube/channel-empty-tweet.jsx ================================================ "use client"; import { classNames } from "@/utils"; import React from "react"; import { MagnifyingGlassIcon, UserPlusIcon, UsersIcon, XCircleIcon, } from "@heroicons/react/24/outline"; import { bottomTotalItems, navItems, logo } from "./data"; const ChannelEmptyTweet = () => { return (
cover-photo
Channel

React Patterns

@reactpatterns

600k Subscribers · 220 Subscribed

No Tweets

This channel has yet to make a Tweet.

); }; export default ChannelEmptyTweet; ================================================ FILE: src/components/templates/youtube/channel-empty-video.jsx ================================================ "use client"; import { classNames } from "@/utils"; import React from "react"; import { MagnifyingGlassIcon, PlayIcon, UserPlusIcon, XCircleIcon, } from "@heroicons/react/24/outline"; import { bottomTotalItems, navItems, logo } from "./data"; const ChannelEmptyVideo = () => { return (
cover-photo
Channel

React Patterns

@reactpatterns

600k Subscribers · 220 Subscribed

No videos uploaded

This page has yet to upload a video. Search another page in order to find more videos.

); }; export default ChannelEmptyVideo; ================================================ FILE: src/components/templates/youtube/channel-playlist-videos.jsx ================================================ "use client"; import { classNames } from "@/utils"; import { MagnifyingGlassIcon, XCircleIcon } from "@heroicons/react/24/outline"; import React from "react"; import { bottomTotalItems, navItems, logo, playlistList } from "./data"; const ChannelPlaylistVideos = () => { const playlist = playlistList[0]; playlist.videos = playlist.videos.filter((video) => video.isPublished); return (
{playlist.name}

Playlist {playlist.videos.length}  videos

{playlist.views} Views ·  {playlist.createdAt}

{playlist.name}

{playlist.description}

{playlist.owner.fullName}
{playlist.owner.fullName}

{playlist.owner.subscribers} Subscribers

{playlist.videos.map( (video) => video.isPublished && (
{video.title}
{video.duration}
{video.owner.username}
{video.title}

{video.views} Views · {video.time}

{video.owner.username}

{video.owner.fullName}

), )}
); }; export default ChannelPlaylistVideos; ================================================ FILE: src/components/templates/youtube/channel-playlist.jsx ================================================ "use client"; import { classNames } from "@/utils"; import React from "react"; import { MagnifyingGlassIcon, UserPlusIcon, XCircleIcon, } from "@heroicons/react/24/outline"; import { bottomTotalItems, navItems, logo, playlistList } from "./data"; const ChannelPlaylist = () => { return (
cover-photo
Channel

React Patterns

@reactpatterns

600k Subscribers · 220 Subscribed

{playlistList.map( (playlist) => playlist.videos.filter((video) => video.isPublished).length > 0 && (
video.isPublished) .thumbnail } alt={playlist.name} className="h-full w-full" />

Playlist { playlist.videos.filter( (video) => video.isPublished, ).length }  videos

{playlist.views} Views ·  {playlist.createdAt}

{playlist.name}

{playlist.description}

), )}
); }; export default ChannelPlaylist; ================================================ FILE: src/components/templates/youtube/channel-subscribed.jsx ================================================ "use client"; import { classNames } from "@/utils"; import React from "react"; import { MagnifyingGlassIcon, UserPlusIcon, XCircleIcon, } from "@heroicons/react/24/outline"; import { bottomTotalItems, navItems, logo, channels } from "./data"; const ChannelSubscribed = () => { return (
cover-photo
Channel

React Patterns

@reactpatterns

600k Subscribers · 220 Subscribed

{channels.map((channel, i) => (
{channel.fullName}
{channel.fullName}

{channel.subscribers} Subscribers

))}
); }; export default ChannelSubscribed; ================================================ FILE: src/components/templates/youtube/channel-tweets.jsx ================================================ "use client"; import { classNames } from "@/utils"; import React from "react"; import { HandThumbDownIcon, HandThumbUpIcon, MagnifyingGlassIcon, UserPlusIcon, XCircleIcon, } from "@heroicons/react/24/outline"; import { bottomTotalItems, navItems, logo, tweets } from "./data"; const ChannelTweets = () => { return (
cover-photo
Channel

React Patterns

@reactpatterns

600k Subscribers · 220 Subscribed

{tweets.map((tweet) => (
{tweet.owner.fullName}

{tweet.owner.fullName}   {tweet.createdAt}

{tweet.content}

))}
); }; export default ChannelTweets; ================================================ FILE: src/components/templates/youtube/channel-video-list.jsx ================================================ "use client"; import { classNames } from "@/utils"; import React from "react"; import { MagnifyingGlassIcon, UserPlusIcon, XCircleIcon, } from "@heroicons/react/24/outline"; import { bottomTotalItems, navItems, logo, videos } from "./data"; const ChannelVideoList = () => { return (
cover-photo
Channel

React Patterns

@reactpatterns

600k Subscribers · 220 Subscribed

{videos .filter((video) => video.isPublished) .map((video) => (
{video.title}
{video.duration}
{video.title}

{video.views} Views · {video.time}

))}
); }; export default ChannelVideoList; ================================================ FILE: src/components/templates/youtube/dashboard.jsx ================================================ "use client"; import { EyeIcon, HeartIcon, MagnifyingGlassIcon, PencilIcon, PlusIcon, TrashIcon, UserIcon, XCircleIcon, } from "@heroicons/react/24/outline"; import React from "react"; import { navItems, logo, videos } from "./data"; import { classNames } from "@/utils"; const Dashboard = () => { return (

Welcome Back, React Patterns

Seamless Video Management, Elevated Results.

{[ { Icon: EyeIcon, title: "Total views", count: "221,234" }, { Icon: UserIcon, title: "Total subscribers", count: "4,053" }, { Icon: HeartIcon, title: "Total likes", count: "63,021" }, ].map(({ title, Icon, count }) => (
{title}

{count}

))}
{videos.map((video) => ( ))}
Status Status Uploaded Rating Date uploaded
{video.isPublished ? "Published" : "Unpublished"}
{video.owner.fullName}

{video.title}

{video.likeCount} likes {video.dislikeCount} dislikes
{new Date(video.createdAt).toLocaleDateString()}
); }; export default Dashboard; ================================================ FILE: src/components/templates/youtube/data.jsx ================================================ export const logo = ( ); export const icons = { home: ( ), like: ( ), history: ( ), myContent: ( ), collections: ( ), subscribers: ( ), support: ( ), settings: ( ), }; export const navItems = [ { name: "Home", mobileView: true, icon: icons.home, }, { name: "Liked Videos", mobileView: false, icon: icons.like, }, { name: "History", mobileView: true, icon: icons.history, }, { name: "My Content", mobileView: false, icon: icons.myContent, }, { name: "Collections", mobileView: true, icon: icons.collections, }, { name: "Subscribers", mobileView: true, icon: icons.subscribers, }, { name: "Support", mobileView: false, icon: icons.support, }, { name: "Settings", mobileView: false, icon: icons.settings, }, ]; export const siteNavItems = ["Home", "Products", "Resources", "Pricing"]; export const bottomTotalItems = 2; export const videos = [ { id: "1", videoFile: "", thumbnail: "https://images.pexels.com/photos/3561339/pexels-photo-3561339.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", title: "JavaScript Fundamentals: Variables and Data Types", description: "Learn the basics of JavaScript, including variables, data types, and how to use them in your programs.", duration: "20:45", views: "10.3k", isPublished: true, time: "44 minutes ago", createdAt: "2023-09-22T09:54:42.381Z", owner: { id: "1", username: "codemaster", fullName: "Code Master", avatar: "https://images.pexels.com/photos/3532545/pexels-photo-3532545.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", }, likeCount: 921, dislikeCount: 49, }, { id: "2", videoFile: "", thumbnail: "https://images.pexels.com/photos/3532553/pexels-photo-3532553.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", title: "React Hooks Explained: useState and useEffect", description: "Dive into the world of React hooks and understand how to use useState and useEffect in your components.", duration: "15:32", views: "8.7k", isPublished: false, time: "1 hour ago", createdAt: "2023-09-21T09:54:42.381Z", owner: { id: "2", username: "reactninja", fullName: "React Ninja", avatar: "https://images.pexels.com/photos/3532552/pexels-photo-3532552.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", }, likeCount: 2520, dislikeCount: 279, }, { id: "3", videoFile: "", thumbnail: "https://images.pexels.com/photos/3532555/pexels-photo-3532555.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", title: "Mastering Async Await in JavaScript", description: "Learn how to work with asynchronous JavaScript using the async/await syntax for cleaner and more readable code.", duration: "25:10", views: "12.5k", isPublished: false, time: "2 hours ago", createdAt: "2023-09-20T09:54:42.381Z", owner: { id: "3", username: "asyncmasters", fullName: "Async Masters", avatar: "https://images.pexels.com/photos/3532549/pexels-photo-3532549.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", }, likeCount: 943, dislikeCount: 244, }, { id: "4", videoFile: "", thumbnail: "https://images.pexels.com/photos/3532550/pexels-photo-3532550.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", title: "Building a ToDo App with React and Context API", description: "Create a simple ToDo application using React and manage state with the Context API for global data.", duration: "30:22", views: "15.4k", isPublished: false, time: "3 hours ago", createdAt: "2023-09-19T09:54:42.381Z", owner: { id: "4", username: "codecrafters", fullName: "Code Crafters", avatar: "https://images.pexels.com/photos/2522659/pexels-photo-2522659.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", }, likeCount: 760, dislikeCount: 302, }, { id: "5", videoFile: "", thumbnail: "https://images.pexels.com/photos/2522660/pexels-photo-2522660.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", title: "Responsive Web Design with Tailwind CSS", description: "Explore the power of Tailwind CSS and build a responsive website from scratch.", duration: "18:56", views: "9.8k", isPublished: false, time: "4 hours ago", createdAt: "2023-09-18T09:54:42.381Z", owner: { id: "5", username: "tailwindpro", fullName: "Tailwind Pro", avatar: "https://images.pexels.com/photos/2519823/pexels-photo-2519823.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", }, likeCount: 2630, dislikeCount: 317, }, { id: "6", videoFile: "", thumbnail: "https://images.pexels.com/photos/2519817/pexels-photo-2519817.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", title: "Getting Started with Express.js", description: "Learn the basics of building web applications with Node.js and Express.js framework.", duration: "22:18", views: "11.k", isPublished: true, time: "5 hours ago", createdAt: "2023-09-17T09:54:42.381Z", owner: { id: "6", username: "expresslearner", fullName: "Express Learner", avatar: "https://images.pexels.com/photos/2519812/pexels-photo-2519812.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", }, likeCount: 137, dislikeCount: 107, }, { id: "7", videoFile: "", thumbnail: "https://images.pexels.com/photos/7775641/pexels-photo-7775641.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", title: "State Management with Redux", description: "Learn how to manage global state in your React applications using Redux.", duration: "27:50", views: "13.8k", isPublished: false, time: "6 hours ago", createdAt: "2023-09-16T09:54:42.381Z", owner: { id: "7", username: "reduxmaster", fullName: "Redux Master", avatar: "https://images.pexels.com/photos/18264716/pexels-photo-18264716/free-photo-of-man-people-laptop-internet.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", }, likeCount: 1250, dislikeCount: 386, }, { id: "8", videoFile: "", thumbnail: "https://images.pexels.com/photos/1739849/pexels-photo-1739849.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", title: "Building a RESTful API with Node.js and Express", description: "Learn how to create a RESTful API using Node.js and the Express framework for building web applications.", duration: "24:33", views: "14.5k", isPublished: true, time: "7 hours ago", createdAt: "2023-09-15T09:54:42.381Z", owner: { id: "8", username: "apibuilder", fullName: "API Builder", avatar: "https://images.pexels.com/photos/1739942/pexels-photo-1739942.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", }, likeCount: 2773, dislikeCount: 50, }, { id: "9", videoFile: "", thumbnail: "https://images.pexels.com/photos/1739854/pexels-photo-1739854.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", title: "Introduction to React Native", description: "Discover how to build mobile applications using React Native for both Android and iOS platforms.", duration: "19:58", views: "10.9k", isPublished: true, time: "8 hours ago", createdAt: "2023-09-14T09:54:42.381Z", owner: { id: "9", username: "reactnativedev", fullName: "React Native Dev", avatar: "https://images.pexels.com/photos/1739856/pexels-photo-1739856.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", }, likeCount: 1346, dislikeCount: 353, }, { id: "10", videoFile: "", thumbnail: "https://images.pexels.com/photos/1144256/pexels-photo-1144256.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", title: "Creating Custom Hooks in React", description: "Learn how to create and use custom hooks to share logic across multiple React components.", duration: "16:37", views: "9.3k", isPublished: true, time: "9 hours ago", createdAt: "2023-09-13T09:54:42.381Z", owner: { id: "10", username: "hookmaster", fullName: "Hook Master", avatar: "https://images.pexels.com/photos/1144257/pexels-photo-1144257.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", }, likeCount: 1578, dislikeCount: 294, }, { id: "11", videoFile: "", thumbnail: "https://images.pexels.com/photos/1144259/pexels-photo-1144259.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", title: "Advanced CSS: Flexbox and Grid Layouts", description: "Dive deep into CSS layout techniques with Flexbox and Grid for modern and responsive web design.", duration: "28:15", views: "16.7k", isPublished: false, time: "10 hours ago", createdAt: "2023-09-12T09:54:42.381Z", owner: { id: "11", username: "csswizard", fullName: "CSS Wizard", avatar: "https://images.pexels.com/photos/1144261/pexels-photo-1144261.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", }, likeCount: 2506, dislikeCount: 87, }, { id: "12", videoFile: "", thumbnail: "https://images.pexels.com/photos/1144265/pexels-photo-1144265.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", title: "Introduction to Python Programming", description: "Get started with Python, a versatile and powerful programming language for beginners and professionals.", duration: "26:50", views: "17.8k", isPublished: false, time: "11 hours ago", createdAt: "2023-09-11T09:54:42.381Z", owner: { id: "12", username: "pythonista", fullName: "Pythonista", avatar: "https://images.pexels.com/photos/1144268/pexels-photo-1144268.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", }, likeCount: 1312, dislikeCount: 399, }, { id: "13", videoFile: "", thumbnail: "https://images.pexels.com/photos/1144260/pexels-photo-1144260.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", title: "Building Scalable Web Applications with Django", description: "Learn how to build robust and scalable web applications using the Django framework for Python.", duration: "32:18", views: "18.9M", isPublished: true, time: "12 hours ago", createdAt: "2023-09-10T09:54:42.381Z", owner: { id: "13", username: "djangomaster", fullName: "Django Master", avatar: "https://images.pexels.com/photos/1144269/pexels-photo-1144269.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", }, likeCount: 553, dislikeCount: 219, }, { id: "14", videoFile: "", thumbnail: "https://images.pexels.com/photos/1144263/pexels-photo-1144263.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", title: "Deep Dive into Machine Learning Algorithms", description: "Explore the inner workings of popular machine learning algorithms and their applications.", duration: "34:22", views: "19K", isPublished: false, time: "13 hours ago", createdAt: "2023-09-09T09:54:42.381Z", owner: { id: "14", username: "mlgeek", fullName: "ML Geek", avatar: "https://images.pexels.com/photos/1144275/pexels-photo-1144275.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", }, likeCount: 2061, dislikeCount: 359, }, { id: "15", videoFile: "", thumbnail: "https://images.pexels.com/photos/1144276/pexels-photo-1144276.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", title: "Creating Interactive UIs with React and D3", description: "Learn how to build dynamic and interactive user interfaces with React and the D3.js data visualization library.", duration: "29:30", views: "20.1k", isPublished: true, time: "14 hours ago", createdAt: "2023-09-08T09:54:42.381Z", owner: { id: "15", username: "reactd3", fullName: "ReactD3", avatar: "https://images.pexels.com/photos/1144277/pexels-photo-1144277.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", }, likeCount: 1165, dislikeCount: 10, }, { id: "16", videoFile: "", thumbnail: "https://images.pexels.com/photos/1144274/pexels-photo-1144274.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", title: "Node.js Authentication with Passport.js", description: "Learn how to implement user authentication in Node.js applications using the Passport.js middleware.", duration: "26:58", views: "21.2k", isPublished: true, time: "15 hours ago", createdAt: "2023-09-07T09:54:42.381Z", owner: { id: "16", username: "passportpro", fullName: "Passport Pro", avatar: "https://images.pexels.com/photos/1144270/pexels-photo-1144270.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", }, likeCount: 1812, dislikeCount: 347, }, { id: "17", videoFile: "", thumbnail: "https://images.pexels.com/photos/1144280/pexels-photo-1144280.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", title: "Creating RESTful APIs with Django Rest Framework", description: "Learn how to build RESTful APIs with Django Rest Framework for building web applications.", duration: "30:42", views: "22.3k", isPublished: false, time: "16 hours ago", createdAt: "2023-09-06T09:54:42.381Z", owner: { id: "17", username: "djangorestapi", fullName: "Django Rest API", avatar: "https://images.pexels.com/photos/1144235/pexels-photo-1144235.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", }, likeCount: 1698, dislikeCount: 159, }, { id: "18", videoFile: "", thumbnail: "https://images.pexels.com/photos/1144282/pexels-photo-1144282.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", title: "Advanced JavaScript: Closures and Prototypes", description: "Dive deep into JavaScript concepts like closures and prototypes for more advanced programming.", duration: "35:28", views: "23.4k", isPublished: false, time: "17 hours ago", createdAt: "2023-09-05T09:54:42.381Z", owner: { id: "18", username: "jsninja", fullName: "JS Ninja", avatar: "https://images.pexels.com/photos/1144232/pexels-photo-1144232.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", }, likeCount: 2393, dislikeCount: 146, }, { id: "19", videoFile: "", thumbnail: "https://images.pexels.com/photos/1144231/pexels-photo-1144231.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", title: "Data Visualization with Tableau", description: "Learn how to create stunning visualizations and dashboards using Tableau for data analysis.", duration: "32:14", views: "24.5k", isPublished: true, time: "18 hours ago", createdAt: "2023-09-04T09:54:42.381Z", owner: { id: "19", username: "tableaumaster", fullName: "Tableau Master", avatar: "https://images.pexels.com/photos/18264716/pexels-photo-18264716/free-photo-of-man-people-laptop-internet.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", }, likeCount: 2137, dislikeCount: 280, }, { id: "20", videoFile: "", thumbnail: "https://images.pexels.com/photos/1144250/pexels-photo-1144250.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", title: "Building Real-Time Applications with Socket.IO", description: "Learn how to create real-time applications using Socket.IO for seamless communication between clients and servers.", duration: "27:37", views: "25.6k", isPublished: true, time: "19 hours ago", createdAt: "2023-09-03T09:54:42.381Z", owner: { id: "20", username: "socketioexpert", fullName: "Socket.IO Expert", avatar: "https://images.pexels.com/photos/18264716/pexels-photo-18264716/free-photo-of-man-people-laptop-internet.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", }, likeCount: 2991, dislikeCount: 155, }, { id: "21", videoFile: "", thumbnail: "https://images.pexels.com/photos/1144251/pexels-photo-1144251.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", title: "GraphQL: Building APIs with Query Language", description: "Learn how to build efficient APIs using GraphQL and leverage the power of query language for data retrieval.", duration: "29:48", views: "26.7k", isPublished: false, time: "20 hours ago", createdAt: "2023-09-02T09:54:42.381Z", owner: { id: "21", username: "graphqlpro", fullName: "GraphQL Pro", avatar: "https://images.pexels.com/photos/18264716/pexels-photo-18264716/free-photo-of-man-people-laptop-internet.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", }, likeCount: 1095, dislikeCount: 359, }, { id: "22", videoFile: "", thumbnail: "https://images.pexels.com/photos/1115890/pexels-photo-1115890.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", title: "Full-Stack Development with MERN", description: "Master full-stack development with the MERN (MongoDB, Express, React, Node.js) stack.", duration: "33:15", views: "27.8k", isPublished: false, time: "21 hours ago", createdAt: "2023-09-01T09:54:42.381Z", owner: { id: "22", username: "mernstack", fullName: "MERN Stack", avatar: "https://images.pexels.com/photos/1115822/pexels-photo-1115822.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", }, likeCount: 2375, dislikeCount: 152, }, { id: "23", videoFile: "", thumbnail: "https://images.pexels.com/photos/1115824/pexels-photo-1115824.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", title: "Advanced CSS: Animations and Transitions", description: "Learn how to create captivating animations and transitions using CSS for dynamic web experiences.", duration: "31:55", views: "28.9k", isPublished: true, time: "22 hours ago", createdAt: "2023-08-31T09:54:42.381Z", owner: { id: "23", username: "cssanimations", fullName: "CSS Animations", avatar: "https://images.pexels.com/photos/18264716/pexels-photo-18264716/free-photo-of-man-people-laptop-internet.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", }, likeCount: 904, dislikeCount: 324, }, { id: "24", videoFile: "", thumbnail: "https://images.pexels.com/photos/1115821/pexels-photo-1115821.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", title: "Machine Learning for Image Recognition", description: "Dive into the world of image recognition using machine learning models for object detection.", duration: "36:40", views: "29M", isPublished: false, time: "23 hours ago", createdAt: "2023-08-30T09:54:42.381Z", owner: { id: "24", username: "mlimage", fullName: "ML Image", avatar: "https://images.pexels.com/photos/18264716/pexels-photo-18264716/free-photo-of-man-people-laptop-internet.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", }, likeCount: 912, dislikeCount: 97, }, { id: "25", videoFile: "", thumbnail: "https://images.pexels.com/photos/1115808/pexels-photo-1115808.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", title: "Advanced React Patterns", description: "Explore advanced patterns and techniques for building scalable and maintainable React applications.", duration: "30:25", views: "30.1k", isPublished: true, time: "1 day ago", createdAt: "2023-08-29T09:54:42.381Z", owner: { id: "25", username: "reactpatterns", fullName: "React Patterns", avatar: "https://images.pexels.com/photos/18264716/pexels-photo-18264716/free-photo-of-man-people-laptop-internet.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", }, likeCount: 1391, dislikeCount: 319, }, ]; export const videoDetails = { id: "1", videoFile: "https://res.cloudinary.com/dfw5nnic5/video/upload/v1695117968/Sample_1280x720_mp4_b4db0s.mp4", videoType: "video/mp4", thumbnail: "https://images.pexels.com/photos/1115808/pexels-photo-1115808.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", title: "Advanced React Patterns", description: '🚀 Dive into the world of React with our latest tutorial series: "Advanced React Patterns"! 🛠️ Whether you\'re a seasoned developer or just starting out, this series is designed to elevate your React skills to the next level.', duration: "30:25", views: "30,164", likeCount: 3050, dislikeCount: 20, commentCount: 573, isPublished: true, createdAt: "18 hours ago", updatedAt: new Date(), liked: false, disliked: false, owner: { id: "25", username: "reactpatterns", fullName: "React Patterns", avatar: "https://images.pexels.com/photos/18264716/pexels-photo-18264716/free-photo-of-man-people-laptop-internet.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", subscribers: "757K", }, comments: [ { id: "1", video: "1", content: "This series is exactly what I've been looking for! Excited to dive into these advanced React patterns. Thanks for putting this together!", createdAt: "17 hour ago", owner: { id: "25", username: "sarahjv", fullName: "Sarah Johnson", avatar: "https://images.pexels.com/photos/18148932/pexels-photo-18148932/free-photo-of-woman-reading-book-on-a-bench.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", }, }, { id: "2", video: "1", content: "Render props have always been a bit tricky for me. Can't wait to see how this series breaks it down. Thanks for sharing!", createdAt: "5 minutes ago", owner: { id: "25", username: "mikerod", fullName: "Michael Rodriguez", avatar: "https://images.pexels.com/photos/18107025/pexels-photo-18107025/free-photo-of-man-reading-newspaper.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", }, }, { id: "3", video: "1", content: "Higher-order components have been a mystery to me for far too long. Looking forward to demystifying them with this series. Thanks!", createdAt: "1 hour ago", owner: { id: "25", username: "emilyt", fullName: "Emily Turner", avatar: "https://images.pexels.com/photos/18096595/pexels-photo-18096595/free-photo-of-music-on-street.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", }, }, { id: "4", video: "1", content: "Compound components are a game-changer for UI development. Can't wait to learn more about them. Great work on this series!", createdAt: "3 hour ago", owner: { id: "25", username: "davidc", fullName: "David Chen", avatar: "https://images.pexels.com/photos/18094275/pexels-photo-18094275.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", }, }, { id: "5", video: "1", content: "Controlled vs. uncontrolled components - finally! This topic has always confused me. Thanks for breaking it down!", createdAt: "12 hour ago", owner: { id: "25", username: "alex_p", fullName: "Alex Parker", avatar: "https://images.pexels.com/photos/13847596/pexels-photo-13847596.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", }, }, { id: "6", video: "1", content: "This series is a goldmine for React developers! Compound components are something I've been eager to master. Thanks for this!", createdAt: "5 hour ago", owner: { id: "25", username: "jessicalee", fullName: "Jessica Lee", avatar: "https://images.pexels.com/photos/7775637/pexels-photo-7775637.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", }, }, { id: "7", video: "1", content: "This is exactly what I needed to take my React skills to the next level. Looking forward to diving into the render props section!", createdAt: "Just now", owner: { id: "25", username: "ryanjax", fullName: "Ryan Jackson", avatar: "https://images.pexels.com/photos/3532545/pexels-photo-3532545.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", }, }, { id: "8", video: "1", content: "This series looks amazing! I'm especially excited to learn more about controlled vs. uncontrolled components. Thanks for sharing!", createdAt: "1 minutes ago", owner: { id: "25", username: "lauraw", fullName: "Laura Williams", avatar: "https://images.pexels.com/photos/3532552/pexels-photo-3532552.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", }, }, ], }; export const playlistList = [ { id: "1", videos: videos, name: "React Mastery", views: "100K", description: "Master the art of building dynamic user interfaces with React.", createdAt: "2 hours ago", owner: { id: "25", username: "reactpatterns", fullName: "React Patterns", avatar: "https://images.pexels.com/photos/18264716/pexels-photo-18264716/free-photo-of-man-people-laptop-internet.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", subscribers: "757K", }, }, { id: "2", videos: [videos[3], videos[4], videos[5]], name: "JavaScript Fundamentals", views: "120K", description: "Learn the core concepts and fundamentals of JavaScript programming language.", createdAt: "3 hours ago", owner: { id: "25", username: "reactpatterns", fullName: "React Patterns", avatar: "https://images.pexels.com/photos/18264716/pexels-photo-18264716/free-photo-of-man-people-laptop-internet.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", subscribers: "757K", }, }, { id: "3", videos: [videos[6], videos[7], videos[8]], name: "TypeScript Essentials", views: "90K", description: "Dive into TypeScript for enhanced type safety and scalable JavaScript applications.", createdAt: "4 hours ago", owner: { id: "25", username: "reactpatterns", fullName: "React Patterns", avatar: "https://images.pexels.com/photos/18264716/pexels-photo-18264716/free-photo-of-man-people-laptop-internet.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", subscribers: "757K", }, }, { id: "4", videos: [videos[9], videos[10], videos[11]], name: "React State Management", views: "80K", description: "Explore various state management techniques in React applications.", createdAt: "5 hours ago", owner: { id: "25", username: "reactpatterns", fullName: "React Patterns", avatar: "https://images.pexels.com/photos/18264716/pexels-photo-18264716/free-photo-of-man-people-laptop-internet.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", subscribers: "757K", }, }, { id: "5", videos: [videos[12], videos[13], videos[14]], name: "Advanced JavaScript Techniques", views: "110K", description: "Delve into advanced JavaScript concepts and techniques for professional-level programming.", createdAt: "6 hours ago", owner: { id: "25", username: "reactpatterns", fullName: "React Patterns", avatar: "https://images.pexels.com/photos/18264716/pexels-photo-18264716/free-photo-of-man-people-laptop-internet.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", subscribers: "757K", }, }, ]; export const tweets = [ { id: "1", likeCount: 425, dislikeCount: 87, liked: true, disliked: false, content: "Exploring the latest features in JavaScript ES11! The language keeps evolving. 💡 #JavaScript #ES11", createdAt: "5 hours ago", owner: { id: "25", username: "reactpatterns", fullName: "React Patterns", avatar: "https://images.pexels.com/photos/1115816/pexels-photo-1115816.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", subscribers: "757K", }, }, { id: "2", likeCount: 425, dislikeCount: 87, liked: false, disliked: false, content: "Embracing the benefits of TypeScript for stronger, more reliable code. 🚀 #TypeScript #Programming", createdAt: "6 hours ago", owner: { id: "25", username: "reactpatterns", fullName: "React Patterns", avatar: "https://images.pexels.com/photos/1115816/pexels-photo-1115816.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", subscribers: "757K", }, }, { id: "3", likeCount: 425, dislikeCount: 87, liked: false, disliked: false, content: "Styling made easy with Tailwind CSS! Rapidly build beautiful, responsive interfaces. 🎨 #TailwindCSS #WebDev", createdAt: "7 hours ago", owner: { id: "25", username: "reactpatterns", fullName: "React Patterns", avatar: "https://images.pexels.com/photos/1115816/pexels-photo-1115816.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", subscribers: "757K", }, }, { id: "4", likeCount: 425, dislikeCount: 87, liked: true, disliked: false, content: "Building dynamic user interfaces with React! The go-to library for modern web development. 🚀 #React #WebDev", createdAt: "8 hours ago", owner: { id: "25", username: "reactpatterns", fullName: "React Patterns", avatar: "https://images.pexels.com/photos/1115816/pexels-photo-1115816.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", subscribers: "757K", }, }, { id: "5", likeCount: 425, dislikeCount: 87, liked: false, disliked: true, content: "Next.js makes server-side rendering a breeze! Boost your React app's performance with ease. 🚀 #Nextjs #React", createdAt: "9 hours ago", owner: { id: "25", username: "reactpatterns", fullName: "React Patterns", avatar: "https://images.pexels.com/photos/1115816/pexels-photo-1115816.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", subscribers: "757K", }, }, { id: "6", likeCount: 425, dislikeCount: 87, liked: true, disliked: false, content: "Dive into advanced JavaScript concepts like closures and prototypes. Level up your coding skills! 🔍 #AdvancedJS #CodingTips", createdAt: "10 hours ago", owner: { id: "25", username: "reactpatterns", fullName: "React Patterns", avatar: "https://images.pexels.com/photos/1115816/pexels-photo-1115816.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", subscribers: "757K", }, }, { id: "7", likeCount: 425, dislikeCount: 87, liked: true, disliked: false, content: "Mastering TypeScript: From basics to advanced concepts. Boost your development workflow with strong typing! 🚀 #TypeScript #Development", createdAt: "11 hours ago", owner: { id: "26", username: "tscripter", fullName: "TS Scripter", avatar: "https://images.pexels.com/photos/1115816/pexels-photo-1115816.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", subscribers: "420K", }, }, { id: "8", likeCount: 425, dislikeCount: 87, liked: true, disliked: false, content: "Simplify your CSS workflow with Tailwind CSS. Effortless styling for modern web development! 🎨 #TailwindCSS #WebDev", createdAt: "12 hours ago", owner: { id: "27", username: "tailwiz", fullName: "Tailwind Wizard", avatar: "https://images.pexels.com/photos/1115816/pexels-photo-1115816.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", subscribers: "600K", }, }, { id: "9", likeCount: 425, dislikeCount: 87, liked: true, disliked: false, content: "Building dynamic UIs with React - A comprehensive guide for developers. Get started with React today! 🚀 #React #WebDevelopment", createdAt: "13 hours ago", owner: { id: "25", username: "reactpatterns", fullName: "React Patterns", avatar: "https://images.pexels.com/photos/1115816/pexels-photo-1115816.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", subscribers: "757K", }, }, { id: "10", likeCount: 425, dislikeCount: 87, liked: true, disliked: false, content: "Optimize server-side rendering with Next.js. Improve performance and SEO for your React applications! 🚀 #Nextjs #React", createdAt: "14 hours ago", owner: { id: "25", username: "reactpatterns", fullName: "React Patterns", avatar: "https://images.pexels.com/photos/1115816/pexels-photo-1115816.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", subscribers: "757K", }, }, ]; export const channels = videos.map((video, i) => ({ ...video.owner, subscribers: 20 * (i + 1) + "K", isSubscribed: i % 2 == 0, })); ================================================ FILE: src/components/templates/youtube/delete-video.jsx ================================================ "use client"; import { EyeIcon, HeartIcon, MagnifyingGlassIcon, PencilIcon, PlusIcon, TrashIcon, UserIcon, XCircleIcon, XMarkIcon, } from "@heroicons/react/24/outline"; import React from "react"; import { navItems, logo, videos } from "./data"; import { classNames } from "@/utils"; const DeleteVideo = () => { return (

Welcome Back, React Patterns

Seamless Video Management, Elevated Results.

{[ { Icon: EyeIcon, title: "Total views", count: "221,234" }, { Icon: UserIcon, title: "Total subscribers", count: "4,053" }, { Icon: HeartIcon, title: "Total likes", count: "63,021" }, ].map(({ title, Icon, count }) => (
{title}

{count}

))}
{videos.map((video) => ( ))}
Status Status Uploaded Rating Date uploaded
{video.isPublished ? "Published" : "Unpublished"}
{video.owner.fullName}

{video.title}

{video.likeCount} likes {video.dislikeCount} dislikes
{new Date(video.createdAt).toLocaleDateString()}
{/* Modal Popup */}

Delete Video Are you sure you want to delete this video? Once its deleted, you will not be able to recover it.

); }; export default DeleteVideo; ================================================ FILE: src/components/templates/youtube/edit-channel-info.jsx ================================================ "use client"; import { classNames } from "@/utils"; import React from "react"; import { ClockIcon, ListBulletIcon, MagnifyingGlassIcon, XCircleIcon, } from "@heroicons/react/24/outline"; import { bottomTotalItems, navItems, logo } from "./data"; const EditChannelInfo = () => { return (
cover-photo
Channel

React Patterns

@reactpatterns

Channel Info

Update your Channel details here.

vidplay.com/

275 characters left


); }; export default EditChannelInfo; ================================================ FILE: src/components/templates/youtube/edit-personal-info.jsx ================================================ "use client"; import { classNames } from "@/utils"; import React from "react"; import { CloudArrowUpIcon, EnvelopeIcon, MagnifyingGlassIcon, XCircleIcon, } from "@heroicons/react/24/outline"; import { bottomTotalItems, navItems, logo } from "./data"; const EditPersonalInfo = () => { return (
cover-photo
Channel

React Patterns

@reactpatterns

Personal Info

Update your photo and personal details.


); }; export default EditPersonalInfo; ================================================ FILE: src/components/templates/youtube/edit-video.jsx ================================================ "use client"; import { EyeIcon, HeartIcon, MagnifyingGlassIcon, PencilIcon, PlusIcon, TrashIcon, UserIcon, XCircleIcon, XMarkIcon, } from "@heroicons/react/24/outline"; import React from "react"; import { navItems, logo, videos } from "./data"; import { classNames } from "@/utils"; const EditVideo = () => { return (

Welcome Back, React Patterns

Seamless Video Management, Elevated Results.

{[ { Icon: EyeIcon, title: "Total views", count: "221,234" }, { Icon: UserIcon, title: "Total subscribers", count: "4,053" }, { Icon: HeartIcon, title: "Total likes", count: "63,021" }, ].map(({ title, Icon, count }) => (
{title}

{count}

))}
{videos.map((video) => ( ))}
Status Status Uploaded Rating Date uploaded
{video.isPublished ? "Published" : "Unpublished"}
{video.owner.fullName}

{video.title}

{video.likeCount} likes {video.dislikeCount} dislikes
{new Date(video.createdAt).toLocaleDateString()}
{/* Modal Popup */}

Edit Video Share where you've worked on your profile.

); }; export default EditVideo; ================================================ FILE: src/components/templates/youtube/empty-videos.jsx ================================================ "use client"; import { classNames } from "@/utils"; import { MagnifyingGlassIcon, PlayIcon, XCircleIcon, } from "@heroicons/react/24/outline"; import React from "react"; import { bottomTotalItems, navItems, logo } from "./data"; const EmptyVideos = () => { return (

No videos available

There are no videos here available. Please try to search some thing else.

); }; export default EmptyVideos; ================================================ FILE: src/components/templates/youtube/index.ts ================================================ import EmptyVideos from "./empty-videos"; import VideoCards from "./video-cards"; import VideoList from "./video-list"; import VideoDetail from "./video-detail"; import ChannelEmptyVideo from "./channel-empty-video"; import ChannelVideoList from "./channel-video-list"; import ChannelEmptyPlaylist from "./channel-empty-playlist"; import ChannelPlaylist from "./channel-playlist"; import ChannelPlaylistVideos from "./channel-playlist-videos"; import ChannelEmptyTweet from "./channel-empty-tweet"; import ChannelTweets from "./channel-tweets"; import ChannelEmptySubscribed from "./channel-empty-subscribed"; import ChannelSubscribed from "./channel-subscribed"; import MyChannelEmptyVideo from "./mychannel-empty-video"; import MyChannelEmptyTweet from "./mychannel-empty-tweet"; import MyChannelTweets from "./mychannel-tweets"; import EditPersonalInfo from "./edit-personal-info"; import EditChannelInfo from "./edit-channel-info"; import ChangePassword from "./change-password"; import Dashboard from "./dashboard"; import Register from "./register"; import Login from "./login"; import UploadVideo from "./upload-video"; import PrivacyPolicy from "./privacy-policy"; import TermsAndConditions from "./terms-and-conditions"; import UploadingVideo from "./uploading-video"; import UploadedVideo from "./uploaded-video"; import EditVideo from "./edit-video"; import DeleteVideo from "./delete-video"; const Youtube = { EmptyVideos, VideoCards, VideoList, VideoDetail, ChannelEmptyPlaylist, ChannelEmptySubscribed, ChannelEmptyTweet, ChannelEmptyVideo, ChannelPlaylistVideos, ChannelSubscribed, ChannelTweets, ChannelVideoList, ChannelPlaylist, MyChannelEmptyTweet, MyChannelEmptyVideo, MyChannelTweets, EditPersonalInfo, EditChannelInfo, ChangePassword, Dashboard, Register, Login, UploadVideo, PrivacyPolicy, TermsAndConditions, UploadingVideo, UploadedVideo, EditVideo, DeleteVideo, }; export default Youtube; ================================================ FILE: src/components/templates/youtube/login.jsx ================================================ import React from "react"; import { logo } from "./data"; const Login = () => { return (
{logo}
Play
); }; export default Login; ================================================ FILE: src/components/templates/youtube/mychannel-empty-tweet.jsx ================================================ "use client"; import { classNames } from "@/utils"; import React from "react"; import { EllipsisHorizontalIcon, FaceSmileIcon, MagnifyingGlassIcon, PencilIcon, UsersIcon, XCircleIcon, } from "@heroicons/react/24/outline"; import { bottomTotalItems, navItems, logo } from "./data"; const MyChannelEmptyTweet = () => { return (
cover-photo
Channel

React Patterns

@reactpatterns

600k Subscribers · 220 Subscribed

No Tweets

This channel has yet to make a Tweet.

); }; export default MyChannelEmptyTweet; ================================================ FILE: src/components/templates/youtube/mychannel-empty-video.jsx ================================================ "use client"; import { classNames } from "@/utils"; import React from "react"; import { MagnifyingGlassIcon, PencilIcon, PlayIcon, PlusIcon, XCircleIcon, } from "@heroicons/react/24/outline"; import { bottomTotalItems, navItems, logo } from "./data"; const MyChannelEmptyVideo = () => { return (
cover-photo
Channel

React Patterns

@reactpatterns

600k Subscribers · 220 Subscribed

No videos uploaded

This page has yet to upload a video. Search another page in order to find more videos.

); }; export default MyChannelEmptyVideo; ================================================ FILE: src/components/templates/youtube/mychannel-tweets.jsx ================================================ "use client"; import { classNames } from "@/utils"; import React from "react"; import { EllipsisHorizontalIcon, FaceSmileIcon, HandThumbDownIcon, HandThumbUpIcon, MagnifyingGlassIcon, PencilIcon, XCircleIcon, } from "@heroicons/react/24/outline"; import { bottomTotalItems, navItems, logo, tweets } from "./data"; const MyChannelTweets = () => { return (
cover-photo
Channel

React Patterns

@reactpatterns

600k Subscribers · 220 Subscribed

{tweets.map((tweet) => (
{tweet.owner.fullName}

{tweet.owner.fullName}   {tweet.createdAt}

{tweet.content}

))}
); }; export default MyChannelTweets; ================================================ FILE: src/components/templates/youtube/privacy-policy.jsx ================================================ import React from "react"; import { XCircleIcon } from "@heroicons/react/24/outline"; import { siteNavItems, logo } from "./data"; const PrivacyPolicy = () => { return (

Privacy Policy

We care about your privacy

Your privacy is important to us at videoTube. We repect your privacy regarding any information we may collect from you across out website.

Lorem, ipsum dolor sit amet consectetur adipisicing elit. Voluptate facilis officia magni quidem labore obcaecati sequi repellat sit iusto modi doloribus excepturi consectetur, numquam quis. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Nemo voluptatum provident eveniet neque impedit ipsa molestias, animi reiciendis dolorum vitae cumque, itaque quae. Repudiandae obcaecati eaque perferendis fuga amet at?

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ad excepturi optio consequuntur quas deleniti sequi laboriosam rem, necessitatibus voluptates modi commodi exercitationem eos expedita repellendus? Quisquam reiciendis illo deleniti, eligendi architecto velit veniam. Odit repudiandae rem, recusandae placeat suscipit non incidunt similique optio facilis quae architecto minus iusto modi natus quod quidem laboriosam unde error explicabo ullam! Enim unde iste, beatae, corrupti, velit animi perferendis nisi maxime dolore qui aliquam.

What information do we collect?

Lorem ipsum dolor, sit amet consectetur adipisicing elit. Sit tenetur aperiam excepturi deleniti, tempora quidem magni obcaecati quas. Quo perspiciatis, deserunt velit porro ipsum, quod sit ratione cupiditate cumque aperiam dolorem adipisci architecto dolor id quisquam aliquid aspernatur. Repellat, consectetur? At harum necessitatibus nisi rem ullam sapiente laborum eaque? Harum?

Lorem ipsum dolor sit amet consectetur adipisicing elit. Porro at iusto laboriosam possimus in! Repellendus ea accusantium omnis impedit incidunt facere fuga consectetur quidem sint dolorem necessitatibus corporis itaque sed qui voluptates amet, sunt fugit? Deleniti explicabo et veniam alias eligendi similique, molestiae ipsa vitae rerum non repudiandae accusamus error temporibus pariatur. Sit totam, odit facilis adipisci ut vitae neque deserunt obcaecati. Laborum labore possimus ipsa quo placeat, tempora voluptatibus commodi itaque quia cupiditate nihil at, porro deleniti totam quaerat!

Lorem ipsum dolor sit amet consectetur adipisicing elit. Laborum fuga asperiores voluptatibus quidem dolores, quos officiis nostrum veritatis. A praesentium dicta temporibus vitae, excepturi sequi itaque? Pariatur veniam praesentium error qui necessitatibus. Et autem dolorum consectetur officia, provident quasi soluta?

How do we use your information

Lorem ipsum dolor, sit amet consectetur adipisicing elit. Sit tenetur aperiam excepturi deleniti, tempora quidem magni obcaecati quas. Quo perspiciatis, deserunt velit porro ipsum, quod sit ratione cupiditate cumque aperiam dolorem adipisci architecto dolor id quisquam aliquid aspernatur. Repellat, consectetur? At harum necessitatibus nisi rem ullam sapiente laborum eaque? Harum?

Lorem ipsum dolor sit amet consectetur adipisicing elit. Porro at iusto laboriosam possimus in! Repellendus ea accusantium omnis impedit incidunt facere fuga consectetur quidem sint dolorem necessitatibus corporis itaque sed qui voluptates amet, sunt fugit? Deleniti explicabo et veniam alias eligendi similique, molestiae ipsa vitae rerum non repudiandae accusamus error temporibus pariatur. Sit totam, odit facilis adipisci ut vitae neque deserunt obcaecati. Laborum labore possimus ipsa quo placeat, tempora voluptatibus commodi itaque quia cupiditate nihil at, porro deleniti totam quaerat!

Lorem ipsum dolor sit amet consectetur adipisicing elit. Laborum fuga asperiores voluptatibus quidem dolores, quos officiis nostrum veritatis. A praesentium dicta temporibus vitae, excepturi sequi itaque? Pariatur veniam praesentium error qui necessitatibus. Et autem dolorum consectetur officia, provident quasi soluta?

Do we use cookies and other tracking technologies?

Lorem ipsum dolor sit amet consectetur adipisicing elit. Laborum fuga asperiores voluptatibus quidem dolores, quos officiis nostrum veritatis. A praesentium dicta temporibus vitae, excepturi sequi itaque? Pariatur veniam praesentium error qui necessitatibus. Et autem dolorum consectetur officia, provident quasi soluta?

How long do we keep tour information?

Lorem ipsum dolor sit amet consectetur adipisicing elit. Laborum fuga asperiores voluptatibus quidem dolores, quos officiis nostrum veritatis. A praesentium dicta temporibus vitae, excepturi sequi itaque? Pariatur veniam praesentium error qui necessitatibus. Et autem dolorum consectetur officia, provident quasi soluta?

How do we keep your information safe?

Lorem ipsum dolor sit amet consectetur adipisicing elit. Laborum fuga asperiores voluptatibus quidem dolores, quos officiis nostrum veritatis. A praesentium dicta temporibus vitae, excepturi sequi itaque? Pariatur veniam praesentium error qui necessitatibus. Et autem dolorum consectetur officia, provident quasi soluta?

What are your privacy rights

Lorem ipsum dolor sit amet consectetur adipisicing elit. Laborum fuga asperiores voluptatibus quidem dolores, quos officiis nostrum veritatis. A praesentium dicta temporibus vitae, excepturi sequi itaque? Pariatur veniam praesentium error qui necessitatibus. Et autem dolorum consectetur officia, provident quasi soluta?

How can you contact us about this policy?

Lorem ipsum dolor sit amet consectetur adipisicing elit. Laborum fuga asperiores voluptatibus quidem dolores, quos officiis nostrum veritatis. A praesentium dicta temporibus vitae, excepturi sequi itaque? Pariatur veniam praesentium error qui necessitatibus. Et autem dolorum consectetur officia, provident quasi soluta?

  1. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Error, voluptas.
  2. Lorem ipsum dolor sit amet consectetur adipisicing.
  3. Lorem ipsum dolor sit amet consectetur adipisicing elit. Doloribus voluptatem optio autem eveniet ab natus!
{logo}

©{new Date().getFullYear()} VideoTube. All rights reserved.

); }; export default PrivacyPolicy; ================================================ FILE: src/components/templates/youtube/register.jsx ================================================ import React from "react"; import { logo } from "./data"; const Register = () => { return (
{logo}
Play
); }; export default Register; ================================================ FILE: src/components/templates/youtube/terms-and-conditions.jsx ================================================ import React from "react"; import { XCircleIcon } from "@heroicons/react/24/outline"; import { siteNavItems, logo } from "./data"; const TermsAndConditions = () => { return (

Current as of 20 Jan 2022

Terms and conditions

By accessing our website, you are agreeing to be bound by these terms of service, and agree that you are responsible for compliance with any applicable local laws.

Lorem, ipsum dolor sit amet consectetur adipisicing elit. Voluptate facilis officia magni quidem labore obcaecati sequi repellat sit iusto modi doloribus excepturi consectetur, numquam quis. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Nemo voluptatum provident eveniet neque impedit ipsa molestias, animi reiciendis dolorum vitae cumque, itaque quae. Repudiandae obcaecati eaque perferendis fuga amet at?

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ad excepturi optio consequuntur quas deleniti sequi laboriosam rem, necessitatibus voluptates modi commodi exercitationem eos expedita repellendus? Quisquam reiciendis illo deleniti, eligendi architecto velit veniam. Odit repudiandae rem, recusandae placeat suscipit non incidunt similique optio facilis quae architecto minus iusto modi natus quod quidem laboriosam unde error explicabo ullam! Enim unde iste, beatae, corrupti, velit animi perferendis nisi maxime dolore qui aliquam.

What information do we collect?

Lorem ipsum dolor, sit amet consectetur adipisicing elit. Sit tenetur aperiam excepturi deleniti, tempora quidem magni obcaecati quas. Quo perspiciatis, deserunt velit porro ipsum, quod sit ratione cupiditate cumque aperiam dolorem adipisci architecto dolor id quisquam aliquid aspernatur. Repellat, consectetur? At harum necessitatibus nisi rem ullam sapiente laborum eaque? Harum?

Lorem ipsum dolor sit amet consectetur adipisicing elit. Porro at iusto laboriosam possimus in! Repellendus ea accusantium omnis impedit incidunt facere fuga consectetur quidem sint dolorem necessitatibus corporis itaque sed qui voluptates amet, sunt fugit? Deleniti explicabo et veniam alias eligendi similique, molestiae ipsa vitae rerum non repudiandae accusamus error temporibus pariatur. Sit totam, odit facilis adipisci ut vitae neque deserunt obcaecati. Laborum labore possimus ipsa quo placeat, tempora voluptatibus commodi itaque quia cupiditate nihil at, porro deleniti totam quaerat!

Lorem ipsum dolor sit amet consectetur adipisicing elit. Laborum fuga asperiores voluptatibus quidem dolores, quos officiis nostrum veritatis. A praesentium dicta temporibus vitae, excepturi sequi itaque? Pariatur veniam praesentium error qui necessitatibus. Et autem dolorum consectetur officia, provident quasi soluta?

How do we use your information

Lorem ipsum dolor, sit amet consectetur adipisicing elit. Sit tenetur aperiam excepturi deleniti, tempora quidem magni obcaecati quas. Quo perspiciatis, deserunt velit porro ipsum, quod sit ratione cupiditate cumque aperiam dolorem adipisci architecto dolor id quisquam aliquid aspernatur. Repellat, consectetur? At harum necessitatibus nisi rem ullam sapiente laborum eaque? Harum?

Lorem ipsum dolor sit amet consectetur adipisicing elit. Porro at iusto laboriosam possimus in! Repellendus ea accusantium omnis impedit incidunt facere fuga consectetur quidem sint dolorem necessitatibus corporis itaque sed qui voluptates amet, sunt fugit? Deleniti explicabo et veniam alias eligendi similique, molestiae ipsa vitae rerum non repudiandae accusamus error temporibus pariatur. Sit totam, odit facilis adipisci ut vitae neque deserunt obcaecati. Laborum labore possimus ipsa quo placeat, tempora voluptatibus commodi itaque quia cupiditate nihil at, porro deleniti totam quaerat!

Lorem ipsum dolor sit amet consectetur adipisicing elit. Laborum fuga asperiores voluptatibus quidem dolores, quos officiis nostrum veritatis. A praesentium dicta temporibus vitae, excepturi sequi itaque? Pariatur veniam praesentium error qui necessitatibus. Et autem dolorum consectetur officia, provident quasi soluta?

Do we use cookies and other tracking technologies?

Lorem ipsum dolor sit amet consectetur adipisicing elit. Laborum fuga asperiores voluptatibus quidem dolores, quos officiis nostrum veritatis. A praesentium dicta temporibus vitae, excepturi sequi itaque? Pariatur veniam praesentium error qui necessitatibus. Et autem dolorum consectetur officia, provident quasi soluta?

How long do we keep tour information?

Lorem ipsum dolor sit amet consectetur adipisicing elit. Laborum fuga asperiores voluptatibus quidem dolores, quos officiis nostrum veritatis. A praesentium dicta temporibus vitae, excepturi sequi itaque? Pariatur veniam praesentium error qui necessitatibus. Et autem dolorum consectetur officia, provident quasi soluta?

How do we keep your information safe?

Lorem ipsum dolor sit amet consectetur adipisicing elit. Laborum fuga asperiores voluptatibus quidem dolores, quos officiis nostrum veritatis. A praesentium dicta temporibus vitae, excepturi sequi itaque? Pariatur veniam praesentium error qui necessitatibus. Et autem dolorum consectetur officia, provident quasi soluta?

What are your privacy rights

Lorem ipsum dolor sit amet consectetur adipisicing elit. Laborum fuga asperiores voluptatibus quidem dolores, quos officiis nostrum veritatis. A praesentium dicta temporibus vitae, excepturi sequi itaque? Pariatur veniam praesentium error qui necessitatibus. Et autem dolorum consectetur officia, provident quasi soluta?

How can you contact us about this policy?

Lorem ipsum dolor sit amet consectetur adipisicing elit. Laborum fuga asperiores voluptatibus quidem dolores, quos officiis nostrum veritatis. A praesentium dicta temporibus vitae, excepturi sequi itaque? Pariatur veniam praesentium error qui necessitatibus. Et autem dolorum consectetur officia, provident quasi soluta?

  1. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Error, voluptas.
  2. Lorem ipsum dolor sit amet consectetur adipisicing.
  3. Lorem ipsum dolor sit amet consectetur adipisicing elit. Doloribus voluptatem optio autem eveniet ab natus!
{logo}

©{new Date().getFullYear()} VideoTube. All rights reserved.

); }; export default TermsAndConditions; ================================================ FILE: src/components/templates/youtube/upload-video.jsx ================================================ "use client"; import { classNames } from "@/utils"; import React from "react"; import { ArrowUpTrayIcon, MagnifyingGlassIcon, PencilIcon, PlayIcon, PlusIcon, XCircleIcon, } from "@heroicons/react/24/outline"; import { bottomTotalItems, navItems, logo } from "./data"; const UploadVideo = () => { return (
cover-photo
Channel

React Patterns

@reactpatterns

600k Subscribers · 220 Subscribed

No videos uploaded

This page has yet to upload a video. Search another page in order to find more videos.

{/* Modal Popup */}

Upload Videos

Drag and drop video files to upload

Your videos will be private untill you publish them.

); }; export default UploadVideo; ================================================ FILE: src/components/templates/youtube/uploaded-video.jsx ================================================ "use client"; import { classNames } from "@/utils"; import React from "react"; import { FilmIcon, MagnifyingGlassIcon, PencilIcon, PlayIcon, PlusIcon, XCircleIcon, XMarkIcon, } from "@heroicons/react/24/outline"; import { bottomTotalItems, navItems, logo } from "./data"; import { CheckCircleIcon } from "@heroicons/react/20/solid"; const UploadedVideo = () => { return (
cover-photo
Channel

React Patterns

@reactpatterns

600k Subscribers · 220 Subscribed

No videos uploaded

This page has yet to upload a video. Search another page in order to find more videos.

{/* Modal Popup */}

Uploaded Video Track your video uploading process.

Dashboard prototype recording.mp4

16 MB

Uploaded Successfully
); }; export default UploadedVideo; ================================================ FILE: src/components/templates/youtube/uploading-video.jsx ================================================ "use client"; import { classNames } from "@/utils"; import React from "react"; import { FilmIcon, MagnifyingGlassIcon, PencilIcon, PlayIcon, PlusIcon, XCircleIcon, XMarkIcon, } from "@heroicons/react/24/outline"; import { bottomTotalItems, navItems, logo } from "./data"; const UploadingVideo = () => { return (
cover-photo
Channel

React Patterns

@reactpatterns

600k Subscribers · 220 Subscribed

No videos uploaded

This page has yet to upload a video. Search another page in order to find more videos.

{/* Modal Popup */}

Uploading Video... Track your video uploading process.

Dashboard prototype recording.mp4

16 MB

Uploading...
); }; export default UploadingVideo; ================================================ FILE: src/components/templates/youtube/video-cards.jsx ================================================ "use client"; import { classNames } from "@/utils"; import React from "react"; import { MagnifyingGlassIcon, XCircleIcon } from "@heroicons/react/24/outline"; import { bottomTotalItems, navItems, logo, videos } from "./data"; const VideoCards = () => { return (
{videos .filter((video) => video.isPublished) .map((video) => (
{video.title}
{video.duration}
{video.owner.username}
{video.title}

{video.views} Views · {video.time}

{video.owner.fullName}

))}
); }; export default VideoCards; ================================================ FILE: src/components/templates/youtube/video-detail.jsx ================================================ "use client"; import { classNames } from "@/utils"; import React from "react"; import { CheckIcon, FolderPlusIcon, HandThumbDownIcon, HandThumbUpIcon, MagnifyingGlassIcon, UserPlusIcon, XCircleIcon, } from "@heroicons/react/24/outline"; import { bottomTotalItems, navItems, logo, videos, videoDetails } from "./data"; const VideoList = () => { return (

{videoDetails.title}

{videoDetails.views} Views · {videoDetails.createdAt}

Save to playlist

    {[ "Collections", "JavaScript Basics", "C++ Tuts", "Feel Good Music", "Ed Sheeran", "Python", ].map((playlistName) => (
  • ))}
{videoDetails.owner.username}

{videoDetails.owner.fullName}

{videoDetails.owner.subscribers} Subscribers


{videoDetails.description}

{videoDetails.commentCount} Comments

{videoDetails.comments.map((comment) => (
{comment.owner.username}

{comment.owner.fullName} ·  {comment.createdAt}

@{comment.owner.username}

{comment.content}


))}
{videos .filter((video) => video.isPublished) .map((video) => (
{video.title}
{video.duration}
{videoDetails.owner.username}
{video.title}

{video.owner.fullName}

{video.views} Views · {video.time}

))}
); }; export default VideoList; ================================================ FILE: src/components/templates/youtube/video-list.jsx ================================================ "use client"; import { classNames } from "@/utils"; import React from "react"; import { MagnifyingGlassIcon, XCircleIcon } from "@heroicons/react/24/outline"; import { bottomTotalItems, navItems, logo, videos } from "./data"; const VideoList = () => { return (
{videos .filter((video) => video.isPublished) .map((video) => (
{video.title}
{video.duration}
{video.owner.username}
{video.title}

{video.views} Views · {video.time}

{video.owner.username}

{video.owner.fullName}

{video.description}

))}
); }; export default VideoList; ================================================ FILE: src/types/utils.ts ================================================ export type TailwindIconType = React.ForwardRefExoticComponent< Omit, "ref"> & { title?: string | undefined; titleId?: string | undefined; } & React.RefAttributes >; export type SelectOptionType = { id: string; name: string; }; ================================================ FILE: src/utils/index.ts ================================================ import { ReactElement } from "react"; import { renderToStaticMarkup } from "react-dom/server"; export const classNames = (...classes: string[]) => { return classes.filter(Boolean).join(" "); }; export const renderHTMLFromJSX = (jsx: ReactElement): string => { return renderToStaticMarkup(jsx).replaceAll("&", "&"); }; ================================================ FILE: src/utils/screens.tsx ================================================ import Authentication from "@/components/templates/authentication"; import Chat from "@/components/templates/chat"; import SocialMedia from "@/components/templates/social-media"; import Todo from "@/components/templates/todo"; import Youtube from "@/components/templates/youtube"; export const applications = [ { name: "Authentication app", id: "authentication", subtitle: "User Authentication", cover: "/auth.png", description: "Explore authentication screens for a seamless and secure login and registration UI designs. Access the HTML templates by clicking below.", pages: [ { id: "register", name: "Register Page", component: , }, { id: "login", name: "Login Page", component: , }, { id: "forgot-password", name: "Forgot Password Page", component: , }, ], }, { name: "Chat app", id: "chat", subtitle: "Real-time Chat", cover: "/chat.png", description: "Discover HTML templates for our chat application screens. Explore sleek, intuitive and responsive designs for seamless communication experiences.", pages: [ { id: "empty-chats", name: "Empty Chats", component: , }, { id: "chat-screen", name: "Chat Screen", component: , }, { id: "create-normal-chat", name: "Create Personal Chat", component: , }, { id: "create-group-chat", name: "Create Group Chat", component: , }, { id: "group-chat-info", name: "About Group Chat", component: , }, { id: "chat-register", name: "Chat Register", component: , }, { id: "chat-login", name: "Chat Login", component: , }, ], }, { name: "Social Media App", id: "social-media", subtitle: "Social Media", cover: "/social-media.png", description: "Discover HTML templates for social media application screens. Dive into our UI designs to create engaging, responsive and user-friendly social platforms.", pages: [ { id: "post-listing", name: "Post Listing", component: , }, { id: "post-detail", name: "Post Detail", component: , }, { id: "user-profile", name: "User Profile", component: , }, { id: "my-profile", name: "My Profile", component: , }, { id: "edit-profile", name: "Edit Profile", component: , }, { id: "change-password", name: "Change Password", component: , }, { id: "bookmarked-posts", name: "Bookmarked Posts", component: , }, { id: "social-register", name: "Social Register", component: , }, { id: "social-login", name: "Social Login", component: , }, ], }, { name: "Todo app", id: "todo", subtitle: "Task Management", cover: "/todo.png", description: "Explore UI designs for Todo app, a user-friendly task management application. Streamline your productivity by accessing the HTML templates.", pages: [ { id: "empty-todos", name: "Empty Todos Page", component: , }, { id: "todos", name: "Todos Page", component: , }, ], }, { name: "Youtube App", id: "youtube", subtitle: "Video Sharing Platform", cover: "/youtube.png", description: "Explore UI designs for a Youtube clone, a user-friendly video sharing platform. Enhance your viewing experience with these accessible HTML templates.", pages: [ { id: "empty-videos", name: "Empty Video Page", component: , }, { id: "video-card", name: "Video Listing Page (Card View)", component: , }, { id: "video-list", name: "Video Listing Page (List View)", component: , }, { id: "video-detail", name: "Video Detail Page", component: , }, { id: "channel-empty-video", name: "Channel Empty Video Page", component: , }, { id: "channel-video-list", name: "Channel Video List Page", component: , }, { id: "channel-empty-playlist", name: "Channel Empty Playlist Page", component: , }, { id: "channel-playlist", name: "Channel Playlist Page", component: , }, { id: "channel-paylist-videos", name: "Channel Playlist Videos Page", component: , }, { id: "channel-empty-tweet", name: "Channel Empty Tweet Page", component: , }, { id: "channel-tweets", name: "Channel Tweets Page", component: , }, { id: "channel-empty-subscribed", name: "Channel Empty Subscribed Page", component: , }, { id: "channel-subscribed", name: "Channel Subscribed Page", component: , }, { id: "login", name: "Login Page", component: , }, { id: "register", name: "Register Page", component: , }, { id: "mychannel-empty-video", name: "My Channel Empty Video Page", component: , }, { id: "upload-video", name: "Upload Video Modal Popup", component: , }, { id: "uploading-video", name: "Uploading Video Modal Popup", component: , }, { id: "uploaded-video", name: "Uploaded Video Successfully Modal Popup", component: , }, { id: "mychannel-empty-tweet", name: "My Channel Empty Tweet Page", component: , }, { id: "mychannel-tweets", name: "My Channel Tweets Page", component: , }, { id: "edit-personal-info", name: "Edit Personal Info Page", component: , }, { id: "edit-channel-info", name: "Edit Channel Info Page", component: , }, { id: "change-password", name: "Change Password Page", component: , }, { id: "dashboard", name: "Admin Dashboard Page", component: , }, { id: "edit-video", name: "Edit Video Modal Popup", component: , }, { id: "delete-video", name: "Delete Video Modal Popup", component: , }, { id: "privacy-policy", name: "Privacy Policy Page", component: , }, { id: "terms-and-conditions", name: "Terms and Conditions Page", component: , }, ], }, ]; export const getComponentByAppPageId = (appId: string, pageId: string) => { const application = applications.find((app) => app.id === appId); if (!application) return

Application id in invalid

; const page = application.pages.find((page) => page.id === pageId); if (!page) return

Page id in invalid

; return page.component; }; ================================================ FILE: tailwind.config.ts ================================================ import type { Config } from "tailwindcss"; const config: Config = { content: [ "./src/pages/**/*.{js,ts,jsx,tsx,mdx}", "./src/components/**/*.{js,ts,jsx,tsx,mdx}", "./src/app/**/*.{js,ts,jsx,tsx,mdx}", "./src/utils/**/*.{js,ts,jsx,tsx,mdx}", ], theme: { extend: { colors: { dark: "#020617", }, }, }, plugins: [], }; export default config; ================================================ FILE: tsconfig.json ================================================ { "compilerOptions": { "target": "es5", "lib": [ "dom", "dom.iterable", "esnext" ], "allowJs": true, "skipLibCheck": true, "strict": true, "noEmit": true, "esModuleInterop": true, "module": "esnext", "moduleResolution": "bundler", "resolveJsonModule": true, "isolatedModules": true, "jsx": "preserve", "allowSyntheticDefaultImports": true, "incremental": true, "plugins": [ { "name": "next" } ], "paths": { "@/*": [ "./src/*" ] } }, "include": [ "next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts" ], "exclude": [ "node_modules" ] }