Files
WeChatDataAnalysis/frontend/assets/css/tailwind.css
2977094657 0894092325 feat(chat): 前端增加消息类型筛选与按类型导出
- 聊天页新增消息类型筛选下拉框(render_types)

- 导出弹窗新增“消息类型(导出内容)”多选与快捷项,并明确离线媒体不影响消息条数

- createChatExport 透传 message_types;图片本地 URL 可同时携带 md5+file_id

- 增加 message-filter-select 样式
2025-12-29 13:42:44 +08:00

927 lines
22 KiB
CSS
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
@tailwind base;
@tailwind components;
@tailwind utilities;
/* 自定义全局样式 - 微信配色主题 */
@layer base {
:root {
/* 微信品牌色 */
--wechat-green: #07c160;
--wechat-green-hover: #06ad56;
--wechat-green-light: #e6f7f0;
--wechat-green-dark: #059341;
/* 主色调 */
--primary-color: #07c160;
--primary-hover: #06ad56;
--secondary-color: #4c9e5f;
/* 危险色 */
--danger-color: #fa5151;
--danger-hover: #e94848;
/* 警告色 */
--warning-color: #ffc300;
--warning-hover: #e6ad00;
/* 背景色 */
--bg-primary: #f7f8fa;
--bg-secondary: #ffffff;
--bg-gray: #ededed;
--bg-dark: #191919;
/* 文字颜色 */
--text-primary: #191919;
--text-secondary: #576b95;
--text-light: #888888;
--text-white: #ffffff;
/* 边框颜色 */
--border-color: #e7e7e7;
--border-light: #f4f4f4;
/* 统一消息圆角(聊天所有消息共用) */
--message-radius: 4px;
}
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', 'Helvetica Neue', Helvetica, Arial, sans-serif;
background-color: var(--bg-primary);
color: var(--text-primary);
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
}
/* 微信风格组件样式 */
@layer components {
/* 聊天气泡尾巴(左右),与高度 42px 居中对齐 */
.bubble-tail-l, .bubble-tail-r { position: relative; }
.bubble-tail-l::after {
content: '';
position: absolute;
left: -4px;
top: 12px; /* 36px 中线 18px减去 6px ≈ 12px */
width: 12px; height: 12px;
background: #FFFFFF;
transform: rotate(45deg);
border-radius: 2px;
}
.bubble-tail-r::after {
content: '';
position: absolute;
right: -4px;
top: 12px;
width: 12px; height: 12px;
background: #95EC69;
transform: rotate(45deg);
border-radius: 2px;
}
/* 统一的消息圆角工具类 */
.msg-radius { border-radius: var(--message-radius); }
.msg-bubble { @apply leading-normal break-words text-pretty; border-radius: var(--message-radius); }
/* 按钮样式 */
.btn {
@apply px-6 py-3 rounded-full font-medium transition-all duration-200 focus:outline-none focus:ring-2 focus:ring-offset-2 transform active:scale-95;
}
.btn-primary {
@apply bg-[#07c160] text-white hover:bg-[#06ad56] focus:ring-[#07c160] shadow-md hover:shadow-lg;
}
.btn-secondary {
@apply bg-white text-[#07c160] border-2 border-[#07c160] hover:bg-[#e6f7f0] focus:ring-[#07c160];
}
.btn-danger {
@apply bg-[#fa5151] text-white hover:bg-[#e94848] focus:ring-[#fa5151] shadow-md hover:shadow-lg;
}
.btn-ghost {
@apply bg-transparent text-[#576b95] hover:bg-gray-100 focus:ring-gray-300;
}
/* 卡片样式 */
.card {
@apply bg-white rounded-2xl shadow-sm border border-[#f4f4f4] p-6 hover:shadow-md transition-shadow duration-300;
}
.card-hover {
@apply hover:transform hover:scale-[1.02] transition-all duration-300;
}
/* 输入框样式 */
.input {
@apply w-full px-4 py-3 bg-[#f7f8fa] border border-transparent rounded-xl focus:outline-none focus:ring-2 focus:ring-[#07c160] focus:bg-white focus:border-[#07c160] transition-all duration-200;
}
.input-error {
@apply border-[#fa5151] focus:ring-[#fa5151] focus:border-[#fa5151];
}
/* 标签样式 */
.tag {
@apply inline-flex items-center px-3 py-1 rounded-full text-xs font-medium;
}
.tag-green {
@apply bg-[#e6f7f0] text-[#07c160];
}
.tag-blue {
@apply bg-blue-100 text-blue-700;
}
.tag-red {
@apply bg-red-100 text-red-700;
}
/* 加载动画 */
.loading-spinner {
@apply inline-block w-8 h-8 border-4 border-[#e7e7e7] border-t-[#07c160] rounded-full animate-spin;
}
.loading-dots {
@apply inline-flex items-center space-x-1;
}
.loading-dots span {
@apply w-2 h-2 bg-[#07c160] rounded-full animate-bounce;
}
/* 微信风格的列表项 */
.list-item {
@apply flex items-center justify-between py-4 px-4 hover:bg-[#f7f8fa] transition-colors duration-200 cursor-pointer;
}
/* 分割线 */
.divider {
@apply border-t border-[#f4f4f4] my-4;
}
/* 提示框 */
.alert {
@apply p-4 rounded-xl border;
}
.alert-success {
@apply bg-[#e6f7f0] border-[#07c160] text-[#059341];
}
.alert-warning {
@apply bg-yellow-50 border-[#ffc300] text-yellow-800;
}
.alert-error {
@apply bg-red-50 border-[#fa5151] text-red-800;
}
/* 动画效果 */
.fade-enter {
@apply opacity-0 transform scale-95;
}
.fade-enter-active {
@apply transition-all duration-300 ease-out;
}
.fade-enter-to {
@apply opacity-100 transform scale-100;
}
/* 现代化搜索面板样式 */
.search-panel-container {
@apply border-b border-gray-200;
background: linear-gradient(to bottom, #f8f9fa, #f0f1f2);
}
.search-panel {
@apply px-5 py-4;
}
/* 搜索输入行 */
.search-input-row {
@apply flex items-center gap-3;
}
.search-input-wrapper {
@apply flex-1 flex items-center bg-white border border-gray-200 rounded-lg overflow-hidden transition-all duration-200;
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04);
}
.search-input-wrapper:hover {
@apply border-gray-300;
}
.search-input-focused {
@apply border-[#03C160] ring-2 ring-[#03C160]/20;
}
.search-input-icon {
@apply w-4 h-4 text-gray-400 ml-3 flex-shrink-0;
}
.search-input {
@apply flex-1 px-3 py-2.5 text-sm bg-transparent border-none outline-none;
}
.search-input::placeholder {
@apply text-gray-400;
}
.search-clear-btn {
@apply p-2 text-gray-400 hover:text-gray-600 transition-colors;
}
.search-btn-primary {
@apply px-4 py-2.5 text-sm font-medium text-white bg-[#03C160] rounded-lg hover:bg-[#02a650] transition-all duration-200 flex items-center gap-2 disabled:opacity-60 disabled:cursor-not-allowed;
box-shadow: 0 2px 4px rgba(3, 193, 96, 0.2);
}
.search-btn-primary:hover:not(:disabled) {
box-shadow: 0 4px 8px rgba(3, 193, 96, 0.3);
transform: translateY(-1px);
}
.search-btn-close {
@apply p-2.5 text-gray-500 hover:text-gray-700 hover:bg-gray-100 rounded-lg transition-colors;
}
/* 搜索控制行 */
.search-controls-row {
@apply flex items-center gap-3 mt-3 flex-wrap;
}
/* 搜索范围切换器 */
.search-scope-switcher {
@apply flex items-center bg-gray-100 rounded-lg p-0.5;
}
.scope-btn {
@apply flex items-center gap-1.5 px-3 py-1.5 text-xs font-medium text-gray-600 rounded-md transition-all duration-200 disabled:opacity-50 disabled:cursor-not-allowed;
}
.scope-btn:hover:not(:disabled) {
@apply text-gray-800;
}
.scope-btn-active {
@apply bg-white text-[#03C160] shadow-sm;
}
/* 快捷过滤标签 */
.quick-filter-tags {
@apply flex items-center gap-1.5 flex-wrap;
}
.filter-tag {
@apply flex items-center gap-1 px-2.5 py-1.5 text-xs font-medium text-gray-600 bg-white border border-gray-200 rounded-full transition-all duration-200 hover:border-gray-300 hover:bg-gray-50;
}
.filter-tag-icon {
@apply text-sm;
}
.filter-tag-active {
@apply bg-[#03C160]/10 border-[#03C160] text-[#03C160];
}
.filter-tag-active:hover {
@apply bg-[#03C160]/15 border-[#03C160];
}
/* 高级过滤器切换 */
.advanced-filter-toggle {
@apply flex items-center gap-1.5 px-3 py-1.5 text-xs font-medium text-gray-600 bg-white border border-gray-200 rounded-lg transition-all duration-200 hover:border-gray-300 hover:bg-gray-50 ml-auto;
}
.advanced-filter-toggle-active {
@apply bg-gray-100 border-gray-300;
}
/* 高级过滤器面板 */
.advanced-filters-panel {
@apply overflow-hidden transition-all duration-300 ease-in-out;
max-height: 0;
opacity: 0;
}
.advanced-filters-expanded {
max-height: 200px;
opacity: 1;
@apply mt-3;
}
.advanced-filters-content {
@apply flex items-center gap-4 p-3 bg-white rounded-lg border border-gray-200 flex-wrap;
}
.filter-group {
@apply flex items-center gap-2;
}
.filter-label {
@apply text-xs font-medium text-gray-600;
}
.filter-select {
@apply text-xs px-3 py-1.5 rounded-md border border-gray-200 bg-white focus:outline-none focus:ring-2 focus:ring-[#03C160]/20 focus:border-[#03C160] transition-all;
}
.filter-checkbox {
@apply flex items-center gap-2 text-xs cursor-pointer;
}
.filter-checkbox-input {
@apply w-4 h-4 text-[#03C160] border-gray-300 rounded focus:ring-[#03C160]/20;
}
.filter-checkbox-label {
@apply font-medium text-gray-700;
}
.filter-checkbox-hint {
@apply text-gray-400;
}
/* 搜索历史面板 */
.search-history-panel {
@apply mt-3 p-3 bg-white rounded-lg border border-gray-200;
}
.search-history-header {
@apply flex items-center justify-between mb-2;
}
.search-history-title {
@apply text-xs font-medium text-gray-600;
}
.search-history-clear {
@apply text-xs text-gray-400 hover:text-gray-600 transition-colors;
}
.search-history-list {
@apply flex flex-wrap gap-2;
}
.search-history-item {
@apply flex items-center gap-1.5 px-2.5 py-1.5 text-xs text-gray-600 bg-gray-50 rounded-full hover:bg-gray-100 transition-colors;
}
/* 搜索状态栏 */
.search-status-bar {
@apply mt-3 text-xs;
}
.search-status-error {
@apply flex items-center gap-2 text-red-600 bg-red-50 px-3 py-2 rounded-lg;
}
.search-status-info {
@apply text-gray-600;
}
.search-status-count {
@apply text-gray-800;
}
.search-status-count strong {
@apply text-[#03C160] font-semibold;
}
.search-status-detail {
@apply text-gray-500;
}
.search-status-hint {
@apply flex items-center gap-2 text-gray-400;
}
/* 搜索结果容器 */
.search-results-container {
@apply bg-white border-b border-gray-200;
max-height: 320px;
}
.search-results-list {
@apply overflow-y-auto;
max-height: 260px;
}
/* 搜索结果卡片 */
.search-result-card {
@apply px-5 py-3 border-b border-gray-100 cursor-pointer transition-all duration-150;
border-left: 3px solid transparent;
}
.search-result-card:hover {
@apply bg-gray-50;
border-left-color: #e5e7eb;
}
.search-result-card-selected {
@apply bg-[#03C160]/5;
border-left-color: #03C160;
}
.search-result-card-selected:hover {
@apply bg-[#03C160]/10;
border-left-color: #03C160;
}
.search-result-meta {
@apply flex items-center gap-2 text-[11px] text-gray-500 mb-1;
}
.search-result-contact {
@apply font-medium text-gray-700;
}
.search-result-contact::after {
content: '·';
@apply ml-2;
}
.search-result-time {
@apply text-gray-400;
}
.search-result-sender {
@apply text-gray-500;
}
.search-result-sender::before {
content: '·';
@apply mr-2;
}
.search-result-content {
@apply text-sm text-gray-800 truncate leading-relaxed;
}
/* 搜索高亮 */
.search-highlight {
@apply bg-[#03C160]/20 text-[#03C160] px-0.5 rounded font-medium;
}
/* 搜索结果底部 */
.search-results-footer {
@apply px-5 py-3 flex items-center justify-between border-t border-gray-100 bg-gray-50/50;
}
.search-load-more-btn {
@apply flex items-center gap-2 text-xs px-3 py-1.5 rounded-md border border-gray-200 bg-white hover:bg-gray-50 text-gray-700 transition-colors disabled:opacity-50 disabled:cursor-not-allowed;
}
.search-results-hint {
@apply text-xs text-gray-400;
}
.search-results-hint kbd {
@apply px-1.5 py-0.5 bg-gray-100 border border-gray-200 rounded text-[10px] font-mono;
}
/* 空状态 */
.search-empty-state {
@apply py-8 px-5 text-center bg-white border-b border-gray-200;
}
.search-empty-icon {
@apply w-16 h-16 mx-auto text-gray-300 mb-4;
}
.search-empty-title {
@apply text-base font-medium text-gray-600 mb-3;
}
.search-empty-tips {
@apply text-sm text-gray-500 text-left max-w-xs mx-auto;
}
.search-empty-tips p {
@apply mb-2;
}
.search-empty-tips ul {
@apply list-disc list-inside space-y-1 text-gray-400;
}
/* 联系人搜索栏样式 */
.contact-search-wrapper {
@apply flex items-center bg-[#EAEAEA] rounded-lg overflow-hidden transition-all duration-200;
}
.contact-search-wrapper:focus-within {
@apply ring-2 ring-[#03C160]/20 bg-white;
}
.contact-search-icon {
@apply w-4 h-4 text-gray-400 ml-2.5 flex-shrink-0;
}
.contact-search-input {
@apply flex-1 px-2 py-2 text-sm bg-transparent border-none outline-none;
}
.contact-search-input::placeholder {
@apply text-gray-400;
}
.contact-search-clear {
@apply p-2 text-gray-400 hover:text-gray-600 transition-colors;
}
.account-select {
@apply text-xs px-2 py-2 rounded-lg border border-gray-200 bg-[#EAEAEA] focus:outline-none focus:ring-2 focus:ring-[#03C160]/20 focus:border-[#03C160] transition-all;
}
/* 骨架屏动画 */
.skeleton-pulse {
animation: skeleton-pulse 1.5s ease-in-out infinite;
}
@keyframes skeleton-pulse {
0%, 100% {
opacity: 1;
}
50% {
opacity: 0.5;
}
}
/* 聊天头部样式 */
.chat-header {
@apply h-14 px-5 flex items-center border-b border-gray-200;
background-color: #EDEDED;
}
.header-btn {
@apply flex items-center gap-1.5 text-xs px-3 py-1.5 rounded-lg bg-white border border-gray-200 text-gray-700 transition-all duration-200 disabled:opacity-50 disabled:cursor-not-allowed;
}
.header-btn:hover:not(:disabled) {
@apply bg-gray-50 border-gray-300;
}
.header-btn:active:not(:disabled) {
@apply bg-gray-100;
}
.header-btn-icon {
@apply w-8 h-8 flex items-center justify-center rounded-lg bg-white border border-gray-200 text-gray-600 transition-all duration-200;
}
.header-btn-icon:hover {
@apply bg-gray-50 border-gray-300 text-gray-800;
}
.header-btn-icon-active {
@apply bg-[#03C160]/10 border-[#03C160] text-[#03C160];
}
.header-btn-icon-active:hover {
@apply bg-[#03C160]/15;
}
.message-filter-select {
@apply text-xs px-2 py-1.5 rounded-lg bg-white border border-gray-200 text-gray-700 focus:outline-none focus:ring-2 focus:ring-[#03C160]/20 focus:border-[#03C160] transition-all disabled:opacity-50 disabled:cursor-not-allowed;
}
/* 搜索侧边栏样式 */
.search-sidebar {
@apply w-[420px] h-full flex flex-col bg-white border-l border-gray-200 flex-shrink-0;
}
.search-sidebar-header {
@apply flex items-center justify-between px-4 py-3 border-b border-gray-200 bg-gray-50;
}
.search-sidebar-title {
@apply flex items-center gap-2 text-sm font-medium text-gray-800;
}
.search-sidebar-close {
@apply p-1.5 text-gray-500 hover:text-gray-700 hover:bg-gray-200 rounded-md transition-colors;
}
.search-sidebar-input-section {
@apply px-3 py-3 border-b border-gray-100;
}
/* 整合搜索框样式 */
.search-input-combined {
@apply flex items-center bg-white border-2 border-gray-200 rounded-lg overflow-hidden transition-all duration-200;
}
.search-input-combined:hover {
@apply border-gray-300;
}
.search-input-combined-focused {
@apply border-[#03C160] ring-2 ring-[#03C160]/20;
}
.search-scope-inline {
@apply flex items-center px-2 border-r border-gray-200 bg-gray-50;
}
.scope-inline-btn {
@apply text-[11px] font-medium text-gray-400 hover:text-gray-600 transition-colors px-1 py-2.5 disabled:opacity-40 disabled:cursor-not-allowed;
}
.scope-inline-btn-active {
@apply text-[#03C160] font-semibold;
}
.scope-inline-divider {
@apply text-gray-300 text-[10px];
}
.search-input-inline {
@apply flex-1 min-w-0 px-3 py-2.5 text-sm bg-transparent border-none outline-none;
}
.search-input-inline::placeholder {
@apply text-gray-400;
}
.search-clear-inline {
@apply p-2 text-gray-400 hover:text-gray-600 transition-colors;
}
.search-btn-inline {
@apply flex items-center justify-center w-10 h-10 bg-[#03C160] text-white hover:bg-[#02a650] transition-colors disabled:opacity-60 disabled:cursor-not-allowed flex-shrink-0;
}
/* 筛选条件行 */
.search-filters-row {
@apply flex items-center gap-2 mt-2;
}
.search-session-type-row {
@apply flex items-center gap-1 mt-2;
}
.search-session-type-btn {
@apply flex-1 text-[11px] font-medium px-2 py-1.5 rounded-md border border-gray-200 bg-gray-50 text-gray-500 hover:bg-gray-100 hover:text-gray-700 transition-colors;
}
.search-session-type-btn-active {
@apply bg-[#03C160]/10 border-[#03C160] text-[#03C160] font-semibold;
}
.search-filter-select {
@apply flex-1 text-xs px-2 py-1.5 bg-gray-50 border border-gray-200 rounded-md outline-none cursor-pointer transition-all hover:border-gray-300 focus:border-[#03C160] focus:ring-1 focus:ring-[#03C160]/20;
}
.search-filter-select-time {
@apply flex-none w-28;
}
.search-filter-input {
@apply flex-1 text-xs px-2 py-1.5 bg-gray-50 border border-gray-200 rounded-md outline-none transition-all hover:border-gray-300 focus:border-[#03C160] focus:ring-1 focus:ring-[#03C160]/20;
}
.search-filter-input::placeholder {
@apply text-gray-400;
}
/* 自定义日期行 */
.search-custom-date-row {
@apply flex items-center gap-2 mt-2;
}
.search-date-input {
@apply flex-1 text-xs px-2 py-1.5 bg-gray-50 border border-gray-200 rounded-md outline-none transition-all hover:border-gray-300 focus:border-[#03C160] focus:ring-1 focus:ring-[#03C160]/20;
}
.search-date-separator {
@apply text-xs text-gray-400;
}
.search-sidebar-scope {
@apply px-4 py-3 border-b border-gray-100;
}
.search-sidebar-filters {
@apply px-4 py-3 border-b border-gray-100;
}
.quick-filter-tags-vertical {
@apply flex flex-wrap gap-1.5 mt-2;
}
.filter-tag-vertical {
@apply flex items-center gap-1 px-2 py-1 text-xs font-medium text-gray-600 bg-gray-50 border border-gray-200 rounded-md transition-all duration-200 hover:border-gray-300 hover:bg-gray-100;
}
.search-sidebar-advanced {
@apply px-4 py-3 border-b border-gray-100;
}
.sidebar-section-toggle {
@apply flex items-center justify-between w-full text-left;
}
.sidebar-section-title {
@apply text-xs font-medium text-gray-500 uppercase tracking-wide;
}
.sidebar-advanced-content {
@apply overflow-hidden transition-all duration-300 ease-in-out;
max-height: 0;
opacity: 0;
}
.sidebar-advanced-expanded {
max-height: 200px;
opacity: 1;
@apply mt-3;
}
.sidebar-filter-group {
@apply mb-3;
}
.sidebar-filter-label {
@apply block text-xs text-gray-600 mb-1;
}
.sidebar-filter-select {
@apply w-full text-xs px-2.5 py-1.5 rounded-md border border-gray-200 bg-white focus:outline-none focus:ring-2 focus:ring-[#03C160]/20 focus:border-[#03C160] transition-all;
}
.sidebar-checkbox {
@apply flex items-center gap-2 text-xs text-gray-600 cursor-pointer;
}
.sidebar-checkbox input {
@apply w-3.5 h-3.5 text-[#03C160] border-gray-300 rounded focus:ring-[#03C160]/20;
}
.search-sidebar-history {
@apply px-4 py-3 border-b border-gray-100;
}
.sidebar-section-header {
@apply flex items-center justify-between mb-2;
}
.sidebar-clear-btn {
@apply text-xs text-gray-400 hover:text-gray-600 transition-colors;
}
.sidebar-index-btn {
@apply px-2 py-1 text-[10px] font-medium text-gray-600 bg-gray-50 border border-gray-200 rounded-md hover:bg-gray-100 hover:border-gray-300 transition-colors disabled:opacity-60 disabled:cursor-not-allowed whitespace-nowrap;
}
.sidebar-history-list {
@apply space-y-1;
}
.sidebar-history-item {
@apply flex items-center gap-2 w-full px-2 py-1.5 text-xs text-gray-600 rounded-md hover:bg-gray-50 transition-colors text-left;
}
.search-sidebar-status {
@apply px-4 py-2 text-xs border-b border-gray-100;
}
.sidebar-status-error {
@apply text-red-600;
}
.sidebar-status-info {
@apply text-gray-600;
}
.sidebar-status-info strong {
@apply text-[#03C160] font-semibold;
}
.sidebar-status-detail {
@apply text-gray-400;
}
.search-sidebar-results {
@apply flex-1 overflow-y-auto min-h-0;
}
.sidebar-results-list {
@apply divide-y divide-gray-100;
}
.sidebar-result-card {
@apply px-4 py-3 cursor-pointer transition-all duration-150 hover:bg-gray-50;
border-left: 3px solid transparent;
}
.sidebar-result-row {
@apply flex items-start gap-3;
}
.sidebar-result-avatar {
@apply w-9 h-9 rounded-md overflow-hidden bg-gray-300 flex-shrink-0;
}
.sidebar-result-avatar-fallback {
@apply w-full h-full flex items-center justify-center text-white text-[10px] font-bold bg-gray-600;
}
.sidebar-result-body {
@apply min-w-0 flex-1;
}
.sidebar-result-card-selected {
@apply bg-[#03C160]/5;
border-left-color: #03C160;
}
.sidebar-result-card-selected:hover {
@apply bg-[#03C160]/10;
}
.sidebar-result-header {
@apply flex items-center gap-2 text-[10px] text-gray-400 mb-0.5;
}
.sidebar-result-contact {
@apply font-medium text-gray-600;
}
.sidebar-result-time {
@apply text-gray-400;
}
.sidebar-result-sender {
@apply text-[11px] text-gray-500 mb-1;
}
.sidebar-result-content {
@apply text-xs text-gray-700 line-clamp-2 leading-relaxed;
}
.sidebar-load-more {
@apply px-4 py-3;
}
.sidebar-load-more-btn {
@apply w-full text-xs px-3 py-2 rounded-md border border-gray-200 bg-white hover:bg-gray-50 text-gray-600 transition-colors disabled:opacity-50;
}
.sidebar-empty-state {
@apply flex flex-col items-center justify-center py-12 px-4 text-center;
}
.sidebar-empty-icon {
@apply w-12 h-12 text-gray-300 mb-3;
}
.sidebar-empty-text {
@apply text-sm font-medium text-gray-500 mb-1;
}
.sidebar-empty-hint {
@apply text-xs text-gray-400;
}
.sidebar-initial-state {
@apply flex flex-col items-center justify-center py-12 px-4 text-center;
}
.sidebar-initial-icon {
@apply w-16 h-16 text-gray-200 mb-4;
}
.sidebar-initial-text {
@apply text-sm text-gray-500 mb-2;
}
.sidebar-initial-hint {
@apply text-xs text-gray-400;
}
.sidebar-initial-hint kbd {
@apply px-1.5 py-0.5 bg-gray-100 border border-gray-200 rounded text-[10px] font-mono;
}
/* 侧边栏滑入动画 */
.sidebar-slide-enter-active,
.sidebar-slide-leave-active {
transition: all 0.3s ease;
}
.sidebar-slide-enter-from,
.sidebar-slide-leave-to {
transform: translateX(100%);
opacity: 0;
}
.sidebar-slide-enter-to,
.sidebar-slide-leave-from {
transform: translateX(0);
opacity: 1;
}
}