components/Spinner.vue — Full-page loading spinner (120x120px). Fades in after 300ms delay. Used in 11 files: document upload, overlays, payment, signing, file lists.

components/SpinnerSmall.vue — Compact 30x30px spinner for inline use. Has dark prop for dark backgrounds (grey stroke) vs light backgrounds (white stroke). Used in 10+ files.

Dark variant (on light background)

<spinner-small dark />

30x30px, grey stroke

Light variant (on dark background)

<spinner-small /> — Default white stroke for use on dark/colored backgrounds.

30x30px, white stroke

Inside a button

Common pattern: replacing button text with SpinnerSmall during async operations.

Loading state vs normal state

components/SigningSpinner.vue — Large branded spinner shown during signing process. Green-to-blue gradient ring (186px) with Skribble checkmark logo centered. Used in OverlaySigning. Fades in with 360ms delay.

components/DancingDotsLoader.vue — Three bouncing dots animation (36px wide). Used as inline loading indicator in PlanUpgradeCard and OverlayAddSeats.

Default (grey dots)

In context

Typical usage: replacing a price or value while loading.

CHF
/ month

Vuetify's built-in circular progress indicator. Used across 33+ files for general loading states in pages, dialogs, and overlays.

Small (32px)
Medium (48px)
Large (64px)

components/visual-signature/VisualSignatureSkeleton.vue — SVG skeleton placeholder for visual signatures. Shows avatar circle, text lines, and a shimmer animation. Used in SignatureImage.

300x140 (default)
200x100 (compact)

components/visual-signature/SealSkeleton.vue — Simple rectangular SVG skeleton with shimmer for seal images. Used in SealImage.

200x80
120x120 (square)

Vuetify's built-in skeleton loader. Used across the app for page-level loading states in dashboard, profile, billing, activity, and business pages.

Card skeleton

List skeleton