213 lines
6.5 KiB
TypeScript
213 lines
6.5 KiB
TypeScript
type Channel = 'Slack' | 'LINE' | 'Gmail'
|
||
|
||
export type Conversation = {
|
||
id: string
|
||
name: string
|
||
role: string
|
||
subject: string
|
||
channels: Channel[]
|
||
replyChannel: Channel
|
||
updatedAt: string
|
||
deadline?: string
|
||
summary: string
|
||
nextStep: string
|
||
messages: {
|
||
id: string
|
||
channel: Channel
|
||
text: string
|
||
time: string
|
||
direction: 'in' | 'out'
|
||
}[]
|
||
facts: { text: string; sourceId: string }[]
|
||
drafts: { label: string; text: string }[]
|
||
scheduleOptions: string[]
|
||
}
|
||
|
||
// All contacts, conversations and proposed appointments are fictional UI samples.
|
||
export const conversations: Conversation[] = [
|
||
{
|
||
id: 'design-review',
|
||
name: 'Haruka Aoki',
|
||
role: 'Product designer',
|
||
subject: 'Schedule next week’s design review',
|
||
channels: ['Slack', 'Gmail'],
|
||
replyChannel: 'Slack',
|
||
updatedAt: '10:42',
|
||
deadline: 'Sep 29, 17:00',
|
||
summary:
|
||
'A request to review the new screens. The materials arrived by email, and Haruka is waiting on Slack to arrange a 30-minute review.',
|
||
nextStep: 'Review the materials and suggest a time for a 30-minute call.',
|
||
messages: [
|
||
{
|
||
id: 'aoki-1',
|
||
channel: 'Gmail',
|
||
time: 'Sep 27, 16:20',
|
||
direction: 'in',
|
||
text: 'Sharing the screens for review. I would especially appreciate your thoughts on the first-time experience. The review should take about 30 minutes.',
|
||
},
|
||
{
|
||
id: 'aoki-2',
|
||
channel: 'Slack',
|
||
time: 'Sep 28, 10:42',
|
||
direction: 'in',
|
||
text: 'Could we find a time next week for the review I emailed yesterday? Please send a few options by September 29 at 17:00. An afternoon would be ideal.',
|
||
},
|
||
],
|
||
facts: [
|
||
{
|
||
text: 'The review should take 30 minutes.',
|
||
sourceId: 'aoki-1',
|
||
},
|
||
{
|
||
text: 'An afternoon is preferred for this review.',
|
||
sourceId: 'aoki-2',
|
||
},
|
||
],
|
||
drafts: [
|
||
{
|
||
label: 'Brief',
|
||
text: 'Thanks for the materials! I will take a look. Let’s find 30 minutes one afternoon next week.',
|
||
},
|
||
{
|
||
label: 'Polite',
|
||
text: 'Thank you for sharing the materials. I will focus on the first-time experience. Would you have 30 minutes one afternoon next week?',
|
||
},
|
||
{
|
||
label: 'Acknowledge',
|
||
text: 'Thanks for getting in touch. I have the materials and will check my schedule and reply by September 29 at 17:00.',
|
||
},
|
||
],
|
||
scheduleOptions: ['Mon, Oct 5, 14:00–14:30', 'Tue, Oct 6, 15:00–15:30'],
|
||
},
|
||
{
|
||
id: 'weekend-coffee',
|
||
name: 'Naoto Mori',
|
||
role: 'Friend',
|
||
subject: 'Catch up over coffee',
|
||
channels: ['LINE'],
|
||
replyChannel: 'LINE',
|
||
updatedAt: 'Yesterday',
|
||
summary:
|
||
'An invitation to meet for coffee while Naoto is nearby. There is no rush to reply.',
|
||
nextStep:
|
||
'Share your availability if you would like to meet. You do not need to decide right now.',
|
||
messages: [
|
||
{
|
||
id: 'mori-1',
|
||
channel: 'LINE',
|
||
time: 'Sep 27, 19:15',
|
||
direction: 'in',
|
||
text: 'I might be in your area next week. Want to grab coffee if our schedules line up? Saturday afternoon works for me. No rush—let me know when you know!',
|
||
},
|
||
],
|
||
facts: [
|
||
{
|
||
text: 'Saturday afternoon is available this time.',
|
||
sourceId: 'mori-1',
|
||
},
|
||
],
|
||
drafts: [
|
||
{
|
||
label: 'Brief',
|
||
text: 'Sounds good, it would be great to catch up! I will check Saturday afternoon.',
|
||
},
|
||
{
|
||
label: 'Polite',
|
||
text: 'Thanks for the invitation! I would love to grab coffee. I will check my plans for Saturday afternoon and let you know.',
|
||
},
|
||
{
|
||
label: 'Acknowledge',
|
||
text: 'Thanks! I am not sure about my schedule yet, but I will let you know.',
|
||
},
|
||
],
|
||
scheduleOptions: ['Sat, Oct 3, 14:00–15:00', 'Sat, Oct 3, 16:00–17:00'],
|
||
},
|
||
{
|
||
id: 'estimate-check',
|
||
name: 'Risa Fujii',
|
||
role: 'Project partner',
|
||
subject: 'Confirm the scope for an estimate',
|
||
channels: ['Gmail'],
|
||
replyChannel: 'Gmail',
|
||
updatedAt: '9:10',
|
||
deadline: 'Sep 30, 12:00',
|
||
summary:
|
||
'Risa needs confirmation that the project covers three screens before preparing an estimate. Please reply by noon on September 30.',
|
||
nextStep:
|
||
'Confirm the number of screens before replying. Avoid committing before checking.',
|
||
messages: [
|
||
{
|
||
id: 'fujii-1',
|
||
channel: 'Gmail',
|
||
time: 'Sep 28, 9:10',
|
||
direction: 'in',
|
||
text: 'Before preparing an estimate, could you confirm that the scope is the list, detail, and settings screens? If you can confirm by noon on September 30, I can send the estimate the same day.',
|
||
},
|
||
],
|
||
facts: [
|
||
{
|
||
text: 'The estimate will be prepared after the screen count is confirmed.',
|
||
sourceId: 'fujii-1',
|
||
},
|
||
],
|
||
drafts: [
|
||
{
|
||
label: 'Brief',
|
||
text: 'Thanks. I will check the three screens and reply by noon on September 30.',
|
||
},
|
||
{
|
||
label: 'Polite',
|
||
text: 'Thank you for checking. I will confirm whether the list, detail, and settings screens cover the scope and reply by noon on September 30.',
|
||
},
|
||
{
|
||
label: 'Acknowledge',
|
||
text: 'Thanks for your message. I will check the scope and get back to you.',
|
||
},
|
||
],
|
||
scheduleOptions: [],
|
||
},
|
||
{
|
||
id: 'reading-note',
|
||
name: 'Yu Tanabe',
|
||
role: 'Study group friend',
|
||
subject: 'The article we talked about',
|
||
channels: ['Slack'],
|
||
replyChannel: 'Slack',
|
||
updatedAt: 'Friday',
|
||
summary:
|
||
'Yu shared an article discussed at the last study group. There are no questions or requests for a reply.',
|
||
nextStep:
|
||
'If you do not have time to read it, you can close this without replying.',
|
||
messages: [
|
||
{
|
||
id: 'tanabe-1',
|
||
channel: 'Slack',
|
||
time: 'Sep 25, 18:30',
|
||
direction: 'in',
|
||
text: 'Found the article we discussed about getting work done with fewer tools! Read it when you have time. No reply needed.',
|
||
},
|
||
],
|
||
facts: [
|
||
{
|
||
text: 'This message explicitly says no reply is needed.',
|
||
sourceId: 'tanabe-1',
|
||
},
|
||
],
|
||
drafts: [
|
||
{
|
||
label: 'Brief',
|
||
text: 'Thanks for sharing! I will read it later.',
|
||
},
|
||
{
|
||
label: 'Polite',
|
||
text: 'Thanks for remembering. I have been thinking about this topic, so I will set aside some time to read it.',
|
||
},
|
||
{
|
||
label: 'Acknowledge',
|
||
text: 'Thanks, got it!',
|
||
},
|
||
],
|
||
scheduleOptions: [],
|
||
},
|
||
]
|