valtech-components 2.0.985 → 2.0.986

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.
Files changed (33) hide show
  1. package/esm2022/lib/components/molecules/date-input/date-input.component.mjs +97 -14
  2. package/esm2022/lib/components/organisms/account-view/account-view.component.mjs +732 -0
  3. package/esm2022/lib/components/organisms/account-view/account-view.i18n.mjs +96 -0
  4. package/esm2022/lib/components/organisms/account-view/account.routes.mjs +29 -0
  5. package/esm2022/lib/components/organisms/account-view/types.mjs +2 -0
  6. package/esm2022/lib/components/organisms/create-org-modal/create-org-modal.component.mjs +240 -0
  7. package/esm2022/lib/components/organisms/create-org-modal/create-org-modal.i18n.mjs +46 -0
  8. package/esm2022/lib/components/organisms/delete-account-modal/delete-account-modal.component.mjs +272 -0
  9. package/esm2022/lib/components/organisms/delete-account-modal/delete-account-modal.i18n.mjs +40 -0
  10. package/esm2022/lib/components/organisms/org-info-sheet/org-info-sheet.component.mjs +205 -0
  11. package/esm2022/lib/components/organisms/org-info-sheet/org-info-sheet.i18n.mjs +35 -0
  12. package/esm2022/lib/components/organisms/switch-org-modal/switch-org-modal.component.mjs +280 -0
  13. package/esm2022/lib/components/organisms/switch-org-modal/switch-org-modal.i18n.mjs +26 -0
  14. package/esm2022/lib/version.mjs +2 -2
  15. package/esm2022/public-api.mjs +8 -1
  16. package/fesm2022/valtech-components.mjs +2275 -277
  17. package/fesm2022/valtech-components.mjs.map +1 -1
  18. package/lib/components/molecules/date-input/date-input.component.d.ts +9 -0
  19. package/lib/components/organisms/account-view/account-view.component.d.ts +88 -0
  20. package/lib/components/organisms/account-view/account-view.i18n.d.ts +7 -0
  21. package/lib/components/organisms/account-view/account.routes.d.ts +24 -0
  22. package/lib/components/organisms/account-view/types.d.ts +44 -0
  23. package/lib/components/organisms/create-org-modal/create-org-modal.component.d.ts +45 -0
  24. package/lib/components/organisms/create-org-modal/create-org-modal.i18n.d.ts +7 -0
  25. package/lib/components/organisms/delete-account-modal/delete-account-modal.component.d.ts +50 -0
  26. package/lib/components/organisms/delete-account-modal/delete-account-modal.i18n.d.ts +7 -0
  27. package/lib/components/organisms/org-info-sheet/org-info-sheet.component.d.ts +44 -0
  28. package/lib/components/organisms/org-info-sheet/org-info-sheet.i18n.d.ts +12 -0
  29. package/lib/components/organisms/switch-org-modal/switch-org-modal.component.d.ts +47 -0
  30. package/lib/components/organisms/switch-org-modal/switch-org-modal.i18n.d.ts +7 -0
  31. package/lib/version.d.ts +1 -1
  32. package/package.json +1 -1
  33. package/public-api.d.ts +7 -0
@@ -0,0 +1,272 @@
1
+ import { Component, computed, inject, Input, signal } from '@angular/core';
2
+ import { Validators } from '@angular/forms';
3
+ import { IonButton, IonButtons, IonContent, IonHeader, IonSpinner, IonToolbar } from '@ionic/angular/standalone';
4
+ import { firstValueFrom } from 'rxjs';
5
+ import { FormComponent } from '../form/form.component';
6
+ import { ComponentStates, InputType } from '../../types';
7
+ import { AuthService } from '../../../services/auth/auth.service';
8
+ import { I18nService } from '../../../services/i18n';
9
+ import { ToastService } from '../../../services/toast.service';
10
+ import { ValtechErrorService } from '../../../services/errors/valtech-error.service';
11
+ import { DELETE_ACCOUNT_MODAL_I18N } from './delete-account-modal.i18n';
12
+ import * as i0 from "@angular/core";
13
+ const DEFAULT_NAMESPACE = 'Settings.DeleteAccount';
14
+ /**
15
+ * `val-delete-account-modal` — modal de eliminación de cuenta (organism,
16
+ * cuenta-específico). Promovido desde `showcase` bajo el proceso de ADR-021.
17
+ *
18
+ * Decide el flujo según si la cuenta tiene contraseña:
19
+ * - **con password** → pide la contraseña actual y la verifica vía
20
+ * `auth.deleteAccount({ password })`.
21
+ * - **sin password** (cuenta OAuth) → envía un código por email
22
+ * (`auth.sendDeleteAccountCode()`) y lo pide para confirmar
23
+ * (`auth.deleteAccount({ code })`).
24
+ *
25
+ * Abierto vía `ModalService` — recibe `_modalRef` por `componentProps` para
26
+ * cerrar desde dentro. Header canónico (Regla #5): sin `ion-title`, botón Cerrar
27
+ * texto en `slot=end`, título/subtítulo en el body vía `val-form`.
28
+ *
29
+ * Auto-registra sus defaults i18n (es/en) en el constructor si el consumer no
30
+ * proveyó el namespace `Settings.DeleteAccount`.
31
+ */
32
+ export class DeleteAccountModalComponent {
33
+ constructor() {
34
+ this.auth = inject(AuthService);
35
+ this.errors = inject(ValtechErrorService);
36
+ this.i18n = inject(I18nService);
37
+ this.toast = inject(ToastService);
38
+ /** Namespace i18n con que la vista resuelve sus textos. */
39
+ this.i18nNamespace = DEFAULT_NAMESPACE;
40
+ this.hasPassword = signal(null);
41
+ this.codeSent = signal(false);
42
+ this.formState = signal(ComponentStates.ENABLED);
43
+ this.t = (key) => this.i18n.t(key, this.i18nNamespace);
44
+ this.passwordFormProps = computed(() => ({
45
+ name: this.t('title'),
46
+ state: this.formState(),
47
+ sections: [
48
+ {
49
+ name: this.t('warningPassword'),
50
+ order: 0,
51
+ fields: [
52
+ {
53
+ token: 'delete-password',
54
+ name: 'password',
55
+ label: this.t('passwordLabel'),
56
+ hint: '',
57
+ placeholder: this.t('passwordPlaceholder'),
58
+ type: InputType.PASSWORD,
59
+ order: 0,
60
+ validators: [Validators.required],
61
+ errors: { required: this.t('passwordRequired') },
62
+ state: ComponentStates.ENABLED,
63
+ },
64
+ ],
65
+ },
66
+ ],
67
+ actions: this.submitBtn('delete-password-submit', 'confirmCta'),
68
+ }));
69
+ this.sendCodeFormProps = computed(() => ({
70
+ name: this.t('title'),
71
+ state: this.formState(),
72
+ sections: [
73
+ {
74
+ name: this.t('warningSendCode'),
75
+ order: 0,
76
+ fields: [],
77
+ },
78
+ ],
79
+ actions: this.submitBtn('delete-send-code-submit', 'sendCodeCta'),
80
+ }));
81
+ this.codeFormProps = computed(() => ({
82
+ name: this.t('title'),
83
+ state: this.formState(),
84
+ sections: [
85
+ {
86
+ name: this.t('warningEnterCode'),
87
+ order: 0,
88
+ fields: [
89
+ {
90
+ token: 'delete-code',
91
+ name: 'code',
92
+ label: this.t('codeLabel'),
93
+ hint: '',
94
+ placeholder: this.t('codePlaceholder'),
95
+ type: InputType.TEXT,
96
+ order: 0,
97
+ validators: [Validators.required],
98
+ errors: { required: this.t('codeRequired') },
99
+ state: ComponentStates.ENABLED,
100
+ },
101
+ ],
102
+ },
103
+ ],
104
+ actions: this.submitBtn('delete-code-submit', 'confirmCta'),
105
+ }));
106
+ if (!this.i18n.hasNamespace(DEFAULT_NAMESPACE)) {
107
+ this.i18n.registerContent(DEFAULT_NAMESPACE, DELETE_ACCOUNT_MODAL_I18N);
108
+ }
109
+ }
110
+ ngOnInit() {
111
+ firstValueFrom(this.auth.getProfile())
112
+ .then(profile => this.hasPassword.set(profile.hasPassword ?? true))
113
+ .catch(() => this.hasPassword.set(true));
114
+ }
115
+ submitBtn(token, textKey) {
116
+ return {
117
+ text: this.t(textKey),
118
+ type: 'submit',
119
+ expand: 'block',
120
+ fill: 'solid',
121
+ color: 'dark',
122
+ size: 'default',
123
+ token,
124
+ state: ComponentStates.ENABLED,
125
+ };
126
+ }
127
+ close() {
128
+ this._modalRef?.dismiss(undefined, 'cancel');
129
+ }
130
+ async onPasswordSubmit(event) {
131
+ const password = event.fields['password'];
132
+ if (!password) {
133
+ this.toast.show({
134
+ message: this.t('passwordRequired'),
135
+ duration: 3000,
136
+ color: 'dark',
137
+ position: 'top',
138
+ });
139
+ return;
140
+ }
141
+ this.formState.set(ComponentStates.WORKING);
142
+ try {
143
+ await firstValueFrom(this.auth.deleteAccount({ password }));
144
+ }
145
+ catch (err) {
146
+ this.errors.handle(err, { context: 'delete-account.password' });
147
+ this.formState.set(ComponentStates.ENABLED);
148
+ }
149
+ }
150
+ async onSendCode() {
151
+ this.formState.set(ComponentStates.WORKING);
152
+ try {
153
+ await firstValueFrom(this.auth.sendDeleteAccountCode());
154
+ this.codeSent.set(true);
155
+ }
156
+ catch (err) {
157
+ this.errors.handle(err, { context: 'delete-account.send-code' });
158
+ }
159
+ finally {
160
+ this.formState.set(ComponentStates.ENABLED);
161
+ }
162
+ }
163
+ async onResendCode() {
164
+ this.codeSent.set(false);
165
+ await this.onSendCode();
166
+ }
167
+ async onCodeSubmit(event) {
168
+ const code = event.fields['code'];
169
+ if (!code) {
170
+ this.toast.show({
171
+ message: this.t('codeRequired'),
172
+ duration: 3000,
173
+ color: 'dark',
174
+ position: 'top',
175
+ });
176
+ return;
177
+ }
178
+ this.formState.set(ComponentStates.WORKING);
179
+ try {
180
+ await firstValueFrom(this.auth.deleteAccount({ code }));
181
+ }
182
+ catch (err) {
183
+ this.errors.handle(err, { context: 'delete-account.code' });
184
+ this.formState.set(ComponentStates.ENABLED);
185
+ }
186
+ }
187
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DeleteAccountModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
188
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: DeleteAccountModalComponent, isStandalone: true, selector: "val-delete-account-modal", inputs: { _modalRef: "_modalRef", i18nNamespace: "i18nNamespace" }, ngImport: i0, template: `
189
+ <ion-header>
190
+ <ion-toolbar>
191
+ <ion-buttons slot="end">
192
+ <ion-button fill="clear" color="dark" (click)="close()">
193
+ <strong>{{ t('close') }}</strong>
194
+ </ion-button>
195
+ </ion-buttons>
196
+ </ion-toolbar>
197
+ </ion-header>
198
+
199
+ <ion-content class="ion-padding">
200
+ <section class="modal-form-section">
201
+ @if (hasPassword() === null) {
202
+ <div class="spinner-center">
203
+ <ion-spinner name="crescent" />
204
+ </div>
205
+ } @else if (hasPassword()) {
206
+ <val-form [props]="passwordFormProps()" (onSubmit)="onPasswordSubmit($event)" />
207
+ } @else if (!codeSent()) {
208
+ <val-form [props]="sendCodeFormProps()" (onSubmit)="onSendCode()" />
209
+ } @else {
210
+ <val-form [props]="codeFormProps()" (onSubmit)="onCodeSubmit($event)" />
211
+ <div class="resend-row">
212
+ <ion-button
213
+ fill="clear"
214
+ color="medium"
215
+ size="small"
216
+ [disabled]="formState() === 'WORKING'"
217
+ (click)="onResendCode()"
218
+ >
219
+ {{ t('resend') }}
220
+ </ion-button>
221
+ </div>
222
+ }
223
+ </section>
224
+ </ion-content>
225
+ `, isInline: true, styles: [".modal-form-section{display:flex;flex-direction:column;gap:16px;max-width:420px;margin:0 auto;padding-top:8px}.resend-row{display:flex;justify-content:center;margin-top:-8px}.spinner-center{display:flex;justify-content:center;padding-top:32px}\n"], dependencies: [{ kind: "component", type: IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "component", type: FormComponent, selector: "val-form", inputs: ["props"], outputs: ["onSubmit", "onInvalid", "onSelectChange"] }] }); }
226
+ }
227
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DeleteAccountModalComponent, decorators: [{
228
+ type: Component,
229
+ args: [{ selector: 'val-delete-account-modal', standalone: true, imports: [IonHeader, IonToolbar, IonButtons, IonButton, IonContent, IonSpinner, FormComponent], template: `
230
+ <ion-header>
231
+ <ion-toolbar>
232
+ <ion-buttons slot="end">
233
+ <ion-button fill="clear" color="dark" (click)="close()">
234
+ <strong>{{ t('close') }}</strong>
235
+ </ion-button>
236
+ </ion-buttons>
237
+ </ion-toolbar>
238
+ </ion-header>
239
+
240
+ <ion-content class="ion-padding">
241
+ <section class="modal-form-section">
242
+ @if (hasPassword() === null) {
243
+ <div class="spinner-center">
244
+ <ion-spinner name="crescent" />
245
+ </div>
246
+ } @else if (hasPassword()) {
247
+ <val-form [props]="passwordFormProps()" (onSubmit)="onPasswordSubmit($event)" />
248
+ } @else if (!codeSent()) {
249
+ <val-form [props]="sendCodeFormProps()" (onSubmit)="onSendCode()" />
250
+ } @else {
251
+ <val-form [props]="codeFormProps()" (onSubmit)="onCodeSubmit($event)" />
252
+ <div class="resend-row">
253
+ <ion-button
254
+ fill="clear"
255
+ color="medium"
256
+ size="small"
257
+ [disabled]="formState() === 'WORKING'"
258
+ (click)="onResendCode()"
259
+ >
260
+ {{ t('resend') }}
261
+ </ion-button>
262
+ </div>
263
+ }
264
+ </section>
265
+ </ion-content>
266
+ `, styles: [".modal-form-section{display:flex;flex-direction:column;gap:16px;max-width:420px;margin:0 auto;padding-top:8px}.resend-row{display:flex;justify-content:center;margin-top:-8px}.spinner-center{display:flex;justify-content:center;padding-top:32px}\n"] }]
267
+ }], ctorParameters: () => [], propDecorators: { _modalRef: [{
268
+ type: Input
269
+ }], i18nNamespace: [{
270
+ type: Input
271
+ }] } });
272
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsZXRlLWFjY291bnQtbW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9kZWxldGUtYWNjb3VudC1tb2RhbC9kZWxldGUtYWNjb3VudC1tb2RhbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2pILE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBa0IsZUFBZSxFQUEyQyxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFbEgsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDL0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFFckYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7O0FBRXhFLE1BQU0saUJBQWlCLEdBQUcsd0JBQXdCLENBQUM7QUFFbkQ7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUJHO0FBa0VILE1BQU0sT0FBTywyQkFBMkI7SUFnQnRDO1FBZlEsU0FBSSxHQUFHLE1BQU0s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QWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMxRCxDQUFDO1FBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztZQUNiLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxFQUFFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxDQUFDLENBQUM7WUFDNUQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzlDLENBQUM7SUFDSCxDQUFDOytHQXZLVSwyQkFBMkI7bUdBQTNCLDJCQUEyQix3SkE3RDVCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUNULCtUQXRDUyxTQUFTLG9HQUFFLFVBQVUsbUZBQUUsVUFBVSw4RUFBRSxTQUFTLG9QQUFFLFVBQVUsd0tBQUUsVUFBVSx5R0FBRSxhQUFhOzs0RkE4RGxGLDJCQUEyQjtrQkFqRXZDLFNBQVM7K0JBQ0UsMEJBQTBCLGNBQ3hCLElBQUksV0FDUCxDQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLGFBQWEsQ0FBQyxZQUNwRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFDVDt3REErQlEsU0FBUztzQkFBakIsS0FBSztnQkFHRyxhQUFhO3NCQUFyQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgaW5qZWN0LCBJbnB1dCwgT25Jbml0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBJb25CdXR0b24sIElvbkJ1dHRvbnMsIElvbkNvbnRlbnQsIElvbkhlYWRlciwgSW9uU3Bpbm5lciwgSW9uVG9vbGJhciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgZmlyc3RWYWx1ZUZyb20gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgRm9ybUNvbXBvbmVudCB9IGZyb20gJy4uL2Zvcm0vZm9ybS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29tcG9uZW50U3RhdGUsIENvbXBvbmVudFN0YXRlcywgRm9ybU1ldGFkYXRhLCBGb3JtU3VibWl0LCBJbnB1dE1ldGFkYXRhLCBJbnB1dFR5cGUgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5cbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYXV0aC9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9pMThuJztcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3RvYXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgVmFsdGVjaEVycm9yU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2Vycm9ycy92YWx0ZWNoLWVycm9yLnNlcnZpY2UnO1xuXG5pbXBvcnQgeyBERUxFVEVfQUNDT1VOVF9NT0RBTF9JMThOIH0gZnJvbSAnLi9kZWxldGUtYWNjb3VudC1tb2RhbC5pMThuJztcblxuY29uc3QgREVGQVVMVF9OQU1FU1BBQ0UgPSAnU2V0dGluZ3MuRGVsZXRlQWNjb3VudCc7XG5cbi8qKlxuICogYHZhbC1kZWxldGUtYWNjb3VudC1tb2RhbGAg4oCUIG1vZGFsIGRlIGVsaW1pbmFjacOzbiBkZSBjdWVudGEgKG9yZ2FuaXNtLFxuICogY3VlbnRhLWVzcGVjw61maWNvKS4gUHJvbW92aWRvIGRlc2RlIGBzaG93Y2FzZWAgYmFqbyBlbCBwcm9jZXNvIGRlIEFEUi0wMjEuXG4gKlxuICogRGVjaWRlIGVsIGZsdWpvIHNlZ8O6biBzaSBsYSBjdWVudGEgdGllbmUgY29udHJhc2XDsWE6XG4gKiAgLSAqKmNvbiBwYXNzd29yZCoqIOKGkiBwaWRlIGxhIGNvbnRyYXNlw7FhIGFjdHVhbCB5IGxhIHZlcmlmaWNhIHbDrWFcbiAqICAgIGBhdXRoLmRlbGV0ZUFjY291bnQoeyBwYXNzd29yZCB9KWAuXG4gKiAgLSAqKnNpbiBwYXNzd29yZCoqIChjdWVudGEgT0F1dGgpIOKGkiBlbnbDrWEgdW4gY8OzZGlnbyBwb3IgZW1haWxcbiAqICAgIChgYXV0aC5zZW5kRGVsZXRlQWNjb3VudENvZGUoKWApIHkgbG8gcGlkZSBwYXJhIGNvbmZpcm1hclxuICogICAgKGBhdXRoLmRlbGV0ZUFjY291bnQoeyBjb2RlIH0pYCkuXG4gKlxuICogQWJpZXJ0byB2w61hIGBNb2RhbFNlcnZpY2VgIOKAlCByZWNpYmUgYF9tb2RhbFJlZmAgcG9yIGBjb21wb25lbnRQcm9wc2AgcGFyYVxuICogY2VycmFyIGRlc2RlIGRlbnRyby4gSGVhZGVyIGNhbsOzbmljbyAoUmVnbGEgIzUpOiBzaW4gYGlvbi10aXRsZWAsIGJvdMOzbiBDZXJyYXJcbiAqIHRleHRvIGVuIGBzbG90PWVuZGAsIHTDrXR1bG8vc3VidMOtdHVsbyBlbiBlbCBib2R5IHbDrWEgYHZhbC1mb3JtYC5cbiAqXG4gKiBBdXRvLXJlZ2lzdHJhIHN1cyBkZWZhdWx0cyBpMThuIChlcy9lbikgZW4gZWwgY29uc3RydWN0b3Igc2kgZWwgY29uc3VtZXIgbm9cbiAqIHByb3ZlecOzIGVsIG5hbWVzcGFjZSBgU2V0dGluZ3MuRGVsZXRlQWNjb3VudGAuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1kZWxldGUtYWNjb3VudC1tb2RhbCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtJb25IZWFkZXIsIElvblRvb2xiYXIsIElvbkJ1dHRvbnMsIElvbkJ1dHRvbiwgSW9uQ29udGVudCwgSW9uU3Bpbm5lciwgRm9ybUNvbXBvbmVudF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGlvbi1oZWFkZXI+XG4gICAgICA8aW9uLXRvb2xiYXI+XG4gICAgICAgIDxpb24tYnV0dG9ucyBzbG90PVwiZW5kXCI+XG4gICAgICAgICAgPGlvbi1idXR0b24gZmlsbD1cImNsZWFyXCIgY29sb3I9XCJkYXJrXCIgKGNsaWNrKT1cImNsb3NlKClcIj5cbiAgICAgICAgICAgIDxzdHJvbmc+e3sgdCgnY2xvc2UnKSB9fTwvc3Ryb25nPlxuICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgPC9pb24tYnV0dG9ucz5cbiAgICAgIDwvaW9uLXRvb2xiYXI+XG4gICAgPC9pb24taGVhZGVyPlxuXG4gICAgPGlvbi1jb250ZW50IGNsYXNzPVwiaW9uLXBhZGRpbmdcIj5cbiAgICAgIDxzZWN0aW9uIGNsYXNzPVwibW9kYWwtZm9ybS1zZWN0aW9uXCI+XG4gICAgICAgIEBpZiAoaGFzUGFzc3dvcmQoKSA9PT0gbnVsbCkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzcGlubmVyLWNlbnRlclwiPlxuICAgICAgICAgICAgPGlvbi1zcGlubmVyIG5hbWU9XCJjcmVzY2VudFwiIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH0gQGVsc2UgaWYgKGhhc1Bhc3N3b3JkKCkpIHtcbiAgICAgICAgICA8dmFsLWZvcm0gW3Byb3BzXT1cInBhc3N3b3JkRm9ybVByb3BzKClcIiAob25TdWJtaXQpPVwib25QYXNzd29yZFN1Ym1pdCgkZXZlbnQpXCIgLz5cbiAgICAgICAgfSBAZWxzZSBpZiAoIWNvZGVTZW50KCkpIHtcbiAgICAgICAgICA8dmFsLWZvcm0gW3Byb3BzXT1cInNlbmRDb2RlRm9ybVByb3BzKClcIiAob25TdWJtaXQpPVwib25TZW5kQ29kZSgpXCIgLz5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgPHZhbC1mb3JtIFtwcm9wc109XCJjb2RlRm9ybVByb3BzKClcIiAob25TdWJtaXQpPVwib25Db2RlU3VibWl0KCRldmVudClcIiAvPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXNlbmQtcm93XCI+XG4gICAgICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgICAgICBmaWxsPVwiY2xlYXJcIlxuICAgICAgICAgICAgICBjb2xvcj1cIm1lZGl1bVwiXG4gICAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmb3JtU3RhdGUoKSA9PT0gJ1dPUktJTkcnXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uUmVzZW5kQ29kZSgpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgdCgncmVzZW5kJykgfX1cbiAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgPC9zZWN0aW9uPlxuICAgIDwvaW9uLWNvbnRlbnQ+XG4gIGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIC5tb2RhbC1mb3JtLXNlY3Rpb24ge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDE2cHg7XG4gICAgICAgIG1heC13aWR0aDogNDIwcHg7XG4gICAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgICAgICBwYWRkaW5nLXRvcDogOHB4O1xuICAgICAgfVxuICAgICAgLnJlc2VuZC1yb3cge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgbWFyZ2luLXRvcDogLThweDtcbiAgICAgIH1cbiAgICAgIC5zcGlubmVyLWNlbnRlciB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBwYWRkaW5nLXRvcDogMzJweDtcbiAgICAgIH1cbiAgICBgLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBEZWxldGVBY2NvdW50TW9kYWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwcml2YXRlIGF1dGggPSBpbmplY3QoQXV0aFNlcnZpY2UpO1xuICBwcml2YXRlIGVycm9ycyA9IGluamVjdChWYWx0ZWNoRXJyb3JTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBpMThuID0gaW5qZWN0KEkxOG5TZXJ2aWNlKTtcbiAgcHJpdmF0ZSB0b2FzdCA9IGluamVjdChUb2FzdFNlcnZpY2UpO1xuXG4gIC8qKiBJbnllY3RhZG8gcG9yIGBNb2RhbFNlcnZpY2Uub3BlbmAg4oCUIHJlZmVyZW5jaWEgcGFyYSBjZXJyYXIgZGVzZGUgZGVudHJvLiAqL1xuICBASW5wdXQoKSBfbW9kYWxSZWY/OiB7IGRpc21pc3M6IChkYXRhPzogdW5rbm93biwgcm9sZT86IHN0cmluZykgPT4gdm9pZCB9O1xuXG4gIC8qKiBOYW1lc3BhY2UgaTE4biBjb24gcXVlIGxhIHZpc3RhIHJlc3VlbHZlIHN1cyB0ZXh0b3MuICovXG4gIEBJbnB1dCgpIGkxOG5OYW1lc3BhY2UgPSBERUZBVUxUX05BTUVTUEFDRTtcblxuICByZWFkb25seSBoYXNQYXNzd29yZCA9IHNpZ25hbDxib29sZWFuIHwgbnVsbD4obnVsbCk7XG4gIHJlYWRvbmx5IGNvZGVTZW50ID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgZm9ybVN0YXRlID0gc2lnbmFsPENvbXBvbmVudFN0YXRlPihDb21wb25lbnRTdGF0ZXMuRU5BQkxFRCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgaWYgKCF0aGlzLmkxOG4uaGFzTmFtZXNwYWNlKERFRkFVTFRfTkFNRVNQQUNFKSkge1xuICAgICAgdGhpcy5pMThuLnJlZ2lzdGVyQ29udGVudChERUZBVUxUX05BTUVTUEFDRSwgREVMRVRFX0FDQ09VTlRfTU9EQUxfSTE4Tik7XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgZmlyc3RWYWx1ZUZyb20odGhpcy5hdXRoLmdldFByb2ZpbGUoKSlcbiAgICAgIC50aGVuKHByb2ZpbGUgPT4gdGhpcy5oYXNQYXNzd29yZC5zZXQocHJvZmlsZS5oYXNQYXNzd29yZCA/PyB0cnVlKSlcbiAgICAgIC5jYXRjaCgoKSA9PiB0aGlzLmhhc1Bhc3N3b3JkLnNldCh0cnVlKSk7XG4gIH1cblxuICB0ID0gKGtleTogc3RyaW5nKTogc3RyaW5nID0+IHRoaXMuaTE4bi50KGtleSwgdGhpcy5pMThuTmFtZXNwYWNlKTtcblxuICBwcml2YXRlIHN1Ym1pdEJ0bih0b2tlbjogc3RyaW5nLCB0ZXh0S2V5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdGV4dDogdGhpcy50KHRleHRLZXkpLFxuICAgICAgdHlwZTogJ3N1Ym1pdCcgYXMgY29uc3QsXG4gICAgICBleHBhbmQ6ICdibG9jaycgYXMgY29uc3QsXG4gICAgICBmaWxsOiAnc29saWQnIGFzIGNvbnN0LFxuICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgIHNpemU6ICdkZWZhdWx0JyBhcyBjb25zdCxcbiAgICAgIHRva2VuLFxuICAgICAgc3RhdGU6IENvbXBvbmVudFN0YXRlcy5FTkFCTEVELFxuICAgIH07XG4gIH1cblxuICByZWFkb25seSBwYXNzd29yZEZvcm1Qcm9wcyA9IGNvbXB1dGVkPEZvcm1NZXRhZGF0YT4oKCkgPT4gKHtcbiAgICBuYW1lOiB0aGlzLnQoJ3RpdGxlJyksXG4gICAgc3RhdGU6IHRoaXMuZm9ybVN0YXRlKCksXG4gICAgc2VjdGlvbnM6IFtcbiAgICAgIHtcbiAgICAgICAgbmFtZTogdGhpcy50KCd3YXJuaW5nUGFzc3dvcmQnKSxcbiAgICAgICAgb3JkZXI6IDAsXG4gICAgICAgIGZpZWxkczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHRva2VuOiAnZGVsZXRlLXBhc3N3b3JkJyxcbiAgICAgICAgICAgIG5hbWU6ICdwYXNzd29yZCcsXG4gICAgICAgICAgICBsYWJlbDogdGhpcy50KCdwYXNzd29yZExhYmVsJyksXG4gICAgICAgICAgICBoaW50OiAnJyxcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyOiB0aGlzLnQoJ3Bhc3N3b3JkUGxhY2Vob2xkZXInKSxcbiAgICAgICAgICAgIHR5cGU6IElucHV0VHlwZS5QQVNTV09SRCxcbiAgICAgICAgICAgIG9yZGVyOiAwLFxuICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgZXJyb3JzOiB7IHJlcXVpcmVkOiB0aGlzLnQoJ3Bhc3N3b3JkUmVxdWlyZWQnKSB9LFxuICAgICAgICAgICAgc3RhdGU6IENvbXBvbmVudFN0YXRlcy5FTkFCTEVELFxuICAgICAgICAgIH0gYXMgSW5wdXRNZXRhZGF0YSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBhY3Rpb25zOiB0aGlzLnN1Ym1pdEJ0bignZGVsZXRlLXBhc3N3b3JkLXN1Ym1pdCcsICdjb25maXJtQ3RhJyksXG4gIH0pKTtcblxuICByZWFkb25seSBzZW5kQ29kZUZvcm1Qcm9wcyA9IGNvbXB1dGVkPEZvcm1NZXRhZGF0YT4oKCkgPT4gKHtcbiAgICBuYW1lOiB0aGlzLnQoJ3RpdGxlJyksXG4gICAgc3RhdGU6IHRoaXMuZm9ybVN0YXRlKCksXG4gICAgc2VjdGlvbnM6IFtcbiAgICAgIHtcbiAgICAgICAgbmFtZTogdGhpcy50KCd3YXJuaW5nU2VuZENvZGUnKSxcbiAgICAgICAgb3JkZXI6IDAsXG4gICAgICAgIGZpZWxkczogW10sXG4gICAgICB9LFxuICAgIF0sXG4gICAgYWN0aW9uczogdGhpcy5zdWJtaXRCdG4oJ2RlbGV0ZS1zZW5kLWNvZGUtc3VibWl0JywgJ3NlbmRDb2RlQ3RhJyksXG4gIH0pKTtcblxuICByZWFkb25seSBjb2RlRm9ybVByb3BzID0gY29tcHV0ZWQ8Rm9ybU1ldGFkYXRhPigoKSA9PiAoe1xuICAgIG5hbWU6IHRoaXMudCgndGl0bGUnKSxcbiAgICBzdGF0ZTogdGhpcy5mb3JtU3RhdGUoKSxcbiAgICBzZWN0aW9uczogW1xuICAgICAge1xuICAgICAgICBuYW1lOiB0aGlzLnQoJ3dhcm5pbmdFbnRlckNvZGUnKSxcbiAgICAgICAgb3JkZXI6IDAsXG4gICAgICAgIGZpZWxkczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHRva2VuOiAnZGVsZXRlLWNvZGUnLFxuICAgICAgICAgICAgbmFtZTogJ2NvZGUnLFxuICAgICAgICAgICAgbGFiZWw6IHRoaXMudCgnY29kZUxhYmVsJyksXG4gICAgICAgICAgICBoaW50OiAnJyxcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyOiB0aGlzLnQoJ2NvZGVQbGFjZWhvbGRlcicpLFxuICAgICAgICAgICAgdHlwZTogSW5wdXRUeXBlLlRFWFQsXG4gICAgICAgICAgICBvcmRlcjogMCxcbiAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgIGVycm9yczogeyByZXF1aXJlZDogdGhpcy50KCdjb2RlUmVxdWlyZWQnKSB9LFxuICAgICAgICAgICAgc3RhdGU6IENvbXBvbmVudFN0YXRlcy5FTkFCTEVELFxuICAgICAgICAgIH0gYXMgSW5wdXRNZXRhZGF0YSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBhY3Rpb25zOiB0aGlzLnN1Ym1pdEJ0bignZGVsZXRlLWNvZGUtc3VibWl0JywgJ2NvbmZpcm1DdGEnKSxcbiAgfSkpO1xuXG4gIGNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX21vZGFsUmVmPy5kaXNtaXNzKHVuZGVmaW5lZCwgJ2NhbmNlbCcpO1xuICB9XG5cbiAgYXN5bmMgb25QYXNzd29yZFN1Ym1pdChldmVudDogRm9ybVN1Ym1pdCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHBhc3N3b3JkID0gZXZlbnQuZmllbGRzWydwYXNzd29yZCddO1xuICAgIGlmICghcGFzc3dvcmQpIHtcbiAgICAgIHRoaXMudG9hc3Quc2hvdyh7XG4gICAgICAgIG1lc3NhZ2U6IHRoaXMudCgncGFzc3dvcmRSZXF1aXJlZCcpLFxuICAgICAgICBkdXJhdGlvbjogMzAwMCxcbiAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgcG9zaXRpb246ICd0b3AnLFxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuZm9ybVN0YXRlLnNldChDb21wb25lbnRTdGF0ZXMuV09SS0lORyk7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuYXV0aC5kZWxldGVBY2NvdW50KHsgcGFzc3dvcmQgfSkpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhpcy5lcnJvcnMuaGFuZGxlKGVyciwgeyBjb250ZXh0OiAnZGVsZXRlLWFjY291bnQucGFzc3dvcmQnIH0pO1xuICAgICAgdGhpcy5mb3JtU3RhdGUuc2V0KENvbXBvbmVudFN0YXRlcy5FTkFCTEVEKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBvblNlbmRDb2RlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuZm9ybVN0YXRlLnNldChDb21wb25lbnRTdGF0ZXMuV09SS0lORyk7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuYXV0aC5zZW5kRGVsZXRlQWNjb3VudENvZGUoKSk7XG4gICAgICB0aGlzLmNvZGVTZW50LnNldCh0cnVlKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHRoaXMuZXJyb3JzLmhhbmRsZShlcnIsIHsgY29udGV4dDogJ2RlbGV0ZS1hY2NvdW50LnNlbmQtY29kZScgfSk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuZm9ybVN0YXRlLnNldChDb21wb25lbnRTdGF0ZXMuRU5BQkxFRCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgb25SZXNlbmRDb2RlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuY29kZVNlbnQuc2V0KGZhbHNlKTtcbiAgICBhd2FpdCB0aGlzLm9uU2VuZENvZGUoKTtcbiAgfVxuXG4gIGFzeW5jIG9uQ29kZVN1Ym1pdChldmVudDogRm9ybVN1Ym1pdCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGNvZGUgPSBldmVudC5maWVsZHNbJ2NvZGUnXTtcbiAgICBpZiAoIWNvZGUpIHtcbiAgICAgIHRoaXMudG9hc3Quc2hvdyh7XG4gICAgICAgIG1lc3NhZ2U6IHRoaXMudCgnY29kZVJlcXVpcmVkJyksXG4gICAgICAgIGR1cmF0aW9uOiAzMDAwLFxuICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICBwb3NpdGlvbjogJ3RvcCcsXG4gICAgICB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5mb3JtU3RhdGUuc2V0KENvbXBvbmVudFN0YXRlcy5XT1JLSU5HKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5hdXRoLmRlbGV0ZUFjY291bnQoeyBjb2RlIH0pKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHRoaXMuZXJyb3JzLmhhbmRsZShlcnIsIHsgY29udGV4dDogJ2RlbGV0ZS1hY2NvdW50LmNvZGUnIH0pO1xuICAgICAgdGhpcy5mb3JtU3RhdGUuc2V0KENvbXBvbmVudFN0YXRlcy5FTkFCTEVEKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Defaults i18n (es/en) embebidos en `val-delete-account-modal`. Auto-registrados
3
+ * en el constructor del componente si el consumer no proveyó el namespace
4
+ * (`Settings.DeleteAccount` por default). SOLO incluye las keys que el modal usa.
5
+ */
6
+ export const DELETE_ACCOUNT_MODAL_I18N = {
7
+ es: {
8
+ title: 'Eliminar cuenta',
9
+ warningPassword: 'Esta acción es permanente y no se puede deshacer. Se eliminarán tu cuenta, sesiones activas, organizaciones personales y todos los datos asociados.',
10
+ passwordLabel: 'Contraseña actual',
11
+ passwordPlaceholder: 'Ingresa tu contraseña',
12
+ passwordRequired: 'La contraseña es requerida',
13
+ warningSendCode: 'Tu cuenta está vinculada a un proveedor externo. Para confirmar la eliminación, enviaremos un código de verificación a tu correo electrónico.',
14
+ sendCodeCta: 'Enviar código de confirmación',
15
+ warningEnterCode: 'Ingresa el código que enviamos a tu correo. Expira en 15 minutos.',
16
+ codeLabel: 'Código de verificación',
17
+ codePlaceholder: 'Código de 6 dígitos',
18
+ codeRequired: 'El código es requerido',
19
+ confirmCta: 'Eliminar mi cuenta',
20
+ close: 'Cancelar',
21
+ resend: 'Reenviar código',
22
+ },
23
+ en: {
24
+ title: 'Delete account',
25
+ warningPassword: 'This action is permanent and cannot be undone. Your account, active sessions, personal organizations and all associated data will be permanently deleted.',
26
+ passwordLabel: 'Current password',
27
+ passwordPlaceholder: 'Enter your password',
28
+ passwordRequired: 'Password is required',
29
+ warningSendCode: "Your account is linked to an external provider. To confirm deletion, we'll send a verification code to your email address.",
30
+ sendCodeCta: 'Send confirmation code',
31
+ warningEnterCode: 'Enter the code we sent to your email. It expires in 15 minutes.',
32
+ codeLabel: 'Verification code',
33
+ codePlaceholder: '6-digit code',
34
+ codeRequired: 'Code is required',
35
+ confirmCta: 'Delete my account',
36
+ close: 'Cancel',
37
+ resend: 'Resend code',
38
+ },
39
+ };
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsZXRlLWFjY291bnQtbW9kYWwuaTE4bi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9vcmdhbmlzbXMvZGVsZXRlLWFjY291bnQtbW9kYWwvZGVsZXRlLWFjY291bnQtbW9kYWwuaTE4bi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQXFCO0lBQ3pELEVBQUUsRUFBRTtRQUNGLEtBQUssRUFBRSxpQkFBaUI7UUFDeEIsZUFBZSxFQUNiLHFKQUFxSjtRQUN2SixhQUFhLEVBQUUsbUJBQW1CO1FBQ2xDLG1CQUFtQixFQUFFLHVCQUF1QjtRQUM1QyxnQkFBZ0IsRUFBRSw0QkFBNEI7UUFDOUMsZUFBZSxFQUNiLCtJQUErSTtRQUNqSixXQUFXLEVBQUUsK0JBQStCO1FBQzVDLGdCQUFnQixFQUFFLG1FQUFtRTtRQUNyRixTQUFTLEVBQUUsd0JBQXdCO1FBQ25DLGVBQWUsRUFBRSxxQkFBcUI7UUFDdEMsWUFBWSxFQUFFLHdCQUF3QjtRQUN0QyxVQUFVLEVBQUUsb0JBQW9CO1FBQ2hDLEtBQUssRUFBRSxVQUFVO1FBQ2pCLE1BQU0sRUFBRSxpQkFBaUI7S0FDMUI7SUFDRCxFQUFFLEVBQUU7UUFDRixLQUFLLEVBQUUsZ0JBQWdCO1FBQ3ZCLGVBQWUsRUFDYiwySkFBMko7UUFDN0osYUFBYSxFQUFFLGtCQUFrQjtRQUNqQyxtQkFBbUIsRUFBRSxxQkFBcUI7UUFDMUMsZ0JBQWdCLEVBQUUsc0JBQXNCO1FBQ3hDLGVBQWUsRUFDYiw0SEFBNEg7UUFDOUgsV0FBVyxFQUFFLHdCQUF3QjtRQUNyQyxnQkFBZ0IsRUFBRSxpRUFBaUU7UUFDbkYsU0FBUyxFQUFFLG1CQUFtQjtRQUM5QixlQUFlLEVBQUUsY0FBYztRQUMvQixZQUFZLEVBQUUsa0JBQWtCO1FBQ2hDLFVBQVUsRUFBRSxtQkFBbUI7UUFDL0IsS0FBSyxFQUFFLFFBQVE7UUFDZixNQUFNLEVBQUUsYUFBYTtLQUN0QjtDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMYW5ndWFnZXNDb250ZW50IH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaTE4bi90eXBlcyc7XG5cbi8qKlxuICogRGVmYXVsdHMgaTE4biAoZXMvZW4pIGVtYmViaWRvcyBlbiBgdmFsLWRlbGV0ZS1hY2NvdW50LW1vZGFsYC4gQXV0by1yZWdpc3RyYWRvc1xuICogZW4gZWwgY29uc3RydWN0b3IgZGVsIGNvbXBvbmVudGUgc2kgZWwgY29uc3VtZXIgbm8gcHJvdmV5w7MgZWwgbmFtZXNwYWNlXG4gKiAoYFNldHRpbmdzLkRlbGV0ZUFjY291bnRgIHBvciBkZWZhdWx0KS4gU09MTyBpbmNsdXllIGxhcyBrZXlzIHF1ZSBlbCBtb2RhbCB1c2EuXG4gKi9cbmV4cG9ydCBjb25zdCBERUxFVEVfQUNDT1VOVF9NT0RBTF9JMThOOiBMYW5ndWFnZXNDb250ZW50ID0ge1xuICBlczoge1xuICAgIHRpdGxlOiAnRWxpbWluYXIgY3VlbnRhJyxcbiAgICB3YXJuaW5nUGFzc3dvcmQ6XG4gICAgICAnRXN0YSBhY2Npw7NuIGVzIHBlcm1hbmVudGUgeSBubyBzZSBwdWVkZSBkZXNoYWNlci4gU2UgZWxpbWluYXLDoW4gdHUgY3VlbnRhLCBzZXNpb25lcyBhY3RpdmFzLCBvcmdhbml6YWNpb25lcyBwZXJzb25hbGVzIHkgdG9kb3MgbG9zIGRhdG9zIGFzb2NpYWRvcy4nLFxuICAgIHBhc3N3b3JkTGFiZWw6ICdDb250cmFzZcOxYSBhY3R1YWwnLFxuICAgIHBhc3N3b3JkUGxhY2Vob2xkZXI6ICdJbmdyZXNhIHR1IGNvbnRyYXNlw7FhJyxcbiAgICBwYXNzd29yZFJlcXVpcmVkOiAnTGEgY29udHJhc2XDsWEgZXMgcmVxdWVyaWRhJyxcbiAgICB3YXJuaW5nU2VuZENvZGU6XG4gICAgICAnVHUgY3VlbnRhIGVzdMOhIHZpbmN1bGFkYSBhIHVuIHByb3ZlZWRvciBleHRlcm5vLiBQYXJhIGNvbmZpcm1hciBsYSBlbGltaW5hY2nDs24sIGVudmlhcmVtb3MgdW4gY8OzZGlnbyBkZSB2ZXJpZmljYWNpw7NuIGEgdHUgY29ycmVvIGVsZWN0csOzbmljby4nLFxuICAgIHNlbmRDb2RlQ3RhOiAnRW52aWFyIGPDs2RpZ28gZGUgY29uZmlybWFjacOzbicsXG4gICAgd2FybmluZ0VudGVyQ29kZTogJ0luZ3Jlc2EgZWwgY8OzZGlnbyBxdWUgZW52aWFtb3MgYSB0dSBjb3JyZW8uIEV4cGlyYSBlbiAxNSBtaW51dG9zLicsXG4gICAgY29kZUxhYmVsOiAnQ8OzZGlnbyBkZSB2ZXJpZmljYWNpw7NuJyxcbiAgICBjb2RlUGxhY2Vob2xkZXI6ICdDw7NkaWdvIGRlIDYgZMOtZ2l0b3MnLFxuICAgIGNvZGVSZXF1aXJlZDogJ0VsIGPDs2RpZ28gZXMgcmVxdWVyaWRvJyxcbiAgICBjb25maXJtQ3RhOiAnRWxpbWluYXIgbWkgY3VlbnRhJyxcbiAgICBjbG9zZTogJ0NhbmNlbGFyJyxcbiAgICByZXNlbmQ6ICdSZWVudmlhciBjw7NkaWdvJyxcbiAgfSxcbiAgZW46IHtcbiAgICB0aXRsZTogJ0RlbGV0ZSBhY2NvdW50JyxcbiAgICB3YXJuaW5nUGFzc3dvcmQ6XG4gICAgICAnVGhpcyBhY3Rpb24gaXMgcGVybWFuZW50IGFuZCBjYW5ub3QgYmUgdW5kb25lLiBZb3VyIGFjY291bnQsIGFjdGl2ZSBzZXNzaW9ucywgcGVyc29uYWwgb3JnYW5pemF0aW9ucyBhbmQgYWxsIGFzc29jaWF0ZWQgZGF0YSB3aWxsIGJlIHBlcm1hbmVudGx5IGRlbGV0ZWQuJyxcbiAgICBwYXNzd29yZExhYmVsOiAnQ3VycmVudCBwYXNzd29yZCcsXG4gICAgcGFzc3dvcmRQbGFjZWhvbGRlcjogJ0VudGVyIHlvdXIgcGFzc3dvcmQnLFxuICAgIHBhc3N3b3JkUmVxdWlyZWQ6ICdQYXNzd29yZCBpcyByZXF1aXJlZCcsXG4gICAgd2FybmluZ1NlbmRDb2RlOlxuICAgICAgXCJZb3VyIGFjY291bnQgaXMgbGlua2VkIHRvIGFuIGV4dGVybmFsIHByb3ZpZGVyLiBUbyBjb25maXJtIGRlbGV0aW9uLCB3ZSdsbCBzZW5kIGEgdmVyaWZpY2F0aW9uIGNvZGUgdG8geW91ciBlbWFpbCBhZGRyZXNzLlwiLFxuICAgIHNlbmRDb2RlQ3RhOiAnU2VuZCBjb25maXJtYXRpb24gY29kZScsXG4gICAgd2FybmluZ0VudGVyQ29kZTogJ0VudGVyIHRoZSBjb2RlIHdlIHNlbnQgdG8geW91ciBlbWFpbC4gSXQgZXhwaXJlcyBpbiAxNSBtaW51dGVzLicsXG4gICAgY29kZUxhYmVsOiAnVmVyaWZpY2F0aW9uIGNvZGUnLFxuICAgIGNvZGVQbGFjZWhvbGRlcjogJzYtZGlnaXQgY29kZScsXG4gICAgY29kZVJlcXVpcmVkOiAnQ29kZSBpcyByZXF1aXJlZCcsXG4gICAgY29uZmlybUN0YTogJ0RlbGV0ZSBteSBhY2NvdW50JyxcbiAgICBjbG9zZTogJ0NhbmNlbCcsXG4gICAgcmVzZW5kOiAnUmVzZW5kIGNvZGUnLFxuICB9LFxufTtcbiJdfQ==
@@ -0,0 +1,205 @@
1
+ import { Component, computed, inject, Input } from '@angular/core';
2
+ import { IonButton, IonButtons, IonContent, IonHeader, IonIcon, IonToolbar } from '@ionic/angular/standalone';
3
+ import { addIcons } from 'ionicons';
4
+ import { mailOutline, peopleOutline, swapHorizontalOutline } from 'ionicons/icons';
5
+ import { ButtonComponent } from '../../atoms/button/button.component';
6
+ import { DisplayComponent } from '../../atoms/display/display.component';
7
+ import { TextComponent } from '../../atoms/text/text.component';
8
+ import { TitleComponent } from '../../atoms/title/title.component';
9
+ import { I18nService } from '../../../services/i18n';
10
+ import { ORG_INFO_SHEET_I18N } from './org-info-sheet.i18n';
11
+ import * as i0 from "@angular/core";
12
+ const DEFAULT_NAMESPACE = 'OrgInfoSheet';
13
+ /**
14
+ * `val-org-info-sheet` — sheet informativo "¿Qué son las organizaciones?".
15
+ * Extraído del `OrgInfoSheetComponent` inline de `AccountPage` bajo el proceso de
16
+ * ADR-021.
17
+ *
18
+ * El consumer pasa `title`/`subtitle`/`body`/`closeLabel` ya resueltos por props
19
+ * (patrón del resto de modales del factory). Los textos de los 3 features
20
+ * (Colaboración / Cambio rápido / Invitaciones), que en la versión inline estaban
21
+ * hardcoded, ahora se auto-resuelven desde el namespace `OrgInfoSheet`
22
+ * (auto-registrado en el constructor).
23
+ *
24
+ * Abierto vía `ModalService` — recibe `_modalRef` por `componentProps`. Header
25
+ * canónico (Regla #5): sin `ion-title`, botón Cerrar texto en `slot=end`,
26
+ * título/subtítulo en el body con `val-display`/`val-title`.
27
+ */
28
+ export class OrgInfoSheetComponent {
29
+ constructor() {
30
+ this.i18n = inject(I18nService);
31
+ /** Título principal (resuelto por el consumer). Fallback al namespace propio. */
32
+ this.title = '';
33
+ /** Subtítulo (resuelto por el consumer). Fallback al namespace propio. */
34
+ this.subtitle = '';
35
+ /** Cuerpo en párrafos separados por doble salto de línea (resuelto por el consumer). */
36
+ this.body = '';
37
+ /** Label del botón cerrar (resuelto por el consumer). Fallback al namespace propio. */
38
+ this.closeLabel = '';
39
+ /** Props del botón cerrar del footer (el consumer puede pasar custom). */
40
+ this.closeProps = {
41
+ text: 'Cerrar',
42
+ fill: 'outline',
43
+ color: 'dark',
44
+ size: 'default',
45
+ expand: 'block',
46
+ type: 'button',
47
+ };
48
+ this.resolvedTitle = computed(() => this.title || this.tt('title'));
49
+ this.resolvedSubtitle = computed(() => this.subtitle || this.tt('subtitle'));
50
+ this.resolvedCloseLabel = computed(() => this.closeLabel || this.tt('close'));
51
+ this.paragraphs = computed(() => this.body.split('\n\n').filter(Boolean));
52
+ this.resolvedCloseProps = computed(() => ({
53
+ ...this.closeProps,
54
+ text: this.closeProps.text || this.resolvedCloseLabel(),
55
+ }));
56
+ addIcons({ peopleOutline, swapHorizontalOutline, mailOutline });
57
+ if (!this.i18n.hasNamespace(DEFAULT_NAMESPACE)) {
58
+ this.i18n.registerContent(DEFAULT_NAMESPACE, ORG_INFO_SHEET_I18N);
59
+ }
60
+ }
61
+ dismiss() {
62
+ this._modalRef?.dismiss(null, 'cancel');
63
+ }
64
+ tt(key) {
65
+ return this.i18n.t(key, DEFAULT_NAMESPACE);
66
+ }
67
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: OrgInfoSheetComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
68
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: OrgInfoSheetComponent, isStandalone: true, selector: "val-org-info-sheet", inputs: { title: "title", subtitle: "subtitle", body: "body", closeLabel: "closeLabel", closeProps: "closeProps", _modalRef: "_modalRef" }, ngImport: i0, template: `
69
+ <ion-header>
70
+ <ion-toolbar>
71
+ <ion-buttons slot="end">
72
+ <ion-button fill="clear" color="dark" (click)="dismiss()">
73
+ <strong>{{ resolvedCloseLabel() }}</strong>
74
+ </ion-button>
75
+ </ion-buttons>
76
+ </ion-toolbar>
77
+ </ion-header>
78
+
79
+ <ion-content class="ion-padding">
80
+ <val-display [props]="{ content: resolvedTitle(), size: 'small', color: 'dark' }" />
81
+ <val-title [props]="{ content: resolvedSubtitle(), size: 'large', color: '', bold: false }" />
82
+
83
+ <div class="info-features">
84
+ <div class="info-feature">
85
+ <ion-icon name="people-outline" class="info-feature__icon" />
86
+ <div>
87
+ <div class="info-feature__title">{{ tt('featureCollabTitle') }}</div>
88
+ <div class="info-feature__desc">{{ tt('featureCollabDesc') }}</div>
89
+ </div>
90
+ </div>
91
+ <div class="info-feature">
92
+ <ion-icon name="swap-horizontal-outline" class="info-feature__icon" />
93
+ <div>
94
+ <div class="info-feature__title">{{ tt('featureSwitchTitle') }}</div>
95
+ <div class="info-feature__desc">{{ tt('featureSwitchDesc') }}</div>
96
+ </div>
97
+ </div>
98
+ <div class="info-feature">
99
+ <ion-icon name="mail-outline" class="info-feature__icon" />
100
+ <div>
101
+ <div class="info-feature__title">{{ tt('featureInviteTitle') }}</div>
102
+ <div class="info-feature__desc">{{ tt('featureInviteDesc') }}</div>
103
+ </div>
104
+ </div>
105
+ </div>
106
+
107
+ @for (para of paragraphs(); track $index) {
108
+ <val-text
109
+ [props]="{
110
+ size: 'medium',
111
+ color: 'dark',
112
+ bold: false,
113
+ content: para,
114
+ }"
115
+ />
116
+ }
117
+
118
+ <div class="sheet-footer">
119
+ <val-button [props]="resolvedCloseProps()" (click)="dismiss()" />
120
+ </div>
121
+ </ion-content>
122
+ `, isInline: true, styles: ["ion-content{--padding-bottom: 32px}val-display{margin-bottom:4px;display:block}val-title{margin-bottom:8px;display:block}.info-features{display:flex;flex-direction:column;gap:12px;margin:16px 0}.info-feature{display:flex;align-items:flex-start;gap:14px;padding:12px 14px;border-radius:10px;background:var(--ion-color-light, #f4f5f8)}:host-context(body.dark) .info-feature,:host-context(html.ion-palette-dark) .info-feature,:host-context([data-theme=\"dark\"]) .info-feature{background:#ffffff0d}.info-feature__icon{font-size:22px;color:var(--ion-color-primary);flex-shrink:0;margin-top:2px}.info-feature__title{font-weight:600;font-size:.9rem;color:var(--ion-color-dark)}.info-feature__desc{font-size:.82rem;color:var(--ion-color-medium);margin-top:2px}.sheet-footer{margin-top:20px}\n"], dependencies: [{ kind: "component", type: IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: ButtonComponent, selector: "val-button", inputs: ["preset", "props"], outputs: ["onClick"] }, { kind: "component", type: DisplayComponent, selector: "val-display", inputs: ["props"] }, { kind: "component", type: TextComponent, selector: "val-text", inputs: ["props"] }, { kind: "component", type: TitleComponent, selector: "val-title", inputs: ["props"] }] }); }
123
+ }
124
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: OrgInfoSheetComponent, decorators: [{
125
+ type: Component,
126
+ args: [{ selector: 'val-org-info-sheet', standalone: true, imports: [
127
+ IonHeader,
128
+ IonToolbar,
129
+ IonButtons,
130
+ IonButton,
131
+ IonContent,
132
+ IonIcon,
133
+ ButtonComponent,
134
+ DisplayComponent,
135
+ TextComponent,
136
+ TitleComponent,
137
+ ], template: `
138
+ <ion-header>
139
+ <ion-toolbar>
140
+ <ion-buttons slot="end">
141
+ <ion-button fill="clear" color="dark" (click)="dismiss()">
142
+ <strong>{{ resolvedCloseLabel() }}</strong>
143
+ </ion-button>
144
+ </ion-buttons>
145
+ </ion-toolbar>
146
+ </ion-header>
147
+
148
+ <ion-content class="ion-padding">
149
+ <val-display [props]="{ content: resolvedTitle(), size: 'small', color: 'dark' }" />
150
+ <val-title [props]="{ content: resolvedSubtitle(), size: 'large', color: '', bold: false }" />
151
+
152
+ <div class="info-features">
153
+ <div class="info-feature">
154
+ <ion-icon name="people-outline" class="info-feature__icon" />
155
+ <div>
156
+ <div class="info-feature__title">{{ tt('featureCollabTitle') }}</div>
157
+ <div class="info-feature__desc">{{ tt('featureCollabDesc') }}</div>
158
+ </div>
159
+ </div>
160
+ <div class="info-feature">
161
+ <ion-icon name="swap-horizontal-outline" class="info-feature__icon" />
162
+ <div>
163
+ <div class="info-feature__title">{{ tt('featureSwitchTitle') }}</div>
164
+ <div class="info-feature__desc">{{ tt('featureSwitchDesc') }}</div>
165
+ </div>
166
+ </div>
167
+ <div class="info-feature">
168
+ <ion-icon name="mail-outline" class="info-feature__icon" />
169
+ <div>
170
+ <div class="info-feature__title">{{ tt('featureInviteTitle') }}</div>
171
+ <div class="info-feature__desc">{{ tt('featureInviteDesc') }}</div>
172
+ </div>
173
+ </div>
174
+ </div>
175
+
176
+ @for (para of paragraphs(); track $index) {
177
+ <val-text
178
+ [props]="{
179
+ size: 'medium',
180
+ color: 'dark',
181
+ bold: false,
182
+ content: para,
183
+ }"
184
+ />
185
+ }
186
+
187
+ <div class="sheet-footer">
188
+ <val-button [props]="resolvedCloseProps()" (click)="dismiss()" />
189
+ </div>
190
+ </ion-content>
191
+ `, styles: ["ion-content{--padding-bottom: 32px}val-display{margin-bottom:4px;display:block}val-title{margin-bottom:8px;display:block}.info-features{display:flex;flex-direction:column;gap:12px;margin:16px 0}.info-feature{display:flex;align-items:flex-start;gap:14px;padding:12px 14px;border-radius:10px;background:var(--ion-color-light, #f4f5f8)}:host-context(body.dark) .info-feature,:host-context(html.ion-palette-dark) .info-feature,:host-context([data-theme=\"dark\"]) .info-feature{background:#ffffff0d}.info-feature__icon{font-size:22px;color:var(--ion-color-primary);flex-shrink:0;margin-top:2px}.info-feature__title{font-weight:600;font-size:.9rem;color:var(--ion-color-dark)}.info-feature__desc{font-size:.82rem;color:var(--ion-color-medium);margin-top:2px}.sheet-footer{margin-top:20px}\n"] }]
192
+ }], ctorParameters: () => [], propDecorators: { title: [{
193
+ type: Input
194
+ }], subtitle: [{
195
+ type: Input
196
+ }], body: [{
197
+ type: Input
198
+ }], closeLabel: [{
199
+ type: Input
200
+ }], closeProps: [{
201
+ type: Input
202
+ }], _modalRef: [{
203
+ type: Input
204
+ }] } });
205
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnLWluZm8tc2hlZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9vcmctaW5mby1zaGVldC9vcmctaW5mby1zaGVldC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbkYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNoRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFHbkUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXJELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDOztBQUU1RCxNQUFNLGlCQUFpQixHQUFHLGNBQWMsQ0FBQztBQUV6Qzs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQTZISCxNQUFNLE9BQU8scUJBQXFCO0lBeUJoQztRQXhCUSxTQUFJLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRW5DLGlGQUFpRjtRQUN4RSxVQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ3BC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R0csVUFBVTtzQkFBbEIsS0FBSztnQkFVRyxTQUFTO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgaW5qZWN0LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW9uQnV0dG9uLCBJb25CdXR0b25zLCBJb25Db250ZW50LCBJb25IZWFkZXIsIElvbkljb24sIElvblRvb2xiYXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IGFkZEljb25zIH0gZnJvbSAnaW9uaWNvbnMnO1xuaW1wb3J0IHsgbWFpbE91dGxpbmUsIHBlb3BsZU91dGxpbmUsIHN3YXBIb3Jpem9udGFsT3V0bGluZSB9IGZyb20gJ2lvbmljb25zL2ljb25zJztcblxuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGlzcGxheUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL2Rpc3BsYXkvZGlzcGxheS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGV4dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3RleHQvdGV4dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGl0bGVDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy90aXRsZS90aXRsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnV0dG9uTWV0YWRhdGEgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5cbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaTE4bic7XG5cbmltcG9ydCB7IE9SR19JTkZPX1NIRUVUX0kxOE4gfSBmcm9tICcuL29yZy1pbmZvLXNoZWV0LmkxOG4nO1xuXG5jb25zdCBERUZBVUxUX05BTUVTUEFDRSA9ICdPcmdJbmZvU2hlZXQnO1xuXG4vKipcbiAqIGB2YWwtb3JnLWluZm8tc2hlZXRgIOKAlCBzaGVldCBpbmZvcm1hdGl2byBcIsK/UXXDqSBzb24gbGFzIG9yZ2FuaXphY2lvbmVzP1wiLlxuICogRXh0cmHDrWRvIGRlbCBgT3JnSW5mb1NoZWV0Q29tcG9uZW50YCBpbmxpbmUgZGUgYEFjY291bnRQYWdlYCBiYWpvIGVsIHByb2Nlc28gZGVcbiAqIEFEUi0wMjEuXG4gKlxuICogRWwgY29uc3VtZXIgcGFzYSBgdGl0bGVgL2BzdWJ0aXRsZWAvYGJvZHlgL2BjbG9zZUxhYmVsYCB5YSByZXN1ZWx0b3MgcG9yIHByb3BzXG4gKiAocGF0csOzbiBkZWwgcmVzdG8gZGUgbW9kYWxlcyBkZWwgZmFjdG9yeSkuIExvcyB0ZXh0b3MgZGUgbG9zIDMgZmVhdHVyZXNcbiAqIChDb2xhYm9yYWNpw7NuIC8gQ2FtYmlvIHLDoXBpZG8gLyBJbnZpdGFjaW9uZXMpLCBxdWUgZW4gbGEgdmVyc2nDs24gaW5saW5lIGVzdGFiYW5cbiAqIGhhcmRjb2RlZCwgYWhvcmEgc2UgYXV0by1yZXN1ZWx2ZW4gZGVzZGUgZWwgbmFtZXNwYWNlIGBPcmdJbmZvU2hlZXRgXG4gKiAoYXV0by1yZWdpc3RyYWRvIGVuIGVsIGNvbnN0cnVjdG9yKS5cbiAqXG4gKiBBYmllcnRvIHbDrWEgYE1vZGFsU2VydmljZWAg4oCUIHJlY2liZSBgX21vZGFsUmVmYCBwb3IgYGNvbXBvbmVudFByb3BzYC4gSGVhZGVyXG4gKiBjYW7Ds25pY28gKFJlZ2xhICM1KTogc2luIGBpb24tdGl0bGVgLCBib3TDs24gQ2VycmFyIHRleHRvIGVuIGBzbG90PWVuZGAsXG4gKiB0w610dWxvL3N1YnTDrXR1bG8gZW4gZWwgYm9keSBjb24gYHZhbC1kaXNwbGF5YC9gdmFsLXRpdGxlYC5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLW9yZy1pbmZvLXNoZWV0JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIElvbkhlYWRlcixcbiAgICBJb25Ub29sYmFyLFxuICAgIElvbkJ1dHRvbnMsXG4gICAgSW9uQnV0dG9uLFxuICAgIElvbkNvbnRlbnQsXG4gICAgSW9uSWNvbixcbiAgICBCdXR0b25Db21wb25lbnQsXG4gICAgRGlzcGxheUNvbXBvbmVudCxcbiAgICBUZXh0Q29tcG9uZW50LFxuICAgIFRpdGxlQ29tcG9uZW50LFxuICBdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxpb24taGVhZGVyPlxuICAgICAgPGlvbi10b29sYmFyPlxuICAgICAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cImVuZFwiPlxuICAgICAgICAgIDxpb24tYnV0dG9uIGZpbGw9XCJjbGVhclwiIGNvbG9yPVwiZGFya1wiIChjbGljayk9XCJkaXNtaXNzKClcIj5cbiAgICAgICAgICAgIDxzdHJvbmc+e3sgcmVzb2x2ZWRDbG9zZUxhYmVsKCkgfX08L3N0cm9uZz5cbiAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgIDwvaW9uLWJ1dHRvbnM+XG4gICAgICA8L2lvbi10b29sYmFyPlxuICAgIDwvaW9uLWhlYWRlcj5cblxuICAgIDxpb24tY29udGVudCBjbGFzcz1cImlvbi1wYWRkaW5nXCI+XG4gICAgICA8dmFsLWRpc3BsYXkgW3Byb3BzXT1cInsgY29udGVudDogcmVzb2x2ZWRUaXRsZSgpLCBzaXplOiAnc21hbGwnLCBjb2xvcjogJ2RhcmsnIH1cIiAvPlxuICAgICAgPHZhbC10aXRsZSBbcHJvcHNdPVwieyBjb250ZW50OiByZXNvbHZlZFN1YnRpdGxlKCksIHNpemU6ICdsYXJnZScsIGNvbG9yOiAnJywgYm9sZDogZmFsc2UgfVwiIC8+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLWZlYXR1cmVzXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLWZlYXR1cmVcIj5cbiAgICAgICAgICA8aW9uLWljb24gbmFtZT1cInBlb3BsZS1vdXRsaW5lXCIgY2xhc3M9XCJpbmZvLWZlYXR1cmVfX2ljb25cIiAvPlxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5mby1mZWF0dXJlX190aXRsZVwiPnt7IHR0KCdmZWF0dXJlQ29sbGFiVGl0bGUnKSB9fTwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImluZm8tZmVhdHVyZV9fZGVzY1wiPnt7IHR0KCdmZWF0dXJlQ29sbGFiRGVzYycpIH19PC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5mby1mZWF0dXJlXCI+XG4gICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJzd2FwLWhvcml6b250YWwtb3V0bGluZVwiIGNsYXNzPVwiaW5mby1mZWF0dXJlX19pY29uXCIgLz5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImluZm8tZmVhdHVyZV9fdGl0bGVcIj57eyB0dCgnZmVhdHVyZVN3aXRjaFRpdGxlJykgfX08L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLWZlYXR1cmVfX2Rlc2NcIj57eyB0dCgnZmVhdHVyZVN3aXRjaERlc2MnKSB9fTwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImluZm8tZmVhdHVyZVwiPlxuICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwibWFpbC1vdXRsaW5lXCIgY2xhc3M9XCJpbmZvLWZlYXR1cmVfX2ljb25cIiAvPlxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5mby1mZWF0dXJlX190aXRsZVwiPnt7IHR0KCdmZWF0dXJlSW52aXRlVGl0bGUnKSB9fTwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImluZm8tZmVhdHVyZV9fZGVzY1wiPnt7IHR0KCdmZWF0dXJlSW52aXRlRGVzYycpIH19PC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIEBmb3IgKHBhcmEgb2YgcGFyYWdyYXBocygpOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgPHZhbC10ZXh0XG4gICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgIHNpemU6ICdtZWRpdW0nLFxuICAgICAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgICAgIGJvbGQ6IGZhbHNlLFxuICAgICAgICAgICAgY29udGVudDogcGFyYSxcbiAgICAgICAgICB9XCJcbiAgICAgICAgLz5cbiAgICAgIH1cblxuICAgICAgPGRpdiBjbGFzcz1cInNoZWV0LWZvb3RlclwiPlxuICAgICAgICA8dmFsLWJ1dHRvbiBbcHJvcHNdPVwicmVzb2x2ZWRDbG9zZVByb3BzKClcIiAoY2xpY2spPVwiZGlzbWlzcygpXCIgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvaW9uLWNvbnRlbnQ+XG4gIGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIGlvbi1jb250ZW50IHtcbiAgICAgICAgLS1wYWRkaW5nLWJvdHRvbTogMzJweDtcbiAgICAgIH1cbiAgICAgIHZhbC1kaXNwbGF5IHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogNHB4O1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIH1cbiAgICAgIHZhbC10aXRsZSB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDhweDtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB9XG4gICAgICAuaW5mby1mZWF0dXJlcyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogMTJweDtcbiAgICAgICAgbWFyZ2luOiAxNnB4IDA7XG4gICAgICB9XG4gICAgICAuaW5mby1mZWF0dXJlIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgICAgIGdhcDogMTRweDtcbiAgICAgICAgcGFkZGluZzogMTJweCAxNHB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxMHB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItbGlnaHQsICNmNGY1ZjgpO1xuICAgICAgfVxuICAgICAgOmhvc3QtY29udGV4dChib2R5LmRhcmspIC5pbmZvLWZlYXR1cmUsXG4gICAgICA6aG9zdC1jb250ZXh0KGh0bWwuaW9uLXBhbGV0dGUtZGFyaykgLmluZm8tZmVhdHVyZSxcbiAgICAgIDpob3N0LWNvbnRleHQoW2RhdGEtdGhlbWU9J2RhcmsnXSkgLmluZm8tZmVhdHVyZSB7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNSk7XG4gICAgICB9XG4gICAgICAuaW5mby1mZWF0dXJlX19pY29uIHtcbiAgICAgICAgZm9udC1zaXplOiAyMnB4O1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLXByaW1hcnkpO1xuICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgICAgbWFyZ2luLXRvcDogMnB4O1xuICAgICAgfVxuICAgICAgLmluZm8tZmVhdHVyZV9fdGl0bGUge1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBmb250LXNpemU6IDAuOXJlbTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYXJrKTtcbiAgICAgIH1cbiAgICAgIC5pbmZvLWZlYXR1cmVfX2Rlc2Mge1xuICAgICAgICBmb250LXNpemU6IDAuODJyZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItbWVkaXVtKTtcbiAgICAgICAgbWFyZ2luLXRvcDogMnB4O1xuICAgICAgfVxuICAgICAgLnNoZWV0LWZvb3RlciB7XG4gICAgICAgIG1hcmdpbi10b3A6IDIwcHg7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgT3JnSW5mb1NoZWV0Q29tcG9uZW50IHtcbiAgcHJpdmF0ZSBpMThuID0gaW5qZWN0KEkxOG5TZXJ2aWNlKTtcblxuICAvKiogVMOtdHVsbyBwcmluY2lwYWwgKHJlc3VlbHRvIHBvciBlbCBjb25zdW1lcikuIEZhbGxiYWNrIGFsIG5hbWVzcGFjZSBwcm9waW8uICovXG4gIEBJbnB1dCgpIHRpdGxlID0gJyc7XG4gIC8qKiBTdWJ0w610dWxvIChyZXN1ZWx0byBwb3IgZWwgY29uc3VtZXIpLiBGYWxsYmFjayBhbCBuYW1lc3BhY2UgcHJvcGlvLiAqL1xuICBASW5wdXQoKSBzdWJ0aXRsZSA9ICcnO1xuICAvKiogQ3VlcnBvIGVuIHDDoXJyYWZvcyBzZXBhcmFkb3MgcG9yIGRvYmxlIHNhbHRvIGRlIGzDrW5lYSAocmVzdWVsdG8gcG9yIGVsIGNvbnN1bWVyKS4gKi9cbiAgQElucHV0KCkgYm9keSA9ICcnO1xuICAvKiogTGFiZWwgZGVsIGJvdMOzbiBjZXJyYXIgKHJlc3VlbHRvIHBvciBlbCBjb25zdW1lcikuIEZhbGxiYWNrIGFsIG5hbWVzcGFjZSBwcm9waW8uICovXG4gIEBJbnB1dCgpIGNsb3NlTGFiZWwgPSAnJztcblxuICAvKiogUHJvcHMgZGVsIGJvdMOzbiBjZXJyYXIgZGVsIGZvb3RlciAoZWwgY29uc3VtZXIgcHVlZGUgcGFzYXIgY3VzdG9tKS4gKi9cbiAgQElucHV0KCkgY2xvc2VQcm9wczogUGFydGlhbDxCdXR0b25NZXRhZGF0YT4gPSB7XG4gICAgdGV4dDogJ0NlcnJhcicsXG4gICAgZmlsbDogJ291dGxpbmUnLFxuICAgIGNvbG9yOiAnZGFyaycsXG4gICAgc2l6ZTogJ2RlZmF1bHQnLFxuICAgIGV4cGFuZDogJ2Jsb2NrJyxcbiAgICB0eXBlOiAnYnV0dG9uJyxcbiAgfTtcblxuICAvKiogSW55ZWN0YWRvIHBvciBgTW9kYWxTZXJ2aWNlLm9wZW5gIOKAlCByZWZlcmVuY2lhIHBhcmEgY2VycmFyIGRlc2RlIGRlbnRyby4gKi9cbiAgQElucHV0KCkgX21vZGFsUmVmPzogeyBkaXNtaXNzOiAoZGF0YT86IHVua25vd24sIHJvbGU/OiBzdHJpbmcpID0+IHZvaWQgfTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBhZGRJY29ucyh7IHBlb3BsZU91dGxpbmUsIHN3YXBIb3Jpem9udGFsT3V0bGluZSwgbWFpbE91dGxpbmUgfSk7XG4gICAgaWYgKCF0aGlzLmkxOG4uaGFzTmFtZXNwYWNlKERFRkFVTFRfTkFNRVNQQUNFKSkge1xuICAgICAgdGhpcy5pMThuLnJlZ2lzdGVyQ29udGVudChERUZBVUxUX05BTUVTUEFDRSwgT1JHX0lORk9fU0hFRVRfSTE4Tik7XG4gICAgfVxuICB9XG5cbiAgcmVhZG9ubHkgcmVzb2x2ZWRUaXRsZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMudGl0bGUgfHwgdGhpcy50dCgndGl0bGUnKSk7XG4gIHJlYWRvbmx5IHJlc29sdmVkU3VidGl0bGUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnN1YnRpdGxlIHx8IHRoaXMudHQoJ3N1YnRpdGxlJykpO1xuICByZWFkb25seSByZXNvbHZlZENsb3NlTGFiZWwgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmNsb3NlTGFiZWwgfHwgdGhpcy50dCgnY2xvc2UnKSk7XG5cbiAgcmVhZG9ubHkgcGFyYWdyYXBocyA9IGNvbXB1dGVkPHN0cmluZ1tdPigoKSA9PiB0aGlzLmJvZHkuc3BsaXQoJ1xcblxcbicpLmZpbHRlcihCb29sZWFuKSk7XG5cbiAgcmVhZG9ubHkgcmVzb2x2ZWRDbG9zZVByb3BzID0gY29tcHV0ZWQ8UGFydGlhbDxCdXR0b25NZXRhZGF0YT4+KCgpID0+ICh7XG4gICAgLi4udGhpcy5jbG9zZVByb3BzLFxuICAgIHRleHQ6IHRoaXMuY2xvc2VQcm9wcy50ZXh0IHx8IHRoaXMucmVzb2x2ZWRDbG9zZUxhYmVsKCksXG4gIH0pKTtcblxuICBkaXNtaXNzKCk6IHZvaWQge1xuICAgIHRoaXMuX21vZGFsUmVmPy5kaXNtaXNzKG51bGwsICdjYW5jZWwnKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB0dChrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaTE4bi50KGtleSwgREVGQVVMVF9OQU1FU1BBQ0UpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Defaults i18n (es/en) embebidos en `val-org-info-sheet`. Auto-registrados en el
3
+ * constructor del componente si el consumer no proveyó el namespace
4
+ * (`OrgInfoSheet`). Cubre los textos de los 3 features (que en la versión inline
5
+ * de showcase estaban hardcoded) más fallbacks de título/subtítulo/closeLabel.
6
+ *
7
+ * `title`/`subtitle`/`body`/`closeLabel` los suele pasar el consumer ya resueltos
8
+ * por props (patrón del resto de modales); las keys `feature*` se auto-resuelven
9
+ * desde este namespace.
10
+ */
11
+ export const ORG_INFO_SHEET_I18N = {
12
+ es: {
13
+ title: '¿Qué son las organizaciones?',
14
+ subtitle: 'Todo lo que necesitas saber',
15
+ close: 'Cerrar',
16
+ featureCollabTitle: 'Colaboración',
17
+ featureCollabDesc: 'Separa proyectos y datos por empresa o equipo.',
18
+ featureSwitchTitle: 'Cambio rápido',
19
+ featureSwitchDesc: 'Cambia entre organizaciones en cualquier momento.',
20
+ featureInviteTitle: 'Invitaciones',
21
+ featureInviteDesc: 'Invita a otros a unirse mediante email.',
22
+ },
23
+ en: {
24
+ title: 'What are organizations?',
25
+ subtitle: 'Everything you need to know',
26
+ close: 'Close',
27
+ featureCollabTitle: 'Collaboration',
28
+ featureCollabDesc: 'Separate projects and data by company or team.',
29
+ featureSwitchTitle: 'Quick switch',
30
+ featureSwitchDesc: 'Switch between organizations at any time.',
31
+ featureInviteTitle: 'Invitations',
32
+ featureInviteDesc: 'Invite others to join via email.',
33
+ },
34
+ };
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnLWluZm8tc2hlZXQuaTE4bi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9vcmdhbmlzbXMvb3JnLWluZm8tc2hlZXQvb3JnLWluZm8tc2hlZXQuaTE4bi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBcUI7SUFDbkQsRUFBRSxFQUFFO1FBQ0YsS0FBSyxFQUFFLDhCQUE4QjtRQUNyQyxRQUFRLEVBQUUsNkJBQTZCO1FBQ3ZDLEtBQUssRUFBRSxRQUFRO1FBQ2Ysa0JBQWtCLEVBQUUsY0FBYztRQUNsQyxpQkFBaUIsRUFBRSxnREFBZ0Q7UUFDbkUsa0JBQWtCLEVBQUUsZUFBZTtRQUNuQyxpQkFBaUIsRUFBRSxtREFBbUQ7UUFDdEUsa0JBQWtCLEVBQUUsY0FBYztRQUNsQyxpQkFBaUIsRUFBRSx5Q0FBeUM7S0FDN0Q7SUFDRCxFQUFFLEVBQUU7UUFDRixLQUFLLEVBQUUseUJBQXlCO1FBQ2hDLFFBQVEsRUFBRSw2QkFBNkI7UUFDdkMsS0FBSyxFQUFFLE9BQU87UUFDZCxrQkFBa0IsRUFBRSxlQUFlO1FBQ25DLGlCQUFpQixFQUFFLGdEQUFnRDtRQUNuRSxrQkFBa0IsRUFBRSxjQUFjO1FBQ2xDLGlCQUFpQixFQUFFLDJDQUEyQztRQUM5RCxrQkFBa0IsRUFBRSxhQUFhO1FBQ2pDLGlCQUFpQixFQUFFLGtDQUFrQztLQUN0RDtDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMYW5ndWFnZXNDb250ZW50IH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaTE4bi90eXBlcyc7XG5cbi8qKlxuICogRGVmYXVsdHMgaTE4biAoZXMvZW4pIGVtYmViaWRvcyBlbiBgdmFsLW9yZy1pbmZvLXNoZWV0YC4gQXV0by1yZWdpc3RyYWRvcyBlbiBlbFxuICogY29uc3RydWN0b3IgZGVsIGNvbXBvbmVudGUgc2kgZWwgY29uc3VtZXIgbm8gcHJvdmV5w7MgZWwgbmFtZXNwYWNlXG4gKiAoYE9yZ0luZm9TaGVldGApLiBDdWJyZSBsb3MgdGV4dG9zIGRlIGxvcyAzIGZlYXR1cmVzIChxdWUgZW4gbGEgdmVyc2nDs24gaW5saW5lXG4gKiBkZSBzaG93Y2FzZSBlc3RhYmFuIGhhcmRjb2RlZCkgbcOhcyBmYWxsYmFja3MgZGUgdMOtdHVsby9zdWJ0w610dWxvL2Nsb3NlTGFiZWwuXG4gKlxuICogYHRpdGxlYC9gc3VidGl0bGVgL2Bib2R5YC9gY2xvc2VMYWJlbGAgbG9zIHN1ZWxlIHBhc2FyIGVsIGNvbnN1bWVyIHlhIHJlc3VlbHRvc1xuICogcG9yIHByb3BzIChwYXRyw7NuIGRlbCByZXN0byBkZSBtb2RhbGVzKTsgbGFzIGtleXMgYGZlYXR1cmUqYCBzZSBhdXRvLXJlc3VlbHZlblxuICogZGVzZGUgZXN0ZSBuYW1lc3BhY2UuXG4gKi9cbmV4cG9ydCBjb25zdCBPUkdfSU5GT19TSEVFVF9JMThOOiBMYW5ndWFnZXNDb250ZW50ID0ge1xuICBlczoge1xuICAgIHRpdGxlOiAnwr9RdcOpIHNvbiBsYXMgb3JnYW5pemFjaW9uZXM/JyxcbiAgICBzdWJ0aXRsZTogJ1RvZG8gbG8gcXVlIG5lY2VzaXRhcyBzYWJlcicsXG4gICAgY2xvc2U6ICdDZXJyYXInLFxuICAgIGZlYXR1cmVDb2xsYWJUaXRsZTogJ0NvbGFib3JhY2nDs24nLFxuICAgIGZlYXR1cmVDb2xsYWJEZXNjOiAnU2VwYXJhIHByb3llY3RvcyB5IGRhdG9zIHBvciBlbXByZXNhIG8gZXF1aXBvLicsXG4gICAgZmVhdHVyZVN3aXRjaFRpdGxlOiAnQ2FtYmlvIHLDoXBpZG8nLFxuICAgIGZlYXR1cmVTd2l0Y2hEZXNjOiAnQ2FtYmlhIGVudHJlIG9yZ2FuaXphY2lvbmVzIGVuIGN1YWxxdWllciBtb21lbnRvLicsXG4gICAgZmVhdHVyZUludml0ZVRpdGxlOiAnSW52aXRhY2lvbmVzJyxcbiAgICBmZWF0dXJlSW52aXRlRGVzYzogJ0ludml0YSBhIG90cm9zIGEgdW5pcnNlIG1lZGlhbnRlIGVtYWlsLicsXG4gIH0sXG4gIGVuOiB7XG4gICAgdGl0bGU6ICdXaGF0IGFyZSBvcmdhbml6YXRpb25zPycsXG4gICAgc3VidGl0bGU6ICdFdmVyeXRoaW5nIHlvdSBuZWVkIHRvIGtub3cnLFxuICAgIGNsb3NlOiAnQ2xvc2UnLFxuICAgIGZlYXR1cmVDb2xsYWJUaXRsZTogJ0NvbGxhYm9yYXRpb24nLFxuICAgIGZlYXR1cmVDb2xsYWJEZXNjOiAnU2VwYXJhdGUgcHJvamVjdHMgYW5kIGRhdGEgYnkgY29tcGFueSBvciB0ZWFtLicsXG4gICAgZmVhdHVyZVN3aXRjaFRpdGxlOiAnUXVpY2sgc3dpdGNoJyxcbiAgICBmZWF0dXJlU3dpdGNoRGVzYzogJ1N3aXRjaCBiZXR3ZWVuIG9yZ2FuaXphdGlvbnMgYXQgYW55IHRpbWUuJyxcbiAgICBmZWF0dXJlSW52aXRlVGl0bGU6ICdJbnZpdGF0aW9ucycsXG4gICAgZmVhdHVyZUludml0ZURlc2M6ICdJbnZpdGUgb3RoZXJzIHRvIGpvaW4gdmlhIGVtYWlsLicsXG4gIH0sXG59O1xuIl19