検索

Chat

このページは現在調整中です
Lism UI (@lism-css/ui) はまだ準備中です。

チャットの会話のような見た目でコンテンツを表示するコンポーネントです。

Preview
Taro

ロレム・イプサムの座り雨。目まぐるしい文章の流れの中で、それは静かに歩く仮の言葉です。Elitも穏やかに続いていきますが、積み重ねられてきた「LiberroyとFoogの取り組み」は、余白のようなものです。

リサイズ可能
<Chat name='Taro' avatar='https://cdn.lism-css.com/img/avatar/a-01.jpg'>
<p>ロレム・イプサムの座り雨。目まぐるしい文章の流れの中で、それは静かに歩く仮の言葉です。Elitも穏やかに続いていきますが、積み重ねられてきた「LiberroyとFoogの取り組み」は、余白のようなものです。</p>
</Chat>

How to use

@lism-css/ui パッケージでChat(.c--chat)として提供しています。

Import

import { Chat } from '@lism-css/ui/react';

Props

プロパティ説明
avatarチャットアバター画像のsrcを指定します。
nameチャットに表示する名前を指定します。
variantチャットタイプを指定できます。speak または think を例では用意しています。
directionチャットの表示位置を指定します。startまたはendを指定します。
keycolorチャットボックスのキーカラーを指定します。
flowコンテンツを囲む要素(c--chat_content)に渡されます

Source Code

@layer lism.modules {
	.c--chat {
		--cbox-bgPct: 8%;
		--gta: 'avatar name' 'avatar body';
		--gtc: auto 1fr;
		--gtr: minmax(1.5rem, auto) auto;
		--_avator-size: clamp(48px, 32px + 5cqw, 64px); /* @320px:40px ~ @640:64px */
		--_deco-size: calc(min(var(--_avator-size), 80px) / 4 + 0.25rem);
		--_deco-mask: none;
		--_deco-t: 0;
		--_deco-scale: 1;
		--_deco-inset-x: 0;

		gap: 0 calc(var(--_deco-size) + 1px);
	}

	.c--chat_avatar {
		grid-area: avatar;
		width: var(--_avator-size);
	}
	.c--chat_name {
		grid-area: name;
	}
	.c--chat_body {
		grid-area: body;
	}
	.c--chat_content {
		max-width: var(--sz--s);
	}

	.c--chat_deco {
		top: var(--_deco-t);
		inset-inline: var(--_deco-inset-x);
		width: var(--_deco-size);
		height: var(--_deco-size);
		scale: var(--_deco-scale);
		mask: var(--_deco-mask) center / contain no-repeat;
	}
	.c--chat--speak {
		--_deco-mask: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="8" height="8"><path d="M8,8L8,8C7.4,4.8,5.4,2,2.6,0.4L2,0h6V8z"/></svg>');
	}

	[data-chat-dir='start'] {
		--_deco-inset-x: auto calc(100% - 1px);
	}
	[data-chat-dir='end'] {
		--_deco-scale: -1 1;
		--_deco-inset-x: calc(100% - 1px) auto;
		--gta: 'name avatar' 'body avatar';
		--gtc: 1fr auto;
	}
}

/* NOTE: 以下は @layer 外に配置(セレクタの詳細度を確保するため) */

/* speak バリアントの角丸調整: 左側 */
.c--chat--speak[data-chat-dir='start'] > div > .c--chat_content {
	border-start-start-radius: 0;
}

/* speak バリアントの角丸調整: 右側 */
.c--chat--speak[data-chat-dir='end'] > div > .c--chat_content {
	border-start-end-radius: 0;
}

Examples

<Chat>の使用例
Taro

ロレム・イプサムの座り雨。目まぐるしい文章の流れの中で、それは静かに歩く仮の言葉です。Elitも穏やかに続いていきますが、積み重ねられてきた「LiberroyとFoogの取り組み」は、余白のようなものです。

Hanako

ロレム・イプサムの座り雨、それは静かに歩く仮の言葉です。長いあいだ積み重ねられてきたLiberroyFoogの取り組み」は、私たちに一定の示唆を与えてくれます。

ロレム・イプサムの座り雨。目まぐるしい文章の流れの中で、それは静かに歩く仮の言葉です。Elitも穏やかに続いていきますが、積み重ねられてきた「LiberroyとFoogの取り組み」は、余白のようなものです。

リサイズ可能
<Chat name='Taro' avatar='https://cdn.lism-css.com/img/avatar/a-01.jpg'>
<Dummy lang='ja' />
</Chat>
<Chat direction='end' name='Hanako' avatar='https://cdn.lism-css.com/img/avatar/a-02.jpg' keycolor='green'>
<Dummy lang='ja' length='codes' />
</Chat>

Opt-in

variant=‘think’

発言ではなく心の中で思っていることを表現する場合に使用できるようなスタイルを追加する例です。

variant='think'
Name B

Lorem ipsum dolor sit amet.

Name B

Lorem ipsum dolor sit amet. consectetur adipisicing elit, sed do eiusmod tempor. Non facere Laudantium ex eos doloribus aut dolore nisi provident.

リサイズ可能
<Chat variant='think' name='Name B' avatar='https://cdn.lism-css.com/img/avatar/a-01.jpg' keycolor='blue'>
<Dummy length='s' />
</Chat>
<Chat variant='think' direction='end' name='Name B' avatar='https://cdn.lism-css.com/img/avatar/a-02.jpg' keycolor='purple'>
<Dummy length='codes' />
</Chat>

© Lism CSS. All rights reserved.