mirror of
https://github.com/sudosylabs/vnidrop.git
synced 2026-08-05 02:29:55 +02:00
feat(docs): add animated product website
This commit is contained in:
267
docs/components/approval-scene.css
Normal file
267
docs/components/approval-scene.css
Normal file
@@ -0,0 +1,267 @@
|
||||
/* Interactive receiver approval */
|
||||
.approval-demo {
|
||||
overflow: hidden;
|
||||
border: 1px solid #ded6e2;
|
||||
border-radius: 24px;
|
||||
background: #fbf9fc;
|
||||
box-shadow: 0 35px 90px rgba(49, 29, 58, 0.16);
|
||||
transform: rotate(1deg);
|
||||
transition: transform 280ms ease, border-color 280ms ease;
|
||||
}
|
||||
|
||||
.approval-demo:hover { transform: rotate(0deg) translateY(-3px); }
|
||||
.approval-demo.state-approved { border-color: rgba(45, 185, 117, 0.4); }
|
||||
.approval-demo.state-refused { border-color: rgba(221, 92, 75, 0.35); }
|
||||
|
||||
.approval-window-bar {
|
||||
display: flex;
|
||||
height: 48px;
|
||||
align-items: center;
|
||||
gap: 6px;
|
||||
padding: 0 16px;
|
||||
border-bottom: 1px solid #ded6e2;
|
||||
background: #f0ecf2;
|
||||
}
|
||||
|
||||
.approval-window-bar > span {
|
||||
width: 8px;
|
||||
height: 8px;
|
||||
border-radius: 50%;
|
||||
background: #d1c7d5;
|
||||
}
|
||||
|
||||
.approval-window-bar > span:nth-child(1) { background: #f1a191; }
|
||||
.approval-window-bar > span:nth-child(2) { background: #f1ca72; }
|
||||
.approval-window-bar > span:nth-child(3) { background: #72cf9b; }
|
||||
|
||||
.approval-window-bar small {
|
||||
margin-left: auto;
|
||||
color: #8a7f8f;
|
||||
font-family: var(--font-mono);
|
||||
font-size: 8px;
|
||||
font-weight: 700;
|
||||
letter-spacing: 0.06em;
|
||||
}
|
||||
|
||||
.approval-body {
|
||||
min-height: 385px;
|
||||
padding: 35px;
|
||||
background:
|
||||
radial-gradient(circle at 90% 0%, rgba(192, 132, 252, 0.16), transparent 27%),
|
||||
white;
|
||||
}
|
||||
|
||||
.approval-heading {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 17px;
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
|
||||
.device-avatar {
|
||||
position: relative;
|
||||
width: 52px;
|
||||
height: 60px;
|
||||
flex: 0 0 auto;
|
||||
border: 4px solid #352e39;
|
||||
border-radius: 13px;
|
||||
background: #211d24;
|
||||
box-shadow: 0 10px 25px rgba(42, 30, 48, 0.16);
|
||||
}
|
||||
|
||||
.device-avatar::before {
|
||||
position: absolute;
|
||||
top: 4px;
|
||||
left: 50%;
|
||||
width: 16px;
|
||||
height: 3px;
|
||||
border-radius: 999px;
|
||||
background: #0c0a0d;
|
||||
content: "";
|
||||
transform: translateX(-50%);
|
||||
}
|
||||
|
||||
.device-avatar-screen {
|
||||
position: absolute;
|
||||
inset: 14px 8px 8px;
|
||||
border-radius: 7px;
|
||||
background: linear-gradient(145deg, #b55efa, #6f27e9);
|
||||
}
|
||||
|
||||
.device-avatar-glow {
|
||||
position: absolute;
|
||||
inset: -5px;
|
||||
z-index: -1;
|
||||
border-radius: 16px;
|
||||
box-shadow: 0 0 0 0 rgba(168, 85, 247, 0.25);
|
||||
animation: avatar-pulse 2.7s ease-out infinite;
|
||||
}
|
||||
|
||||
.approval-heading h3 {
|
||||
max-width: 360px;
|
||||
margin: 5px 0 0;
|
||||
font-size: 21px;
|
||||
letter-spacing: -0.035em;
|
||||
line-height: 1.22;
|
||||
}
|
||||
|
||||
.approval-file {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 13px;
|
||||
padding: 16px;
|
||||
border: 1px solid #e5dde8;
|
||||
border-radius: 14px;
|
||||
background: #f8f5f9;
|
||||
}
|
||||
|
||||
.approval-file-icon {
|
||||
display: grid;
|
||||
width: 42px;
|
||||
height: 42px;
|
||||
flex: 0 0 auto;
|
||||
place-items: center;
|
||||
border-radius: 11px;
|
||||
background: var(--brand-100);
|
||||
color: var(--brand-600);
|
||||
}
|
||||
|
||||
.approval-file-icon svg { width: 21px; }
|
||||
.approval-file strong,
|
||||
.approval-file small { display: block; }
|
||||
.approval-file strong { font-size: 12px; }
|
||||
.approval-file small { color: var(--ink-muted); font-size: 9px; }
|
||||
|
||||
.approval-percent {
|
||||
margin-left: auto;
|
||||
color: var(--brand-600);
|
||||
font-family: var(--font-mono);
|
||||
font-size: 11px;
|
||||
font-weight: 800;
|
||||
}
|
||||
|
||||
.approval-actions {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr 1.4fr;
|
||||
gap: 10px;
|
||||
margin-top: 22px;
|
||||
}
|
||||
|
||||
.approval-actions button,
|
||||
.approval-refused button {
|
||||
min-height: 47px;
|
||||
border: 1px solid #ded4e2;
|
||||
border-radius: 12px;
|
||||
font-size: 12px;
|
||||
font-weight: 750;
|
||||
cursor: pointer;
|
||||
transition: transform 160ms ease, background 160ms ease, box-shadow 160ms ease;
|
||||
}
|
||||
|
||||
.approval-actions button:hover,
|
||||
.approval-refused button:hover { transform: translateY(-2px); }
|
||||
.approval-refuse { background: white; color: #625769; }
|
||||
.approval-accept {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
gap: 8px;
|
||||
border-color: transparent !important;
|
||||
background: linear-gradient(135deg, var(--brand-500), var(--brand-700));
|
||||
box-shadow: 0 10px 24px rgba(132, 47, 238, 0.22);
|
||||
color: white;
|
||||
}
|
||||
|
||||
.approval-accept svg { width: 17px; }
|
||||
|
||||
.approval-progress {
|
||||
margin-top: 25px;
|
||||
animation: approval-state-enter 350ms ease;
|
||||
}
|
||||
|
||||
.approval-progress-track {
|
||||
overflow: hidden;
|
||||
height: 8px;
|
||||
border-radius: 999px;
|
||||
background: #eee8f1;
|
||||
}
|
||||
|
||||
.approval-progress-track span {
|
||||
display: block;
|
||||
width: 68%;
|
||||
height: 100%;
|
||||
border-radius: inherit;
|
||||
background: linear-gradient(90deg, var(--brand-500), var(--brand-700));
|
||||
box-shadow: 0 0 15px rgba(168, 85, 247, 0.38);
|
||||
animation: progress-fill 900ms cubic-bezier(0.25, 0.8, 0.25, 1) both;
|
||||
}
|
||||
|
||||
.approval-progress-meta {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
margin-top: 13px;
|
||||
color: var(--ink-muted);
|
||||
font-size: 9px;
|
||||
}
|
||||
|
||||
.approval-progress-meta > span {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 9px;
|
||||
}
|
||||
|
||||
.approval-progress-meta button,
|
||||
.approval-refused button {
|
||||
border: 0;
|
||||
background: transparent;
|
||||
color: var(--brand-600);
|
||||
font-size: 9px;
|
||||
font-weight: 750;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.approval-refused {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 12px;
|
||||
margin-top: 23px;
|
||||
padding: 14px;
|
||||
border: 1px solid #f0d5d0;
|
||||
border-radius: 12px;
|
||||
background: #fff8f7;
|
||||
animation: approval-state-enter 350ms ease;
|
||||
}
|
||||
|
||||
.approval-refused > span {
|
||||
display: grid;
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
flex: 0 0 auto;
|
||||
place-items: center;
|
||||
border-radius: 50%;
|
||||
background: #fde7e3;
|
||||
color: #d85848;
|
||||
}
|
||||
|
||||
.approval-refused svg { width: 15px; }
|
||||
.approval-refused p { margin: 0; color: #705c59; font-size: 10px; }
|
||||
.approval-refused button { margin-left: auto; }
|
||||
|
||||
.approval-footer {
|
||||
display: flex;
|
||||
height: 50px;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
gap: 8px;
|
||||
border-top: 1px solid #ded6e2;
|
||||
background: #f2eef4;
|
||||
color: #766b7b;
|
||||
font-family: var(--font-mono);
|
||||
font-size: 8px;
|
||||
font-weight: 700;
|
||||
letter-spacing: 0.04em;
|
||||
}
|
||||
|
||||
.approval-footer svg { width: 15px; color: var(--brand-600); }
|
||||
|
||||
Reference in New Issue
Block a user