@use "../../../css/colors" as *; @use "../../../css/material" as *; @use "sass:color"; .chat-input-wrapper { position: relative; margin: 0 10px 10px 10px; position: sticky; bottom: 10px; z-index: 1; .input-group { display: flex; background: rgba($color-dark-surface-container, 0.7); border-radius: 30px; flex-direction: column; border: 1px solid rgba($color-dark-outline-variant, 0.4); box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1); backdrop-filter: blur(20px); .contextual-preview { padding: 12px 16px 0 16px; display: flex; align-items: flex-start; gap: 16px; mdui-icon { align-self: center; box-sizing: content-box; } .reply-cancel { margin-left: auto; } } .attachments-preview { align-items: center; .attachments-chips { display: flex; flex-wrap: wrap; gap: 8px; } } .chat-input { flex: 1; display: flex; flex-direction: row; align-items: center; .buttons, .left-buttons { display: flex; flex-direction: row; align-items: center; } .left-buttons { .emoji-btn { margin: 10px; color: $color-dark-on-surface-variant; transition: color 0.2s ease; flex-shrink: 0; align-self: flex-end; &:hover { color: $color-dark-primary; } } } .message-input { flex: 1; padding: 20px 0; border: none; border-radius: 25px; font-size: 1rem; outline: none; caret-color: $color-dark-primary; color: $color-dark-on-surface; background: transparent; resize: none; font: inherit; font-size: 13pt; height: 100%; width: 100%; &::placeholder { color: $color-dark-on-surface-variant; opacity: 0.7; } } .buttons { .send-btn { margin: 10px; width: 50px; height: 50px; border-radius: 50%; background: linear-gradient(135deg, color.adjust($color-dark-primary, $lightness: 8%), color.adjust($color-dark-primary-container, $lightness: 5%)); color: $color-dark-on-primary; border: 1px solid rgba($color-dark-primary, 0.5); cursor: pointer; display: flex; align-items: center; justify-content: center; transition: all 0.25s ease; align-self: flex-end; box-shadow: 0 0 20px rgba($color-dark-primary, 0.4); &:hover { transform: translateY(-2px); box-shadow: 0 0 30px rgba($color-dark-primary, 0.6); } } } } } } // Typing indicator styles // Emoji Menu Styles .emoji-menu { $transition: cubic-bezier(0.4, 0, 0.2, 1); background: $color-dark-surface-container; border: 1px solid rgba($color-dark-outline-variant, 0.4); border-radius: 16px; box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3); backdrop-filter: blur(20px); width: 320px; height: 400px; overflow: hidden; display: flex; flex-direction: column; transform-origin: bottom left; opacity: 0; transform: translateY(30px); transition: transform 0.25s $transition, opacity 0.25s $transition; user-select: none; &.open { opacity: 1; transform: translateY(0); } .emoji-menu-header { position: sticky; top: 0; z-index: 1; .emoji-category-tabs { $scrollbar-height: 2px; display: flex; gap: 4px; overflow-x: auto; overflow-y: hidden; scroll-behavior: smooth; padding: 8px; padding-bottom: 8px - $scrollbar-height; &::-webkit-scrollbar { height: $scrollbar-height; // slightly taller to accommodate inner padding } &::-webkit-scrollbar-track { background: transparent; margin: 0 6px; // add space at both ends (left/right) } &::-webkit-scrollbar-thumb { background-color: $color-dark-surface-container-high; border-radius: 2px; border: 0 solid transparent; // remove vertical padding border-left: 2px solid transparent; // keep horizontal padding (left/right) border-right: 2px solid transparent; background-clip: padding-box; // keep color inside the border } .emoji-category-tab { background-color: transparent; border: none; border-radius: 10px; padding: 16px; cursor: pointer; transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); font-size: 16px; display: flex; align-items: center; justify-content: center; position: relative; overflow: hidden; aspect-ratio: 1 / 1; transform: scale(1); &:hover { background-color: $color-dark-surface-container-high; } &:active { transform: scale(0.8); } &.active { background-color: $color-dark-primary-container; } span { position: relative; z-index: 1; display: flex; } } } } .emoji-grid { display: flex; flex-direction: column; flex: 1; overflow-y: auto; scroll-behavior: smooth; &::-webkit-scrollbar { width: 6px; } &::-webkit-scrollbar-track { background: transparent; } &::-webkit-scrollbar-thumb { background-color: $color-dark-surface-container-high; border-radius: 3px; } .emoji-category-section { .emoji-category-title { position: sticky; top: 5px; padding: 5px 12px; font-size: 0.85rem; font-weight: 600; color: $color-dark-on-surface-variant; z-index: 2; margin: 0; backdrop-filter: blur(10px); border-radius: 10px; margin: 5px; background-color: rgba($color-dark-surface-container-high, 0.7); } .emoji-category-grid { display: flex; flex-direction: row; flex-wrap: wrap; gap: 2px; padding: 8px; } } .emoji-item { $size: 30px; background: transparent; border: none; border-radius: 6px; padding: 5px; cursor: pointer; transition: all 0.15s ease; font-size: $size; width: $size; height: $size; box-sizing: content-box; display: flex; align-items: center; justify-content: center; &:hover { background: $color-dark-surface-container-high; transform: scale(1.1); } &:active { transform: scale(0.95); } } } .emoji-empty-state { padding: 20px; text-align: center; color: $color-dark-on-surface-variant; font-size: 0.9rem; } // Integrated mode styles (inside reaction bar) &.integrated { position: relative !important; width: 320px !important; height: 400px !important; transform: none !important; opacity: 1 !important; box-shadow: none; border: none; background: $color-dark-surface-container; overflow: visible; } }