diff --git a/frontend/src/lib/document/DocumentRow.svelte b/frontend/src/lib/document/DocumentRow.svelte
index 5c1763fd..70c85ed3 100644
--- a/frontend/src/lib/document/DocumentRow.svelte
+++ b/frontend/src/lib/document/DocumentRow.svelte
@@ -5,8 +5,8 @@ import { applyOffsets } from '$lib/document/search';
import { formatDate } from '$lib/shared/utils/date';
import * as m from '$lib/paraglide/messages.js';
import { bulkSelectionStore } from '$lib/document/bulkSelection.svelte';
-import ProgressRing from '$lib/components/ProgressRing.svelte';
-import ContributorStack from '$lib/components/ContributorStack.svelte';
+import ProgressRing from '$lib/shared/primitives/ProgressRing.svelte';
+import ContributorStack from '$lib/shared/primitives/ContributorStack.svelte';
import DocumentThumbnail from './DocumentThumbnail.svelte';
type DocumentSearchItem = components['schemas']['DocumentSearchItem'];
diff --git a/frontend/src/lib/document/DocumentTopBar.svelte b/frontend/src/lib/document/DocumentTopBar.svelte
index 023cf82f..96381a69 100644
--- a/frontend/src/lib/document/DocumentTopBar.svelte
+++ b/frontend/src/lib/document/DocumentTopBar.svelte
@@ -4,9 +4,9 @@ import { slide } from 'svelte/transition';
import { formatDate } from '$lib/shared/utils/date';
import { clickOutside } from '$lib/shared/actions/clickOutside';
import PersonChipRow from '$lib/person/PersonChipRow.svelte';
-import OverflowPillButton from '$lib/components/OverflowPillButton.svelte';
+import OverflowPillButton from '$lib/shared/primitives/OverflowPillButton.svelte';
import DocumentMetadataDrawer from './DocumentMetadataDrawer.svelte';
-import BackButton from '$lib/components/BackButton.svelte';
+import BackButton from '$lib/shared/primitives/BackButton.svelte';
type Person = { id: string; firstName?: string | null; lastName: string; displayName: string };
type Tag = { id: string; name: string };
diff --git a/frontend/src/lib/document/ReadyColumn.svelte b/frontend/src/lib/document/ReadyColumn.svelte
index 3f8ce38b..ec38419a 100644
--- a/frontend/src/lib/document/ReadyColumn.svelte
+++ b/frontend/src/lib/document/ReadyColumn.svelte
@@ -3,7 +3,7 @@ import * as m from '$lib/paraglide/messages.js';
import { getLocale } from '$lib/paraglide/runtime.js';
import { formatMCDate } from '$lib/shared/utils/date.js';
import type { components } from '$lib/generated/api';
-import ContributorStack from '$lib/components/ContributorStack.svelte';
+import ContributorStack from '$lib/shared/primitives/ContributorStack.svelte';
type TranscriptionQueueItemDTO = components['schemas']['TranscriptionQueueItemDTO'];
diff --git a/frontend/src/lib/document/SegmentationColumn.svelte b/frontend/src/lib/document/SegmentationColumn.svelte
index 9de941f3..2d25cb2d 100644
--- a/frontend/src/lib/document/SegmentationColumn.svelte
+++ b/frontend/src/lib/document/SegmentationColumn.svelte
@@ -3,7 +3,7 @@ import * as m from '$lib/paraglide/messages.js';
import { getLocale } from '$lib/paraglide/runtime.js';
import { formatMCDate } from '$lib/shared/utils/date.js';
import type { components } from '$lib/generated/api';
-import ContributorStack from '$lib/components/ContributorStack.svelte';
+import ContributorStack from '$lib/shared/primitives/ContributorStack.svelte';
type TranscriptionQueueItemDTO = components['schemas']['TranscriptionQueueItemDTO'];
diff --git a/frontend/src/lib/document/transcription/TranscriptionBlock.svelte b/frontend/src/lib/document/transcription/TranscriptionBlock.svelte
index a55c0d5c..6a5ead9d 100644
--- a/frontend/src/lib/document/transcription/TranscriptionBlock.svelte
+++ b/frontend/src/lib/document/transcription/TranscriptionBlock.svelte
@@ -1,8 +1,8 @@