225 lines
6.8 KiB
CSS
225 lines
6.8 KiB
CSS
/* 11. Chat Component */
|
|
.c-chat {
|
|
@apply mt-8;
|
|
|
|
.c-chat__title {
|
|
@apply text-lg font-medium;
|
|
color: var(--foreground);
|
|
}
|
|
|
|
.c-chat__list {
|
|
@apply mt-4 flex flex-col gap-3;
|
|
|
|
.c-chat__load-more {
|
|
@apply mb-4 text-center;
|
|
|
|
.c-chat__load-more-btn {
|
|
@apply text-sm font-semibold;
|
|
color: var(--primary);
|
|
|
|
&:hover {
|
|
text-decoration: underline;
|
|
}
|
|
}
|
|
}
|
|
|
|
.c-chat__message {
|
|
@apply overflow-hidden p-4 shadow-sm sm:rounded-lg;
|
|
border: 1px solid var(--border);
|
|
|
|
&.c-chat__message--system {
|
|
@apply w-full self-center border-0 bg-transparent p-0 shadow-none;
|
|
}
|
|
|
|
&.c-chat__message--own {
|
|
@apply self-end rounded-br-none text-right;
|
|
max-width: 80%;
|
|
background-color: var(--primary);
|
|
border-color: var(--primary);
|
|
|
|
.c-chat__message-header {
|
|
@apply flex-row-reverse;
|
|
}
|
|
.c-chat__message-author {
|
|
color: var(--primary-foreground);
|
|
}
|
|
.c-chat__message-time {
|
|
color: var(--primary-foreground);
|
|
opacity: 0.7;
|
|
}
|
|
.c-chat__message-text {
|
|
color: var(--primary-foreground);
|
|
}
|
|
}
|
|
|
|
&.c-chat__message--other {
|
|
@apply self-start rounded-bl-none;
|
|
max-width: 80%;
|
|
background-color: var(--muted);
|
|
border-color: var(--border);
|
|
|
|
.c-chat__message-author {
|
|
color: var(--foreground);
|
|
}
|
|
.c-chat__message-time {
|
|
color: var(--muted-foreground);
|
|
}
|
|
.c-chat__message-text {
|
|
color: var(--foreground);
|
|
}
|
|
}
|
|
|
|
.c-chat__system-inner {
|
|
@apply mx-auto flex w-fit items-center justify-center gap-2 px-3 py-1.5 text-xs;
|
|
background-color: var(--muted);
|
|
border: 1px solid var(--border);
|
|
border-radius: calc(var(--radius) - 2px);
|
|
color: var(--muted-foreground);
|
|
|
|
.c-chat__system-icon {
|
|
@apply size-3.5 shrink-0;
|
|
color: var(--muted-foreground);
|
|
}
|
|
|
|
.c-chat__system-text {
|
|
@apply font-medium;
|
|
}
|
|
|
|
.c-chat__system-time {
|
|
@apply shrink-0 text-[10px];
|
|
color: var(--muted-foreground);
|
|
}
|
|
}
|
|
|
|
.c-chat__message-header {
|
|
@apply flex justify-between;
|
|
|
|
.c-chat__message-author {
|
|
@apply font-semibold;
|
|
color: var(--foreground);
|
|
}
|
|
|
|
.c-chat__message-time {
|
|
@apply text-xs;
|
|
color: var(--muted-foreground);
|
|
}
|
|
}
|
|
|
|
.c-chat__message-text {
|
|
@apply mt-2 text-sm;
|
|
color: var(--foreground);
|
|
}
|
|
|
|
.c-chat__message-media {
|
|
@apply mt-3 flex flex-wrap gap-2;
|
|
|
|
.c-chat__media-item {
|
|
@apply relative max-w-[240px] overflow-hidden bg-black;
|
|
border-radius: calc(var(--radius) - 2px);
|
|
border: 1px solid var(--border);
|
|
|
|
.c-chat__image {
|
|
@apply h-auto max-h-[180px] w-full object-cover;
|
|
}
|
|
|
|
.c-chat__video {
|
|
@apply h-auto max-h-[180px] w-full;
|
|
}
|
|
|
|
.c-chat__play-overlay {
|
|
@apply absolute inset-0 flex items-center justify-center bg-black/40 text-2xl font-bold text-white;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
.c-chat__empty {
|
|
color: var(--muted-foreground);
|
|
}
|
|
|
|
.c-chat__form {
|
|
@apply mt-6 space-y-6;
|
|
|
|
.c-chat__form-group {
|
|
@apply space-y-2;
|
|
|
|
.c-chat__label {
|
|
@apply block text-sm font-medium;
|
|
color: var(--foreground);
|
|
}
|
|
|
|
.c-chat__textarea {
|
|
@apply mt-1 block w-full shadow-sm;
|
|
border-radius: var(--radius);
|
|
border: 1px solid var(--border);
|
|
background-color: var(--background);
|
|
color: var(--foreground);
|
|
}
|
|
|
|
.c-chat__error {
|
|
@apply text-sm;
|
|
color: var(--destructive);
|
|
}
|
|
|
|
.c-chat__attachment-container {
|
|
@apply mt-2 flex items-center;
|
|
|
|
.c-chat__attach-btn {
|
|
@apply inline-flex cursor-pointer items-center gap-1.5 text-xs transition-colors;
|
|
color: var(--muted-foreground);
|
|
|
|
&:hover {
|
|
color: var(--foreground);
|
|
}
|
|
|
|
.c-chat__attach-icon {
|
|
@apply size-3.5;
|
|
}
|
|
}
|
|
}
|
|
|
|
.c-chat__preview-list {
|
|
@apply mt-2 flex flex-wrap gap-2;
|
|
|
|
.c-chat__preview-item {
|
|
@apply relative inline-flex items-center gap-2 p-1.5 pr-8 text-xs;
|
|
border-radius: calc(var(--radius) - 2px);
|
|
border: 1px solid var(--border);
|
|
background-color: var(--muted);
|
|
|
|
.c-chat__preview-name {
|
|
@apply max-w-[150px] truncate;
|
|
color: var(--foreground);
|
|
}
|
|
|
|
.c-chat__preview-remove {
|
|
@apply absolute top-1.5 right-1.5 cursor-pointer text-[10px];
|
|
color: var(--muted-foreground);
|
|
|
|
&:hover {
|
|
color: var(--destructive);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
.c-chat__submit-box {
|
|
@apply flex items-center gap-4;
|
|
|
|
.c-chat__button {
|
|
@apply inline-flex items-center border border-transparent px-4 py-2 text-xs font-semibold tracking-widest uppercase transition duration-150 ease-in-out focus:ring-2 focus:outline-none;
|
|
border-radius: var(--radius);
|
|
background-color: var(--primary);
|
|
color: var(--primary-foreground);
|
|
|
|
&:hover {
|
|
opacity: 0.9;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
.c-chat__user-link { @apply font-semibold text-blue-500 hover:underline; }
|