feat(chat): port chat widget components from Dart to React

This commit is contained in:
2026-06-09 20:19:52 +08:00
parent 199a14650e
commit 109a3e3855
48 changed files with 2463 additions and 382 deletions
@@ -0,0 +1,78 @@
/* PwaInstallDialog PWA 安装弹窗样式 */
.overlay {
position: fixed;
inset: 0;
background: rgba(0, 0, 0, 0.5);
display: flex;
align-items: center;
justify-content: center;
z-index: 60;
}
.dialog {
width: calc(100% - 40px);
max-width: 360px;
background: var(--color-surface, #1f1a2e);
border-radius: var(--radius-lg, 12px);
padding: var(--spacing-5, 20px);
box-shadow: 0 4px 24px rgba(0, 0, 0, 0.4);
text-align: center;
display: flex;
flex-direction: column;
align-items: center;
}
.icon {
width: 64px;
height: 64px;
border-radius: 50%;
background: rgba(248, 77, 150, 0.2);
color: var(--color-accent, #f84d96);
display: flex;
align-items: center;
justify-content: center;
font-size: 32px;
margin-bottom: var(--spacing-4, 16px);
}
.title {
font-size: var(--font-size-lg, 18px);
font-weight: 600;
margin: 0 0 var(--spacing-2, 8px);
color: var(--color-text-primary, #fff);
}
.content {
font-size: var(--font-size-sm, 14px);
line-height: 1.5;
color: var(--color-text-secondary, #9e9e9e);
margin: 0 0 var(--spacing-5, 20px);
}
.actions {
display: flex;
gap: var(--spacing-3, 12px);
width: 100%;
}
.btn {
flex: 1 1 auto;
height: 40px;
border: 0;
border-radius: var(--radius-md, 8px);
font-size: var(--font-size-base, 14px);
font-weight: 600;
cursor: pointer;
}
.btnSecondary {
background: transparent;
color: var(--color-text-primary, #fff);
border: 1px solid rgba(255, 255, 255, 0.2);
}
.btnPrimary {
background: var(--color-accent, #f84d96);
color: #fff;
}