feat: release contextual omnichannel customer platform

Add Telegram, WhatsApp and email account management, realtime messaging, contextual multilingual AI, customer intelligence, knowledge workflows, enterprise controls, a unified design system and complete repository documentation.
This commit is contained in:
wmq
2026-07-30 02:29:53 +08:00
parent 9804341463
commit af49d22ca7
66 changed files with 3181 additions and 554 deletions
+72 -5
View File
@@ -42,8 +42,8 @@
line-height: 1.6;
letter-spacing: -0.006em;
background-image:
radial-gradient(circle at 75% -10%, rgba(37, 99, 235, 0.05), transparent 26rem),
linear-gradient(180deg, #ffffff 0, hsl(var(--background)) 22rem);
radial-gradient(circle at 76% -12%, rgba(37, 99, 235, 0.055), transparent 28rem),
linear-gradient(180deg, #ffffff 0, #f7f9fc 23rem);
}
::selection {
@@ -70,10 +70,34 @@
text-wrap: balance;
}
.surface-panel {
@apply rounded-2xl border border-slate-200/80 bg-white shadow-[0_1px_2px_rgba(15,23,42,0.03),0_10px_30px_rgba(15,23,42,0.025)];
@apply rounded-[14px] border border-slate-200/90 bg-white shadow-[0_1px_2px_rgba(15,23,42,0.025),0_8px_24px_rgba(15,23,42,0.025)];
}
.eyebrow {
@apply text-[11px] font-semibold uppercase tracking-[0.14em] text-primary-700;
@apply text-[11px] font-semibold tracking-[0.08em] text-primary-700;
}
.page-shell {
@apply mx-auto w-full max-w-[1600px] px-4 py-5 md:px-7 md:py-7;
}
.page-section {
@apply mt-5;
}
.section-heading {
@apply mb-3 flex flex-wrap items-end justify-between gap-3;
}
.section-title {
@apply text-[15px] font-semibold tracking-[-0.015em] text-slate-900;
}
.section-description {
@apply mt-0.5 text-xs text-slate-500;
}
.quiet-grid {
background-image:
linear-gradient(rgba(148, 163, 184, .045) 1px, transparent 1px),
linear-gradient(90deg, rgba(148, 163, 184, .045) 1px, transparent 1px);
background-size: 24px 24px;
}
.focus-surface {
@apply border-primary-200/80 bg-primary-50/45 shadow-[0_8px_24px_-18px_rgba(37,99,235,.5),inset_0_0_0_1px_rgba(255,255,255,.8)];
}
}
@@ -231,11 +255,54 @@
@media (prefers-reduced-motion: reduce) {
.conversation-selected,
.conversation-selected::after {
.conversation-selected::after,
.auth-message,
.auth-translation-dot,
.auth-floating-chip {
animation: none;
}
}
.auth-corner-glow {
background:
radial-gradient(circle at 12% 12%, rgba(96, 165, 250, .16), transparent 28rem),
radial-gradient(circle at 92% 86%, rgba(125, 211, 252, .12), transparent 24rem);
}
.auth-preview-grid {
background-image:
linear-gradient(rgba(148, 163, 184, .055) 1px, transparent 1px),
linear-gradient(90deg, rgba(148, 163, 184, .055) 1px, transparent 1px);
background-size: 24px 24px;
}
@keyframes auth-message-in {
from { opacity: .62; transform: translate3d(-8px, 6px, 0); }
to { opacity: 1; transform: translate3d(0, 0, 0); }
}
@keyframes auth-message-out {
from { opacity: .62; transform: translate3d(8px, 6px, 0); }
to { opacity: 1; transform: translate3d(0, 0, 0); }
}
@keyframes auth-translation {
0%, 17% { opacity: 0; transform: translateX(0); }
24% { opacity: 1; }
40% { opacity: 1; transform: translateX(92px); }
48%, 100% { opacity: 0; transform: translateX(92px); }
}
@keyframes auth-chip-float {
0%, 100% { transform: translate3d(0, 0, 0); }
50% { transform: translate3d(0, -4px, 0); }
}
.auth-message-in { animation: auth-message-in .48s cubic-bezier(.2,.8,.2,1) both; }
.auth-message-out { animation: auth-message-out .48s cubic-bezier(.2,.8,.2,1) .16s both; }
.auth-translation-dot { animation: auth-translation 8s ease-in-out infinite; }
.auth-floating-chip { animation: auth-chip-float 4s ease-in-out infinite; }
/* RTL 微调 */
[dir='rtl'] .rtl-flip {
transform: scaleX(-1);