@anarchitects/auth-angular 0.1.5 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,23 +1,36 @@
1
1
  {
2
2
  "name": "@anarchitects/auth-angular",
3
- "version": "0.1.5",
3
+ "version": "0.3.0",
4
+ "dependencies": {
5
+ "@anarchitects/auth-ts": "^0.3.0",
6
+ "@anarchitects/common-angular-ui-layouts": "^0.0.1",
7
+ "@anarchitects/forms-angular": "^0.3.0",
8
+ "@anarchitects/forms-ts": "^0.3.0",
9
+ "@casl/ability": "^6.7.3",
10
+ "jwt-decode": "^4.0.0",
11
+ "tslib": "^2.3.0"
12
+ },
4
13
  "peerDependencies": {
5
- "@angular/common": "21.1.6",
6
- "@angular/core": "21.1.6",
7
- "@anarchitects/auth-ts": "0.1.3",
8
- "@anarchitects/forms-angular": "0.0.12",
9
- "@anarchitects/forms-ts": "0.0.8",
10
- "@ngrx/signals": "^20.0.1",
14
+ "@angular/common": "^21.0.0",
15
+ "@angular/core": "^21.0.0",
16
+ "@angular/router": "^21.0.0",
11
17
  "@ngrx/operators": "^20.0.1",
12
- "rxjs": "~7.8.0",
13
- "jwt-decode": "^4.0.0",
14
- "@casl/ability": "^6.7.3",
15
- "@angular/router": "21.1.6"
18
+ "@ngrx/signals": "^20.0.1",
19
+ "rxjs": "~7.8.0"
16
20
  },
17
21
  "sideEffects": false,
18
22
  "publishConfig": {
19
23
  "access": "public"
20
24
  },
25
+ "repository": {
26
+ "type": "git",
27
+ "url": "git+https://github.com/anarchitects/anarchitecture-bricks-3tier.git",
28
+ "directory": "libs/auth/angular"
29
+ },
30
+ "homepage": "https://github.com/anarchitects/anarchitecture-bricks-3tier/tree/main/libs/auth/angular",
31
+ "bugs": {
32
+ "url": "https://github.com/anarchitects/anarchitecture-bricks-3tier/issues"
33
+ },
21
34
  "module": "fesm2022/anarchitects-auth-angular.mjs",
22
35
  "typings": "types/anarchitects-auth-angular.d.ts",
23
36
  "exports": {
@@ -44,12 +57,13 @@
44
57
  "types": "./types/anarchitects-auth-angular-state.d.ts",
45
58
  "default": "./fesm2022/anarchitects-auth-angular-state.mjs"
46
59
  },
60
+ "./ui": {
61
+ "types": "./types/anarchitects-auth-angular-ui.d.ts",
62
+ "default": "./fesm2022/anarchitects-auth-angular-ui.mjs"
63
+ },
47
64
  "./util": {
48
65
  "types": "./types/anarchitects-auth-angular-util.d.ts",
49
66
  "default": "./fesm2022/anarchitects-auth-angular-util.mjs"
50
67
  }
51
- },
52
- "dependencies": {
53
- "tslib": "^2.3.0"
54
68
  }
55
69
  }
package/state/README.md CHANGED
@@ -7,13 +7,14 @@ Signal-based state management for the auth domain. Import from `@anarchitects/au
7
7
  - `AuthStore`: an Angular `signalStore` that exposes:
8
8
  - computed selectors (`isLoggedIn`, `loggedInUser`)
9
9
  - async methods for each auth use case (`login`, `logout`, `registerUser`, etc.)
10
+ - `provideAuthState`: provider helper for explicit store registration (app/route scope)
10
11
  - The store depends on `AuthApi` from the data-access layer and respects the configuration providers.
11
12
 
12
13
  ## Usage
13
14
 
14
15
  ```ts
15
16
  import { Component, inject } from '@angular/core';
16
- import { AuthStore } from '@anarchitects/auth-angular/state';
17
+ import { AuthStore, provideAuthState } from '@anarchitects/auth-angular/state';
17
18
 
18
19
  @Component({
19
20
  selector: 'auth-login-button',
@@ -31,4 +32,4 @@ export class AuthLoginButtonComponent {
31
32
  }
32
33
  ```
33
34
 
34
- Compose the store inside smart/feature components or facades; keep UI components dumb by binding to the store's signals.
35
+ Register `provideAuthState()` in your application or route providers so the auth store scope is explicit and shared where needed. Keep UI components dumb by binding to the store's signals.
@@ -1,97 +1,106 @@
1
- import * as i0 from '@angular/core';
2
- import { SubmissionRequestDTO } from '@anarchitects/forms-ts/dtos';
3
- import { FormConfig } from '@anarchitects/forms-ts/models';
1
+ import * as _angular_core from '@angular/core';
2
+ import { RegisterRequestDTO, ActivateUserRequestDTO, ForgotPasswordRequestDTO, ResetPasswordRequestDTO, VerifyEmailRequestDTO, ChangePasswordRequestDTO, UpdateEmailRequestDTO, LogoutRequestDTO, RefreshTokenRequestDTO, LoginRequestDTO } from '@anarchitects/auth-ts/dtos';
4
3
  import { CanMatchFn } from '@angular/router';
5
4
 
6
5
  declare class AnarchitectsFeatureRegister {
7
6
  private readonly authStore;
8
- formConfig: i0.WritableSignal<FormConfig>;
9
- submitForm(input: SubmissionRequestDTO): Promise<void>;
10
- static ɵfac: i0.ɵɵFactoryDeclaration<AnarchitectsFeatureRegister, never>;
11
- static ɵcmp: i0.ɵɵComponentDeclaration<AnarchitectsFeatureRegister, "anarchitects-auth-feature-register", never, {}, {}, never, never, true, never>;
7
+ readonly layout: _angular_core.InputSignal<`form:${string}` | `list:${string}` | `detail:${string}` | `app-${string}:${string}` | null>;
8
+ readonly layoutOptions: _angular_core.InputSignal<Readonly<Record<string, unknown>>>;
9
+ submitForm(input: RegisterRequestDTO): Promise<void>;
10
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AnarchitectsFeatureRegister, never>;
11
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AnarchitectsFeatureRegister, "anarchitects-auth-feature-register", never, { "layout": { "alias": "layout"; "required": false; "isSignal": true; }; "layoutOptions": { "alias": "layoutOptions"; "required": false; "isSignal": true; }; }, {}, never, ["ng-template[anxTemplate]", "[anxSlot]"], true, never>;
12
12
  }
13
13
 
14
14
  declare class AnarchitectsFeatureActivateUser {
15
15
  private readonly authStore;
16
- readonly token: i0.InputSignal<string | undefined>;
17
- readonly formConfig: i0.Signal<FormConfig>;
18
- submitForm(input: SubmissionRequestDTO): Promise<void>;
19
- static ɵfac: i0.ɵɵFactoryDeclaration<AnarchitectsFeatureActivateUser, never>;
20
- static ɵcmp: i0.ɵɵComponentDeclaration<AnarchitectsFeatureActivateUser, "anarchitects-auth-feature-activate-user", never, { "token": { "alias": "token"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
16
+ readonly token: _angular_core.InputSignal<string | undefined>;
17
+ readonly layout: _angular_core.InputSignal<`form:${string}` | `list:${string}` | `detail:${string}` | `app-${string}:${string}` | null>;
18
+ readonly layoutOptions: _angular_core.InputSignal<Readonly<Record<string, unknown>>>;
19
+ submitForm(input: ActivateUserRequestDTO): Promise<void>;
20
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AnarchitectsFeatureActivateUser, never>;
21
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AnarchitectsFeatureActivateUser, "anarchitects-auth-feature-activate-user", never, { "token": { "alias": "token"; "required": false; "isSignal": true; }; "layout": { "alias": "layout"; "required": false; "isSignal": true; }; "layoutOptions": { "alias": "layoutOptions"; "required": false; "isSignal": true; }; }, {}, never, ["ng-template[anxTemplate]", "[anxSlot]"], true, never>;
21
22
  }
22
23
 
23
24
  declare class AnarchitectsFeatureForgotPassword {
24
25
  private readonly authStore;
25
- readonly formConfig: i0.WritableSignal<FormConfig>;
26
- submitForm(input: SubmissionRequestDTO): Promise<void>;
27
- static ɵfac: i0.ɵɵFactoryDeclaration<AnarchitectsFeatureForgotPassword, never>;
28
- static ɵcmp: i0.ɵɵComponentDeclaration<AnarchitectsFeatureForgotPassword, "anarchitects-auth-feature-forgot-password", never, {}, {}, never, never, true, never>;
26
+ readonly layout: _angular_core.InputSignal<`form:${string}` | `list:${string}` | `detail:${string}` | `app-${string}:${string}` | null>;
27
+ readonly layoutOptions: _angular_core.InputSignal<Readonly<Record<string, unknown>>>;
28
+ submitForm(input: ForgotPasswordRequestDTO): Promise<void>;
29
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AnarchitectsFeatureForgotPassword, never>;
30
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AnarchitectsFeatureForgotPassword, "anarchitects-auth-feature-forgot-password", never, { "layout": { "alias": "layout"; "required": false; "isSignal": true; }; "layoutOptions": { "alias": "layoutOptions"; "required": false; "isSignal": true; }; }, {}, never, ["ng-template[anxTemplate]", "[anxSlot]"], true, never>;
29
31
  }
30
32
 
31
33
  declare class AnarchitectsFeatureResetPassword {
32
34
  private readonly authStore;
33
- readonly token: i0.InputSignal<string | undefined>;
34
- readonly formConfig: i0.Signal<FormConfig>;
35
- submitForm(input: SubmissionRequestDTO): Promise<void>;
36
- static ɵfac: i0.ɵɵFactoryDeclaration<AnarchitectsFeatureResetPassword, never>;
37
- static ɵcmp: i0.ɵɵComponentDeclaration<AnarchitectsFeatureResetPassword, "anarchitects-auth-feature-reset-password", never, { "token": { "alias": "token"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
35
+ readonly token: _angular_core.InputSignal<string | undefined>;
36
+ readonly layout: _angular_core.InputSignal<`form:${string}` | `list:${string}` | `detail:${string}` | `app-${string}:${string}` | null>;
37
+ readonly layoutOptions: _angular_core.InputSignal<Readonly<Record<string, unknown>>>;
38
+ submitForm(input: ResetPasswordRequestDTO): Promise<void>;
39
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AnarchitectsFeatureResetPassword, never>;
40
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AnarchitectsFeatureResetPassword, "anarchitects-auth-feature-reset-password", never, { "token": { "alias": "token"; "required": false; "isSignal": true; }; "layout": { "alias": "layout"; "required": false; "isSignal": true; }; "layoutOptions": { "alias": "layoutOptions"; "required": false; "isSignal": true; }; }, {}, never, ["ng-template[anxTemplate]", "[anxSlot]"], true, never>;
38
41
  }
39
42
 
40
43
  declare class AnarchitectsFeatureVerifyEmail {
41
44
  private readonly authStore;
42
- readonly token: i0.InputSignal<string | undefined>;
43
- readonly formConfig: i0.Signal<FormConfig>;
44
- submitForm(input: SubmissionRequestDTO): Promise<void>;
45
- static ɵfac: i0.ɵɵFactoryDeclaration<AnarchitectsFeatureVerifyEmail, never>;
46
- static ɵcmp: i0.ɵɵComponentDeclaration<AnarchitectsFeatureVerifyEmail, "anarchitects-auth-feature-verify-email", never, { "token": { "alias": "token"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
45
+ readonly token: _angular_core.InputSignal<string | undefined>;
46
+ readonly layout: _angular_core.InputSignal<`form:${string}` | `list:${string}` | `detail:${string}` | `app-${string}:${string}` | null>;
47
+ readonly layoutOptions: _angular_core.InputSignal<Readonly<Record<string, unknown>>>;
48
+ submitForm(input: VerifyEmailRequestDTO): Promise<void>;
49
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AnarchitectsFeatureVerifyEmail, never>;
50
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AnarchitectsFeatureVerifyEmail, "anarchitects-auth-feature-verify-email", never, { "token": { "alias": "token"; "required": false; "isSignal": true; }; "layout": { "alias": "layout"; "required": false; "isSignal": true; }; "layoutOptions": { "alias": "layoutOptions"; "required": false; "isSignal": true; }; }, {}, never, ["ng-template[anxTemplate]", "[anxSlot]"], true, never>;
47
51
  }
48
52
 
49
53
  declare class AnarchitectsFeatureChangePassword {
50
54
  private readonly authStore;
51
- readonly userId: i0.InputSignal<string | undefined>;
52
- readonly formConfig: i0.WritableSignal<FormConfig>;
55
+ readonly userId: _angular_core.InputSignal<string | undefined>;
56
+ readonly layout: _angular_core.InputSignal<`form:${string}` | `list:${string}` | `detail:${string}` | `app-${string}:${string}` | null>;
57
+ readonly layoutOptions: _angular_core.InputSignal<Readonly<Record<string, unknown>>>;
53
58
  private resolveUserId;
54
- submitForm(input: SubmissionRequestDTO): Promise<void>;
55
- static ɵfac: i0.ɵɵFactoryDeclaration<AnarchitectsFeatureChangePassword, never>;
56
- static ɵcmp: i0.ɵɵComponentDeclaration<AnarchitectsFeatureChangePassword, "anarchitects-auth-feature-change-password", never, { "userId": { "alias": "userId"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
59
+ submitForm(input: ChangePasswordRequestDTO): Promise<void>;
60
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AnarchitectsFeatureChangePassword, never>;
61
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AnarchitectsFeatureChangePassword, "anarchitects-auth-feature-change-password", never, { "userId": { "alias": "userId"; "required": false; "isSignal": true; }; "layout": { "alias": "layout"; "required": false; "isSignal": true; }; "layoutOptions": { "alias": "layoutOptions"; "required": false; "isSignal": true; }; }, {}, never, ["ng-template[anxTemplate]", "[anxSlot]"], true, never>;
57
62
  }
58
63
 
59
64
  declare class AnarchitectsFeatureUpdateEmail {
60
65
  private readonly authStore;
61
- readonly userId: i0.InputSignal<string | undefined>;
62
- readonly formConfig: i0.WritableSignal<FormConfig>;
66
+ readonly userId: _angular_core.InputSignal<string | undefined>;
67
+ readonly layout: _angular_core.InputSignal<`form:${string}` | `list:${string}` | `detail:${string}` | `app-${string}:${string}` | null>;
68
+ readonly layoutOptions: _angular_core.InputSignal<Readonly<Record<string, unknown>>>;
63
69
  private resolveUserId;
64
- submitForm(input: SubmissionRequestDTO): Promise<void>;
65
- static ɵfac: i0.ɵɵFactoryDeclaration<AnarchitectsFeatureUpdateEmail, never>;
66
- static ɵcmp: i0.ɵɵComponentDeclaration<AnarchitectsFeatureUpdateEmail, "anarchitects-auth-feature-update-email", never, { "userId": { "alias": "userId"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
70
+ submitForm(input: UpdateEmailRequestDTO): Promise<void>;
71
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AnarchitectsFeatureUpdateEmail, never>;
72
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AnarchitectsFeatureUpdateEmail, "anarchitects-auth-feature-update-email", never, { "userId": { "alias": "userId"; "required": false; "isSignal": true; }; "layout": { "alias": "layout"; "required": false; "isSignal": true; }; "layoutOptions": { "alias": "layoutOptions"; "required": false; "isSignal": true; }; }, {}, never, ["ng-template[anxTemplate]", "[anxSlot]"], true, never>;
67
73
  }
68
74
 
69
75
  declare class AnarchitectsFeatureLogout {
70
76
  private readonly authStore;
71
- readonly formConfig: i0.WritableSignal<FormConfig>;
72
- submitForm(input: SubmissionRequestDTO): Promise<void>;
73
- static ɵfac: i0.ɵɵFactoryDeclaration<AnarchitectsFeatureLogout, never>;
74
- static ɵcmp: i0.ɵɵComponentDeclaration<AnarchitectsFeatureLogout, "anarchitects-auth-feature-logout", never, {}, {}, never, never, true, never>;
77
+ readonly layout: _angular_core.InputSignal<`form:${string}` | `list:${string}` | `detail:${string}` | `app-${string}:${string}` | null>;
78
+ readonly layoutOptions: _angular_core.InputSignal<Readonly<Record<string, unknown>>>;
79
+ submitForm(input: LogoutRequestDTO): Promise<void>;
80
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AnarchitectsFeatureLogout, never>;
81
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AnarchitectsFeatureLogout, "anarchitects-auth-feature-logout", never, { "layout": { "alias": "layout"; "required": false; "isSignal": true; }; "layoutOptions": { "alias": "layoutOptions"; "required": false; "isSignal": true; }; }, {}, never, ["ng-template[anxTemplate]", "[anxSlot]"], true, never>;
75
82
  }
76
83
 
77
84
  declare class AnarchitectsFeatureRefreshTokens {
78
85
  private readonly authStore;
79
- readonly userId: i0.InputSignal<string | undefined>;
80
- readonly formConfig: i0.WritableSignal<FormConfig>;
86
+ readonly userId: _angular_core.InputSignal<string | undefined>;
87
+ readonly layout: _angular_core.InputSignal<`form:${string}` | `list:${string}` | `detail:${string}` | `app-${string}:${string}` | null>;
88
+ readonly layoutOptions: _angular_core.InputSignal<Readonly<Record<string, unknown>>>;
81
89
  private resolveUserId;
82
- submitForm(input: SubmissionRequestDTO): Promise<void>;
83
- static ɵfac: i0.ɵɵFactoryDeclaration<AnarchitectsFeatureRefreshTokens, never>;
84
- static ɵcmp: i0.ɵɵComponentDeclaration<AnarchitectsFeatureRefreshTokens, "anarchitects-auth-feature-refresh-tokens", never, { "userId": { "alias": "userId"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
90
+ submitForm(input: RefreshTokenRequestDTO): Promise<void>;
91
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AnarchitectsFeatureRefreshTokens, never>;
92
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AnarchitectsFeatureRefreshTokens, "anarchitects-auth-feature-refresh-tokens", never, { "userId": { "alias": "userId"; "required": false; "isSignal": true; }; "layout": { "alias": "layout"; "required": false; "isSignal": true; }; "layoutOptions": { "alias": "layoutOptions"; "required": false; "isSignal": true; }; }, {}, never, ["ng-template[anxTemplate]", "[anxSlot]"], true, never>;
85
93
  }
86
94
 
87
95
  declare const policyGuard: CanMatchFn;
88
96
 
89
97
  declare class AnarchitectsFeatureLogin {
90
98
  private readonly authStore;
91
- formConfig: i0.WritableSignal<FormConfig>;
92
- submitForm(input: SubmissionRequestDTO): Promise<void>;
93
- static ɵfac: i0.ɵɵFactoryDeclaration<AnarchitectsFeatureLogin, never>;
94
- static ɵcmp: i0.ɵɵComponentDeclaration<AnarchitectsFeatureLogin, "anarchitects-auth-feature-login", never, {}, {}, never, never, true, never>;
99
+ readonly layout: _angular_core.InputSignal<`form:${string}` | `list:${string}` | `detail:${string}` | `app-${string}:${string}` | null>;
100
+ readonly layoutOptions: _angular_core.InputSignal<Readonly<Record<string, unknown>>>;
101
+ submitForm(input: LoginRequestDTO): Promise<void>;
102
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AnarchitectsFeatureLogin, never>;
103
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AnarchitectsFeatureLogin, "anarchitects-auth-feature-login", never, { "layout": { "alias": "layout"; "required": false; "isSignal": true; }; "layoutOptions": { "alias": "layoutOptions"; "required": false; "isSignal": true; }; }, {}, never, ["ng-template[anxTemplate]", "[anxSlot]"], true, never>;
95
104
  }
96
105
 
97
106
  export { AnarchitectsFeatureActivateUser, AnarchitectsFeatureChangePassword, AnarchitectsFeatureForgotPassword, AnarchitectsFeatureLogin, AnarchitectsFeatureLogout, AnarchitectsFeatureRefreshTokens, AnarchitectsFeatureRegister, AnarchitectsFeatureResetPassword, AnarchitectsFeatureUpdateEmail, AnarchitectsFeatureVerifyEmail, policyGuard };
@@ -1,12 +1,15 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { Provider } from '@angular/core';
1
3
  import * as _ngrx_signals from '@ngrx/signals';
2
4
  import * as _ngrx_signals_rxjs_interop from '@ngrx/signals/rxjs-interop';
3
5
  import * as _ngrx_signals_entities from '@ngrx/signals/entities';
4
6
  import * as _casl_ability from '@casl/ability';
5
7
  import { PureAbility } from '@casl/ability';
6
- import * as _angular_core from '@angular/core';
7
8
  import { ChangePasswordRequestDTO, ResetPasswordRequestDTO, UpdateEmailRequestDTO, RefreshTokenRequestDTO } from '@anarchitects/auth-ts/dtos';
8
9
  import { User } from '@anarchitects/auth-ts/models';
9
10
 
11
+ declare function provideAuthState(): Provider;
12
+
10
13
  type AuthUser = Pick<User, 'id' | 'email'>;
11
14
  declare const AuthStore: _angular_core.Type<{
12
15
  loading: _angular_core.Signal<boolean>;
@@ -65,4 +68,4 @@ declare const AuthStore: _angular_core.Type<{
65
68
  ids: _ngrx_signals_entities.EntityId[];
66
69
  }>>;
67
70
 
68
- export { AuthStore };
71
+ export { AuthStore, provideAuthState };
@@ -0,0 +1,138 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { SubmissionRequestDTO } from '@anarchitects/forms-ts/dtos';
3
+ import { FormConfig } from '@anarchitects/forms-ts/models';
4
+
5
+ declare class AnarchitectsAuthUiLoginForm {
6
+ readonly layout: _angular_core.InputSignal<`form:${string}` | `list:${string}` | `detail:${string}` | `app-${string}:${string}` | null>;
7
+ readonly layoutOptions: _angular_core.InputSignal<Readonly<Record<string, unknown>>>;
8
+ readonly submitted: _angular_core.OutputEmitterRef<{
9
+ credential: string;
10
+ password: string;
11
+ }>;
12
+ readonly formConfig: _angular_core.WritableSignal<FormConfig>;
13
+ onSubmitted(input: SubmissionRequestDTO): void;
14
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AnarchitectsAuthUiLoginForm, never>;
15
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AnarchitectsAuthUiLoginForm, "anarchitects-auth-ui-login-form", never, { "layout": { "alias": "layout"; "required": false; "isSignal": true; }; "layoutOptions": { "alias": "layoutOptions"; "required": false; "isSignal": true; }; }, { "submitted": "submitted"; }, never, ["ng-template[anxTemplate]", "[anxSlot]"], true, never>;
16
+ }
17
+
18
+ declare class AnarchitectsAuthUiRegisterForm {
19
+ readonly layout: _angular_core.InputSignal<`form:${string}` | `list:${string}` | `detail:${string}` | `app-${string}:${string}` | null>;
20
+ readonly layoutOptions: _angular_core.InputSignal<Readonly<Record<string, unknown>>>;
21
+ readonly submitted: _angular_core.OutputEmitterRef<{
22
+ userName?: string | undefined;
23
+ password: string;
24
+ email: string;
25
+ confirmPassword: string;
26
+ }>;
27
+ readonly formConfig: _angular_core.WritableSignal<FormConfig>;
28
+ onSubmitted(input: SubmissionRequestDTO): void;
29
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AnarchitectsAuthUiRegisterForm, never>;
30
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AnarchitectsAuthUiRegisterForm, "anarchitects-auth-ui-register-form", never, { "layout": { "alias": "layout"; "required": false; "isSignal": true; }; "layoutOptions": { "alias": "layoutOptions"; "required": false; "isSignal": true; }; }, { "submitted": "submitted"; }, never, ["ng-template[anxTemplate]", "[anxSlot]"], true, never>;
31
+ }
32
+
33
+ declare class AnarchitectsAuthUiActivateUserForm {
34
+ readonly token: _angular_core.InputSignal<string | undefined>;
35
+ readonly layout: _angular_core.InputSignal<`form:${string}` | `list:${string}` | `detail:${string}` | `app-${string}:${string}` | null>;
36
+ readonly layoutOptions: _angular_core.InputSignal<Readonly<Record<string, unknown>>>;
37
+ readonly submitted: _angular_core.OutputEmitterRef<{
38
+ token: string;
39
+ }>;
40
+ readonly formConfig: _angular_core.Signal<FormConfig>;
41
+ onSubmitted(input: SubmissionRequestDTO): void;
42
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AnarchitectsAuthUiActivateUserForm, never>;
43
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AnarchitectsAuthUiActivateUserForm, "anarchitects-auth-ui-activate-user-form", never, { "token": { "alias": "token"; "required": false; "isSignal": true; }; "layout": { "alias": "layout"; "required": false; "isSignal": true; }; "layoutOptions": { "alias": "layoutOptions"; "required": false; "isSignal": true; }; }, { "submitted": "submitted"; }, never, ["ng-template[anxTemplate]", "[anxSlot]"], true, never>;
44
+ }
45
+
46
+ declare class AnarchitectsAuthUiForgotPasswordForm {
47
+ readonly layout: _angular_core.InputSignal<`form:${string}` | `list:${string}` | `detail:${string}` | `app-${string}:${string}` | null>;
48
+ readonly layoutOptions: _angular_core.InputSignal<Readonly<Record<string, unknown>>>;
49
+ readonly submitted: _angular_core.OutputEmitterRef<{
50
+ email: string;
51
+ }>;
52
+ readonly formConfig: _angular_core.WritableSignal<FormConfig>;
53
+ onSubmitted(input: SubmissionRequestDTO): void;
54
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AnarchitectsAuthUiForgotPasswordForm, never>;
55
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AnarchitectsAuthUiForgotPasswordForm, "anarchitects-auth-ui-forgot-password-form", never, { "layout": { "alias": "layout"; "required": false; "isSignal": true; }; "layoutOptions": { "alias": "layoutOptions"; "required": false; "isSignal": true; }; }, { "submitted": "submitted"; }, never, ["ng-template[anxTemplate]", "[anxSlot]"], true, never>;
56
+ }
57
+
58
+ declare class AnarchitectsAuthUiResetPasswordForm {
59
+ readonly token: _angular_core.InputSignal<string | undefined>;
60
+ readonly layout: _angular_core.InputSignal<`form:${string}` | `list:${string}` | `detail:${string}` | `app-${string}:${string}` | null>;
61
+ readonly layoutOptions: _angular_core.InputSignal<Readonly<Record<string, unknown>>>;
62
+ readonly submitted: _angular_core.OutputEmitterRef<{
63
+ password: string;
64
+ confirmPassword: string;
65
+ token: string;
66
+ }>;
67
+ readonly formConfig: _angular_core.Signal<FormConfig>;
68
+ onSubmitted(input: SubmissionRequestDTO): void;
69
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AnarchitectsAuthUiResetPasswordForm, never>;
70
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AnarchitectsAuthUiResetPasswordForm, "anarchitects-auth-ui-reset-password-form", never, { "token": { "alias": "token"; "required": false; "isSignal": true; }; "layout": { "alias": "layout"; "required": false; "isSignal": true; }; "layoutOptions": { "alias": "layoutOptions"; "required": false; "isSignal": true; }; }, { "submitted": "submitted"; }, never, ["ng-template[anxTemplate]", "[anxSlot]"], true, never>;
71
+ }
72
+
73
+ declare class AnarchitectsAuthUiVerifyEmailForm {
74
+ readonly token: _angular_core.InputSignal<string | undefined>;
75
+ readonly layout: _angular_core.InputSignal<`form:${string}` | `list:${string}` | `detail:${string}` | `app-${string}:${string}` | null>;
76
+ readonly layoutOptions: _angular_core.InputSignal<Readonly<Record<string, unknown>>>;
77
+ readonly submitted: _angular_core.OutputEmitterRef<{
78
+ token: string;
79
+ }>;
80
+ readonly formConfig: _angular_core.Signal<FormConfig>;
81
+ onSubmitted(input: SubmissionRequestDTO): void;
82
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AnarchitectsAuthUiVerifyEmailForm, never>;
83
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AnarchitectsAuthUiVerifyEmailForm, "anarchitects-auth-ui-verify-email-form", never, { "token": { "alias": "token"; "required": false; "isSignal": true; }; "layout": { "alias": "layout"; "required": false; "isSignal": true; }; "layoutOptions": { "alias": "layoutOptions"; "required": false; "isSignal": true; }; }, { "submitted": "submitted"; }, never, ["ng-template[anxTemplate]", "[anxSlot]"], true, never>;
84
+ }
85
+
86
+ declare class AnarchitectsAuthUiChangePasswordForm {
87
+ readonly layout: _angular_core.InputSignal<`form:${string}` | `list:${string}` | `detail:${string}` | `app-${string}:${string}` | null>;
88
+ readonly layoutOptions: _angular_core.InputSignal<Readonly<Record<string, unknown>>>;
89
+ readonly submitted: _angular_core.OutputEmitterRef<{
90
+ confirmPassword: string;
91
+ currentPassword: string;
92
+ newPassword: string;
93
+ }>;
94
+ readonly formConfig: _angular_core.WritableSignal<FormConfig>;
95
+ onSubmitted(input: SubmissionRequestDTO): void;
96
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AnarchitectsAuthUiChangePasswordForm, never>;
97
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AnarchitectsAuthUiChangePasswordForm, "anarchitects-auth-ui-change-password-form", never, { "layout": { "alias": "layout"; "required": false; "isSignal": true; }; "layoutOptions": { "alias": "layoutOptions"; "required": false; "isSignal": true; }; }, { "submitted": "submitted"; }, never, ["ng-template[anxTemplate]", "[anxSlot]"], true, never>;
98
+ }
99
+
100
+ declare class AnarchitectsAuthUiUpdateEmailForm {
101
+ readonly layout: _angular_core.InputSignal<`form:${string}` | `list:${string}` | `detail:${string}` | `app-${string}:${string}` | null>;
102
+ readonly layoutOptions: _angular_core.InputSignal<Readonly<Record<string, unknown>>>;
103
+ readonly submitted: _angular_core.OutputEmitterRef<{
104
+ password?: string | undefined;
105
+ newEmail: string;
106
+ }>;
107
+ readonly formConfig: _angular_core.WritableSignal<FormConfig>;
108
+ onSubmitted(input: SubmissionRequestDTO): void;
109
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AnarchitectsAuthUiUpdateEmailForm, never>;
110
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AnarchitectsAuthUiUpdateEmailForm, "anarchitects-auth-ui-update-email-form", never, { "layout": { "alias": "layout"; "required": false; "isSignal": true; }; "layoutOptions": { "alias": "layoutOptions"; "required": false; "isSignal": true; }; }, { "submitted": "submitted"; }, never, ["ng-template[anxTemplate]", "[anxSlot]"], true, never>;
111
+ }
112
+
113
+ declare class AnarchitectsAuthUiLogoutForm {
114
+ readonly layout: _angular_core.InputSignal<`form:${string}` | `list:${string}` | `detail:${string}` | `app-${string}:${string}` | null>;
115
+ readonly layoutOptions: _angular_core.InputSignal<Readonly<Record<string, unknown>>>;
116
+ readonly submitted: _angular_core.OutputEmitterRef<{
117
+ accessToken?: string | undefined;
118
+ refreshToken: string;
119
+ }>;
120
+ readonly formConfig: _angular_core.WritableSignal<FormConfig>;
121
+ onSubmitted(input: SubmissionRequestDTO): void;
122
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AnarchitectsAuthUiLogoutForm, never>;
123
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AnarchitectsAuthUiLogoutForm, "anarchitects-auth-ui-logout-form", never, { "layout": { "alias": "layout"; "required": false; "isSignal": true; }; "layoutOptions": { "alias": "layoutOptions"; "required": false; "isSignal": true; }; }, { "submitted": "submitted"; }, never, ["ng-template[anxTemplate]", "[anxSlot]"], true, never>;
124
+ }
125
+
126
+ declare class AnarchitectsAuthUiRefreshTokensForm {
127
+ readonly layout: _angular_core.InputSignal<`form:${string}` | `list:${string}` | `detail:${string}` | `app-${string}:${string}` | null>;
128
+ readonly layoutOptions: _angular_core.InputSignal<Readonly<Record<string, unknown>>>;
129
+ readonly submitted: _angular_core.OutputEmitterRef<{
130
+ refreshToken: string;
131
+ }>;
132
+ readonly formConfig: _angular_core.WritableSignal<FormConfig>;
133
+ onSubmitted(input: SubmissionRequestDTO): void;
134
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AnarchitectsAuthUiRefreshTokensForm, never>;
135
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AnarchitectsAuthUiRefreshTokensForm, "anarchitects-auth-ui-refresh-tokens-form", never, { "layout": { "alias": "layout"; "required": false; "isSignal": true; }; "layoutOptions": { "alias": "layoutOptions"; "required": false; "isSignal": true; }; }, { "submitted": "submitted"; }, never, ["ng-template[anxTemplate]", "[anxSlot]"], true, never>;
136
+ }
137
+
138
+ export { AnarchitectsAuthUiActivateUserForm, AnarchitectsAuthUiChangePasswordForm, AnarchitectsAuthUiForgotPasswordForm, AnarchitectsAuthUiLoginForm, AnarchitectsAuthUiLogoutForm, AnarchitectsAuthUiRefreshTokensForm, AnarchitectsAuthUiRegisterForm, AnarchitectsAuthUiResetPasswordForm, AnarchitectsAuthUiUpdateEmailForm, AnarchitectsAuthUiVerifyEmailForm };
@@ -2,4 +2,5 @@ export * from '@anarchitects/auth-angular/config';
2
2
  export * from '@anarchitects/auth-angular/data-access';
3
3
  export * from '@anarchitects/auth-angular/feature';
4
4
  export * from '@anarchitects/auth-angular/state';
5
+ export * from '@anarchitects/auth-angular/ui';
5
6
  export * from '@anarchitects/auth-angular/util';
package/ui/README.md ADDED
@@ -0,0 +1,22 @@
1
+ # @anarchitects/auth-angular/ui
2
+
3
+ Domain UI components for `@anarchitects/auth-angular`.
4
+
5
+ ## Exports
6
+
7
+ - `AnarchitectsAuthUiLoginForm`
8
+ - `AnarchitectsAuthUiRegisterForm`
9
+ - `AnarchitectsAuthUiActivateUserForm`
10
+ - `AnarchitectsAuthUiForgotPasswordForm`
11
+ - `AnarchitectsAuthUiResetPasswordForm`
12
+ - `AnarchitectsAuthUiVerifyEmailForm`
13
+ - `AnarchitectsAuthUiChangePasswordForm`
14
+ - `AnarchitectsAuthUiUpdateEmailForm`
15
+ - `AnarchitectsAuthUiLogoutForm`
16
+ - `AnarchitectsAuthUiRefreshTokensForm`
17
+
18
+ All components compose `AnarchitectsUiForm`, support layout passthrough, and forward canonical template/slot projection hooks.
19
+
20
+ ## License
21
+
22
+ Released under the [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0).
package/util/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @anarchitects/auth-angular/util
2
2
 
3
- Utility layer for the Angular auth brick. Re-exported via `@anarchitects/auth-angular/util`, it centralises CASL ability helpers that are consumed by the feature and state slices.
3
+ Utility layer for Angular auth. Re-exported via `@anarchitects/auth-angular/util`, it centralises CASL ability helpers that are consumed by the feature and state slices.
4
4
 
5
5
  ## Exports
6
6