diff --git a/src/app/components/bar-code-reader/bar-code-reader.html b/src/app/components/bar-code-reader/bar-code-reader.html
new file mode 100644
index 0000000..42e0436
--- /dev/null
+++ b/src/app/components/bar-code-reader/bar-code-reader.html
@@ -0,0 +1,6 @@
+
diff --git a/src/app/components/bar-code-reader/bar-code-reader.scss b/src/app/components/bar-code-reader/bar-code-reader.scss
new file mode 100644
index 0000000..57f56fc
--- /dev/null
+++ b/src/app/components/bar-code-reader/bar-code-reader.scss
@@ -0,0 +1,6 @@
+barcode-reader {
+ display: block;
+ width: 100%;
+ position: absolute;
+ top: 0;
+}
\ No newline at end of file
diff --git a/src/app/components/bar-code-reader/bar-code-reader.spec.ts b/src/app/components/bar-code-reader/bar-code-reader.spec.ts
new file mode 100644
index 0000000..2ae8b8d
--- /dev/null
+++ b/src/app/components/bar-code-reader/bar-code-reader.spec.ts
@@ -0,0 +1,23 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { BarCodeReaderWrapper } from './bar-code-reader';
+
+describe('BarCodeReaderWrapper', () => {
+ let component: BarCodeReaderWrapper;
+ let fixture: ComponentFixture;
+
+ beforeEach(async () => {
+ await TestBed.configureTestingModule({
+ imports: [BarCodeReaderWrapper]
+ })
+ .compileComponents();
+
+ fixture = TestBed.createComponent(BarCodeReaderWrapper);
+ component = fixture.componentInstance;
+ await fixture.whenStable();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/components/bar-code-reader/bar-code-reader.ts b/src/app/components/bar-code-reader/bar-code-reader.ts
new file mode 100644
index 0000000..77f9272
--- /dev/null
+++ b/src/app/components/bar-code-reader/bar-code-reader.ts
@@ -0,0 +1,23 @@
+import { Component, CUSTOM_ELEMENTS_SCHEMA, effect, ElementRef, input, output, signal, viewChild } from '@angular/core';
+import { DetectedBarcode } from '../../types/globalThis';
+import { BarcodeReader } from '../../web-components/barcode-reader';
+
+@Component({
+ selector: 'app-bar-code-reader',
+ templateUrl: './bar-code-reader.html',
+ styleUrl: './bar-code-reader.scss',
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
+})
+export class BarCodeReaderWrapper {
+ private readonly ref = viewChild>('reader');
+ protected readonly result = output();
+ protected readonly scanStatus = output();
+ protected readonly scanPermissionDenied = output();
+ scan = input({scan: false})
+
+ constructor() {
+ effect(() => this.scan().scan && this.ref()?.nativeElement.scan())
+ }
+}
+
+export type ScanState = 'loading'|'started'|'stopped';
\ No newline at end of file