updated task widget project

This commit is contained in:
liyunze 2026-08-29 15:51:25 +08:00
parent 39f526d67a
commit 2007b06974
2 changed files with 90 additions and 50 deletions

View file

@ -48,15 +48,15 @@ import Project from "./Project.astro";
<Project <Project
position="right" position="right"
href="https://github.com/liyunze-coding/chat-task-tic-overlay-infinity" href="https://github.com/liyunze-coding/rython-task-bot-v2"
title="Chat-task-tic widget" title="Multi-Task Widget"
label="View Repository" label="View Repository"
description={` description={`
Used by 100+ Twitch streamers, allow viewers and streamers Used by 100+ Twitch streamers, allow viewers and streamers
to add their own tasks to the widget for accountability! to add their own tasks to the widget for accountability!
Easy to setup and the customization possibilities are Easy to setup and the customization possibilities are
endless!`} endless!`}
tags={["HTML", "CSS", "Javascript"]} tags={["HTML", "CSS", "Javascript", "C#"]}
> >
<TaskWidget <TaskWidget
classList={` classList={`

View file

@ -1,116 +1,136 @@
<script lang="ts"> <script lang="ts">
const streamers = [ type Task = {
name: string;
completed: boolean;
};
type UserListItem = {
streamer: string;
tasks: Array<Task>;
};
const streamers: Array<UserListItem> = [
{ {
streamer: "4l1c3_0", streamer: "4l1c3_0",
task: "mental breakdance", tasks: [{ name: "mental breakdance", completed: true }],
}, },
{ {
streamer: "arcanexviii", streamer: "arcanexviii",
task: "babysit", tasks: [{ name: "babysit", completed: false }],
}, },
{ {
streamer: "brisim_claimhte", streamer: "B1obaBoba",
task: "rewrite history thesis", tasks: [{ name: "Move to Norway", completed: false }],
}, },
{ {
streamer: "Bubxmicn", streamer: "Bubxmicn",
task: "drive a truck", tasks: [
{ name: "drive a truck", completed: false },
{
name: "get Masters in Public Health degree",
completed: false,
},
],
},
{
streamer: "bunnie_bytes",
tasks: [{ name: "Work as a software developer", completed: true }],
}, },
{ {
streamer: "charliosaurus", streamer: "charliosaurus",
task: "praise the lord", tasks: [
{ name: "praise the lord", completed: true },
{ name: "graduate from university", completed: true },
],
}, },
{ {
streamer: "clari_miu", streamer: "clari_miu",
task: "be sweaty", tasks: [{ name: "be sweaty", completed: false }],
}, },
{ {
streamer: "cloudydayzzz", streamer: "cloudydayzzz",
task: "stay up at night", tasks: [{ name: "stay up at night", completed: false }],
},
{
streamer: "creativepepper",
task: "develop mobile app",
}, },
{ {
streamer: "DATJI_", streamer: "DATJI_",
task: "IRL KBBQ stream", tasks: [{ name: "IRL KBBQ stream", completed: true }],
},
{
streamer: "EarliestTea",
task: "chat about MBTI",
}, },
{ {
streamer: "Ellyskey", streamer: "Ellyskey",
task: "sell YOUthversity merch", tasks: [{ name: "sell YOUthversity merch", completed: false }],
}, },
{ {
streamer: "HarryIsTrying", streamer: "HarryIsTrying",
task: "be a strategy consultant", tasks: [{ name: "be a strategy consultant", completed: true }],
}, },
{ {
streamer: "itsbrandonut", streamer: "itsbrandonut",
task: "cowork then league", tasks: [{ name: "cowork then league", completed: false }],
}, },
{ {
streamer: "lala_xitlali", streamer: "lala_xitlali",
task: "design fashionable clothes", tasks: [{ name: "design fashionable clothes", completed: false }],
}, },
{ {
streamer: "lyricalclove", streamer: "lyricalclove",
task: "teach English", tasks: [{ name: "teach English", completed: false }],
}, },
{ {
streamer: "nachoburrit0", streamer: "nachoburrit0",
task: "update spreadsheets", tasks: [{ name: "update spreadsheets", completed: false }],
}, },
{ {
streamer: "nihn_", streamer: "nihn_",
task: "Release new Lo-fi music", tasks: [{ name: "Release new Lo-fi music", completed: false }],
}, },
{ {
streamer: "lanezzz_", streamer: "lanezzz_",
task: "be a supermodel", tasks: [{ name: "be a supermodel", completed: false }],
}, },
{ {
streamer: "PineappleEffect", streamer: "PineappleEffect",
task: "edit video", tasks: [{ name: "edit video", completed: false }],
}, },
{ {
streamer: "pinsaregood", streamer: "pinsaregood",
task: "go on another hiatus", tasks: [{ name: "go on another hiatus", completed: false }],
},
{
streamer: "potatoing_2d",
tasks: [{ name: "be a potato", completed: false }],
}, },
{ {
streamer: "lilylikesrocks", streamer: "lilylikesrocks",
task: "learn about rocks", tasks: [{ name: "learn about rocks", completed: false }],
},
{
streamer: "RythonDev",
tasks: [
{ name: "Graduate with Bachelors degree", completed: true },
{ name: "Masters in Teaching (secondary)", completed: false },
],
}, },
{ {
streamer: "snowxcone", streamer: "snowxcone",
task: "do more leetcode", tasks: [{ name: "do more leetcode", completed: false }],
}, },
{ {
streamer: "studypaws", streamer: "studypaws",
task: "be a vet", tasks: [{ name: "be a vet", completed: false }],
}, },
{ {
streamer: "sunfflawer", streamer: "sunfflawer",
task: "be a sunflower", tasks: [{ name: "be a sunflower", completed: false }],
}, },
{ {
streamer: "Supernaturalwriter", streamer: "Supernaturalwriter",
task: "hit the gym", tasks: [{ name: "hit the gym", completed: false }],
}, },
{ {
streamer: "ThePainfulPhD", streamer: "ThePainfulPhD",
task: "study about pain", tasks: [{ name: "get PhD", completed: true }],
},
{
streamer: "theyolotato",
task: "be a potato",
}, },
{ {
streamer: "xeno_hiraeth", streamer: "xeno_hiraeth",
task: "anki flashcards", tasks: [{ name: "finished med school", completed: true }],
}, },
]; ];
@ -139,22 +159,42 @@
class="scroll-parent relative h-[82%] overflow-hidden rounded-br-2xl rounded-bl-2xl font-['Fredoka',_sans-serif] lg:min-h-0" class="scroll-parent relative h-[82%] overflow-hidden rounded-br-2xl rounded-bl-2xl font-['Fredoka',_sans-serif] lg:min-h-0"
> >
<div class="scroll-element primary absolute w-full px-1"> <div class="scroll-element primary absolute w-full px-1">
{#each streamers as { streamer, task }} {#each streamers as { streamer, tasks }}
<div <div
class="my-2 w-full overflow-hidden rounded-md bg-[#404040] px-5 py-1 class="my-2 w-full overflow-hidden rounded-md bg-[#404040] px-5 py-1
text-sm overflow-ellipsis whitespace-nowrap text-white lg:text-base" text-sm overflow-ellipsis whitespace-nowrap text-white lg:text-base"
> >
O {streamer} : {task} {streamer} :
<ol class="list-inside list-decimal">
{#each tasks as task}
<li
class={task.completed
? "text-gray-400 line-through"
: "text-white"}
>
{task.name}
</li>
{/each}
</ol>
</div> </div>
{/each} {/each}
</div> </div>
<div class="scroll-element secondary absolute w-full px-1"> <div class="scroll-element secondary absolute w-full px-1">
{#each streamers as { streamer, task }} {#each streamers as { streamer, tasks }}
<div <div
class="my-2 w-full overflow-hidden rounded-md bg-[#404040] px-5 py-1 class="my-2 w-full overflow-hidden rounded-md bg-[#404040] px-5 py-1
text-sm overflow-ellipsis whitespace-nowrap text-white lg:text-base" text-sm overflow-ellipsis whitespace-nowrap text-white lg:text-base"
> >
O {streamer} : {task} {streamer} :
<ol class="list-inside list-decimal">
{#each tasks as task}
<li
class={task.completed ? "line-through" : ""}
>
{task.name}
</li>
{/each}
</ol>
</div> </div>
{/each} {/each}
</div> </div>
@ -202,11 +242,11 @@
} }
.primary { .primary {
animation: primary 20s linear infinite; animation: primary 30s linear infinite;
} }
.secondary { .secondary {
animation: secondary 20s linear infinite; animation: secondary 30s linear infinite;
} }
@keyframes primary { @keyframes primary {
@ -214,13 +254,13 @@
transform: translateY(0); transform: translateY(0);
} }
to { to {
transform: translateY(-1175px); transform: translateY(-1890px);
} }
} }
@keyframes secondary { @keyframes secondary {
from { from {
transform: translateY(1175px); transform: translateY(1890px);
} }
to { to {
transform: translateY(0); transform: translateY(0);