|
<!DOCTYPE html> |
|
<html lang="en"> |
|
<head> |
|
<meta charset="UTF-8"> |
|
<meta name="viewport" content="width=device-width, initial-scale=1.0"> |
|
<title>AsanaAI - Collaborative Project Management with AI</title> |
|
<script src="https://cdn.tailwindcss.com"></script> |
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css"> |
|
<style> |
|
.kanban-column { |
|
min-height: 500px; |
|
} |
|
.chat-message.ai { |
|
background-color: #f0f7ff; |
|
border-left: 4px solid #3b82f6; |
|
} |
|
.chat-message.user { |
|
background-color: #f8fafc; |
|
border-left: 4px solid #e2e8f0; |
|
} |
|
.task-card:hover { |
|
transform: translateY(-2px); |
|
box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1); |
|
} |
|
.sidebar-item:hover .sidebar-tooltip { |
|
display: block; |
|
} |
|
.sidebar-tooltip { |
|
display: none; |
|
position: absolute; |
|
left: 100%; |
|
top: 50%; |
|
transform: translateY(-50%); |
|
background: #1e293b; |
|
color: white; |
|
padding: 0.5rem 1rem; |
|
border-radius: 0.375rem; |
|
white-space: nowrap; |
|
z-index: 10; |
|
} |
|
.animate-pulse { |
|
animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite; |
|
} |
|
@keyframes pulse { |
|
0%, 100% { |
|
opacity: 1; |
|
} |
|
50% { |
|
opacity: 0.5; |
|
} |
|
} |
|
</style> |
|
</head> |
|
<body class="bg-gray-50 text-gray-800"> |
|
<div class="flex h-screen overflow-hidden"> |
|
|
|
<div class="hidden md:flex md:flex-shrink-0"> |
|
<div class="flex flex-col w-20 bg-white border-r border-gray-200"> |
|
<div class="flex items-center justify-center h-16 px-4 bg-indigo-600"> |
|
<span class="text-white font-bold text-xl">AAI</span> |
|
</div> |
|
<div class="flex flex-col flex-grow pt-5 overflow-y-auto"> |
|
<div class="flex-1 space-y-1"> |
|
<a href="#" class="sidebar-item group relative flex items-center justify-center py-3 px-2 text-indigo-600 bg-indigo-50"> |
|
<i class="fas fa-home text-xl"></i> |
|
<span class="sidebar-tooltip">Dashboard</span> |
|
</a> |
|
<a href="#" class="sidebar-item group relative flex items-center justify-center py-3 px-2 text-gray-600 hover:text-indigo-600 hover:bg-indigo-50"> |
|
<i class="fas fa-tasks text-xl"></i> |
|
<span class="sidebar-tooltip">Projects</span> |
|
</a> |
|
<a href="#" class="sidebar-item group relative flex items-center justify-center py-3 px-2 text-gray-600 hover:text-indigo-600 hover:bg-indigo-50"> |
|
<i class="fas fa-users text-xl"></i> |
|
<span class="sidebar-tooltip">Team</span> |
|
</a> |
|
<a href="#" class="sidebar-item group relative flex items-center justify-center py-3 px-2 text-gray-600 hover:text-indigo-600 hover:bg-indigo-50"> |
|
<i class="fas fa-comments text-xl"></i> |
|
<span class="sidebar-tooltip">Chat</span> |
|
</a> |
|
<a href="#" class="sidebar-item group relative flex items-center justify-center py-3 px-2 text-gray-600 hover:text-indigo-600 hover:bg-indigo-50"> |
|
<i class="fas fa-cog text-xl"></i> |
|
<span class="sidebar-tooltip">Settings</span> |
|
</a> |
|
</div> |
|
<div class="pb-4"> |
|
<a href="#" class="sidebar-item group relative flex items-center justify-center py-3 px-2 text-gray-600 hover:text-indigo-600 hover:bg-indigo-50"> |
|
<i class="fas fa-question-circle text-xl"></i> |
|
<span class="sidebar-tooltip">Help</span> |
|
</a> |
|
</div> |
|
</div> |
|
</div> |
|
</div> |
|
|
|
|
|
<div class="flex flex-col flex-1 overflow-hidden"> |
|
|
|
<div class="flex items-center justify-between h-16 px-4 bg-white border-b border-gray-200"> |
|
<div class="flex items-center"> |
|
<button class="md:hidden p-2 rounded-md text-gray-500 hover:text-gray-600 hover:bg-gray-100 focus:outline-none"> |
|
<i class="fas fa-bars"></i> |
|
</button> |
|
<h1 class="ml-4 text-xl font-semibold text-gray-900">Project Dashboard</h1> |
|
</div> |
|
<div class="flex items-center space-x-4"> |
|
<div class="relative"> |
|
<button class="p-2 rounded-full text-gray-500 hover:text-gray-600 hover:bg-gray-100 focus:outline-none"> |
|
<i class="fas fa-bell"></i> |
|
</button> |
|
<span class="absolute top-0 right-0 h-2 w-2 rounded-full bg-red-500"></span> |
|
</div> |
|
<div class="relative"> |
|
<button class="flex items-center space-x-2 focus:outline-none"> |
|
<img class="h-8 w-8 rounded-full" src="https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80" alt="User profile"> |
|
<span class="hidden md:block text-sm font-medium text-gray-700">John Doe</span> |
|
</button> |
|
</div> |
|
</div> |
|
</div> |
|
|
|
|
|
<div class="flex-1 overflow-auto p-4"> |
|
|
|
<div class="mb-6"> |
|
<div class="flex items-center justify-between"> |
|
<div> |
|
<h2 class="text-2xl font-bold">Website Redesign</h2> |
|
<p class="text-gray-600">Complete redesign of company website with new branding</p> |
|
</div> |
|
<div class="flex space-x-2"> |
|
<button class="px-4 py-2 bg-indigo-600 text-white rounded-md hover:bg-indigo-700 focus:outline-none"> |
|
<i class="fas fa-plus mr-2"></i> Add Task |
|
</button> |
|
<button class="px-4 py-2 bg-white border border-gray-300 text-gray-700 rounded-md hover:bg-gray-50 focus:outline-none"> |
|
<i class="fas fa-ellipsis-h"></i> |
|
</button> |
|
</div> |
|
</div> |
|
<div class="mt-4 flex items-center space-x-4"> |
|
<div class="flex -space-x-2"> |
|
<img class="h-8 w-8 rounded-full border-2 border-white" src="https://images.unsplash.com/photo-1494790108377-be9c29b29330?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80" alt="Team member"> |
|
<img class="h-8 w-8 rounded-full border-2 border-white" src="https://images.unsplash.com/photo-1519244703995-f4e0f30006d5?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80" alt="Team member"> |
|
<div class="h-8 w-8 rounded-full border-2 border-white bg-indigo-100 flex items-center justify-center"> |
|
<span class="text-xs font-medium text-indigo-800">+2</span> |
|
</div> |
|
</div> |
|
<div class="flex -space-x-2"> |
|
<div class="h-8 w-8 rounded-full border-2 border-white bg-purple-100 flex items-center justify-center"> |
|
<i class="fas fa-robot text-purple-500"></i> |
|
</div> |
|
<div class="h-8 w-8 rounded-full border-2 border-white bg-green-100 flex items-center justify-center"> |
|
<i class="fas fa-robot text-green-500"></i> |
|
</div> |
|
</div> |
|
<span class="text-sm text-gray-500">2 humans, 2 AI assistants</span> |
|
</div> |
|
</div> |
|
|
|
|
|
<div class="grid grid-cols-1 md:grid-cols-4 gap-4"> |
|
|
|
<div class="bg-white rounded-lg shadow kanban-column"> |
|
<div class="p-4 border-b border-gray-200"> |
|
<h3 class="font-medium text-gray-900">Backlog</h3> |
|
</div> |
|
<div class="p-4 space-y-3"> |
|
<div class="task-card bg-white p-3 rounded-lg border border-gray-200 hover:shadow-md transition duration-150 ease-in-out cursor-move"> |
|
<div class="flex justify-between items-start"> |
|
<div> |
|
<span class="text-xs px-2 py-1 bg-blue-100 text-blue-800 rounded-full">Design</span> |
|
<h4 class="mt-2 font-medium">Create wireframes</h4> |
|
</div> |
|
<button class="text-gray-400 hover:text-gray-600"> |
|
<i class="fas fa-ellipsis-v"></i> |
|
</button> |
|
</div> |
|
<div class="mt-3 flex items-center justify-between"> |
|
<div class="flex items-center space-x-1"> |
|
<i class="fas fa-comment text-gray-400 text-xs"></i> |
|
<span class="text-xs text-gray-500">3</span> |
|
</div> |
|
<div class="flex -space-x-1"> |
|
<img class="h-6 w-6 rounded-full border-2 border-white" src="https://images.unsplash.com/photo-1494790108377-be9c29b29330?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80" alt="Assignee"> |
|
</div> |
|
</div> |
|
</div> |
|
<div class="task-card bg-white p-3 rounded-lg border border-gray-200 hover:shadow-md transition duration-150 ease-in-out cursor-move"> |
|
<div class="flex justify-between items-start"> |
|
<div> |
|
<span class="text-xs px-2 py-1 bg-purple-100 text-purple-800 rounded-full">Content</span> |
|
<h4 class="mt-2 font-medium">Write homepage copy</h4> |
|
</div> |
|
<button class="text-gray-400 hover:text-gray-600"> |
|
<i class="fas fa-ellipsis-v"></i> |
|
</button> |
|
</div> |
|
<div class="mt-3 flex items-center justify-between"> |
|
<div class="flex items-center space-x-1"> |
|
<i class="fas fa-comment text-gray-400 text-xs"></i> |
|
<span class="text-xs text-gray-500">5</span> |
|
</div> |
|
<div class="flex -space-x-1"> |
|
<div class="h-6 w-6 rounded-full border-2 border-white bg-purple-100 flex items-center justify-center"> |
|
<i class="fas fa-robot text-purple-500 text-xs"></i> |
|
</div> |
|
</div> |
|
</div> |
|
</div> |
|
</div> |
|
<div class="p-3 border-t border-gray-200"> |
|
<button class="w-full py-2 text-sm text-gray-500 hover:text-indigo-600 hover:bg-indigo-50 rounded-md"> |
|
<i class="fas fa-plus mr-2"></i> Add task |
|
</button> |
|
</div> |
|
</div> |
|
|
|
|
|
<div class="bg-white rounded-lg shadow kanban-column"> |
|
<div class="p-4 border-b border-gray-200"> |
|
<h3 class="font-medium text-gray-900">In Progress</h3> |
|
</div> |
|
<div class="p-4 space-y-3"> |
|
<div class="task-card bg-white p-3 rounded-lg border border-gray-200 hover:shadow-md transition duration-150 ease-in-out cursor-move"> |
|
<div class="flex justify-between items-start"> |
|
<div> |
|
<span class="text-xs px-2 py-1 bg-green-100 text-green-800 rounded-full">Development</span> |
|
<h4 class="mt-2 font-medium">Implement new header</h4> |
|
</div> |
|
<button class="text-gray-400 hover:text-gray-600"> |
|
<i class="fas fa-ellipsis-v"></i> |
|
</button> |
|
</div> |
|
<div class="mt-3 flex items-center justify-between"> |
|
<div class="flex items-center space-x-1"> |
|
<i class="fas fa-comment text-gray-400 text-xs"></i> |
|
<span class="text-xs text-gray-500">7</span> |
|
</div> |
|
<div class="flex -space-x-1"> |
|
<img class="h-6 w-6 rounded-full border-2 border-white" src="https://images.unsplash.com/photo-1519244703995-f4e0f30006d5?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80" alt="Assignee"> |
|
</div> |
|
</div> |
|
</div> |
|
<div class="task-card bg-white p-3 rounded-lg border border-gray-200 hover:shadow-md transition duration-150 ease-in-out cursor-move"> |
|
<div class="flex justify-between items-start"> |
|
<div> |
|
<span class="text-xs px-2 py-1 bg-yellow-100 text-yellow-800 rounded-full">SEO</span> |
|
<h4 class="mt-2 font-medium">Optimize meta tags</h4> |
|
</div> |
|
<button class="text-gray-400 hover:text-gray-600"> |
|
<i class="fas fa-ellipsis-v"></i> |
|
</button> |
|
</div> |
|
<div class="mt-3 flex items-center justify-between"> |
|
<div class="flex items-center space-x-1"> |
|
<i class="fas fa-comment text-gray-400 text-xs"></i> |
|
<span class="text-xs text-gray-500">2</span> |
|
</div> |
|
<div class="flex -space-x-1"> |
|
<div class="h-6 w-6 rounded-full border-2 border-white bg-green-100 flex items-center justify-center"> |
|
<i class="fas fa-robot text-green-500 text-xs"></i> |
|
</div> |
|
</div> |
|
</div> |
|
</div> |
|
</div> |
|
<div class="p-3 border-t border-gray-200"> |
|
<button class="w-full py-2 text-sm text-gray-500 hover:text-indigo-600 hover:bg-indigo-50 rounded-md"> |
|
<i class="fas fa-plus mr-2"></i> Add task |
|
</button> |
|
</div> |
|
</div> |
|
|
|
|
|
<div class="bg-white rounded-lg shadow kanban-column"> |
|
<div class="p-4 border-b border-gray-200"> |
|
<h3 class="font-medium text-gray-900">Review</h3> |
|
</div> |
|
<div class="p-4 space-y-3"> |
|
<div class="task-card bg-white p-3 rounded-lg border border-gray-200 hover:shadow-md transition duration-150 ease-in-out cursor-move"> |
|
<div class="flex justify-between items-start"> |
|
<div> |
|
<span class="text-xs px-2 py-1 bg-red-100 text-red-800 rounded-full">Bug</span> |
|
<h4 class="mt-2 font-medium">Fix mobile menu</h4> |
|
</div> |
|
<button class="text-gray-400 hover:text-gray-600"> |
|
<i class="fas fa-ellipsis-v"></i> |
|
</button> |
|
</div> |
|
<div class="mt-3 flex items-center justify-between"> |
|
<div class="flex items-center space-x-1"> |
|
<i class="fas fa-comment text-gray-400 text-xs"></i> |
|
<span class="text-xs text-gray-500">4</span> |
|
</div> |
|
<div class="flex -space-x-1"> |
|
<img class="h-6 w-6 rounded-full border-2 border-white" src="https://images.unsplash.com/photo-1494790108377-be9c29b29330?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80" alt="Assignee"> |
|
</div> |
|
</div> |
|
</div> |
|
</div> |
|
<div class="p-3 border-t border-gray-200"> |
|
<button class="w-full py-2 text-sm text-gray-500 hover:text-indigo-600 hover:bg-indigo-50 rounded-md"> |
|
<i class="fas fa-plus mr-2"></i> Add task |
|
</button> |
|
</div> |
|
</div> |
|
|
|
|
|
<div class="bg-white rounded-lg shadow kanban-column"> |
|
<div class="p-4 border-b border-gray-200"> |
|
<h3 class="font-medium text-gray-900">Done</h3> |
|
</div> |
|
<div class="p-4 space-y-3"> |
|
<div class="task-card bg-white p-3 rounded-lg border border-gray-200 hover:shadow-md transition duration-150 ease-in-out cursor-move opacity-70"> |
|
<div class="flex justify-between items-start"> |
|
<div> |
|
<span class="text-xs px-2 py-1 bg-indigo-100 text-indigo-800 rounded-full">Research</span> |
|
<h4 class="mt-2 font-medium">Competitor analysis</h4> |
|
</div> |
|
<button class="text-gray-400 hover:text-gray-600"> |
|
<i class="fas fa-ellipsis-v"></i> |
|
</button> |
|
</div> |
|
<div class="mt-3 flex items-center justify-between"> |
|
<div class="flex items-center space-x-1"> |
|
<i class="fas fa-comment text-gray-400 text-xs"></i> |
|
<span class="text-xs text-gray-500">8</span> |
|
</div> |
|
<div class="flex -space-x-1"> |
|
<div class="h-6 w-6 rounded-full border-2 border-white bg-purple-100 flex items-center justify-center"> |
|
<i class="fas fa-robot text-purple-500 text-xs"></i> |
|
</div> |
|
</div> |
|
</div> |
|
</div> |
|
</div> |
|
<div class="p-3 border-t border-gray-200"> |
|
<button class="w-full py-2 text-sm text-gray-500 hover:text-indigo-600 hover:bg-indigo-50 rounded-md"> |
|
<i class="fas fa-plus mr-2"></i> Add task |
|
</button> |
|
</div> |
|
</div> |
|
</div> |
|
|
|
|
|
<div id="chat-panel" class="hidden fixed inset-0 bg-black bg-opacity-50 z-50 flex items-center justify-center"> |
|
<div class="bg-white rounded-lg shadow-xl w-full max-w-2xl max-h-screen flex flex-col" style="height: 80vh;"> |
|
<div class="p-4 border-b border-gray-200 flex justify-between items-center"> |
|
<h3 class="font-medium text-gray-900">Project Chat</h3> |
|
<button id="close-chat" class="text-gray-400 hover:text-gray-600"> |
|
<i class="fas fa-times"></i> |
|
</button> |
|
</div> |
|
<div class="flex-1 overflow-y-auto p-4 space-y-4"> |
|
|
|
<div class="chat-message ai p-3 rounded-lg"> |
|
<div class="flex items-start space-x-3"> |
|
<div class="h-8 w-8 rounded-full bg-purple-100 flex items-center justify-center"> |
|
<i class="fas fa-robot text-purple-500"></i> |
|
</div> |
|
<div> |
|
<p class="font-medium text-purple-600">Design Assistant</p> |
|
<p class="mt-1 text-gray-700">I've analyzed the wireframes and suggest we increase the padding on the header elements for better mobile readability.</p> |
|
</div> |
|
</div> |
|
</div> |
|
|
|
|
|
<div class="chat-message user p-3 rounded-lg"> |
|
<div class="flex items-start space-x-3"> |
|
<img class="h-8 w-8 rounded-full" src="https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80" alt="User"> |
|
<div> |
|
<p class="font-medium text-gray-800">John Doe</p> |
|
<p class="mt-1 text-gray-700">Thanks for the suggestion! What specific padding values would you recommend?</p> |
|
</div> |
|
</div> |
|
</div> |
|
|
|
|
|
<div class="chat-message ai p-3 rounded-lg"> |
|
<div class="flex items-start space-x-3"> |
|
<div class="h-8 w-8 rounded-full bg-green-100 flex items-center justify-center"> |
|
<i class="fas fa-robot text-green-500"></i> |
|
</div> |
|
<div> |
|
<p class="font-medium text-green-600">Dev Assistant</p> |
|
<p class="mt-1 text-gray-700">Based on current mobile design trends, I'd recommend 16px padding on the sides and 12px between elements.</p> |
|
</div> |
|
</div> |
|
</div> |
|
|
|
|
|
<div class="chat-message ai p-3 rounded-lg"> |
|
<div class="flex items-start space-x-3"> |
|
<div class="h-8 w-8 rounded-full bg-blue-100 flex items-center justify-center"> |
|
<i class="fas fa-robot text-blue-500"></i> |
|
</div> |
|
<div> |
|
<p class="font-medium text-blue-600">Project Manager AI</p> |
|
<div class="mt-1 flex space-x-2"> |
|
<div class="h-2 w-2 bg-blue-400 rounded-full animate-pulse"></div> |
|
<div class="h-2 w-2 bg-blue-400 rounded-full animate-pulse" style="animation-delay: 0.2s"></div> |
|
<div class="h-2 w-2 bg-blue-400 rounded-full animate-pulse" style="animation-delay: 0.4s"></div> |
|
</div> |
|
</div> |
|
</div> |
|
</div> |
|
</div> |
|
<div class="p-4 border-t border-gray-200"> |
|
<div class="flex items-center space-x-2"> |
|
<div class="flex-1 relative"> |
|
<input type="text" placeholder="Type your message..." class="w-full pl-4 pr-10 py-2 border border-gray-300 rounded-full focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:border-indigo-500"> |
|
<div class="absolute right-3 top-2 flex space-x-1"> |
|
<button class="p-1 text-gray-400 hover:text-indigo-600"> |
|
<i class="far fa-smile"></i> |
|
</button> |
|
<button class="p-1 text-gray-400 hover:text-indigo-600"> |
|
<i class="fas fa-paperclip"></i> |
|
</button> |
|
</div> |
|
</div> |
|
<button class="p-2 bg-indigo-600 text-white rounded-full hover:bg-indigo-700 focus:outline-none"> |
|
<i class="fas fa-paper-plane"></i> |
|
</button> |
|
</div> |
|
<div class="mt-2 flex flex-wrap gap-2"> |
|
<button class="text-xs px-2 py-1 bg-indigo-100 text-indigo-800 rounded-full hover:bg-indigo-200"> |
|
<i class="fas fa-robot mr-1"></i> Ask Design AI |
|
</button> |
|
<button class="text-xs px-2 py-1 bg-green-100 text-green-800 rounded-full hover:bg-green-200"> |
|
<i class="fas fa-robot mr-1"></i> Ask Dev AI |
|
</button> |
|
<button class="text-xs px-2 py-1 bg-blue-100 text-blue-800 rounded-full hover:bg-blue-200"> |
|
<i class="fas fa-robot mr-1"></i> Ask PM AI |
|
</button> |
|
</div> |
|
</div> |
|
</div> |
|
</div> |
|
</div> |
|
</div> |
|
</div> |
|
|
|
|
|
<button id="open-chat" class="fixed bottom-6 right-6 h-14 w-14 bg-indigo-600 text-white rounded-full shadow-lg hover:bg-indigo-700 focus:outline-none flex items-center justify-center"> |
|
<i class="fas fa-comment-dots text-xl"></i> |
|
<span class="absolute -top-1 -right-1 h-5 w-5 rounded-full bg-red-500 text-white text-xs flex items-center justify-center">3</span> |
|
</button> |
|
|
|
<script> |
|
|
|
document.getElementById('open-chat').addEventListener('click', function() { |
|
document.getElementById('chat-panel').classList.remove('hidden'); |
|
}); |
|
|
|
document.getElementById('close-chat').addEventListener('click', function() { |
|
document.getElementById('chat-panel').classList.add('hidden'); |
|
}); |
|
|
|
|
|
setTimeout(() => { |
|
const thinkingMessage = document.querySelector('.chat-message.ai:last-child'); |
|
if (thinkingMessage) { |
|
thinkingMessage.innerHTML = ` |
|
<div class="flex items-start space-x-3"> |
|
<div class="h-8 w-8 rounded-full bg-blue-100 flex items-center justify-center"> |
|
<i class="fas fa-robot text-blue-500"></i> |
|
</div> |
|
<div> |
|
<p class="font-medium text-blue-600">Project Manager AI</p> |
|
<p class="mt-1 text-gray-700">I've updated the task description with these specifications and assigned it to the design team. The estimated completion time is 2 days.</p> |
|
</div> |
|
</div> |
|
`; |
|
} |
|
}, 2000); |
|
|
|
|
|
const cards = document.querySelectorAll('.task-card'); |
|
const columns = document.querySelectorAll('.kanban-column'); |
|
|
|
cards.forEach(card => { |
|
card.setAttribute('draggable', 'true'); |
|
|
|
card.addEventListener('dragstart', () => { |
|
card.classList.add('opacity-50'); |
|
}); |
|
|
|
card.addEventListener('dragend', () => { |
|
card.classList.remove('opacity-50'); |
|
}); |
|
}); |
|
|
|
columns.forEach(column => { |
|
column.addEventListener('dragover', e => { |
|
e.preventDefault(); |
|
const draggingCard = document.querySelector('.opacity-50'); |
|
if (draggingCard) { |
|
const afterElement = getDragAfterElement(column, e.clientY); |
|
if (afterElement) { |
|
column.insertBefore(draggingCard, afterElement); |
|
} else { |
|
column.appendChild(draggingCard); |
|
} |
|
} |
|
}); |
|
}); |
|
|
|
function getDragAfterElement(column, y) { |
|
const cards = [...column.querySelectorAll('.task-card:not(.opacity-50)')]; |
|
|
|
return cards.reduce((closest, child) => { |
|
const box = child.getBoundingClientRect(); |
|
const offset = y - box.top - box.height / 2; |
|
|
|
if (offset < 0 && offset > closest.offset) { |
|
return { offset: offset, element: child }; |
|
} else { |
|
return closest; |
|
} |
|
}, { offset: Number.NEGATIVE_INFINITY }).element; |
|
} |
|
</script> |
|
<p style="border-radius: 8px; text-align: center; font-size: 12px; color: #fff; margin-top: 16px;position: fixed; left: 8px; bottom: 8px; z-index: 10; background: rgba(0, 0, 0, 0.8); padding: 4px 8px;">Made with <img src="https://enzostvs-deepsite.hf.space/logo.svg" alt="DeepSite Logo" style="width: 16px; height: 16px; vertical-align: middle;display:inline-block;margin-right:3px;filter:brightness(0) invert(1);"><a href="https://enzostvs-deepsite.hf.space" style="color: #fff;text-decoration: underline;" target="_blank" >DeepSite</a> - 🧬 <a href="https://enzostvs-deepsite.hf.space?remix=Simultaneous-Orthoganlity-In-Time/chat-with-multi-llm" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body> |
|
</html> |