valtech-components 2.0.627 → 2.0.629
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/esm2022/lib/components/molecules/action-card/action-card.component.mjs +298 -0
- package/esm2022/lib/components/molecules/action-card/types.mjs +11 -0
- package/esm2022/lib/components/molecules/linked-providers/linked-providers.component.mjs +236 -0
- package/esm2022/lib/components/molecules/linked-providers/types.mjs +27 -0
- package/esm2022/lib/components/molecules/username-input/types.mjs +2 -0
- package/esm2022/lib/components/molecules/username-input/username-input.component.mjs +260 -0
- package/esm2022/lib/services/auth/auth.service.mjs +24 -1
- package/esm2022/lib/services/auth/types.mjs +1 -1
- package/esm2022/public-api.mjs +7 -1
- package/fesm2022/valtech-components.mjs +870 -42
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/molecules/action-card/action-card.component.d.ts +90 -0
- package/lib/components/molecules/action-card/types.d.ts +83 -0
- package/lib/components/molecules/linked-providers/linked-providers.component.d.ts +30 -0
- package/lib/components/molecules/linked-providers/types.d.ts +38 -0
- package/lib/components/molecules/username-input/types.d.ts +34 -0
- package/lib/components/molecules/username-input/username-input.component.d.ts +45 -0
- package/lib/services/auth/auth.service.d.ts +11 -1
- package/lib/services/auth/types.d.ts +56 -0
- package/package.json +1 -1
- package/public-api.d.ts +6 -0
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { EventEmitter } from '@angular/core';
|
|
2
|
+
import { ActionCardMetadata, ActionCardClickEvent } from './types';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
/**
|
|
5
|
+
* val-action-card
|
|
6
|
+
*
|
|
7
|
+
* A clickable card component with icon, title, description, and optional badge.
|
|
8
|
+
* Supports multiple icon formats: Ionicons, SVG paths, and image URLs.
|
|
9
|
+
*
|
|
10
|
+
* @example Basic usage with Ionicon
|
|
11
|
+
* ```html
|
|
12
|
+
* <val-action-card
|
|
13
|
+
* [props]="{
|
|
14
|
+
* icon: { ionicon: 'settings-outline' },
|
|
15
|
+
* title: 'Settings',
|
|
16
|
+
* description: 'Manage your preferences'
|
|
17
|
+
* }"
|
|
18
|
+
* (cardClick)="onCardClick($event)"
|
|
19
|
+
* />
|
|
20
|
+
* ```
|
|
21
|
+
*
|
|
22
|
+
* @example With routerLink navigation
|
|
23
|
+
* ```html
|
|
24
|
+
* <val-action-card
|
|
25
|
+
* [props]="{
|
|
26
|
+
* icon: { ionicon: 'person-outline', color: 'primary' },
|
|
27
|
+
* title: 'Profile',
|
|
28
|
+
* description: 'View and edit your profile',
|
|
29
|
+
* routerLink: '/settings/profile',
|
|
30
|
+
* showChevron: true
|
|
31
|
+
* }"
|
|
32
|
+
* />
|
|
33
|
+
* ```
|
|
34
|
+
*
|
|
35
|
+
* @example With custom SVG icon
|
|
36
|
+
* ```html
|
|
37
|
+
* <val-action-card
|
|
38
|
+
* [props]="{
|
|
39
|
+
* icon: { svgPath: 'M12 2L2 7l10 5 10-5-10-5zM2 17l10 5 10-5M2 12l10 5 10-5' },
|
|
40
|
+
* title: 'Custom Feature',
|
|
41
|
+
* description: 'A feature with custom SVG icon',
|
|
42
|
+
* badge: { text: 'NEW', color: 'light', backgroundColor: 'primary' }
|
|
43
|
+
* }"
|
|
44
|
+
* />
|
|
45
|
+
* ```
|
|
46
|
+
*/
|
|
47
|
+
export declare class ActionCardComponent {
|
|
48
|
+
private i18n;
|
|
49
|
+
private navigation;
|
|
50
|
+
/** Component configuration */
|
|
51
|
+
readonly props: import("@angular/core").InputSignal<Partial<ActionCardMetadata>>;
|
|
52
|
+
/** Event emitted when card is clicked */
|
|
53
|
+
cardClick: EventEmitter<ActionCardClickEvent>;
|
|
54
|
+
/** Merged configuration with defaults */
|
|
55
|
+
config: import("@angular/core").Signal<{
|
|
56
|
+
token?: string;
|
|
57
|
+
icon?: import("./types").ActionCardIcon;
|
|
58
|
+
title?: string;
|
|
59
|
+
titleKey?: string;
|
|
60
|
+
description?: string;
|
|
61
|
+
descriptionKey?: string;
|
|
62
|
+
i18nNamespace?: string;
|
|
63
|
+
size: import("./types").ActionCardSize;
|
|
64
|
+
bordered: boolean;
|
|
65
|
+
borderColor?: string | (string & Record<never, never>);
|
|
66
|
+
backgroundColor?: string | (string & Record<never, never>);
|
|
67
|
+
shadowed: boolean;
|
|
68
|
+
disabled: boolean;
|
|
69
|
+
routerLink?: string | any[];
|
|
70
|
+
href?: string;
|
|
71
|
+
badge?: import("./types").ActionCardBadge;
|
|
72
|
+
showChevron: boolean;
|
|
73
|
+
}>;
|
|
74
|
+
/** Get title with i18n support */
|
|
75
|
+
getTitle(): string;
|
|
76
|
+
/** Get description with i18n support */
|
|
77
|
+
getDescription(): string;
|
|
78
|
+
/** Resolve color to CSS value */
|
|
79
|
+
private resolveColor;
|
|
80
|
+
getBackgroundColor(): string | null;
|
|
81
|
+
getBorderColor(): string | null;
|
|
82
|
+
getIconColor(): string | null;
|
|
83
|
+
getIconBackgroundColor(): string | null;
|
|
84
|
+
getBadgeColor(): string | null;
|
|
85
|
+
getBadgeBackgroundColor(): string | null;
|
|
86
|
+
/** Handle card click */
|
|
87
|
+
handleClick(event: MouseEvent): void;
|
|
88
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ActionCardComponent, never>;
|
|
89
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ActionCardComponent, "val-action-card", never, { "props": { "alias": "props"; "required": false; "isSignal": true; }; }, { "cardClick": "cardClick"; }, never, never, true, never>;
|
|
90
|
+
}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { Color } from '@ionic/core';
|
|
2
|
+
/**
|
|
3
|
+
* Size options for action-card
|
|
4
|
+
*/
|
|
5
|
+
export type ActionCardSize = 'small' | 'medium' | 'large';
|
|
6
|
+
/**
|
|
7
|
+
* Badge configuration for action-card
|
|
8
|
+
*/
|
|
9
|
+
export interface ActionCardBadge {
|
|
10
|
+
/** Badge text */
|
|
11
|
+
text: string;
|
|
12
|
+
/** Badge color (Ionic color name or CSS color) */
|
|
13
|
+
color?: Color | string;
|
|
14
|
+
/** Badge background color */
|
|
15
|
+
backgroundColor?: Color | string;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Icon configuration - supports multiple icon sources
|
|
19
|
+
*/
|
|
20
|
+
export interface ActionCardIcon {
|
|
21
|
+
/** Ionicon name (e.g., 'settings-outline', 'home') */
|
|
22
|
+
ionicon?: string;
|
|
23
|
+
/** SVG path data for custom icons */
|
|
24
|
+
svgPath?: string;
|
|
25
|
+
/** Image URL for custom images */
|
|
26
|
+
imageUrl?: string;
|
|
27
|
+
/** Icon color (Ionic color name or CSS color) */
|
|
28
|
+
color?: Color | string;
|
|
29
|
+
/** Icon background color */
|
|
30
|
+
backgroundColor?: Color | string;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Click event emitted by action-card
|
|
34
|
+
*/
|
|
35
|
+
export interface ActionCardClickEvent {
|
|
36
|
+
/** Token identifier for the card */
|
|
37
|
+
token?: string;
|
|
38
|
+
/** Whether navigation was triggered (if routerLink was set) */
|
|
39
|
+
navigated?: boolean;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Metadata for val-action-card component
|
|
43
|
+
*/
|
|
44
|
+
export interface ActionCardMetadata {
|
|
45
|
+
/** Unique token for identification */
|
|
46
|
+
token?: string;
|
|
47
|
+
/** Icon configuration object */
|
|
48
|
+
icon?: ActionCardIcon;
|
|
49
|
+
/** Card title (static text) */
|
|
50
|
+
title: string;
|
|
51
|
+
/** i18n key for title */
|
|
52
|
+
titleKey?: string;
|
|
53
|
+
/** Card description (static text) */
|
|
54
|
+
description?: string;
|
|
55
|
+
/** i18n key for description */
|
|
56
|
+
descriptionKey?: string;
|
|
57
|
+
/** i18n namespace for translations */
|
|
58
|
+
i18nNamespace?: string;
|
|
59
|
+
/** Card size variant */
|
|
60
|
+
size?: ActionCardSize;
|
|
61
|
+
/** Show border */
|
|
62
|
+
bordered?: boolean;
|
|
63
|
+
/** Border color */
|
|
64
|
+
borderColor?: Color | string;
|
|
65
|
+
/** Card background color */
|
|
66
|
+
backgroundColor?: Color | string;
|
|
67
|
+
/** Show shadow */
|
|
68
|
+
shadowed?: boolean;
|
|
69
|
+
/** Disabled state */
|
|
70
|
+
disabled?: boolean;
|
|
71
|
+
/** Router link for navigation */
|
|
72
|
+
routerLink?: string | any[];
|
|
73
|
+
/** External URL (opens in new tab/browser) */
|
|
74
|
+
href?: string;
|
|
75
|
+
/** Badge configuration */
|
|
76
|
+
badge?: ActionCardBadge;
|
|
77
|
+
/** Show chevron icon on the right */
|
|
78
|
+
showChevron?: boolean;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Default values for ActionCardMetadata
|
|
82
|
+
*/
|
|
83
|
+
export declare const ACTION_CARD_DEFAULTS: Required<Pick<ActionCardMetadata, 'size' | 'bordered' | 'shadowed' | 'disabled' | 'showChevron'>>;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { LinkedProvidersMetadata, ProviderDisplayInfo } from './types';
|
|
2
|
+
import { LinkedProvider, OAuthProvider } from '../../../services/auth/types';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
/**
|
|
5
|
+
* Linked Providers Component
|
|
6
|
+
*
|
|
7
|
+
* Muestra los proveedores OAuth vinculados al usuario y permite
|
|
8
|
+
* vincular nuevos o desvincular existentes.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* <val-linked-providers
|
|
12
|
+
* [props]="{
|
|
13
|
+
* providers: linkedProviders(),
|
|
14
|
+
* onLink: linkProvider,
|
|
15
|
+
* onUnlink: unlinkProvider
|
|
16
|
+
* }"
|
|
17
|
+
* />
|
|
18
|
+
*/
|
|
19
|
+
export declare class LinkedProvidersComponent {
|
|
20
|
+
props: LinkedProvidersMetadata;
|
|
21
|
+
private alertCtrl;
|
|
22
|
+
linkedProviders: import("@angular/core").Signal<LinkedProvider[]>;
|
|
23
|
+
unlinkedProviders: import("@angular/core").Signal<ProviderDisplayInfo[]>;
|
|
24
|
+
canUnlink: import("@angular/core").Signal<boolean>;
|
|
25
|
+
getProviderInfo(provider: OAuthProvider): ProviderDisplayInfo;
|
|
26
|
+
onLinkProvider(provider: OAuthProvider): void;
|
|
27
|
+
confirmUnlink(provider: OAuthProvider): Promise<void>;
|
|
28
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<LinkedProvidersComponent, never>;
|
|
29
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<LinkedProvidersComponent, "val-linked-providers", never, { "props": { "alias": "props"; "required": false; }; }, {}, never, never, true, never>;
|
|
30
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { LinkedProvider, OAuthProvider } from '../../../services/auth/types';
|
|
2
|
+
/**
|
|
3
|
+
* Metadata para LinkedProvidersComponent.
|
|
4
|
+
*/
|
|
5
|
+
export interface LinkedProvidersMetadata {
|
|
6
|
+
/** Lista de proveedores vinculados */
|
|
7
|
+
providers: LinkedProvider[];
|
|
8
|
+
/** Proveedores disponibles para vincular (default: ['google']) */
|
|
9
|
+
availableProviders?: OAuthProvider[];
|
|
10
|
+
/** Callback cuando se quiere vincular un provider */
|
|
11
|
+
onLink?: (provider: OAuthProvider) => void;
|
|
12
|
+
/** Callback cuando se quiere desvincular un provider */
|
|
13
|
+
onUnlink?: (provider: OAuthProvider) => void;
|
|
14
|
+
/** Mostrar botón para vincular nuevos (default: true) */
|
|
15
|
+
showLinkButton?: boolean;
|
|
16
|
+
/** Permitir desvincular (default: true si hay más de un método de auth) */
|
|
17
|
+
allowUnlink?: boolean;
|
|
18
|
+
/** Título de la sección */
|
|
19
|
+
title?: string;
|
|
20
|
+
/** Descripción de la sección */
|
|
21
|
+
description?: string;
|
|
22
|
+
/** Modo compacto sin card */
|
|
23
|
+
compact?: boolean;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Información visual de un proveedor OAuth.
|
|
27
|
+
*/
|
|
28
|
+
export interface ProviderDisplayInfo {
|
|
29
|
+
id: OAuthProvider;
|
|
30
|
+
name: string;
|
|
31
|
+
icon: string;
|
|
32
|
+
color: string;
|
|
33
|
+
bgColor: string;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Información de proveedores OAuth disponibles.
|
|
37
|
+
*/
|
|
38
|
+
export declare const OAUTH_PROVIDERS_INFO: Record<OAuthProvider, ProviderDisplayInfo>;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { FormControl } from '@angular/forms';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
import { ComponentState } from '../../types';
|
|
4
|
+
/**
|
|
5
|
+
* Metadata for UsernameInputComponent.
|
|
6
|
+
*/
|
|
7
|
+
export interface UsernameInputMetadata {
|
|
8
|
+
/** FormControl para el valor del username */
|
|
9
|
+
control: FormControl<string>;
|
|
10
|
+
/** Label del campo */
|
|
11
|
+
label?: string;
|
|
12
|
+
/** Placeholder del input */
|
|
13
|
+
placeholder?: string;
|
|
14
|
+
/** Prefijo visual (default: '@') */
|
|
15
|
+
prefix?: string;
|
|
16
|
+
/** Longitud mínima permitida (default: 3) */
|
|
17
|
+
minLength?: number;
|
|
18
|
+
/** Longitud máxima permitida (default: 30) */
|
|
19
|
+
maxLength?: number;
|
|
20
|
+
/** Función para verificar disponibilidad del username */
|
|
21
|
+
checkAvailability?: (handle: string) => Observable<boolean>;
|
|
22
|
+
/** Mensajes de error personalizados */
|
|
23
|
+
errors?: Record<string, string>;
|
|
24
|
+
/** Estado del componente */
|
|
25
|
+
state?: ComponentState;
|
|
26
|
+
/** Mostrar indicador de disponibilidad (default: true) */
|
|
27
|
+
showAvailability?: boolean;
|
|
28
|
+
/** Debounce en ms para check de disponibilidad (default: 500) */
|
|
29
|
+
debounceTime?: number;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Estado de disponibilidad del username.
|
|
33
|
+
*/
|
|
34
|
+
export type UsernameAvailabilityStatus = 'idle' | 'checking' | 'available' | 'taken' | 'invalid';
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { OnInit, OnDestroy } from '@angular/core';
|
|
2
|
+
import { UsernameInputMetadata, UsernameAvailabilityStatus } from './types';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
/**
|
|
5
|
+
* Username Input Component
|
|
6
|
+
*
|
|
7
|
+
* Input especializado para usernames/handles con:
|
|
8
|
+
* - Prefijo '@' visual
|
|
9
|
+
* - Validación de formato (alfanuméricos y _)
|
|
10
|
+
* - Normalización automática (lowercase, sin espacios)
|
|
11
|
+
* - Verificación de disponibilidad con debounce
|
|
12
|
+
* - Estados visuales: available, taken, checking
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* <val-username-input
|
|
16
|
+
* [props]="{
|
|
17
|
+
* control: usernameControl,
|
|
18
|
+
* label: 'Nombre de usuario',
|
|
19
|
+
* placeholder: 'tu_username',
|
|
20
|
+
* checkAvailability: checkFn
|
|
21
|
+
* }"
|
|
22
|
+
* />
|
|
23
|
+
*/
|
|
24
|
+
export declare class UsernameInputComponent implements OnInit, OnDestroy {
|
|
25
|
+
props: UsernameInputMetadata;
|
|
26
|
+
private destroy$;
|
|
27
|
+
private checkAvailability$;
|
|
28
|
+
isFocused: import("@angular/core").WritableSignal<boolean>;
|
|
29
|
+
availabilityStatus: import("@angular/core").WritableSignal<UsernameAvailabilityStatus>;
|
|
30
|
+
hasError: import("@angular/core").Signal<boolean>;
|
|
31
|
+
showStatusMessage: import("@angular/core").Signal<boolean>;
|
|
32
|
+
statusColor: import("@angular/core").Signal<"success" | "danger">;
|
|
33
|
+
statusMessage: import("@angular/core").Signal<"" | "Username disponible" | "Username ya está en uso">;
|
|
34
|
+
errorMessage: import("@angular/core").Signal<string>;
|
|
35
|
+
ngOnInit(): void;
|
|
36
|
+
ngOnDestroy(): void;
|
|
37
|
+
onFocus(): void;
|
|
38
|
+
onBlur(): void;
|
|
39
|
+
onInput(event: CustomEvent): void;
|
|
40
|
+
private setupAvailabilityCheck;
|
|
41
|
+
private normalizeUsername;
|
|
42
|
+
private isValidFormat;
|
|
43
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<UsernameInputComponent, never>;
|
|
44
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<UsernameInputComponent, "val-username-input", never, { "props": { "alias": "props"; "required": false; }; }, {}, never, never, true, never>;
|
|
45
|
+
}
|
|
@@ -6,7 +6,7 @@ import { AuthStateService } from './auth-state.service';
|
|
|
6
6
|
import { TokenService } from './token.service';
|
|
7
7
|
import { AuthStorageService } from './storage.service';
|
|
8
8
|
import { AuthSyncService } from './sync.service';
|
|
9
|
-
import { SigninRequest, SigninResponse, SignupRequest, SignupResponse, VerifyEmailRequest, VerifyEmailResponse, ResendCodeRequest, ResendCodeResponse, MFAVerifyResponse, RefreshResponse, GetPermissionsResponse, GetProfileResponse, UpdateProfileRequest, UpdateProfileResponse, MFASetupResponse, MFAConfirmResponse, MFADisableResponse, ForgotPasswordRequest, ForgotPasswordResponse, ResetPasswordRequest, ResetPasswordResponse, ChangePasswordResponse, DeleteAccountResponse, SwitchOrgResponse, MFAMethod, AuthError, ValtechAuthConfig, EnableNotificationsResult, NotificationPermissionState, RegisterDeviceResult, TOTPSetupResponse, TOTPVerifySetupResponse, TOTPDisableResponse, RegenerateBackupCodesResponse, BackupCodesCountResponse, OAuthProvider, LinkedProvider, HasPasswordResponse } from './types';
|
|
9
|
+
import { SigninRequest, SigninResponse, SignupRequest, SignupResponse, VerifyEmailRequest, VerifyEmailResponse, ResendCodeRequest, ResendCodeResponse, MFAVerifyResponse, RefreshResponse, GetPermissionsResponse, GetProfileResponse, UpdateProfileRequest, UpdateProfileResponse, MFASetupResponse, MFAConfirmResponse, MFADisableResponse, ForgotPasswordRequest, ForgotPasswordResponse, ResetPasswordRequest, ResetPasswordResponse, ChangePasswordResponse, DeleteAccountResponse, SwitchOrgResponse, MFAMethod, AuthError, ValtechAuthConfig, EnableNotificationsResult, NotificationPermissionState, RegisterDeviceResult, TOTPSetupResponse, TOTPVerifySetupResponse, TOTPDisableResponse, RegenerateBackupCodesResponse, BackupCodesCountResponse, OAuthProvider, LinkedProvider, HasPasswordResponse, UpdateHandleResponse, CheckHandleResponse } from './types';
|
|
10
10
|
import { OAuthService } from './oauth.service';
|
|
11
11
|
import { FirebaseService, MessagingService } from '../firebase';
|
|
12
12
|
import { I18nService } from '../i18n';
|
|
@@ -298,6 +298,16 @@ export declare class AuthService implements OnDestroy {
|
|
|
298
298
|
* Verifica si el usuario tiene un rol específico.
|
|
299
299
|
*/
|
|
300
300
|
hasRole(role: string): boolean;
|
|
301
|
+
/**
|
|
302
|
+
* Actualiza el handle (@username) del usuario.
|
|
303
|
+
* @param handle - Nuevo handle (sin @, ej: "victorv")
|
|
304
|
+
*/
|
|
305
|
+
updateHandle(handle: string): Observable<UpdateHandleResponse>;
|
|
306
|
+
/**
|
|
307
|
+
* Verifica si un handle está disponible.
|
|
308
|
+
* @param handle - Handle a verificar (sin @)
|
|
309
|
+
*/
|
|
310
|
+
checkHandleAvailability(handle: string): Observable<CheckHandleResponse>;
|
|
301
311
|
private get baseUrl();
|
|
302
312
|
private handleSuccessfulAuth;
|
|
303
313
|
private clearState;
|
|
@@ -64,6 +64,10 @@ export interface AuthUser {
|
|
|
64
64
|
email: string;
|
|
65
65
|
name?: string;
|
|
66
66
|
phone?: string;
|
|
67
|
+
/** Username/handle del usuario (ej: @victorv) */
|
|
68
|
+
handle?: string;
|
|
69
|
+
/** URL del avatar del usuario */
|
|
70
|
+
avatarUrl?: string;
|
|
67
71
|
roles: string[];
|
|
68
72
|
permissions: string[];
|
|
69
73
|
isSuperAdmin: boolean;
|
|
@@ -424,6 +428,10 @@ export interface GetProfileResponse {
|
|
|
424
428
|
email: string;
|
|
425
429
|
name: string;
|
|
426
430
|
phone?: string;
|
|
431
|
+
/** Username/handle del usuario */
|
|
432
|
+
handle?: string;
|
|
433
|
+
/** URL del avatar del usuario */
|
|
434
|
+
avatarUrl?: string;
|
|
427
435
|
emailVerified: boolean;
|
|
428
436
|
phoneVerified: boolean;
|
|
429
437
|
mfaEnabled: boolean;
|
|
@@ -766,3 +774,51 @@ export interface HasPasswordResponse {
|
|
|
766
774
|
operationId: string;
|
|
767
775
|
hasPassword: boolean;
|
|
768
776
|
}
|
|
777
|
+
/**
|
|
778
|
+
* Request para actualizar handle (@username).
|
|
779
|
+
*/
|
|
780
|
+
export interface UpdateHandleRequest {
|
|
781
|
+
handle: string;
|
|
782
|
+
}
|
|
783
|
+
/**
|
|
784
|
+
* Response de actualizar handle.
|
|
785
|
+
*/
|
|
786
|
+
export interface UpdateHandleResponse {
|
|
787
|
+
operationId: string;
|
|
788
|
+
handle: string;
|
|
789
|
+
updated: boolean;
|
|
790
|
+
}
|
|
791
|
+
/**
|
|
792
|
+
* Request para verificar disponibilidad de handle.
|
|
793
|
+
*/
|
|
794
|
+
export interface CheckHandleRequest {
|
|
795
|
+
handle: string;
|
|
796
|
+
}
|
|
797
|
+
/**
|
|
798
|
+
* Response de verificar disponibilidad de handle.
|
|
799
|
+
*/
|
|
800
|
+
export interface CheckHandleResponse {
|
|
801
|
+
operationId: string;
|
|
802
|
+
handle: string;
|
|
803
|
+
available: boolean;
|
|
804
|
+
}
|
|
805
|
+
/**
|
|
806
|
+
* Response de obtener proveedores OAuth vinculados.
|
|
807
|
+
*/
|
|
808
|
+
export interface GetLinkedProvidersResponse {
|
|
809
|
+
operationId: string;
|
|
810
|
+
providers: LinkedProvider[];
|
|
811
|
+
}
|
|
812
|
+
/**
|
|
813
|
+
* Request para desvincular un proveedor OAuth.
|
|
814
|
+
*/
|
|
815
|
+
export interface UnlinkProviderRequest {
|
|
816
|
+
provider: OAuthProvider;
|
|
817
|
+
}
|
|
818
|
+
/**
|
|
819
|
+
* Response de desvincular proveedor.
|
|
820
|
+
*/
|
|
821
|
+
export interface UnlinkProviderResponse {
|
|
822
|
+
operationId: string;
|
|
823
|
+
unlinked: boolean;
|
|
824
|
+
}
|
package/package.json
CHANGED
package/public-api.d.ts
CHANGED
|
@@ -162,6 +162,12 @@ export * from './lib/components/molecules/links-accordion/types';
|
|
|
162
162
|
export * from './lib/components/molecules/refresher/refresher.component';
|
|
163
163
|
export * from './lib/components/molecules/refresher/types';
|
|
164
164
|
export * from './lib/components/molecules/update-banner/update-banner.component';
|
|
165
|
+
export * from './lib/components/molecules/action-card/action-card.component';
|
|
166
|
+
export * from './lib/components/molecules/action-card/types';
|
|
167
|
+
export * from './lib/components/molecules/username-input/username-input.component';
|
|
168
|
+
export * from './lib/components/molecules/username-input/types';
|
|
169
|
+
export * from './lib/components/molecules/linked-providers/linked-providers.component';
|
|
170
|
+
export * from './lib/components/molecules/linked-providers/types';
|
|
165
171
|
export * from './lib/components/organisms/article/article.component';
|
|
166
172
|
export * from './lib/components/organisms/article/types';
|
|
167
173
|
export * from './lib/components/organisms/banner/banner.component';
|