Skip to main content

data-tour-id anchor reference

This is the public selector contract for the tour engine: every data-tour-id attribute that ships in product code is documented here so self-hosters writing their own tours (see the Tour catalog and Tour customization guides) have a stable surface to anchor against.

Naming convention: {feature-area}-{component}-{optional-discriminator}, kebab-case. No tour numbers in names.

Application shell

AnchorLocationNotes
app-shellSidebarProvider root in Layout.tsxThe whole app frame.
app-sidebarSidebar in Layout.tsxLeft navigation column.

Video browser

AnchorLocationNotes
video-browser-card-firstFirst card in VideoBrowser.tsx gridOnly the first card carries this, so any tour that needs a tangible card to spotlight gets a stable target.

Annotation workspace

AnchorLocationNotes
video-player-scrubberVideoPlayer.tsx containerAnchors over the player chrome (video.js renders the actual scrubber inside).
drawing-canvasVideoPlayer.tsx .annotation-video-containerWhere the user drags to draw a bounding box.
timelineTimelineRoot.tsx outer divThe full timeline component.
save-indicatorSaveStatusIndicator.tsxRenders only when there's a status to show (saving / saved / failed). May not be present at tour-step-1 time.
object-picker-popoverObjectPicker.tsx DialogContentObject/type picker dialog. Mounted on user click; guard with waitForAnchor's 3 s ceiling.
event-annotation-buttonEvent ToggleGroupItem in AnnotationWorkspace.tsxEvent-mode toggle inside the annotation-type ToggleGroup.
role-assignment-panelRole-assignment container in AnnotationWorkspace.tsxSide panel that surfaces role slots for the active event annotation.
annotation-world-referenceLinked-object Alert in AnnotationEditor.tsx"Annotation Target" callout shown when the annotation links to an entity, event, location, or collection. Conditionally rendered; tours may need fixture data to surface it.
quick-actions-trackTrack action in QuickActionsPanel.tsx"Track this object" model-in-the-loop trigger.
tracking-results-panelOuter div in TrackingResultsPanel.tsxPer-object tracking results with per-frame controls.
motion-path-overlay<g> overlay in MotionPathOverlay.tsxSVG motion-path overlay rendered above the video.
interpolation-mode-selectorDialogContent in InterpolationModeSelector.tsxLinear / Bezier interpolation chooser dialog.
bezier-curve-editorOuter div in BezierCurveEditor.tsxBezier handle editor for keyframe curves.
temporal-annotatorOuter div in TemporalAnnotator.tsxKeyframe interval / temporal annotation surface.
annotation-candidates-listOuter div in AnnotationCandidatesList.tsxModel-proposed annotation candidates the user can accept or reject.

Ontology workspace

AnchorLocationNotes
ontology-workspace-tabsTabsList in OntologyWorkspace.tsxThe four-layer tab strip.
entity-type-editorBaseTypeEditor.tsx DialogContent, typeCategory='entity'Open via the Add button on the entities tab.
event-type-editorBaseTypeEditor.tsx, typeCategory='event'Open via the Add button on the events tab.
role-editorBaseTypeEditor.tsx, typeCategory='role'Open via the Add button on the roles tab.
relation-type-editorRelationTypeEditor.tsx DialogContentDedicated relation editor; Relations have source/target types so they don't share BaseTypeEditor.
gloss-editorGlossEditor.tsx outer divPer-type definition; rich text + tagging.

Ontology augmenter

AnchorLocationNotes
augmenter-searchDomain-description block in OntologyAugmenter.tsx and concept input in shared/WikidataSearch.tsxIntentionally shared across both components so the tour step lands on whichever one is mounted: the domain-description textarea that drives AI suggestions in OntologyAugmenter, or the Wikidata concept search input.
augmenter-import-targetCategory Select trigger in OntologyAugmenter.tsxEntity / event / role / relation toggle.
augmenter-resultsResults section in OntologyAugmenter.tsx, conditionally renderedMounts only when a suggestion run has completed.

Claims

AnchorLocationNotes
claim-editorClaimEditor.tsx DialogContentOpen via "Add Manual Claim" on the Claims tab of the Video Summary dialog.
claim-relations-viewerClaimRelationsViewer.tsx outer divGraph view of claim relations.
claims-viewerClaimsViewer.tsx outer divThe flat-list claims view inside the summary dialog.
claims-extraction-dialogClaimsExtractionDialog.tsx DialogContent"Extract claims from transcript/summary" dialog.
claim-span-highlighterClaimSpanHighlighter.tsx outer divShows source spans for an extracted claim.

World layer

AnchorLocationNotes
world-panel-tabsTabsList in ObjectWorkspace.tsxEntities / events / locations / times tab strip.
entity-editorEntityEditor.tsx DialogContentSpecific-entity instance editor (e.g. "Glastonbury 2025").
event-editorEventEditor.tsx DialogContentSpecific-event instance editor.
location-map-pickerLocationEditor.tsx DialogContentLocation editor with map picker.
time-editorTimeEditor.tsx DialogContentTime-point / time-interval editor.
collection-builderDialogContent in CollectionBuilder.tsx and DialogContent in CollectionEditor.tsxEntity / event collection editor dialog (shared anchor across both surfaces).
time-collection-builderSecond DialogContent in CollectionBuilder.tsxTime collection editor variant.

Summaries and transcripts

AnchorLocationNotes
audio-config-panelAudioConfigPanel.tsx outer divPer-clip audio config (language, model).
transcript-viewerTranscriptViewer.tsx outer ulSynced transcript viewer.
video-summary-editorVideoSummaryEditor.tsx outer divGenerated structured summary surface.
video-summary-cardVideoSummaryCard.tsx outer CardFirst-class summary object surfaced in the browser.

Collaboration

AnchorLocationNotes
projects-pageOuter div in ProjectsPage.tsxProjects index.
groups-pageOuter div in GroupsPage.tsxGroups index.
shared-annotations-pageOuter div in SharedAnnotationsPage.tsxCross-member annotations view.

Admin

AnchorLocationNotes
admin-panelOuter div in AdminPanel.tsxAdmin dashboard surface.
user-management-pageOuter div in UserManagementPage.tsxUser CRUD.
model-management-pageOuter div in ModelManagementPage.tsxActive model selection.
session-management-pageOuter div in SessionManagementPage.tsxLive session audit.
system-config-panelOuter div in SystemConfigPanel.tsxSystem-wide propagation toggles.
permissions-pageOuter div in PermissionsPage.tsxRole / permission matrix.
model-memory-validationMemory-validation card in ModelManagementPage.tsxVRAM budget validation for the active model selection.
project-video-assignmentOuter div in VideoAssignmentPage.tsxAssign videos to projects.

Persona

AnchorLocationNotes
persona-preferences-sectionOuter div in PersonaPreferencesSection.tsxPer-persona preferences block.

Settings

AnchorLocationNotes
api-keys-pageOuter div in ApiKeyManagementPanel.tsxAPI key management surface.

Import / export

AnchorLocationNotes
import-dialogImportDialog.tsx DialogContentThe initial import-source dialog.
import-result-dialogImportResultDialog.tsx DialogContentPost-import conflict / orphan-skipped summary.
export-dialogExportDialog.tsx DialogContentPersona / time-range filtered export.

Adding new anchors

  1. Pick a name following the convention. Check this file first to avoid collisions.
  2. Add the attribute to product code via a small, focused PR. Tests + tours reference the public name; don't rename without bumping major.
  3. Document it here in the right section.
  4. The Playwright smoke at test/e2e/smoke/tour-anchors.spec.ts asserts every Tour-1 anchor resolves; extend it as Tours 2+ ship.

Anchors not yet landed

All tour anchors referenced by the shipped tour scripts are present in product code. When a future tour step targets a surface that hasn't been built yet, tag the step requiresFixture: true in the tour script so anchored mode surfaces a graceful "this step uses demo content" note rather than hanging, then list the pending anchor here. Once the surface lands, add the data-tour-id attribute, document it in the table above, and clear the requiresFixture flag.