Files
deepseek-harness/packages/client/ui-primitives/src/Modal.module.css
T
07akioni 93b832f1b0 Merge pull request #4459 from deepseek-harness/feat/desktop-onboarding
feat(desktop): add device-local account onboarding
2026-09-23 22:21:18 +08:00

125 lines
2.7 KiB
CSS

/* Full-viewport layer (figma Mask + Dialog 451:18655): mask + centered card.
24px of air on every side; the top/bottom widen to the frame's published
top clearance (the macOS window strip) so a tall card stays clear of it.
Cards size against this padding box: consumers cap growth with
`max-height: 100%`, never their own viewport calc. */
.root {
position: fixed;
inset: 0;
z-index: 1000;
display: flex;
align-items: center;
justify-content: center;
padding: max(24px, var(--dsh-frame-top-clearance, 24px)) 24px;
}
/* User/spec mask: rgba(0,0,0,0.24) + blur(2px) via --dsw-alias-bg-mask-1 /
--dsw-mask-blur (light); dark theme raises mask opacity. */
.mask {
position: absolute;
inset: 0;
backdrop-filter: var(--dsw-mask-blur);
}
.mask::after {
content: '';
position: absolute;
inset: 0;
background: var(--dsw-alias-bg-mask-1);
animation: modalEnter var(--ds-transition-duration) var(--ds-ease-in-out);
}
/* Dialog card: r24, elevation-prominent, layer-2 fill, pb 24. */
.dialog {
position: relative;
z-index: 1;
display: flex;
flex-direction: column;
gap: 20px;
width: min(380px, 100%);
padding: 0 0 24px;
overflow: hidden;
border: 0;
border-radius: 24px;
background: var(--dsw-alias-bg-layer-2);
box-shadow: var(--dsw-elevation-prominent);
animation: modalEnter var(--ds-transition-duration) var(--ds-ease-in-out);
}
@keyframes modalEnter {
from { opacity: 0; }
to { opacity: 1; }
}
@media (prefers-reduced-motion: reduce) {
.mask::after, .dialog { animation: none; }
}
.content {
display: flex;
flex-direction: column;
width: 100%;
}
/* Header row (figma Title row): pad l24/t22/r14/b12, SPACE_BETWEEN —
* title left, close button right. */
.header {
display: flex;
align-items: center;
justify-content: space-between;
gap: 8px;
padding: 22px 14px 12px 24px;
}
.title {
margin: 0;
font-size: 16px;
line-height: 24px;
font-weight: 500; /* figma wt510, rendered 500 */
color: var(--dsw-alias-label-primary);
}
.close {
flex: none;
display: inline-flex;
align-items: center;
justify-content: center;
width: 28px;
height: 28px;
border: none;
border-radius: 8px;
background: transparent;
cursor: pointer;
color: var(--dsw-alias-label-secondary);
}
.close:hover {
background: var(--dsw-alias-interactive-bg-hover);
}
/* Description and body share the 332px content column (24px side pads). */
.description {
margin: 0;
padding: 0 24px;
font-size: 14px;
line-height: 22px;
font-weight: 400;
color: var(--dsw-alias-label-primary);
}
.body {
display: flex;
flex-direction: column;
min-width: 0;
margin-top: 20px;
padding: 0 24px;
}
.footer {
display: flex;
align-items: center;
justify-content: flex-end;
gap: 8px;
padding: 0 24px;
}