Files
wehub-resource-sync d25d482dc2
CI / Migrate Dev DB (push) Has been skipped
CI / Detect Version (push) Has been cancelled
CI / Migrate DB (push) Has been cancelled
CI / Build Dev ECR (./docker/app.Dockerfile, ECR_APP) (push) Has been cancelled
CI / Build Dev ECR (./docker/db.Dockerfile, ECR_MIGRATIONS) (push) Has been cancelled
CI / Build Dev ECR (./docker/pii.Dockerfile, ECR_PII) (push) Has been cancelled
CI / Build Dev ECR (./docker/realtime.Dockerfile, ECR_REALTIME) (push) Has been cancelled
CI / Deploy Trigger.dev (Dev) (push) Has been cancelled
CI / Build AMD64 (./docker/app.Dockerfile, ECR_APP, ghcr.io/simstudioai/simstudio) (push) Has been cancelled
CI / Build AMD64 (./docker/db.Dockerfile, ECR_MIGRATIONS, ghcr.io/simstudioai/migrations) (push) Has been cancelled
CI / Build AMD64 (./docker/pii.Dockerfile, ECR_PII, ghcr.io/simstudioai/pii) (push) Has been cancelled
CI / Build AMD64 (./docker/realtime.Dockerfile, ECR_REALTIME, ghcr.io/simstudioai/realtime) (push) Has been cancelled
CI / Build ARM64 (GHCR Only) (./docker/app.Dockerfile, ghcr.io/simstudioai/simstudio) (push) Has been cancelled
CI / Build ARM64 (GHCR Only) (./docker/db.Dockerfile, ghcr.io/simstudioai/migrations) (push) Has been cancelled
CI / Build ARM64 (GHCR Only) (./docker/pii.Dockerfile, ghcr.io/simstudioai/pii) (push) Has been cancelled
CI / Build ARM64 (GHCR Only) (./docker/realtime.Dockerfile, ghcr.io/simstudioai/realtime) (push) Has been cancelled
CI / Create GHCR Manifests (ghcr.io/simstudioai/migrations) (push) Has been cancelled
CI / Create GHCR Manifests (ghcr.io/simstudioai/pii) (push) Has been cancelled
CI / Create GHCR Manifests (ghcr.io/simstudioai/realtime) (push) Has been cancelled
CI / Create GHCR Manifests (ghcr.io/simstudioai/simstudio) (push) Has been cancelled
CI / Check Docs Changes (push) Has been cancelled
CI / Process Docs (push) Has been cancelled
CI / Create GitHub Release (push) Has been cancelled
CI / Test and Build (push) Has been cancelled
Publish CLI Package / publish-npm (push) Has been cancelled
Publish Python SDK / publish-pypi (push) Has been cancelled
Publish TypeScript SDK / publish-npm (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:20:55 +08:00

137 lines
2.6 KiB
CSS

/**
* The AccessControlGraphic's motion, all on one shared 6s cycle: the six
* connector edges draw in with a dash-normalized stroke sweep (every path
* carries `pathLength=1`, so a dasharray/dashoffset of 1 spans the whole
* curve regardless of geometry — the deploy tile's pattern), staggered so
* the grants wire up one after another, quiet edges first and the
* emphasized Engineering → Deploy edge last and slowest. Each edge's
* stagger is baked into its own keyframe percentages rather than an
* `animation-delay`, so every edge resets on the same loop boundary and
* the cycle reads draw-once-then-hold. As the emphasized edge lands, the
* grant node blooms the family's soft ring pulse. Under
* prefers-reduced-motion everything is static: edges fully drawn, no
* pulse.
*/
.edgeDraw {
stroke-dasharray: 1;
stroke-dashoffset: 1;
}
.edgeDraw0 {
animation: access-edge-draw-0 6s ease-in-out infinite;
}
.edgeDraw1 {
animation: access-edge-draw-1 6s ease-in-out infinite;
}
.edgeDraw2 {
animation: access-edge-draw-2 6s ease-in-out infinite;
}
.edgeDraw3 {
animation: access-edge-draw-3 6s ease-in-out infinite;
}
.edgeDraw4 {
animation: access-edge-draw-4 6s ease-in-out infinite;
}
.edgeDrawEmphasized {
animation: access-edge-draw-emphasized 6s ease-in-out infinite;
}
@keyframes access-edge-draw-0 {
0% {
stroke-dashoffset: 1;
}
14%,
100% {
stroke-dashoffset: 0;
}
}
@keyframes access-edge-draw-1 {
0%,
7% {
stroke-dashoffset: 1;
}
21%,
100% {
stroke-dashoffset: 0;
}
}
@keyframes access-edge-draw-2 {
0%,
14% {
stroke-dashoffset: 1;
}
28%,
100% {
stroke-dashoffset: 0;
}
}
@keyframes access-edge-draw-3 {
0%,
21% {
stroke-dashoffset: 1;
}
35%,
100% {
stroke-dashoffset: 0;
}
}
@keyframes access-edge-draw-4 {
0%,
28% {
stroke-dashoffset: 1;
}
42%,
100% {
stroke-dashoffset: 0;
}
}
@keyframes access-edge-draw-emphasized {
0%,
38% {
stroke-dashoffset: 1;
}
56%,
100% {
stroke-dashoffset: 0;
}
}
.grantPulse {
animation: access-grant-pulse 6s ease-out infinite;
}
@keyframes access-grant-pulse {
0%,
54% {
box-shadow: 0 0 0 0 color-mix(in srgb, var(--text-secondary) 35%, transparent);
}
72% {
box-shadow: 0 0 0 5px color-mix(in srgb, var(--text-secondary) 0%, transparent);
}
100% {
box-shadow: 0 0 0 0 color-mix(in srgb, var(--text-secondary) 0%, transparent);
}
}
@media (prefers-reduced-motion: reduce) {
.edgeDraw {
animation: none;
stroke-dashoffset: 0;
}
.grantPulse {
animation: none;
}
}