diff --git a/frontend/.gitignore b/frontend/.gitignore index e1ac95e1e..82e94e657 100644 --- a/frontend/.gitignore +++ b/frontend/.gitignore @@ -31,3 +31,6 @@ jsconfig.json # Playwright /e2e/test-results/ /e2e/playwright-report/ + +# Claude Code harness state +/.claude/ diff --git a/frontend/app/components/exercise-playback-help/index.gts b/frontend/app/components/exercise-playback-help/index.gts new file mode 100644 index 000000000..841199491 --- /dev/null +++ b/frontend/app/components/exercise-playback-help/index.gts @@ -0,0 +1,54 @@ +import Component from '@glimmer/component'; +import { tracked } from '@glimmer/tracking'; +import { action } from '@ember/object'; +import { on } from '@ember/modifier'; +import { t } from 'ember-intl'; +import UiHelp from 'brn/components/ui/help'; +import UiInstructionsDialog from 'brn/components/ui/instructions-dialog'; + +interface ExercisePlaybackHelpSignature { + Args: { + triggerClass?: string; + }; + Element: HTMLButtonElement; +} + +export default class ExercisePlaybackHelpComponent extends Component { + @tracked isOpen = false; + triggerElement: HTMLButtonElement | null = null; + + @action + open(event: Event) { + this.triggerElement = event.currentTarget as HTMLButtonElement; + this.isOpen = true; + } + + @action + close() { + this.isOpen = false; + this.triggerElement?.focus(); + } + + +} diff --git a/frontend/app/components/header/index.gts b/frontend/app/components/header/index.gts index d59e2d1a4..eee773ec3 100644 --- a/frontend/app/components/header/index.gts +++ b/frontend/app/components/header/index.gts @@ -17,6 +17,7 @@ import GlobalTimer from 'brn/components/global-timer'; import LoadingSpinner from 'brn/components/loading-spinner'; import XpBadge from 'brn/components/xp-badge'; import StreakCounter from 'brn/components/streak-counter'; +import InstructionsModal from 'brn/components/instructions-modal'; import GamificationService from 'brn/services/gamification'; const ExternalLinkIcon =