You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			494 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			Markdown
		
	
			
		
		
	
	
			494 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			Markdown
		
	
#### With name and profile
 | 
						|
 | 
						|
```jsx
 | 
						|
<util.LeftPaneContext theme={util.theme}>
 | 
						|
  <ConversationListItem
 | 
						|
    id="conversationId1"
 | 
						|
    name="Someone 🔥 Somewhere"
 | 
						|
    conversationType={'direct'}
 | 
						|
    phoneNumber="(202) 555-0011"
 | 
						|
    avatarPath={util.gifObjectUrl}
 | 
						|
    lastUpdated={Date.now() - 5 * 60 * 1000}
 | 
						|
    lastMessage={{
 | 
						|
      text: "What's going on?",
 | 
						|
      status: 'sent',
 | 
						|
    }}
 | 
						|
    onClick={result => console.log('onClick', result)}
 | 
						|
    i18n={util.i18n}
 | 
						|
  />
 | 
						|
</util.LeftPaneContext>
 | 
						|
```
 | 
						|
 | 
						|
#### Profile, with name, no avatar
 | 
						|
 | 
						|
```jsx
 | 
						|
<util.LeftPaneContext theme={util.theme}>
 | 
						|
  <ConversationListItem
 | 
						|
    id="conversationId1"
 | 
						|
    phoneNumber="(202) 555-0011"
 | 
						|
    conversationType={'direct'}
 | 
						|
    name="Mr. Fire🔥"
 | 
						|
    color="green"
 | 
						|
    lastUpdated={Date.now() - 5 * 60 * 1000}
 | 
						|
    lastMessage={{
 | 
						|
      text: 'Just a second',
 | 
						|
      status: 'read',
 | 
						|
    }}
 | 
						|
    onClick={result => console.log('onClick', result)}
 | 
						|
    i18n={util.i18n}
 | 
						|
  />
 | 
						|
</util.LeftPaneContext>
 | 
						|
```
 | 
						|
 | 
						|
#### Conversation with yourself
 | 
						|
 | 
						|
```jsx
 | 
						|
<util.LeftPaneContext theme={util.theme}>
 | 
						|
  <ConversationListItem
 | 
						|
    id="conversationId1"
 | 
						|
    isMe={true}
 | 
						|
    phoneNumber="(202) 555-0011"
 | 
						|
    conversationType={'direct'}
 | 
						|
    name="Mr. Fire🔥"
 | 
						|
    color="green"
 | 
						|
    lastUpdated={Date.now() - 5 * 60 * 1000}
 | 
						|
    lastMessage={{
 | 
						|
      text: 'Just a second',
 | 
						|
      status: 'read',
 | 
						|
    }}
 | 
						|
    onClick={result => console.log('onClick', result)}
 | 
						|
    i18n={util.i18n}
 | 
						|
  />
 | 
						|
</util.LeftPaneContext>
 | 
						|
```
 | 
						|
 | 
						|
#### All types of status
 | 
						|
 | 
						|
```jsx
 | 
						|
<util.LeftPaneContext theme={util.theme}>
 | 
						|
  <div>
 | 
						|
    <ConversationListItem
 | 
						|
      id="conversationId1"
 | 
						|
      phoneNumber="(202) 555-0011"
 | 
						|
      conversationType={'direct'}
 | 
						|
      name="Mr. Fire🔥"
 | 
						|
      color="green"
 | 
						|
      lastUpdated={Date.now() - 5 * 60 * 1000}
 | 
						|
      lastMessage={{
 | 
						|
        text: 'Sending',
 | 
						|
        status: 'sending',
 | 
						|
      }}
 | 
						|
      onClick={result => console.log('onClick', result)}
 | 
						|
      i18n={util.i18n}
 | 
						|
    />
 | 
						|
    <ConversationListItem
 | 
						|
      id="conversationId2"
 | 
						|
      phoneNumber="(202) 555-0011"
 | 
						|
      conversationType={'direct'}
 | 
						|
      name="Mr. Fire🔥"
 | 
						|
      color="green"
 | 
						|
      lastUpdated={Date.now() - 5 * 60 * 1000}
 | 
						|
      lastMessage={{
 | 
						|
        text: 'Sent',
 | 
						|
        status: 'sent',
 | 
						|
      }}
 | 
						|
      onClick={result => console.log('onClick', result)}
 | 
						|
      i18n={util.i18n}
 | 
						|
    />
 | 
						|
    <ConversationListItem
 | 
						|
      id="conversationId3"
 | 
						|
      phoneNumber="(202) 555-0011"
 | 
						|
      conversationType={'direct'}
 | 
						|
      name="Mr. Fire🔥"
 | 
						|
      color="green"
 | 
						|
      lastUpdated={Date.now() - 5 * 60 * 1000}
 | 
						|
      lastMessage={{
 | 
						|
        text: 'Delivered',
 | 
						|
        status: 'delivered',
 | 
						|
      }}
 | 
						|
      onClick={result => console.log('onClick', result)}
 | 
						|
      i18n={util.i18n}
 | 
						|
    />
 | 
						|
    <ConversationListItem
 | 
						|
      id="conversationId4"
 | 
						|
      phoneNumber="(202) 555-0011"
 | 
						|
      conversationType={'direct'}
 | 
						|
      name="Mr. Fire🔥"
 | 
						|
      color="green"
 | 
						|
      lastUpdated={Date.now() - 5 * 60 * 1000}
 | 
						|
      lastMessage={{
 | 
						|
        text: 'Read',
 | 
						|
        status: 'read',
 | 
						|
      }}
 | 
						|
      onClick={result => console.log('onClick', result)}
 | 
						|
      i18n={util.i18n}
 | 
						|
    />
 | 
						|
    <ConversationListItem
 | 
						|
      id="conversationId5"
 | 
						|
      phoneNumber="(202) 555-0011"
 | 
						|
      conversationType={'direct'}
 | 
						|
      name="Mr. Fire🔥"
 | 
						|
      color="green"
 | 
						|
      lastUpdated={Date.now() - 5 * 60 * 1000}
 | 
						|
      lastMessage={{
 | 
						|
        text: 'Error',
 | 
						|
        status: 'error',
 | 
						|
      }}
 | 
						|
      onClick={result => console.log('onClick', result)}
 | 
						|
      i18n={util.i18n}
 | 
						|
    />
 | 
						|
  </div>
 | 
						|
</util.LeftPaneContext>
 | 
						|
```
 | 
						|
 | 
						|
#### Is typing
 | 
						|
 | 
						|
```jsx
 | 
						|
<util.LeftPaneContext theme={util.theme}>
 | 
						|
  <div>
 | 
						|
    <ConversationListItem
 | 
						|
      id="conversationId1"
 | 
						|
      phoneNumber="(202) 555-0011"
 | 
						|
      conversationType={'direct'}
 | 
						|
      unreadCount={4}
 | 
						|
      lastUpdated={Date.now() - 5 * 60 * 1000}
 | 
						|
      isTyping={true}
 | 
						|
      onClick={result => console.log('onClick', result)}
 | 
						|
      i18n={util.i18n}
 | 
						|
    />
 | 
						|
  </div>
 | 
						|
  <div>
 | 
						|
    <ConversationListItem
 | 
						|
      id="conversationId2"
 | 
						|
      phoneNumber="(202) 555-0011"
 | 
						|
      conversationType={'direct'}
 | 
						|
      unreadCount={4}
 | 
						|
      lastUpdated={Date.now() - 5 * 60 * 1000}
 | 
						|
      isTyping={true}
 | 
						|
      lastMessage={{
 | 
						|
        status: 'read',
 | 
						|
      }}
 | 
						|
      onClick={result => console.log('onClick', result)}
 | 
						|
      i18n={util.i18n}
 | 
						|
    />
 | 
						|
  </div>
 | 
						|
</util.LeftPaneContext>
 | 
						|
```
 | 
						|
 | 
						|
#### Selected
 | 
						|
 | 
						|
#### With unread
 | 
						|
 | 
						|
```jsx
 | 
						|
<util.LeftPaneContext theme={util.theme}>
 | 
						|
  <div>
 | 
						|
    <ConversationListItem
 | 
						|
      id="conversationId1"
 | 
						|
      phoneNumber="(202) 555-0011"
 | 
						|
      conversationType={'direct'}
 | 
						|
      unreadCount={4}
 | 
						|
      lastUpdated={Date.now() - 5 * 60 * 1000}
 | 
						|
      lastMessage={{
 | 
						|
        text: 'Hey there!',
 | 
						|
      }}
 | 
						|
      onClick={result => console.log('onClick', result)}
 | 
						|
      i18n={util.i18n}
 | 
						|
    />
 | 
						|
    <ConversationListItem
 | 
						|
      id="conversationId2"
 | 
						|
      phoneNumber="(202) 555-0011"
 | 
						|
      conversationType={'direct'}
 | 
						|
      unreadCount={10}
 | 
						|
      lastUpdated={Date.now() - 5 * 60 * 1000}
 | 
						|
      lastMessage={{
 | 
						|
        text: 'Hey there!',
 | 
						|
      }}
 | 
						|
      onClick={result => console.log('onClick', result)}
 | 
						|
      i18n={util.i18n}
 | 
						|
    />
 | 
						|
    <ConversationListItem
 | 
						|
      id="conversationId3"
 | 
						|
      phoneNumber="(202) 555-0011"
 | 
						|
      conversationType={'direct'}
 | 
						|
      unreadCount={250}
 | 
						|
      lastUpdated={Date.now() - 5 * 60 * 1000}
 | 
						|
      lastMessage={{
 | 
						|
        text: 'Hey there!',
 | 
						|
      }}
 | 
						|
      onClick={result => console.log('onClick', result)}
 | 
						|
      i18n={util.i18n}
 | 
						|
    />
 | 
						|
  </div>
 | 
						|
</util.LeftPaneContext>
 | 
						|
```
 | 
						|
 | 
						|
#### Selected
 | 
						|
 | 
						|
```jsx
 | 
						|
<util.LeftPaneContext theme={util.theme}>
 | 
						|
  <ConversationListItem
 | 
						|
    id="conversationId1"
 | 
						|
    phoneNumber="(202) 555-0011"
 | 
						|
    conversationType={'direct'}
 | 
						|
    isSelected={true}
 | 
						|
    lastUpdated={Date.now() - 5 * 60 * 1000}
 | 
						|
    lastMessage={{
 | 
						|
      text: 'Hey there!',
 | 
						|
    }}
 | 
						|
    onClick={result => console.log('onClick', result)}
 | 
						|
    i18n={util.i18n}
 | 
						|
  />
 | 
						|
</util.LeftPaneContext>
 | 
						|
```
 | 
						|
 | 
						|
#### With emoji/links in message, no status
 | 
						|
 | 
						|
We don't want Jumbomoji or links.
 | 
						|
 | 
						|
```jsx
 | 
						|
<util.LeftPaneContext theme={util.theme}>
 | 
						|
  <div>
 | 
						|
    <ConversationListItem
 | 
						|
      id="conversationId1"
 | 
						|
      phoneNumber="(202) 555-0011"
 | 
						|
      conversationType={'direct'}
 | 
						|
      lastUpdated={Date.now() - 5 * 60 * 1000}
 | 
						|
      lastMessage={{
 | 
						|
        text: 'Download at http://signal.org',
 | 
						|
      }}
 | 
						|
      onClick={result => console.log('onClick', result)}
 | 
						|
      i18n={util.i18n}
 | 
						|
    />
 | 
						|
    <ConversationListItem
 | 
						|
      id="conversationId2"
 | 
						|
      phoneNumber="(202) 555-0011"
 | 
						|
      conversationType={'direct'}
 | 
						|
      lastUpdated={Date.now() - 5 * 60 * 1000}
 | 
						|
      lastMessage={{
 | 
						|
        text: '🔥',
 | 
						|
      }}
 | 
						|
      onClick={result => console.log('onClick', result)}
 | 
						|
      i18n={util.i18n}
 | 
						|
    />
 | 
						|
  </div>
 | 
						|
</util.LeftPaneContext>
 | 
						|
```
 | 
						|
 | 
						|
#### Long content
 | 
						|
 | 
						|
We only show one line.
 | 
						|
 | 
						|
```jsx
 | 
						|
<util.LeftPaneContext theme={util.theme}>
 | 
						|
  <div>
 | 
						|
    <ConversationListItem
 | 
						|
      id="conversationId1"
 | 
						|
      phoneNumber="(202) 555-0011"
 | 
						|
      conversationType={'direct'}
 | 
						|
      name="Long contact name. Esquire. The third. And stuff. And more! And more!"
 | 
						|
      lastUpdated={Date.now() - 5 * 60 * 1000}
 | 
						|
      lastMessage={{
 | 
						|
        text: 'Normal message',
 | 
						|
      }}
 | 
						|
      onClick={result => console.log('onClick', result)}
 | 
						|
      i18n={util.i18n}
 | 
						|
    />
 | 
						|
    <ConversationListItem
 | 
						|
      id="conversationId2"
 | 
						|
      phoneNumber="(202) 555-0011"
 | 
						|
      conversationType={'direct'}
 | 
						|
      lastUpdated={Date.now() - 5 * 60 * 1000}
 | 
						|
      lastMessage={{
 | 
						|
        text:
 | 
						|
          "Long line. This is a really really really long line. Really really long. Because that's just how it is",
 | 
						|
      }}
 | 
						|
      onClick={result => console.log('onClick', result)}
 | 
						|
      i18n={util.i18n}
 | 
						|
    />
 | 
						|
    <ConversationListItem
 | 
						|
      id="conversationId3"
 | 
						|
      phoneNumber="(202) 555-0011"
 | 
						|
      conversationType={'direct'}
 | 
						|
      lastUpdated={Date.now() - 5 * 60 * 1000}
 | 
						|
      lastMessage={{
 | 
						|
        text:
 | 
						|
          "Long line. This is a really really really long line. Really really long. Because that's just how it is",
 | 
						|
        status: 'read',
 | 
						|
      }}
 | 
						|
      onClick={result => console.log('onClick', result)}
 | 
						|
      i18n={util.i18n}
 | 
						|
    />
 | 
						|
 | 
						|
    <ConversationListItem
 | 
						|
      id="conversationId4"
 | 
						|
      phoneNumber="(202) 555-0011"
 | 
						|
      conversationType={'direct'}
 | 
						|
      lastUpdated={Date.now() - 5 * 60 * 1000}
 | 
						|
      unreadCount={8}
 | 
						|
      lastMessage={{
 | 
						|
        text:
 | 
						|
          "Long line. This is a really really really long line. Really really long. Because that's just how it is",
 | 
						|
      }}
 | 
						|
      onClick={result => console.log('onClick', result)}
 | 
						|
      i18n={util.i18n}
 | 
						|
    />
 | 
						|
    <ConversationListItem
 | 
						|
      id="conversationId5"
 | 
						|
      phoneNumber="(202) 555-0011"
 | 
						|
      conversationType={'direct'}
 | 
						|
      lastUpdated={Date.now() - 5 * 60 * 1000}
 | 
						|
      lastMessage={{
 | 
						|
        text:
 | 
						|
          "Many lines. This is a many-line message.\nLine 2 is really exciting but it shouldn't be seen.\nLine three is even better.\nLine 4, well.",
 | 
						|
      }}
 | 
						|
      onClick={result => console.log('onClick', result)}
 | 
						|
      i18n={util.i18n}
 | 
						|
    />
 | 
						|
    <ConversationListItem
 | 
						|
      id="conversationId6"
 | 
						|
      phoneNumber="(202) 555-0011"
 | 
						|
      conversationType={'direct'}
 | 
						|
      lastUpdated={Date.now() - 5 * 60 * 1000}
 | 
						|
      lastMessage={{
 | 
						|
        text:
 | 
						|
          "Many lines. This is a many-line message.\nLine 2 is really exciting but it shouldn't be seen.\nLine three is even better.\nLine 4, well.",
 | 
						|
        status: 'delivered',
 | 
						|
      }}
 | 
						|
      onClick={result => console.log('onClick', result)}
 | 
						|
      i18n={util.i18n}
 | 
						|
    />
 | 
						|
  </div>
 | 
						|
</util.LeftPaneContext>
 | 
						|
```
 | 
						|
 | 
						|
#### More narrow
 | 
						|
 | 
						|
On platforms that show scrollbars all the time, this is true all the time.
 | 
						|
 | 
						|
```jsx
 | 
						|
<util.LeftPaneContext theme={util.theme}>
 | 
						|
  <div style={{ width: '280px' }}>
 | 
						|
    <ConversationListItem
 | 
						|
      id="conversationId1"
 | 
						|
      phoneNumber="(202) 555-0011"
 | 
						|
      conversationType={'direct'}
 | 
						|
      name="Long contact name. Esquire. The third. And stuff. And more! And more!"
 | 
						|
      lastUpdated={Date.now() - 5 * 60 * 1000}
 | 
						|
      lastMessage={{
 | 
						|
        text: 'Normal message',
 | 
						|
      }}
 | 
						|
      onClick={result => console.log('onClick', result)}
 | 
						|
      i18n={util.i18n}
 | 
						|
    />
 | 
						|
    <ConversationListItem
 | 
						|
      id="conversationId2"
 | 
						|
      phoneNumber="(202) 555-0011"
 | 
						|
      conversationType={'direct'}
 | 
						|
      lastUpdated={Date.now() - 5 * 60 * 1000}
 | 
						|
      lastMessage={{
 | 
						|
        text:
 | 
						|
          "Long line. This is a really really really long line. Really really long. Because that's just how it is",
 | 
						|
      }}
 | 
						|
      onClick={result => console.log('onClick', result)}
 | 
						|
      i18n={util.i18n}
 | 
						|
    />
 | 
						|
  </div>
 | 
						|
</util.LeftPaneContext>
 | 
						|
```
 | 
						|
 | 
						|
#### With various ages
 | 
						|
 | 
						|
```jsx
 | 
						|
<util.LeftPaneContext theme={util.theme}>
 | 
						|
  <div>
 | 
						|
    <ConversationListItem
 | 
						|
      id="conversationId1"
 | 
						|
      phoneNumber="(202) 555-0011"
 | 
						|
      conversationType={'direct'}
 | 
						|
      lastUpdated={Date.now() - 5 * 60 * 60 * 1000}
 | 
						|
      lastMessage={{
 | 
						|
        text: 'Five hours ago',
 | 
						|
      }}
 | 
						|
      onClick={result => console.log('onClick', result)}
 | 
						|
      i18n={util.i18n}
 | 
						|
    />
 | 
						|
    <ConversationListItem
 | 
						|
      id="conversationId2"
 | 
						|
      phoneNumber="(202) 555-0011"
 | 
						|
      conversationType={'direct'}
 | 
						|
      lastUpdated={Date.now() - 24 * 60 * 60 * 1000}
 | 
						|
      lastMessage={{
 | 
						|
        text: 'One day ago',
 | 
						|
      }}
 | 
						|
      onClick={result => console.log('onClick', result)}
 | 
						|
      i18n={util.i18n}
 | 
						|
    />
 | 
						|
    <ConversationListItem
 | 
						|
      id="conversationId3"
 | 
						|
      phoneNumber="(202) 555-0011"
 | 
						|
      conversationType={'direct'}
 | 
						|
      lastUpdated={Date.now() - 7 * 24 * 60 * 60 * 1000}
 | 
						|
      lastMessage={{
 | 
						|
        text: 'One week ago',
 | 
						|
      }}
 | 
						|
      onClick={result => console.log('onClick', result)}
 | 
						|
      i18n={util.i18n}
 | 
						|
    />
 | 
						|
    <ConversationListItem
 | 
						|
      id="conversationId4"
 | 
						|
      phoneNumber="(202) 555-0011"
 | 
						|
      conversationType={'direct'}
 | 
						|
      lastUpdated={Date.now() - 365 * 24 * 60 * 60 * 1000}
 | 
						|
      lastMessage={{
 | 
						|
        text: 'One year ago',
 | 
						|
      }}
 | 
						|
      onClick={result => console.log('onClick', result)}
 | 
						|
      i18n={util.i18n}
 | 
						|
    />
 | 
						|
  </div>
 | 
						|
</util.LeftPaneContext>
 | 
						|
```
 | 
						|
 | 
						|
#### Missing data
 | 
						|
 | 
						|
```jsx
 | 
						|
<util.LeftPaneContext theme={util.theme}>
 | 
						|
  <div>
 | 
						|
    <ConversationListItem
 | 
						|
      id="conversationId1"
 | 
						|
      name="John"
 | 
						|
      conversationType={'direct'}
 | 
						|
      lastUpdated={null}
 | 
						|
      lastMessage={{
 | 
						|
        text: 'Missing last updated',
 | 
						|
      }}
 | 
						|
      onClick={result => console.log('onClick', result)}
 | 
						|
      i18n={util.i18n}
 | 
						|
    />
 | 
						|
    <ConversationListItem
 | 
						|
      id="conversationId2"
 | 
						|
      name="Missing message"
 | 
						|
      conversationType={'direct'}
 | 
						|
      lastUpdated={Date.now() - 5 * 60 * 1000}
 | 
						|
      lastMessage={{
 | 
						|
        text: null,
 | 
						|
      }}
 | 
						|
      onClick={result => console.log('onClick', result)}
 | 
						|
      i18n={util.i18n}
 | 
						|
    />
 | 
						|
    <ConversationListItem
 | 
						|
      id="conversationId3"
 | 
						|
      phoneNumber="(202) 555-0011"
 | 
						|
      conversationType={'direct'}
 | 
						|
      lastUpdated={Date.now() - 5 * 60 * 1000}
 | 
						|
      lastMessage={{
 | 
						|
        text: null,
 | 
						|
        status: 'sent',
 | 
						|
      }}
 | 
						|
      onClick={result => console.log('onClick', result)}
 | 
						|
      i18n={util.i18n}
 | 
						|
    />
 | 
						|
  </div>
 | 
						|
</util.LeftPaneContext>
 | 
						|
```
 |