ui-nyla/src/components/Dashboard/DashboardChat/DashboardChatAreaStyles/DashboardChatMessages.module.css

550 lines
11 KiB
CSS

/* Message-specific styles for DashboardChat components */
/* Message List Container - wraps the entire message list and positions scroll button */
.message_list_container {
position: relative;
height: 100%;
width: 100%;
display: flex;
flex-direction: column;
}
/* Chat Messages Scrollable Area */
.chat_messages {
flex: 1;
padding: 15px;
border-radius: 15px;
margin-bottom: 15px;
height: 100%;
overflow-y: auto;
overflow-x: hidden;
scroll-behavior: smooth;
}
.chat_messages_empty {
flex: 1;
padding: 15px;
border-radius: 15px;
margin-bottom: 15px;
height: 100%;
overflow-y: auto;
overflow-x: hidden;
scroll-behavior: smooth;
display: flex;
justify-content: center;
align-items: center;
}
.message_empty_state_icon {
font-size: 90px;
color: var(--color-primary);
}
.message_empty_state h3 {
font-family: var(--font-family);
font-size: 1.2rem;
font-weight: 500;
color: var(--color-text);
}
.message_empty_state p {
font-family: var(--font-family);
font-size: 1rem;
font-weight: 400;
color: var(--color-text);
}
.chat_messages::-webkit-scrollbar {
width: 6px;
}
.chat_messages::-webkit-scrollbar-track {
background: transparent;
}
.chat_messages::-webkit-scrollbar-thumb {
background: var(--color-gray-disabled);
border-radius: 3px;
}
.chat_messages::-webkit-scrollbar-thumb:hover {
background: var(--color-gray);
}
/* Messages Container */
.messages_container {
min-height: 100%;
display: flex;
flex-direction: column;
justify-content: flex-start;
padding: 8px;
gap: 16px;
}
.messages_spacer {
flex: 1;
min-height: 20px;
}
/* Message Item Styles - Modern Chat Layout */
.message_item {
display: flex;
flex-direction: column;
max-width: 80%;
min-width: 0%;
margin-bottom: 4px;
position: relative;
}
/* Responsive design for smaller screens */
@media (max-width: 768px) {
.message_item {
max-width: 85%;
min-width: 150px;
}
}
@media (max-width: 480px) {
.message_item {
max-width: 95%;
min-width: 120px;
}
}
/* User messages - right aligned */
.message_item.user {
align-self: flex-end;
align-items: flex-end;
}
/* Assistant messages - left aligned */
.message_item.assistant {
align-self: flex-start;
align-items: flex-start;
}
.message_header {
font-size: 11px;
color: var(--color-gray);
margin-bottom: 4px;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.5px;
display: flex;
align-items: center;
gap: 6px;
}
.message_bubble {
padding: 12px 16px;
border-radius: 25px;
position: relative;
word-wrap: break-word;
box-shadow: 1px 1px 6px rgba(0, 0, 0, 0.1);
width: 100%;
}
/* User message bubble */
.message_bubble.user {
background: linear-gradient(135deg, var(--color-secondary) 0%, var(--color-secondary-hover) 100%);
color: white;
border-bottom-right-radius: 4px;
}
/* Assistant message bubble */
.message_bubble.assistant {
background-color: var(--color-highlight-gray);
color: #181818;
border-bottom-left-radius: 4px;
}
.message_content {
line-height: 1.4;
white-space: pre-wrap;
font-size: 14px;
}
.message_timestamp {
font-size: 10px;
color: var(--color-gray);
margin-top: 4px;
opacity: 0.7;
}
.message_timestamp_inline {
font-size: 10px;
color: var(--color-gray);
opacity: 0.8;
font-weight: 400;
text-transform: none;
letter-spacing: normal;
}
.message_no_content {
color: var(--color-gray);
font-style: italic;
}
/* Document/File Attachments in Messages */
.message_documents {
margin-top: 8px;
padding: 8px;
background-color: color-mix(in srgb, var(--color-primary), transparent 80%);
border-radius: 15px;
border: 1px solid var(--color-primary);
width: 100%;
box-sizing: border-box;
}
.message_documents_header {
font-size: 12px;
color: var(--color-gray);
margin-bottom: 8px;
font-weight: 500;
}
/* Document header styling for user messages */
.message_documents_header.user {
color: rgba(255, 255, 255, 0.8);
}
/* Document header styling for assistant messages */
.message_documents_header.assistant {
color: var(--color-gray);
}
.message_document_item {
display: flex;
align-items: center;
gap: 9px;
padding: 6px;
border-radius: 4px;
background-color: var(--color-highlight-gray);
margin-bottom: 4px;
cursor: pointer;
color: var(--color-text);
}
.message_document_info {
flex: 1;
min-width: 0;
}
.message_document_name {
font-size: 14px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
color: var(--color-gray);
}
.message_document_size {
font-size: 12px;
color: var(--color-gray);
}
.message_document_actions {
display: flex;
gap: 9px;
}
.message_document_action_button {
width: 33px;
height: 32px;
font-size: 12px;
background-color: var(--color-secondary);
border: 1px solid var(--color-secondary);
border-radius: 25px;
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
}
.message_document_action_icon {
font-size: 16px;
color: white;
}
.message_document_action:hover {
background-color: var(--color-gray-disabled);
}
.message_document_action:disabled {
opacity: 0.6;
cursor: not-allowed;
}
/* Scroll to Bottom Button */
.scroll_to_bottom_btn {
position: absolute;
bottom: 80px;
right: 20px;
background-color: var(--color-secondary);
color: white;
border: none;
border-radius: 50%;
width: 48px;
height: 48px;
font-size: 20px;
cursor: pointer;
box-shadow: 0 2px 8px rgba(0,0,0,0.2);
z-index: 100;
display: flex;
align-items: center;
justify-content: center;
transition: opacity 0.3s ease-in-out, visibility 0.3s ease-in-out, transform 0.2s ease-in-out;
}
.scroll_to_bottom_btn:hover {
transform: scale(1.1);
box-shadow: 0 4px 12px rgba(0,0,0,0.3);
}
.scroll_to_bottom_btn:active {
transform: scale(0.95);
}
.scroll_to_bottom_btn.hidden {
opacity: 0;
visibility: hidden;
pointer-events: none;
}
.scroll_to_bottom_btn.visible {
opacity: 1;
visibility: visible;
pointer-events: auto;
}
/* Loading and Error States */
.message_loading {
text-align: center;
padding: 16px;
color: var(--color-gray);
}
.message_error {
padding: 8px;
background-color: var(--color-error);
color: white;
border-radius: 4px;
margin-bottom: 16px;
}
.message_empty_state {
color: var(--color-gray);
text-align: center;
justify-content: center;
padding: 16px;
}
/* Workflow Status Display */
.workflow_status {
padding: 8px;
background-color: var(--color-surface);
border-radius: 4px;
margin-bottom: 16px;
}
.workflow_status_title {
font-weight: bold;
}
.workflow_status_polling {
margin-left: 8px;
font-size: 12px;
color: var(--color-secondary);
opacity: 0.7;
}
/* Animation for polling indicator */
@keyframes pulse {
0%, 100% { opacity: 0.7; }
50% { opacity: 1; }
}
.polling_indicator {
animation: pulse 2s infinite;
}
@keyframes shimmer {
0% { left: -100%; }
100% { left: 100%; }
}
@keyframes loadingSlide {
0% { transform: translateX(-100%); }
50% { transform: translateX(0%); }
100% { transform: translateX(100%); }
}
.workflow_progress_container {
flex-shrink: 0;
padding: 12px 16px;
border-top: 1px solid var(--color-primary);
border-bottom: 1px solid var(--color-primary);
margin-top: auto;
margin-right: 15px;
}
.workflow_progress_label {
font-family: var(--font-family);
font-size: 12px;
color: var(--color-text);
margin-bottom: 8px;
display: flex;
justify-content: space-between;
align-items: center;
font-weight: 600;
}
.workflow_progress_breakdown {
font-size: 10px;
color: var(--color-gray);
margin-bottom: 6px;
text-align: center;
opacity: 0.8;
}
.workflow_progress_bar {
width: 100%;
height: 8px;
background-color: var(--color-gray-disabled);
border-radius: 4px;
overflow: hidden;
position: relative;
}
.workflow_progress_fill {
height: 100%;
background: linear-gradient(90deg, var(--color-secondary) 0%, var(--color-secondary-hover) 100%);
border-radius: 4px;
transition: width 1.2s cubic-bezier(0.4, 0, 0.2, 1);
position: relative;
overflow: hidden;
}
.workflow_progress_fill.loading {
width: 100% !important;
background: linear-gradient(90deg, transparent, var(--color-gray-disabled), transparent);
animation: loadingSlide 2s infinite;
}
/* Enhanced shimmer animation for workflow progress */
.workflow_progress_fill::after {
content: '';
position: absolute;
top: 0;
left: -100%;
width: 100%;
height: 100%;
background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.4), transparent);
animation: shimmer 3s infinite;
}
/* Hide shimmer during loading state */
.workflow_progress_fill.loading::after {
display: none;
}
/* Workflow Log Messages */
.log_container {
margin-top: 8px;
padding: 20px;
border-radius: 25px;
font-size: 12px;
font-family: 'Courier New', monospace;
border-left: 3px solid;
border: 1px solid var(--color-gray-disabled);
background-color: var(--color-bg);
}
.log_header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 4px;
font-weight: 600;
}
.log_level {
text-transform: uppercase;
font-size: 10px;
padding: 2px 6px;
border-radius: 3px;
color: white;
}
.log_level.info {
background-color: var(--color-gray);
}
.log_level.success {
background-color: var(--color-secondary);
}
.log_level.warning {
background-color: var(--color-primary);
}
.log_level.error {
background-color: var(--color-red);
}
.log_level.debug {
background-color: var(--color-gray);
}
.log_timestamp {
font-size: 10px;
color: var(--color-gray);
opacity: 0.8;
}
.log_message {
line-height: 1.4;
color: var(--color-text);
white-space: pre-wrap;
}
.log_source {
font-size: 10px;
color: var(--color-gray);
margin-top: 4px;
opacity: 0.7;
}
.log_progress {
margin-top: 4px;
font-size: 10px;
color: var(--color-secondary);
font-weight: 500;
}
/* Log details (expandable) */
.log_details {
margin-top: 6px;
padding: 6px;
background-color: rgba(0, 0, 0, 0.03);
border-radius: 4px;
font-size: 11px;
color: var(--color-gray);
overflow-x: auto;
}
.log_details pre {
margin: 0;
white-space: pre-wrap;
word-break: break-word;
}