Skip to content

Commit e692a63

Browse files
committed
feat: add task component
1 parent 3051a8e commit e692a63

File tree

14 files changed

+675
-0
lines changed

14 files changed

+675
-0
lines changed

apps/test/app/examples/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,4 @@ export { default as Message } from './message.vue'
99
export { default as PromptInput } from './prompt-input.vue'
1010
export { default as Response } from './response.vue'
1111
export { default as Shimmer } from './shimmer.vue'
12+
export { default as Task } from './task.vue'

apps/test/app/examples/task.vue

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
<script setup lang="ts">
2+
import { Task, TaskContent, TaskItem, TaskItemFile, TaskTrigger } from '@repo/elements/task'
3+
import { nanoid } from 'nanoid'
4+
import { ref } from 'vue'
5+
6+
interface TaskEntry {
7+
key: string
8+
type?: 'text' | 'file'
9+
text?: string
10+
filename?: string
11+
}
12+
13+
const tasks = ref<TaskEntry[]>([
14+
{ key: nanoid(), text: 'Searching "app/page.tsx, components structure"' },
15+
{ key: nanoid(), type: 'file', text: 'Read', filename: 'index.vue' },
16+
{ key: nanoid(), text: 'Scanning 52 files' },
17+
{ key: nanoid(), text: 'Scanning 2 files' },
18+
{ key: nanoid(), type: 'file', text: 'Reading files', filename: 'layout.vue' },
19+
])
20+
</script>
21+
22+
<template>
23+
<div style="height: 200px">
24+
<Task class="w-full">
25+
<TaskTrigger title="Found project files" />
26+
<TaskContent>
27+
<TaskItem
28+
v-for="task in tasks"
29+
:key="task.key"
30+
>
31+
<!-- If task is text -->
32+
<template v-if="!task.type">
33+
{{ task.text }}
34+
</template>
35+
36+
<!-- If task includes a file -->
37+
<template v-else>
38+
<span class="inline-flex items-center gap-1">
39+
{{ task.text }}
40+
<TaskItemFile>
41+
<svg
42+
viewBox="0 0 32 32"
43+
fill="none"
44+
xmlns="http://www.w3.org/2000/svg"
45+
class="size-4"
46+
>
47+
<path d="M2 4L16 28L30 4H24.5L16 18.5L7.5 4H2Z" fill="#41B883" />
48+
<path
49+
d="M7.5 4L16 18.5L24.5 4H19.5L16.0653 10.0126L12.5 4H7.5Z"
50+
fill="#35495E"
51+
/>
52+
</svg>
53+
<span>{{ task.filename }}</span>
54+
</TaskItemFile>
55+
</span>
56+
</template>
57+
</TaskItem>
58+
</TaskContent>
59+
</Task>
60+
</div>
61+
</template>

apps/test/app/pages/index.vue

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import Message from '~/examples/message.vue'
1111
import PromptInput from '~/examples/prompt-input.vue'
1212
import Response from '~/examples/response.vue'
1313
import Shimmer from '~/examples/shimmer.vue'
14+
import Task from '~/examples/task.vue'
1415
1516
const components = [
1617
{ name: 'Message', Component: Message },
@@ -24,6 +25,7 @@ const components = [
2425
{ name: 'CodeBlock', Component: CodeBlock },
2526
{ name: 'Image', Component: Image },
2627
{ name: 'Shimmer', Component: Shimmer },
28+
{ name: 'Task', Component: Task },
2729
]
2830
</script>
2931

0 commit comments

Comments
 (0)