+
+ {{ "options" | i18n }}
+
+
+
+
+
+
+
+
+
+
diff --git a/libs/tools/generator/components/src/credential-generator.component.ts b/libs/tools/generator/components/src/credential-generator.component.ts
new file mode 100644
index 00000000000..359c7505c54
--- /dev/null
+++ b/libs/tools/generator/components/src/credential-generator.component.ts
@@ -0,0 +1,293 @@
+import { Component, EventEmitter, Input, NgZone, OnDestroy, OnInit, Output } from "@angular/core";
+import { FormBuilder } from "@angular/forms";
+import {
+ BehaviorSubject,
+ concat,
+ distinctUntilChanged,
+ filter,
+ map,
+ of,
+ ReplaySubject,
+ Subject,
+ switchMap,
+ takeUntil,
+ withLatestFrom,
+} from "rxjs";
+
+import { AccountService } from "@bitwarden/common/auth/abstractions/account.service";
+import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service";
+import { UserId } from "@bitwarden/common/types/guid";
+import { Option } from "@bitwarden/components/src/select/option";
+import {
+ CredentialAlgorithm,
+ CredentialCategory,
+ CredentialGeneratorInfo,
+ CredentialGeneratorService,
+ GeneratedCredential,
+ Generators,
+ isEmailAlgorithm,
+ isPasswordAlgorithm,
+ isUsernameAlgorithm,
+ PasswordAlgorithm,
+} from "@bitwarden/generator-core";
+
+/** root category that drills into username and email categories */
+const IDENTIFIER = "identifier";
+/** options available for the top-level navigation */
+type RootNavValue = PasswordAlgorithm | typeof IDENTIFIER;
+
+@Component({
+ selector: "tools-credential-generator",
+ templateUrl: "credential-generator.component.html",
+})
+export class CredentialGeneratorComponent implements OnInit, OnDestroy {
+ constructor(
+ private generatorService: CredentialGeneratorService,
+ private i18nService: I18nService,
+ private accountService: AccountService,
+ private zone: NgZone,
+ private formBuilder: FormBuilder,
+ ) {}
+
+ /** Binds the component to a specific user's settings. When this input is not provided,
+ * the form binds to the active user
+ */
+ @Input()
+ userId: UserId | null;
+
+ /** Emits credentials created from a generation request. */
+ @Output()
+ readonly onGenerated = new EventEmitter