valtech-components 2.0.778 → 2.0.780

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 (27) hide show
  1. package/esm2022/lib/components/atoms/glass/glass.component.mjs +125 -0
  2. package/esm2022/lib/components/atoms/glass/types.mjs +2 -0
  3. package/esm2022/lib/components/atoms/user-avatar/types.mjs +2 -0
  4. package/esm2022/lib/components/atoms/user-avatar/user-avatar.component.mjs +162 -0
  5. package/esm2022/lib/components/molecules/notes-box/notes-box.component.mjs +70 -77
  6. package/esm2022/lib/components/organisms/toolbar/toolbar.component.mjs +32 -14
  7. package/esm2022/lib/components/types.mjs +1 -1
  8. package/esm2022/lib/services/auth/auth-state.service.mjs +29 -8
  9. package/esm2022/lib/services/auth/auth.service.mjs +18 -17
  10. package/esm2022/lib/services/auth/types.mjs +1 -1
  11. package/esm2022/lib/services/icons.service.mjs +7 -2
  12. package/esm2022/lib/version.mjs +2 -2
  13. package/esm2022/public-api.mjs +3 -1
  14. package/fesm2022/valtech-components.mjs +429 -112
  15. package/fesm2022/valtech-components.mjs.map +1 -1
  16. package/lib/components/atoms/glass/glass.component.d.ts +43 -0
  17. package/lib/components/atoms/glass/types.d.ts +70 -0
  18. package/lib/components/atoms/user-avatar/types.d.ts +74 -0
  19. package/lib/components/atoms/user-avatar/user-avatar.component.d.ts +50 -0
  20. package/lib/components/molecules/notes-box/notes-box.component.d.ts +27 -15
  21. package/lib/components/types.d.ts +11 -0
  22. package/lib/services/auth/auth-state.service.d.ts +14 -0
  23. package/lib/services/auth/auth.service.d.ts +8 -4
  24. package/lib/services/auth/types.d.ts +8 -0
  25. package/lib/version.d.ts +1 -1
  26. package/package.json +1 -1
  27. package/public-api.d.ts +4 -0
@@ -0,0 +1,125 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { Component, computed, Input, signal } from '@angular/core';
3
+ import * as i0 from "@angular/core";
4
+ /**
5
+ * `val-glass`
6
+ *
7
+ * Capa **glassmorphism** reusable. Frosted glass overlay con backdrop blur,
8
+ * tint semi-translúcido, border sutil y shadow. Acepta cualquier contenido via
9
+ * `<ng-content>` — desde un texto a un card entero.
10
+ *
11
+ * Ideal sobre backgrounds decorativos (val-pattern, gradients, imágenes) para
12
+ * mejorar legibilidad del contenido sin tapar la decoración.
13
+ *
14
+ * @example Pill sobre patrón:
15
+ * ```html
16
+ * <val-glass><h1>Buenos días</h1></val-glass>
17
+ * ```
18
+ *
19
+ * @example Card glass (block) con auto tint:
20
+ * ```html
21
+ * <val-glass [props]="{ tint: 'auto', display: 'block', radius: '20px', padding: '24px' }">
22
+ * <p>Contenido del card</p>
23
+ * </val-glass>
24
+ * ```
25
+ */
26
+ export class GlassComponent {
27
+ constructor() {
28
+ this.props_ = signal({});
29
+ /** Snapshot reactivo de los props con defaults aplicados. */
30
+ this.resolvedProps = computed(() => this.props_());
31
+ /**
32
+ * Resuelve el background según `tint` + `tintAlpha`.
33
+ * - `'dark'` → rgba purple-dark
34
+ * - `'light'` → rgba blanco
35
+ * - `'auto'` → CSS var con fallback (resolved vía media/class del tema)
36
+ * - custom string → usado tal cual
37
+ */
38
+ this.bgStyle = computed(() => {
39
+ const p = this.resolvedProps();
40
+ const tint = p.tint ?? 'dark';
41
+ const alpha = p.tintAlpha ?? 0.55;
42
+ if (tint === 'dark')
43
+ return `rgba(14, 4, 32, ${alpha})`;
44
+ if (tint === 'light')
45
+ return `rgba(255, 255, 255, ${alpha})`;
46
+ if (tint === 'auto') {
47
+ // CSS var — definida en :host vía host bindings de tema. Fallback dark.
48
+ return `var(--val-glass-auto-bg, rgba(14, 4, 32, ${alpha}))`;
49
+ }
50
+ return tint; // custom rgba/hsl/hex
51
+ });
52
+ this.filterStyle = computed(() => {
53
+ const p = this.resolvedProps();
54
+ const blur = p.blur ?? 10;
55
+ const sat = p.saturate ?? 140;
56
+ return `blur(${blur}px) saturate(${sat}%)`;
57
+ });
58
+ this.borderStyle = computed(() => {
59
+ const showBorder = this.resolvedProps().border ?? true;
60
+ if (!showBorder)
61
+ return 'none';
62
+ const tint = this.resolvedProps().tint ?? 'dark';
63
+ // light tint → border más oscuro para visibilidad; dark tint → blanco.
64
+ if (tint === 'light')
65
+ return '1px solid rgba(0, 0, 0, 0.08)';
66
+ return '1px solid rgba(255, 255, 255, 0.08)';
67
+ });
68
+ this.shadowStyle = computed(() => {
69
+ const elevation = this.resolvedProps().elevation ?? 'md';
70
+ switch (elevation) {
71
+ case 'none':
72
+ return 'none';
73
+ case 'sm':
74
+ return '0 2px 8px rgba(0, 0, 0, 0.15)';
75
+ case 'lg':
76
+ return '0 12px 40px rgba(0, 0, 0, 0.35)';
77
+ case 'md':
78
+ default:
79
+ return '0 4px 24px rgba(0, 0, 0, 0.25)';
80
+ }
81
+ });
82
+ }
83
+ set props(value) {
84
+ this.props_.set(value ?? {});
85
+ }
86
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GlassComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
87
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: GlassComponent, isStandalone: true, selector: "val-glass", inputs: { props: "props" }, ngImport: i0, template: `
88
+ <div
89
+ class="val-glass"
90
+ [class]="resolvedProps().cssClass || ''"
91
+ [style.background]="bgStyle()"
92
+ [style.backdrop-filter]="filterStyle()"
93
+ [style.-webkit-backdrop-filter]="filterStyle()"
94
+ [style.border-radius]="resolvedProps().radius || '14px'"
95
+ [style.padding]="resolvedProps().padding || '10px 18px'"
96
+ [style.border]="borderStyle()"
97
+ [style.box-shadow]="shadowStyle()"
98
+ [style.display]="resolvedProps().display || 'inline-block'"
99
+ >
100
+ <ng-content />
101
+ </div>
102
+ `, isInline: true, styles: [":host{display:contents}.val-glass{max-width:100%;box-sizing:border-box;transition:background .2s ease,border-color .2s ease}@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))){.val-glass{background:#0e0420d9!important}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
103
+ }
104
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GlassComponent, decorators: [{
105
+ type: Component,
106
+ args: [{ selector: 'val-glass', standalone: true, imports: [CommonModule], template: `
107
+ <div
108
+ class="val-glass"
109
+ [class]="resolvedProps().cssClass || ''"
110
+ [style.background]="bgStyle()"
111
+ [style.backdrop-filter]="filterStyle()"
112
+ [style.-webkit-backdrop-filter]="filterStyle()"
113
+ [style.border-radius]="resolvedProps().radius || '14px'"
114
+ [style.padding]="resolvedProps().padding || '10px 18px'"
115
+ [style.border]="borderStyle()"
116
+ [style.box-shadow]="shadowStyle()"
117
+ [style.display]="resolvedProps().display || 'inline-block'"
118
+ >
119
+ <ng-content />
120
+ </div>
121
+ `, styles: [":host{display:contents}.val-glass{max-width:100%;box-sizing:border-box;transition:background .2s ease,border-color .2s ease}@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))){.val-glass{background:#0e0420d9!important}}\n"] }]
122
+ }], propDecorators: { props: [{
123
+ type: Input
124
+ }] } });
125
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xhc3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2F0b21zL2dsYXNzL2dsYXNzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFHbkU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFCRztBQTZDSCxNQUFNLE9BQU8sY0FBYztJQTVDM0I7UUE2Q21CLFdBQU0sR0FBRyxNQUFNLENBQWdCLEVBQUUsQ0FBQyxDQUFDO1FBTXBELDZEQUE2RDtRQUNwRCxrQkFBYSxHQUFHLFFBQVEsQ0FBZ0IsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFFdEU7Ozs7OztXQU1HO1FBQ00sWUFBTyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDL0IsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQy9CLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLElBQUksTUFBTSxDQUFDO1lBQzlCLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDO1lBRWxDLElBQUksSUFBSSxLQUFLLE1BQU07Z0JBQUUsT0FBTyxtQkFBbUIsS0FBSyxHQUFHLENBQUM7WUFDeEQsSUFBSSxJQUFJLEtBQUssT0FBTztnQkFBRSxPQUFPLHVCQUF1QixLQUFLLEdBQUcsQ0FBQztZQUM3RCxJQUFJLElBQUksS0FBSyxNQUFNLEVBQUUsQ0FBQztnQkFDcEIsd0VBQXdFO2dCQUN4RSxPQUFPLDRDQUE0QyxLQUFLLElBQUksQ0FBQztZQUMvRCxDQUFDO1lBQ0QsT0FBTyxJQUFJLENBQUMsQ0FBQyxzQkFBc0I7UUFDckMsQ0FBQyxDQUFDLENBQUM7UUFFTSxnQkFBVyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDbkMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQy9CLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQzFCLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxRQUFRLElBQUksR0FBRyxDQUFDO1lBQzlCLE9BQU8sUUFBUSxJQUFJLGdCQUFnQixHQUFHLElBQUksQ0FBQztRQUM3QyxDQUFDLENBQUMsQ0FBQztRQUVNLGdCQUFXLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNuQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQztZQUN2RCxJQUFJLENBQUMsVUFBVTtnQkFBRSxPQUFPLE1BQU0sQ0FBQztZQUMvQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsSUFBSSxJQUFJLE1BQU0sQ0FBQztZQUNqRCx1RUFBdUU7WUFDdkUsSUFBSSxJQUFJLEtBQUssT0FBTztnQkFBRSxPQUFPLCtCQUErQixDQUFDO1lBQzdELE9BQU8scUNBQXFDLENBQUM7UUFDL0MsQ0FBQyxDQUFDLENBQUM7UUFFTSxnQkFBVyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDbkMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUM7WUFDekQsUUFBUSxTQUFTLEVBQUUsQ0FBQztnQkFDbEIsS0FBSyxNQUFNO29CQUNULE9BQU8sTUFBTSxDQUFDO2dCQUNoQixLQUFLLElBQUk7b0JBQ1AsT0FBTywrQkFBK0IsQ0FBQztnQkFDekMsS0FBSyxJQUFJO29CQUNQLE9BQU8saUNBQWlDLENBQUM7Z0JBQzNDLEtBQUssSUFBSSxDQUFDO2dCQUNWO29CQUNFLE9BQU8sZ0NBQWdDLENBQUM7WUFDNUMsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0tBQ0o7SUExREMsSUFBYSxLQUFLLENBQUMsS0FBZ0M7UUFDakQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQy9CLENBQUM7K0dBTFUsY0FBYzttR0FBZCxjQUFjLGlHQXhDZjs7Ozs7Ozs7Ozs7Ozs7O0dBZVQsdVVBaEJTLFlBQVk7OzRGQXlDWCxjQUFjO2tCQTVDMUIsU0FBUzsrQkFDRSxXQUFXLGNBQ1QsSUFBSSxXQUNQLENBQUMsWUFBWSxDQUFDLFlBQ2I7Ozs7Ozs7Ozs7Ozs7OztHQWVUOzhCQTRCWSxLQUFLO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIElucHV0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEdsYXNzTWV0YWRhdGEgfSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiBgdmFsLWdsYXNzYFxuICpcbiAqIENhcGEgKipnbGFzc21vcnBoaXNtKiogcmV1c2FibGUuIEZyb3N0ZWQgZ2xhc3Mgb3ZlcmxheSBjb24gYmFja2Ryb3AgYmx1cixcbiAqIHRpbnQgc2VtaS10cmFuc2zDumNpZG8sIGJvcmRlciBzdXRpbCB5IHNoYWRvdy4gQWNlcHRhIGN1YWxxdWllciBjb250ZW5pZG8gdmlhXG4gKiBgPG5nLWNvbnRlbnQ+YCDigJQgZGVzZGUgdW4gdGV4dG8gYSB1biBjYXJkIGVudGVyby5cbiAqXG4gKiBJZGVhbCBzb2JyZSBiYWNrZ3JvdW5kcyBkZWNvcmF0aXZvcyAodmFsLXBhdHRlcm4sIGdyYWRpZW50cywgaW3DoWdlbmVzKSBwYXJhXG4gKiBtZWpvcmFyIGxlZ2liaWxpZGFkIGRlbCBjb250ZW5pZG8gc2luIHRhcGFyIGxhIGRlY29yYWNpw7NuLlxuICpcbiAqIEBleGFtcGxlIFBpbGwgc29icmUgcGF0csOzbjpcbiAqIGBgYGh0bWxcbiAqIDx2YWwtZ2xhc3M+PGgxPkJ1ZW5vcyBkw61hczwvaDE+PC92YWwtZ2xhc3M+XG4gKiBgYGBcbiAqXG4gKiBAZXhhbXBsZSBDYXJkIGdsYXNzIChibG9jaykgY29uIGF1dG8gdGludDpcbiAqIGBgYGh0bWxcbiAqIDx2YWwtZ2xhc3MgW3Byb3BzXT1cInsgdGludDogJ2F1dG8nLCBkaXNwbGF5OiAnYmxvY2snLCByYWRpdXM6ICcyMHB4JywgcGFkZGluZzogJzI0cHgnIH1cIj5cbiAqICAgPHA+Q29udGVuaWRvIGRlbCBjYXJkPC9wPlxuICogPC92YWwtZ2xhc3M+XG4gKiBgYGBcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLWdsYXNzJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJ2YWwtZ2xhc3NcIlxuICAgICAgW2NsYXNzXT1cInJlc29sdmVkUHJvcHMoKS5jc3NDbGFzcyB8fCAnJ1wiXG4gICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJiZ1N0eWxlKClcIlxuICAgICAgW3N0eWxlLmJhY2tkcm9wLWZpbHRlcl09XCJmaWx0ZXJTdHlsZSgpXCJcbiAgICAgIFtzdHlsZS4td2Via2l0LWJhY2tkcm9wLWZpbHRlcl09XCJmaWx0ZXJTdHlsZSgpXCJcbiAgICAgIFtzdHlsZS5ib3JkZXItcmFkaXVzXT1cInJlc29sdmVkUHJvcHMoKS5yYWRpdXMgfHwgJzE0cHgnXCJcbiAgICAgIFtzdHlsZS5wYWRkaW5nXT1cInJlc29sdmVkUHJvcHMoKS5wYWRkaW5nIHx8ICcxMHB4IDE4cHgnXCJcbiAgICAgIFtzdHlsZS5ib3JkZXJdPVwiYm9yZGVyU3R5bGUoKVwiXG4gICAgICBbc3R5bGUuYm94LXNoYWRvd109XCJzaGFkb3dTdHlsZSgpXCJcbiAgICAgIFtzdHlsZS5kaXNwbGF5XT1cInJlc29sdmVkUHJvcHMoKS5kaXNwbGF5IHx8ICdpbmxpbmUtYmxvY2snXCJcbiAgICA+XG4gICAgICA8bmctY29udGVudCAvPlxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICA6aG9zdCB7XG4gICAgICAgIGRpc3BsYXk6IGNvbnRlbnRzO1xuICAgICAgfVxuXG4gICAgICAudmFsLWdsYXNzIHtcbiAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICB0cmFuc2l0aW9uOlxuICAgICAgICAgIGJhY2tncm91bmQgMC4ycyBlYXNlLFxuICAgICAgICAgIGJvcmRlci1jb2xvciAwLjJzIGVhc2U7XG4gICAgICB9XG5cbiAgICAgIC8qIEZhbGxiYWNrIHBhcmEgYnJvd3NlcnMgc2luIGJhY2tkcm9wLWZpbHRlciDigJQgYnVtcGVyIGFscGhhIGRlbCB0aW50XG4gICAgICAgKiBwYXJhIG1hbnRlbmVyIGxlZ2liaWxpZGFkLiBEZXRlY3RhZG8gdsOtYSBAc3VwcG9ydHMuICovXG4gICAgICBAc3VwcG9ydHMgbm90ICgoYmFja2Ryb3AtZmlsdGVyOiBibHVyKDFweCkpIG9yICgtd2Via2l0LWJhY2tkcm9wLWZpbHRlcjogYmx1cigxcHgpKSkge1xuICAgICAgICAudmFsLWdsYXNzIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDE0LCA0LCAzMiwgMC44NSkgIWltcG9ydGFudDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIGAsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEdsYXNzQ29tcG9uZW50IHtcbiAgcHJpdmF0ZSByZWFkb25seSBwcm9wc18gPSBzaWduYWw8R2xhc3NNZXRhZGF0YT4oe30pO1xuXG4gIEBJbnB1dCgpIHNldCBwcm9wcyh2YWx1ZTogR2xhc3NNZXRhZGF0YSB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMucHJvcHNfLnNldCh2YWx1ZSA/PyB7fSk7XG4gIH1cblxuICAvKiogU25hcHNob3QgcmVhY3Rpdm8gZGUgbG9zIHByb3BzIGNvbiBkZWZhdWx0cyBhcGxpY2Fkb3MuICovXG4gIHJlYWRvbmx5IHJlc29sdmVkUHJvcHMgPSBjb21wdXRlZDxHbGFzc01ldGFkYXRhPigoKSA9PiB0aGlzLnByb3BzXygpKTtcblxuICAvKipcbiAgICogUmVzdWVsdmUgZWwgYmFja2dyb3VuZCBzZWfDum4gYHRpbnRgICsgYHRpbnRBbHBoYWAuXG4gICAqIC0gYCdkYXJrJ2Ag4oaSIHJnYmEgcHVycGxlLWRhcmtcbiAgICogLSBgJ2xpZ2h0J2Ag4oaSIHJnYmEgYmxhbmNvXG4gICAqIC0gYCdhdXRvJ2Ag4oaSIENTUyB2YXIgY29uIGZhbGxiYWNrIChyZXNvbHZlZCB2w61hIG1lZGlhL2NsYXNzIGRlbCB0ZW1hKVxuICAgKiAtIGN1c3RvbSBzdHJpbmcg4oaSIHVzYWRvIHRhbCBjdWFsXG4gICAqL1xuICByZWFkb25seSBiZ1N0eWxlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHAgPSB0aGlzLnJlc29sdmVkUHJvcHMoKTtcbiAgICBjb25zdCB0aW50ID0gcC50aW50ID8/ICdkYXJrJztcbiAgICBjb25zdCBhbHBoYSA9IHAudGludEFscGhhID8/IDAuNTU7XG5cbiAgICBpZiAodGludCA9PT0gJ2RhcmsnKSByZXR1cm4gYHJnYmEoMTQsIDQsIDMyLCAke2FscGhhfSlgO1xuICAgIGlmICh0aW50ID09PSAnbGlnaHQnKSByZXR1cm4gYHJnYmEoMjU1LCAyNTUsIDI1NSwgJHthbHBoYX0pYDtcbiAgICBpZiAodGludCA9PT0gJ2F1dG8nKSB7XG4gICAgICAvLyBDU1MgdmFyIOKAlCBkZWZpbmlkYSBlbiA6aG9zdCB2w61hIGhvc3QgYmluZGluZ3MgZGUgdGVtYS4gRmFsbGJhY2sgZGFyay5cbiAgICAgIHJldHVybiBgdmFyKC0tdmFsLWdsYXNzLWF1dG8tYmcsIHJnYmEoMTQsIDQsIDMyLCAke2FscGhhfSkpYDtcbiAgICB9XG4gICAgcmV0dXJuIHRpbnQ7IC8vIGN1c3RvbSByZ2JhL2hzbC9oZXhcbiAgfSk7XG5cbiAgcmVhZG9ubHkgZmlsdGVyU3R5bGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgcCA9IHRoaXMucmVzb2x2ZWRQcm9wcygpO1xuICAgIGNvbnN0IGJsdXIgPSBwLmJsdXIgPz8gMTA7XG4gICAgY29uc3Qgc2F0ID0gcC5zYXR1cmF0ZSA/PyAxNDA7XG4gICAgcmV0dXJuIGBibHVyKCR7Ymx1cn1weCkgc2F0dXJhdGUoJHtzYXR9JSlgO1xuICB9KTtcblxuICByZWFkb25seSBib3JkZXJTdHlsZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBzaG93Qm9yZGVyID0gdGhpcy5yZXNvbHZlZFByb3BzKCkuYm9yZGVyID8/IHRydWU7XG4gICAgaWYgKCFzaG93Qm9yZGVyKSByZXR1cm4gJ25vbmUnO1xuICAgIGNvbnN0IHRpbnQgPSB0aGlzLnJlc29sdmVkUHJvcHMoKS50aW50ID8/ICdkYXJrJztcbiAgICAvLyBsaWdodCB0aW50IOKGkiBib3JkZXIgbcOhcyBvc2N1cm8gcGFyYSB2aXNpYmlsaWRhZDsgZGFyayB0aW50IOKGkiBibGFuY28uXG4gICAgaWYgKHRpbnQgPT09ICdsaWdodCcpIHJldHVybiAnMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4wOCknO1xuICAgIHJldHVybiAnMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCknO1xuICB9KTtcblxuICByZWFkb25seSBzaGFkb3dTdHlsZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBlbGV2YXRpb24gPSB0aGlzLnJlc29sdmVkUHJvcHMoKS5lbGV2YXRpb24gPz8gJ21kJztcbiAgICBzd2l0Y2ggKGVsZXZhdGlvbikge1xuICAgICAgY2FzZSAnbm9uZSc6XG4gICAgICAgIHJldHVybiAnbm9uZSc7XG4gICAgICBjYXNlICdzbSc6XG4gICAgICAgIHJldHVybiAnMCAycHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xNSknO1xuICAgICAgY2FzZSAnbGcnOlxuICAgICAgICByZXR1cm4gJzAgMTJweCA0MHB4IHJnYmEoMCwgMCwgMCwgMC4zNSknO1xuICAgICAgY2FzZSAnbWQnOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICcwIDRweCAyNHB4IHJnYmEoMCwgMCwgMCwgMC4yNSknO1xuICAgIH1cbiAgfSk7XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvYXRvbXMvZ2xhc3MvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29uZmlndXJhY2nDs24gZGVsIGNvbXBvbmVudGUgYHZhbC1nbGFzc2AuXG4gKlxuICogQ2FwYSBnbGFzc21vcnBoaXNtIChmcm9zdGVkIGdsYXNzKSDigJQgYmFja2Ryb3AgYmx1ciArIHRpbnQgc2VtaS10cmFuc2zDumNpZG8gK1xuICogYm9yZGVyIHN1dGlsICsgc2hhZG93LiBEaXNlw7FhZGEgcGFyYSB1c2Fyc2UgU09CUkUgYmFja2dyb3VuZHMgZGVjb3JhdGl2b3NcbiAqIChwYXR0ZXJucywgZ3JhZGllbnRzLCBoZXJvIGltYWdlcykgcGFyYSBtZWpvcmFyIGxlZ2liaWxpZGFkIGRlbCBjb250ZW5pZG9cbiAqIHNpbiB0YXBhciBsYSBkZWNvcmFjacOzbi5cbiAqXG4gKiBAZXhhbXBsZSBQaWxsIHNvYnJlIHBhdHLDs24gKGdyZWV0aW5nIGhlcm8pOlxuICogYGBgaHRtbFxuICogPHZhbC1nbGFzcz5cbiAqICAgPGgxPkJ1ZW5vcyBkw61hcywgSnVhbjwvaDE+XG4gKiA8L3ZhbC1nbGFzcz5cbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlIENhcmQgZ2xhc3MgYXV0by10aW50IHNlZ8O6biB0ZW1hOlxuICogYGBgaHRtbFxuICogPHZhbC1nbGFzcyBbcHJvcHNdPVwieyB0aW50OiAnYXV0bycsIHJhZGl1czogJzIwcHgnLCBwYWRkaW5nOiAnMjRweCcsIGRpc3BsYXk6ICdibG9jaycgfVwiPlxuICogICA8cD5Db250ZW5pZG88L3A+XG4gKiA8L3ZhbC1nbGFzcz5cbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlIExpZ2h0IGdsYXNzIHNvYnJlIGRhcmsgYmc6XG4gKiBgYGBodG1sXG4gKiA8dmFsLWdsYXNzIFtwcm9wc109XCJ7IHRpbnQ6ICdsaWdodCcsIHRpbnRBbHBoYTogMC4xNSwgYmx1cjogMTYgfVwiPlxuICogICAuLi5cbiAqIDwvdmFsLWdsYXNzPlxuICogYGBgXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2xhc3NNZXRhZGF0YSB7XG4gIC8qKlxuICAgKiBUaW50IGRlbCBmb25kby4gQnVpbHQtaW46XG4gICAqIC0gYCdkYXJrJ2AgKGRlZmF1bHQpIOKAlCBgcmdiYSgxNCwgNCwgMzIsIGFscGhhKWAg4oCUIGNvbWJpbmEgY29uIHBhbGV0dGUgVmFsdGVjaCBwdXJwbGVcbiAgICogLSBgJ2xpZ2h0J2Ag4oCUIGByZ2JhKDI1NSwgMjU1LCAyNTUsIGFscGhhKWAg4oCUIHBhcmEgdXNhciBzb2JyZSBkYXJrIGJnXG4gICAqIC0gYCdhdXRvJ2Ag4oCUIHN3aXRjaCBwb3IgdGVtYSBhY3Rpdm8gKGBib2R5LmRhcmtgIOKGkiBkYXJrLCBzaW5vIGxpZ2h0KVxuICAgKlxuICAgKiBUYW1iacOpbiBhY2VwdGEgdW5hIHN0cmluZyBDU1MgY29sb3IgY3VzdG9tIChgcmdiYSguLi4pYCwgYGhzbCguLi4pYCwgaGV4KS5cbiAgICogU2kgcGFzYXMgY3VzdG9tLCBgdGludEFscGhhYCBzZSBpZ25vcmEuXG4gICAqL1xuICB0aW50PzogJ2RhcmsnIHwgJ2xpZ2h0JyB8ICdhdXRvJyB8IHN0cmluZztcblxuICAvKiogQWxwaGEgZGVsIHRpbnQgKDAuLjEpLiBEZWZhdWx0IGAwLjU1YC4gSWdub3JhZG8gc2kgYHRpbnRgIGVzIGN1c3RvbSBzdHJpbmcuICovXG4gIHRpbnRBbHBoYT86IG51bWJlcjtcblxuICAvKiogQmx1ciByYWRpdXMgZW4gcHguIERlZmF1bHQgYDEwYC4gU3ViaXIgYSAxNi0yNCBwYXJhIG3DoXMgZnJvc3RpbmcuICovXG4gIGJsdXI/OiBudW1iZXI7XG5cbiAgLyoqIFNhdHVyYXRlIGZpbHRlciAlIChhY29tcGHDsWFuZG8gYmx1cikuIERlZmF1bHQgYDE0MGAuICovXG4gIHNhdHVyYXRlPzogbnVtYmVyO1xuXG4gIC8qKiBCb3JkZXIgcmFkaXVzLiBDdWFscXVpZXIgQ1NTIGxlbmd0aC4gRGVmYXVsdCBgJzE0cHgnYC4gKi9cbiAgcmFkaXVzPzogc3RyaW5nO1xuXG4gIC8qKiBQYWRkaW5nIGludGVybm8uIENTUyBzaG9ydGhhbmQuIERlZmF1bHQgYCcxMHB4IDE4cHgnYC4gKi9cbiAgcGFkZGluZz86IHN0cmluZztcblxuICAvKiogTW9zdHJhciBib3JkZXIgc3V0aWwgKDFweCByZ2JhIGJsYW5jbykuIERlZmF1bHQgYHRydWVgLiAqL1xuICBib3JkZXI/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBFbGV2YWNpw7NuIGRlIHNoYWRvdzpcbiAgICogLSBgJ25vbmUnYCDigJQgc2luIHNoYWRvd1xuICAgKiAtIGAnc20nYCDigJQgYDAgMnB4IDhweCByZ2JhKDAsMCwwLDAuMTUpYFxuICAgKiAtIGAnbWQnYCAoZGVmYXVsdCkg4oCUIGAwIDRweCAyNHB4IHJnYmEoMCwwLDAsMC4yNSlgXG4gICAqIC0gYCdsZydgIOKAlCBgMCAxMnB4IDQwcHggcmdiYSgwLDAsMCwwLjM1KWBcbiAgICovXG4gIGVsZXZhdGlvbj86ICdub25lJyB8ICdzbScgfCAnbWQnIHwgJ2xnJztcblxuICAvKipcbiAgICogRGlzcGxheSBtb2RlOlxuICAgKiAtIGAnaW5saW5lLWJsb2NrJ2AgKGRlZmF1bHQpIOKAlCBmaXQtY29udGVudCwgaWRlYWwgcGFyYSBwaWxscy9iYWRnZXNcbiAgICogLSBgJ2Jsb2NrJ2Ag4oCUIGZpbGwgcGFyZW50IHdpZHRoLCBpZGVhbCBwYXJhIGNhcmRzXG4gICAqIC0gYCdmbGV4J2Ag4oCUIGZsZXggY29sdW1uLCBpZGVhbCBwYXJhIGxheW91dHMgaW50ZXJub3NcbiAgICovXG4gIGRpc3BsYXk/OiAnaW5saW5lLWJsb2NrJyB8ICdibG9jaycgfCAnZmxleCc7XG5cbiAgLyoqIENsYXNlIENTUyBleHRyYS4gKi9cbiAgY3NzQ2xhc3M/OiBzdHJpbmc7XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvYXRvbXMvdXNlci1hdmF0YXIvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29uZmlndXJhY2nDs24gZGVsIGNvbXBvbmVudGUgYHZhbC11c2VyLWF2YXRhcmAuXG4gKlxuICogQXZhdGFyIHNtYXJ0IGNvbiBjYWRlbmEgZGUgZmFsbGJhY2s6XG4gKiAgIGZvdG8gKGBhdmF0YXJVcmxgKSDihpIgaW5pY2lhbGVzIChkZSBgbmFtZWAvYGVtYWlsYCkg4oaSIGljb25vIHBlcnNvbmEuXG4gKlxuICogRGlzZcOxYWRvIHBhcmEgaGVhZGVycywgcGVyZmlsZXMsIGxpc3RhcyBkZSB1c3VhcmlvcyB5IGRyb3Bkb3ducy5cbiAqXG4gKiBAZXhhbXBsZSBDb24gdXNlciBjb21wbGV0byAoZ3JlZXRpbmcgaGVybyk6XG4gKiBgYGBodG1sXG4gKiA8dmFsLXVzZXItYXZhdGFyIFtwcm9wc109XCJ7IHVzZXI6IGF1dGgudXNlcigpLCBzaXplOiAnbWVkaXVtJyB9XCIgLz5cbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlIFN0YW5kYWxvbmUgZmllbGRzOlxuICogYGBgaHRtbFxuICogPHZhbC11c2VyLWF2YXRhciBbcHJvcHNdPVwieyBuYW1lOiAnSnVhbiBQw6lyZXonLCBhdmF0YXJVcmw6ICcvYS5qcGcnLCBzaXplOiAnc21hbGwnIH1cIiAvPlxuICogYGBgXG4gKlxuICogQGV4YW1wbGUgSGVhZGVyIGF2YXRhciBjbGlja2FibGUgKGxpbmsgYSAvcHJvZmlsZSk6XG4gKiBgYGBodG1sXG4gKiA8dmFsLXVzZXItYXZhdGFyIFtwcm9wc109XCJ7IHVzZXI6IGF1dGgudXNlcigpIH1cIiAob25DbGljayk9XCJnb1RvUHJvZmlsZSgpXCIgLz5cbiAqIGBgYFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFVzZXJBdmF0YXJNZXRhZGF0YSB7XG4gIC8qKlxuICAgKiBVc2VyIHNoYXBlIOKAlCBwYXNhIGVsIHJlc3VsdGFkbyBkZSBgYXV0aC51c2VyKClgIGRpcmVjdGFtZW50ZS4gQ3VhbHF1aWVyXG4gICAqIGNvbWJpbmFjacOzbiBkZSBgbmFtZWAvYGF2YXRhclVybGAvYGVtYWlsYCBzZSBhY2VwdGEuIFRpZW5lbiBwcmVjZWRlbmNpYVxuICAgKiBzb2JyZSBsb3MgcHJvcHMgc3VlbHRvcyAoYG5hbWVgLCBgZW1haWxgLCBgYXZhdGFyVXJsYCkgYWJham8uXG4gICAqL1xuICB1c2VyPzoge1xuICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgYXZhdGFyVXJsPzogc3RyaW5nO1xuICAgIGVtYWlsPzogc3RyaW5nO1xuICAgIGhhbmRsZT86IHN0cmluZztcbiAgfSB8IG51bGw7XG5cbiAgLyoqIE5vbWJyZSBkaXJlY3RvIOKAlCB1c2FkbyBzaSBubyBoYXkgYHVzZXJgIG8gc2kgYHVzZXIubmFtZWAgZXN0w6EgdmFjw61vLiAqL1xuICBuYW1lPzogc3RyaW5nO1xuXG4gIC8qKiBFbWFpbCBkaXJlY3RvIOKAlCB1c2FkbyBzaSBubyBoYXkgYHVzZXJgIG8gc2kgYHVzZXIuZW1haWxgIGVzdMOhIHZhY8Otby4gKi9cbiAgZW1haWw/OiBzdHJpbmc7XG5cbiAgLyoqIFVSTCBkZSBhdmF0YXIgZGlyZWN0YSDigJQgdXNhZG8gc2kgbm8gaGF5IGB1c2VyYCBvIHNpIGB1c2VyLmF2YXRhclVybGAgZXN0w6EgdmFjw61vLiAqL1xuICBhdmF0YXJVcmw/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRhbWHDsW86XG4gICAqIC0gYCd4c21hbGwnYCAyNHB4XG4gICAqIC0gYCdzbWFsbCdgIChkZWZhdWx0KSAzMnB4XG4gICAqIC0gYCdtZWRpdW0nYCA0OHB4XG4gICAqIC0gYCdsYXJnZSdgIDcycHhcbiAgICogLSBgJ3hsYXJnZSdgIDk2cHhcbiAgICovXG4gIHNpemU/OiAneHNtYWxsJyB8ICdzbWFsbCcgfCAnbWVkaXVtJyB8ICdsYXJnZScgfCAneGxhcmdlJztcblxuICAvKipcbiAgICogRm9ybWE6XG4gICAqIC0gYCdjaXJjbGUnYCAoZGVmYXVsdCkg4oCUIHJlZG9uZG8gY29tcGxldG9cbiAgICogLSBgJ3NxdWFyZSdgIOKAlCBib3JkZXMgcmVkb25kZWFkb3MgcGVybyBjdWFkcmFkb1xuICAgKi9cbiAgc2hhcGU/OiAnY2lyY2xlJyB8ICdzcXVhcmUnO1xuXG4gIC8qKlxuICAgKiBDb2xvciBkZSBmb25kbyBwYXJhIGVsIG1vZG8gaW5pY2lhbGVzL2ljb25vLiBDdWFuZG8gbm8gc2UgcHJvdmVlLCBzZVxuICAgKiBkZXJpdmUgZGV0ZXJtaW5pc3RpY2FtZW50ZSBkZWwgYG5hbWVgL2BlbWFpbGAgKG1pc21vIGlucHV0IOKGkiBtaXNtbyBjb2xvcilcbiAgICogcGFyYSBxdWUgZWwgbWlzbW8gdXNlciB0ZW5nYSBzaWVtcHJlIGVsIG1pc21vIGNvbG9yLlxuICAgKi9cbiAgYmFja2dyb3VuZD86IHN0cmluZztcblxuICAvKiogQ29sb3IgZGVsIHRleHRvL2ljb25vIGN1YW5kbyBubyBoYXkgZm90by4gRGVmYXVsdCBgJyNmZmYnYC4gKi9cbiAgZm9yZWdyb3VuZD86IHN0cmluZztcblxuICAvKipcbiAgICogTW9zdHJhciBib3JkZXIuIMOadGlsIHBhcmEgb3ZlcmxheXMgc29icmUgZm90b3MgbyBiYWNrZ3JvdW5kcyBkYXJrLlxuICAgKiBEZWZhdWx0OiBgZmFsc2VgLlxuICAgKi9cbiAgYm9yZGVyZWQ/OiBib29sZWFuO1xuXG4gIC8qKiBIYWJpbGl0YSBncmF5c2NhbGUgKGUuZy4sIHVzZXIgZGVzYWN0aXZhZG8pLiBEZWZhdWx0OiBgZmFsc2VgLiAqL1xuICBncmF5c2NhbGU/OiBib29sZWFuO1xuXG4gIC8qKiBDbGFzZSBDU1MgZXh0cmEuICovXG4gIGNzc0NsYXNzPzogc3RyaW5nO1xufVxuIl19
@@ -0,0 +1,162 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { Component, computed, EventEmitter, Input, Output, signal } from '@angular/core';
3
+ import { IonIcon } from '@ionic/angular/standalone';
4
+ import { addIcons } from 'ionicons';
5
+ import { personOutline } from 'ionicons/icons';
6
+ import * as i0 from "@angular/core";
7
+ addIcons({ personOutline });
8
+ /**
9
+ * `val-user-avatar`
10
+ *
11
+ * Avatar **smart** con cadena de fallback automática:
12
+ *
13
+ * foto (`avatarUrl`) → iniciales (de `name`/`email`) → icono persona.
14
+ *
15
+ * Si la imagen falla en cargar (404, CORS, etc.), automáticamente cae a las
16
+ * iniciales sin que el caller tenga que hacer nada. Color de fondo derivado
17
+ * deterministicamente del user para que el mismo user tenga siempre el mismo
18
+ * color (a menos que `background` se sobrescriba).
19
+ *
20
+ * @example
21
+ * ```html
22
+ * <val-user-avatar [props]="{ user: auth.user() }" (onClick)="goProfile()" />
23
+ * ```
24
+ */
25
+ export class UserAvatarComponent {
26
+ constructor() {
27
+ this.props_ = signal({});
28
+ this.imageFailed = signal(false);
29
+ this.onClick = new EventEmitter();
30
+ this.resolvedProps = computed(() => this.props_());
31
+ /** Resuelve los campos del user (user prop > campos sueltos). */
32
+ this.resolvedUser = computed(() => {
33
+ const p = this.resolvedProps();
34
+ return {
35
+ name: p.user?.name?.trim() || p.name?.trim() || '',
36
+ email: p.user?.email?.trim() || p.email?.trim() || '',
37
+ avatarUrl: p.user?.avatarUrl?.trim() || p.avatarUrl?.trim() || '',
38
+ };
39
+ });
40
+ /** URL de imagen — empty si no hay o si la carga falló. */
41
+ this.imageUrl = computed(() => this.resolvedUser().avatarUrl);
42
+ this.showImage = computed(() => !!this.imageUrl() && !this.imageFailed());
43
+ /** Iniciales — 1-2 chars derivados de name (preferred) o email prefix. */
44
+ this.initials = computed(() => {
45
+ const { name, email } = this.resolvedUser();
46
+ if (name) {
47
+ const parts = name.split(/\s+/).filter(Boolean);
48
+ if (parts.length >= 2)
49
+ return parts[0][0] + parts[1][0];
50
+ if (parts.length === 1 && parts[0].length >= 2) {
51
+ return parts[0].slice(0, 2);
52
+ }
53
+ return parts[0]?.[0] ?? '';
54
+ }
55
+ if (email) {
56
+ const prefix = email.split('@')[0] ?? '';
57
+ // Tomar 1-2 chars del prefix
58
+ if (prefix.length >= 2)
59
+ return prefix.slice(0, 2);
60
+ return prefix[0] ?? '';
61
+ }
62
+ return '';
63
+ });
64
+ this.sizeClass = computed(() => this.resolvedProps().size || 'small');
65
+ this.shapeClass = computed(() => this.resolvedProps().shape || 'circle');
66
+ /** Background — explicito o derivado deterministicamente del user. */
67
+ this.bgColor = computed(() => {
68
+ const p = this.resolvedProps();
69
+ if (p.background)
70
+ return p.background;
71
+ const { name, email } = this.resolvedUser();
72
+ const seed = name || email || 'val';
73
+ return this.colorFromSeed(seed);
74
+ });
75
+ this.ariaLabel = computed(() => {
76
+ const { name, email } = this.resolvedUser();
77
+ return name || email || 'User avatar';
78
+ });
79
+ }
80
+ set props(value) {
81
+ this.props_.set(value ?? {});
82
+ this.imageFailed.set(false);
83
+ }
84
+ /** Subscribers — usado para condicionar cursor/aria. */
85
+ get hasClick() {
86
+ return this.onClick.observed;
87
+ }
88
+ onImageError() {
89
+ this.imageFailed.set(true);
90
+ }
91
+ onImageLoad() {
92
+ this.imageFailed.set(false);
93
+ }
94
+ /**
95
+ * Hash determinista string → HSL color del rango Valtech (purples/blues).
96
+ * Mismo seed → mismo color (consistencia entre sessions).
97
+ */
98
+ colorFromSeed(seed) {
99
+ let hash = 0;
100
+ for (let i = 0; i < seed.length; i++) {
101
+ hash = (hash * 31 + seed.charCodeAt(i)) >>> 0;
102
+ }
103
+ // Restringir a rango violet/blue (240-290°) para coherencia con palette
104
+ const hue = 240 + (hash % 50);
105
+ const sat = 55 + ((hash >>> 8) % 20); // 55-75%
106
+ const light = 38 + ((hash >>> 16) % 12); // 38-50% — siempre legible con fg blanco
107
+ return `hsl(${hue}, ${sat}%, ${light}%)`;
108
+ }
109
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: UserAvatarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
110
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: UserAvatarComponent, isStandalone: true, selector: "val-user-avatar", inputs: { props: "props" }, outputs: { onClick: "onClick" }, ngImport: i0, template: `
111
+ <button
112
+ type="button"
113
+ class="val-user-avatar"
114
+ [class.bordered]="resolvedProps().bordered"
115
+ [class.grayscale]="resolvedProps().grayscale"
116
+ [class.has-click]="hasClick"
117
+ [class]="shapeClass() + ' ' + sizeClass() + ' ' + (resolvedProps().cssClass || '')"
118
+ [style.background]="!showImage() ? bgColor() : 'transparent'"
119
+ [style.color]="resolvedProps().foreground || '#fff'"
120
+ [attr.aria-label]="ariaLabel()"
121
+ (click)="onClick.emit()"
122
+ >
123
+ @if (showImage()) {
124
+ <img class="val-user-avatar__img" [src]="imageUrl()" alt="" (error)="onImageError()" (load)="onImageLoad()" />
125
+ } @else if (initials()) {
126
+ <span class="val-user-avatar__initials">{{ initials() }}</span>
127
+ } @else {
128
+ <ion-icon name="person-outline" class="val-user-avatar__icon" aria-hidden="true" />
129
+ }
130
+ </button>
131
+ `, isInline: true, styles: [":host{display:inline-flex}.val-user-avatar{position:relative;display:inline-flex;align-items:center;justify-content:center;overflow:hidden;padding:0;margin:0;border:none;background:var(--ion-color-medium, #92949c);color:#fff;font-weight:600;font-family:inherit;line-height:1;-webkit-user-select:none;user-select:none;cursor:default;transition:transform .15s ease,box-shadow .15s ease}.val-user-avatar.has-click{cursor:pointer}.val-user-avatar.has-click:hover{transform:scale(1.04)}.val-user-avatar.has-click:active{transform:scale(.96)}.val-user-avatar.circle{border-radius:50%}.val-user-avatar.square{border-radius:8px}.val-user-avatar.xsmall{width:24px;height:24px;font-size:.625rem}.val-user-avatar.small{width:32px;height:32px;font-size:.75rem}.val-user-avatar.medium{width:48px;height:48px;font-size:1rem}.val-user-avatar.large{width:72px;height:72px;font-size:1.5rem}.val-user-avatar.xlarge{width:96px;height:96px;font-size:2rem}.val-user-avatar.bordered{box-shadow:0 0 0 2px var(--ion-background-color, #fff)}.val-user-avatar.grayscale{filter:grayscale(100%)}.val-user-avatar__img{width:100%;height:100%;object-fit:cover;display:block}.val-user-avatar__initials{text-transform:uppercase;letter-spacing:.02em}.val-user-avatar__icon{font-size:60%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }] }); }
132
+ }
133
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: UserAvatarComponent, decorators: [{
134
+ type: Component,
135
+ args: [{ selector: 'val-user-avatar', standalone: true, imports: [CommonModule, IonIcon], template: `
136
+ <button
137
+ type="button"
138
+ class="val-user-avatar"
139
+ [class.bordered]="resolvedProps().bordered"
140
+ [class.grayscale]="resolvedProps().grayscale"
141
+ [class.has-click]="hasClick"
142
+ [class]="shapeClass() + ' ' + sizeClass() + ' ' + (resolvedProps().cssClass || '')"
143
+ [style.background]="!showImage() ? bgColor() : 'transparent'"
144
+ [style.color]="resolvedProps().foreground || '#fff'"
145
+ [attr.aria-label]="ariaLabel()"
146
+ (click)="onClick.emit()"
147
+ >
148
+ @if (showImage()) {
149
+ <img class="val-user-avatar__img" [src]="imageUrl()" alt="" (error)="onImageError()" (load)="onImageLoad()" />
150
+ } @else if (initials()) {
151
+ <span class="val-user-avatar__initials">{{ initials() }}</span>
152
+ } @else {
153
+ <ion-icon name="person-outline" class="val-user-avatar__icon" aria-hidden="true" />
154
+ }
155
+ </button>
156
+ `, styles: [":host{display:inline-flex}.val-user-avatar{position:relative;display:inline-flex;align-items:center;justify-content:center;overflow:hidden;padding:0;margin:0;border:none;background:var(--ion-color-medium, #92949c);color:#fff;font-weight:600;font-family:inherit;line-height:1;-webkit-user-select:none;user-select:none;cursor:default;transition:transform .15s ease,box-shadow .15s ease}.val-user-avatar.has-click{cursor:pointer}.val-user-avatar.has-click:hover{transform:scale(1.04)}.val-user-avatar.has-click:active{transform:scale(.96)}.val-user-avatar.circle{border-radius:50%}.val-user-avatar.square{border-radius:8px}.val-user-avatar.xsmall{width:24px;height:24px;font-size:.625rem}.val-user-avatar.small{width:32px;height:32px;font-size:.75rem}.val-user-avatar.medium{width:48px;height:48px;font-size:1rem}.val-user-avatar.large{width:72px;height:72px;font-size:1.5rem}.val-user-avatar.xlarge{width:96px;height:96px;font-size:2rem}.val-user-avatar.bordered{box-shadow:0 0 0 2px var(--ion-background-color, #fff)}.val-user-avatar.grayscale{filter:grayscale(100%)}.val-user-avatar__img{width:100%;height:100%;object-fit:cover;display:block}.val-user-avatar__initials{text-transform:uppercase;letter-spacing:.02em}.val-user-avatar__icon{font-size:60%}\n"] }]
157
+ }], propDecorators: { props: [{
158
+ type: Input
159
+ }], onClick: [{
160
+ type: Output
161
+ }] } });
162
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1hdmF0YXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2F0b21zL3VzZXItYXZhdGFyL3VzZXItYXZhdGFyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFHL0MsUUFBUSxDQUFDLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQztBQUU1Qjs7Ozs7Ozs7Ozs7Ozs7OztHQWdCRztBQWdJSCxNQUFNLE9BQU8sbUJBQW1CO0lBL0hoQztRQWdJbUIsV0FBTSxHQUFHLE1BQU0sQ0FBcUIsRUFBRSxDQUFDLENBQUM7UUFDeEMsZ0JBQVcsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFPbkMsWUFBTyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFPcEMsa0JBQWEsR0FBRyxRQUFRLENBQXFCLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBRTNFLGlFQUFpRTtRQUNoRCxpQkFBWSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDNUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQy9CLE9BQU87Z0JBQ0wsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJ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Q0FBQztRQUNELHdFQUF3RTtRQUN4RSxNQUFNLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDOUIsTUFBTSxHQUFHLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTO1FBQy9DLE1BQU0sS0FBSyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxLQUFLLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMseUNBQXlDO1FBQ2xGLE9BQU8sT0FBTyxHQUFHLEtBQUssR0FBRyxNQUFNLEtBQUssSUFBSSxDQUFDO0lBQzNDLENBQUM7K0dBNUZVLG1CQUFtQjttR0FBbkIsbUJBQW1CLHdJQTNIcEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFCVCwreUNBdEJTLFlBQVksK0JBQUUsT0FBTzs7NEZBNEhwQixtQkFBbUI7a0JBL0gvQixTQUFTOytCQUNFLGlCQUFpQixjQUNmLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsWUFDdEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFCVDs4QkEwR1ksS0FBSztzQkFBakIsS0FBSztnQkFLSSxPQUFPO3NCQUFoQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJb25JY29uIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBhZGRJY29ucyB9IGZyb20gJ2lvbmljb25zJztcbmltcG9ydCB7IHBlcnNvbk91dGxpbmUgfSBmcm9tICdpb25pY29ucy9pY29ucyc7XG5pbXBvcnQgeyBVc2VyQXZhdGFyTWV0YWRhdGEgfSBmcm9tICcuL3R5cGVzJztcblxuYWRkSWNvbnMoeyBwZXJzb25PdXRsaW5lIH0pO1xuXG4vKipcbiAqIGB2YWwtdXNlci1hdmF0YXJgXG4gKlxuICogQXZhdGFyICoqc21hcnQqKiBjb24gY2FkZW5hIGRlIGZhbGxiYWNrIGF1dG9tw6F0aWNhOlxuICpcbiAqICAgZm90byAoYGF2YXRhclVybGApIOKGkiBpbmljaWFsZXMgKGRlIGBuYW1lYC9gZW1haWxgKSDihpIgaWNvbm8gcGVyc29uYS5cbiAqXG4gKiBTaSBsYSBpbWFnZW4gZmFsbGEgZW4gY2FyZ2FyICg0MDQsIENPUlMsIGV0Yy4pLCBhdXRvbcOhdGljYW1lbnRlIGNhZSBhIGxhc1xuICogaW5pY2lhbGVzIHNpbiBxdWUgZWwgY2FsbGVyIHRlbmdhIHF1ZSBoYWNlciBuYWRhLiBDb2xvciBkZSBmb25kbyBkZXJpdmFkb1xuICogZGV0ZXJtaW5pc3RpY2FtZW50ZSBkZWwgdXNlciBwYXJhIHF1ZSBlbCBtaXNtbyB1c2VyIHRlbmdhIHNpZW1wcmUgZWwgbWlzbW9cbiAqIGNvbG9yIChhIG1lbm9zIHF1ZSBgYmFja2dyb3VuZGAgc2Ugc29icmVzY3JpYmEpLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBodG1sXG4gKiA8dmFsLXVzZXItYXZhdGFyIFtwcm9wc109XCJ7IHVzZXI6IGF1dGgudXNlcigpIH1cIiAob25DbGljayk9XCJnb1Byb2ZpbGUoKVwiIC8+XG4gKiBgYGBcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLXVzZXItYXZhdGFyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgSW9uSWNvbl0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGJ1dHRvblxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBjbGFzcz1cInZhbC11c2VyLWF2YXRhclwiXG4gICAgICBbY2xhc3MuYm9yZGVyZWRdPVwicmVzb2x2ZWRQcm9wcygpLmJvcmRlcmVkXCJcbiAgICAgIFtjbGFzcy5ncmF5c2NhbGVdPVwicmVzb2x2ZWRQcm9wcygpLmdyYXlzY2FsZVwiXG4gICAgICBbY2xhc3MuaGFzLWNsaWNrXT1cImhhc0NsaWNrXCJcbiAgICAgIFtjbGFzc109XCJzaGFwZUNsYXNzKCkgKyAnICcgKyBzaXplQ2xhc3MoKSArICcgJyArIChyZXNvbHZlZFByb3BzKCkuY3NzQ2xhc3MgfHwgJycpXCJcbiAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cIiFzaG93SW1hZ2UoKSA/IGJnQ29sb3IoKSA6ICd0cmFuc3BhcmVudCdcIlxuICAgICAgW3N0eWxlLmNvbG9yXT1cInJlc29sdmVkUHJvcHMoKS5mb3JlZ3JvdW5kIHx8ICcjZmZmJ1wiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbCgpXCJcbiAgICAgIChjbGljayk9XCJvbkNsaWNrLmVtaXQoKVwiXG4gICAgPlxuICAgICAgQGlmIChzaG93SW1hZ2UoKSkge1xuICAgICAgICA8aW1nIGNsYXNzPVwidmFsLXVzZXItYXZhdGFyX19pbWdcIiBbc3JjXT1cImltYWdlVXJsKClcIiBhbHQ9XCJcIiAoZXJyb3IpPVwib25JbWFnZUVycm9yKClcIiAobG9hZCk9XCJvbkltYWdlTG9hZCgpXCIgLz5cbiAgICAgIH0gQGVsc2UgaWYgKGluaXRpYWxzKCkpIHtcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWwtdXNlci1hdmF0YXJfX2luaXRpYWxzXCI+e3sgaW5pdGlhbHMoKSB9fTwvc3Bhbj5cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICA8aW9uLWljb24gbmFtZT1cInBlcnNvbi1vdXRsaW5lXCIgY2xhc3M9XCJ2YWwtdXNlci1hdmF0YXJfX2ljb25cIiBhcmlhLWhpZGRlbj1cInRydWVcIiAvPlxuICAgICAgfVxuICAgIDwvYnV0dG9uPlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICA6aG9zdCB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgfVxuXG4gICAgICAudmFsLXVzZXItYXZhdGFyIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItbWVkaXVtLCAjOTI5NDljKTtcbiAgICAgICAgY29sb3I6ICNmZmY7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xuICAgICAgICBsaW5lLWhlaWdodDogMTtcbiAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgICAgIGN1cnNvcjogZGVmYXVsdDtcbiAgICAgICAgdHJhbnNpdGlvbjpcbiAgICAgICAgICB0cmFuc2Zvcm0gMC4xNXMgZWFzZSxcbiAgICAgICAgICBib3gtc2hhZG93IDAuMTVzIGVhc2U7XG4gICAgICB9XG5cbiAgICAgIC52YWwtdXNlci1hdmF0YXIuaGFzLWNsaWNrIHtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgfVxuXG4gICAgICAudmFsLXVzZXItYXZhdGFyLmhhcy1jbGljazpob3ZlciB7XG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS4wNCk7XG4gICAgICB9XG5cbiAgICAgIC52YWwtdXNlci1hdmF0YXIuaGFzLWNsaWNrOmFjdGl2ZSB7XG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC45Nik7XG4gICAgICB9XG5cbiAgICAgIC8qIFNoYXBlICovXG4gICAgICAudmFsLXVzZXItYXZhdGFyLmNpcmNsZSB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgIH1cblxuICAgICAgLnZhbC11c2VyLWF2YXRhci5zcXVhcmUge1xuICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgICB9XG5cbiAgICAgIC8qIFNpemVzICovXG4gICAgICAudmFsLXVzZXItYXZhdGFyLnhzbWFsbCB7XG4gICAgICAgIHdpZHRoOiAyNHB4O1xuICAgICAgICBoZWlnaHQ6IDI0cHg7XG4gICAgICAgIGZvbnQtc2l6ZTogMC42MjVyZW07XG4gICAgICB9XG4gICAgICAudmFsLXVzZXItYXZhdGFyLnNtYWxsIHtcbiAgICAgICAgd2lkdGg6IDMycHg7XG4gICAgICAgIGhlaWdodDogMzJweDtcbiAgICAgICAgZm9udC1zaXplOiAwLjc1cmVtO1xuICAgICAgfVxuICAgICAgLnZhbC11c2VyLWF2YXRhci5tZWRpdW0ge1xuICAgICAgICB3aWR0aDogNDhweDtcbiAgICAgICAgaGVpZ2h0OiA0OHB4O1xuICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICB9XG4gICAgICAudmFsLXVzZXItYXZhdGFyLmxhcmdlIHtcbiAgICAgICAgd2lkdGg6IDcycHg7XG4gICAgICAgIGhlaWdodDogNzJweDtcbiAgICAgICAgZm9udC1zaXplOiAxLjVyZW07XG4gICAgICB9XG4gICAgICAudmFsLXVzZXItYXZhdGFyLnhsYXJnZSB7XG4gICAgICAgIHdpZHRoOiA5NnB4O1xuICAgICAgICBoZWlnaHQ6IDk2cHg7XG4gICAgICAgIGZvbnQtc2l6ZTogMnJlbTtcbiAgICAgIH1cblxuICAgICAgLnZhbC11c2VyLWF2YXRhci5ib3JkZXJlZCB7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDJweCB2YXIoLS1pb24tYmFja2dyb3VuZC1jb2xvciwgI2ZmZik7XG4gICAgICB9XG5cbiAgICAgIC52YWwtdXNlci1hdmF0YXIuZ3JheXNjYWxlIHtcbiAgICAgICAgZmlsdGVyOiBncmF5c2NhbGUoMTAwJSk7XG4gICAgICB9XG5cbiAgICAgIC52YWwtdXNlci1hdmF0YXJfX2ltZyB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIG9iamVjdC1maXQ6IGNvdmVyO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIH1cblxuICAgICAgLnZhbC11c2VyLWF2YXRhcl9faW5pdGlhbHMge1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wMmVtO1xuICAgICAgfVxuXG4gICAgICAudmFsLXVzZXItYXZhdGFyX19pY29uIHtcbiAgICAgICAgZm9udC1zaXplOiA2MCU7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgVXNlckF2YXRhckNvbXBvbmVudCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgcHJvcHNfID0gc2lnbmFsPFVzZXJBdmF0YXJNZXRhZGF0YT4oe30pO1xuICBwcml2YXRlIHJlYWRvbmx5IGltYWdlRmFpbGVkID0gc2lnbmFsKGZhbHNlKTtcblxuICBASW5wdXQoKSBzZXQgcHJvcHModmFsdWU6IFVzZXJBdmF0YXJNZXRhZGF0YSB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMucHJvcHNfLnNldCh2YWx1ZSA/PyB7fSk7XG4gICAgdGhpcy5pbWFnZUZhaWxlZC5zZXQoZmFsc2UpO1xuICB9XG5cbiAgQE91dHB1dCgpIG9uQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgLyoqIFN1YnNjcmliZXJzIOKAlCB1c2FkbyBwYXJhIGNvbmRpY2lvbmFyIGN1cnNvci9hcmlhLiAqL1xuICBnZXQgaGFzQ2xpY2soKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMub25DbGljay5vYnNlcnZlZDtcbiAgfVxuXG4gIHJlYWRvbmx5IHJlc29sdmVkUHJvcHMgPSBjb21wdXRlZDxVc2VyQXZhdGFyTWV0YWRhdGE+KCgpID0+IHRoaXMucHJvcHNfKCkpO1xuXG4gIC8qKiBSZXN1ZWx2ZSBsb3MgY2FtcG9zIGRlbCB1c2VyICh1c2VyIHByb3AgPiBjYW1wb3Mgc3VlbHRvcykuICovXG4gIHByaXZhdGUgcmVhZG9ubHkgcmVzb2x2ZWRVc2VyID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHAgPSB0aGlzLnJlc29sdmVkUHJvcHMoKTtcbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogcC51c2VyPy5uYW1lPy50cmltKCkgfHwgcC5uYW1lPy50cmltKCkgfHwgJycsXG4gICAgICBlbWFpbDogcC51c2VyPy5lbWFpbD8udHJpbSgpIHx8IHAuZW1haWw/LnRyaW0oKSB8fCAnJyxcbiAgICAgIGF2YXRhclVybDogcC51c2VyPy5hdmF0YXJVcmw/LnRyaW0oKSB8fCBwLmF2YXRhclVybD8udHJpbSgpIHx8ICcnLFxuICAgIH07XG4gIH0pO1xuXG4gIC8qKiBVUkwgZGUgaW1hZ2VuIOKAlCBlbXB0eSBzaSBubyBoYXkgbyBzaSBsYSBjYXJnYSBmYWxsw7MuICovXG4gIHJlYWRvbmx5IGltYWdlVXJsID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5yZXNvbHZlZFVzZXIoKS5hdmF0YXJVcmwpO1xuXG4gIHJlYWRvbmx5IHNob3dJbWFnZSA9IGNvbXB1dGVkKCgpID0+ICEhdGhpcy5pbWFnZVVybCgpICYmICF0aGlzLmltYWdlRmFpbGVkKCkpO1xuXG4gIC8qKiBJbmljaWFsZXMg4oCUIDEtMiBjaGFycyBkZXJpdmFkb3MgZGUgbmFtZSAocHJlZmVycmVkKSBvIGVtYWlsIHByZWZpeC4gKi9cbiAgcmVhZG9ubHkgaW5pdGlhbHMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgeyBuYW1lLCBlbWFpbCB9ID0gdGhpcy5yZXNvbHZlZFVzZXIoKTtcbiAgICBpZiAobmFtZSkge1xuICAgICAgY29uc3QgcGFydHMgPSBuYW1lLnNwbGl0KC9cXHMrLykuZmlsdGVyKEJvb2xlYW4pO1xuICAgICAgaWYgKHBhcnRzLmxlbmd0aCA+PSAyKSByZXR1cm4gcGFydHNbMF0hWzBdISArIHBhcnRzWzFdIVswXSE7XG4gICAgICBpZiAocGFydHMubGVuZ3RoID09PSAxICYmIHBhcnRzWzBdIS5sZW5ndGggPj0gMikge1xuICAgICAgICByZXR1cm4gcGFydHNbMF0hLnNsaWNlKDAsIDIpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHBhcnRzWzBdPy5bMF0gPz8gJyc7XG4gICAgfVxuICAgIGlmIChlbWFpbCkge1xuICAgICAgY29uc3QgcHJlZml4ID0gZW1haWwuc3BsaXQoJ0AnKVswXSA/PyAnJztcbiAgICAgIC8vIFRvbWFyIDEtMiBjaGFycyBkZWwgcHJlZml4XG4gICAgICBpZiAocHJlZml4Lmxlbmd0aCA+PSAyKSByZXR1cm4gcHJlZml4LnNsaWNlKDAsIDIpO1xuICAgICAgcmV0dXJuIHByZWZpeFswXSA/PyAnJztcbiAgICB9XG4gICAgcmV0dXJuICcnO1xuICB9KTtcblxuICByZWFkb25seSBzaXplQ2xhc3MgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnJlc29sdmVkUHJvcHMoKS5zaXplIHx8ICdzbWFsbCcpO1xuICByZWFkb25seSBzaGFwZUNsYXNzID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5yZXNvbHZlZFByb3BzKCkuc2hhcGUgfHwgJ2NpcmNsZScpO1xuXG4gIC8qKiBCYWNrZ3JvdW5kIOKAlCBleHBsaWNpdG8gbyBkZXJpdmFkbyBkZXRlcm1pbmlzdGljYW1lbnRlIGRlbCB1c2VyLiAqL1xuICByZWFkb25seSBiZ0NvbG9yID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHAgPSB0aGlzLnJlc29sdmVkUHJvcHMoKTtcbiAgICBpZiAocC5iYWNrZ3JvdW5kKSByZXR1cm4gcC5iYWNrZ3JvdW5kO1xuICAgIGNvbnN0IHsgbmFtZSwgZW1haWwgfSA9IHRoaXMucmVzb2x2ZWRVc2VyKCk7XG4gICAgY29uc3Qgc2VlZCA9IG5hbWUgfHwgZW1haWwgfHwgJ3ZhbCc7XG4gICAgcmV0dXJuIHRoaXMuY29sb3JGcm9tU2VlZChzZWVkKTtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgYXJpYUxhYmVsID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHsgbmFtZSwgZW1haWwgfSA9IHRoaXMucmVzb2x2ZWRVc2VyKCk7XG4gICAgcmV0dXJuIG5hbWUgfHwgZW1haWwgfHwgJ1VzZXIgYXZhdGFyJztcbiAgfSk7XG5cbiAgb25JbWFnZUVycm9yKCk6IHZvaWQge1xuICAgIHRoaXMuaW1hZ2VGYWlsZWQuc2V0KHRydWUpO1xuICB9XG5cbiAgb25JbWFnZUxvYWQoKTogdm9pZCB7XG4gICAgdGhpcy5pbWFnZUZhaWxlZC5zZXQoZmFsc2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhc2ggZGV0ZXJtaW5pc3RhIHN0cmluZyDihpIgSFNMIGNvbG9yIGRlbCByYW5nbyBWYWx0ZWNoIChwdXJwbGVzL2JsdWVzKS5cbiAgICogTWlzbW8gc2VlZCDihpIgbWlzbW8gY29sb3IgKGNvbnNpc3RlbmNpYSBlbnRyZSBzZXNzaW9ucykuXG4gICAqL1xuICBwcml2YXRlIGNvbG9yRnJvbVNlZWQoc2VlZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBsZXQgaGFzaCA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZWVkLmxlbmd0aDsgaSsrKSB7XG4gICAgICBoYXNoID0gKGhhc2ggKiAzMSArIHNlZWQuY2hhckNvZGVBdChpKSkgPj4+IDA7XG4gICAgfVxuICAgIC8vIFJlc3RyaW5naXIgYSByYW5nbyB2aW9sZXQvYmx1ZSAoMjQwLTI5MMKwKSBwYXJhIGNvaGVyZW5jaWEgY29uIHBhbGV0dGVcbiAgICBjb25zdCBodWUgPSAyNDAgKyAoaGFzaCAlIDUwKTtcbiAgICBjb25zdCBzYXQgPSA1NSArICgoaGFzaCA+Pj4gOCkgJSAyMCk7IC8vIDU1LTc1JVxuICAgIGNvbnN0IGxpZ2h0ID0gMzggKyAoKGhhc2ggPj4+IDE2KSAlIDEyKTsgLy8gMzgtNTAlIOKAlCBzaWVtcHJlIGxlZ2libGUgY29uIGZnIGJsYW5jb1xuICAgIHJldHVybiBgaHNsKCR7aHVlfSwgJHtzYXR9JSwgJHtsaWdodH0lKWA7XG4gIH1cbn1cbiJdfQ==
@@ -1,99 +1,92 @@
1
1
  import { CommonModule } from '@angular/common';
2
- import { Component, Input } from '@angular/core';
3
- import { BoxComponent } from '../../atoms/box/box.component';
2
+ import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
4
3
  import { TextComponent } from '../../atoms/text/text.component';
5
4
  import * as i0 from "@angular/core";
6
- import * as i1 from "@angular/common";
7
5
  /**
8
- * val-notes-box
6
+ * `val-notes-box` — callout / admonition para resaltar información dentro de un
7
+ * flujo de texto.
9
8
  *
10
- * Displays a styled notes/info box with optional prefix and configurable color, size, and padding.
9
+ * Diseño tipo GitHub/Docusaurus: fondo tintado suave, accent en el borde
10
+ * izquierdo, prefijo en mayúsculas pequeñas. Funciona en light & dark.
11
11
  *
12
- * @example
13
- * <val-notes-box [props]="{ text: 'Note', prefix: 'Info', color: 'primary', textColor: 'dark', size: 'medium', rounded: true, padding: '8px' }"></val-notes-box>
12
+ * El color es un Ionic Color (primary, success, warning, danger, tertiary, …).
13
+ * No usa `ion-card` ni `ion-color="X"` como background sino una mezcla
14
+ * `rgba(--ion-color-X-rgb, 0.08)` para no asfixiar el contenido.
15
+ *
16
+ * Renderiza inline HTML (`<strong>`, links via `processLinks`) cuando los
17
+ * flags están activos.
14
18
  *
15
- * @input props: NotesBoxMetadata - Configuration for the notes box (text, prefix, color, textColor, size, rounded, padding)
19
+ * @example
20
+ * <val-notes-box [props]="{
21
+ * text: 'Recordá guardar tus cambios antes de salir.',
22
+ * prefix: 'Tip',
23
+ * color: 'tertiary',
24
+ * textColor: 'dark',
25
+ * size: 'medium',
26
+ * rounded: true,
27
+ * allowPartialBold: true,
28
+ * }"></val-notes-box>
16
29
  */
17
30
  export class NotesBoxComponent {
18
- constructor() { }
19
- ngOnInit() { }
20
31
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NotesBoxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
21
32
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: NotesBoxComponent, isStandalone: true, selector: "val-notes-box", inputs: { props: "props" }, ngImport: i0, template: `
22
33
  <div
23
- [class.notes-box-compact]="props.compact"
24
- [class.notes-box-align-center]="props.align === 'center'"
25
- [class.notes-box-align-right]="props.align === 'right'"
34
+ class="val-notes-box"
35
+ [class.is-compact]="props.compact"
36
+ [class.is-rounded]="props.rounded"
37
+ [class.align-center]="props.align === 'center'"
38
+ [class.align-right]="props.align === 'right'"
39
+ [attr.data-color]="props.color || 'primary'"
40
+ role="note"
26
41
  >
27
- <val-box
28
- [props]="{
29
- icon: '',
30
- bordered: false,
31
- color: props.color,
32
- leftBorder: !props.compact,
33
- rounded: props.rounded,
34
- padding: props.padding || (props.compact ? '6px 12px' : undefined),
35
- }"
36
- >
37
- <div [ngClass]="['content-container', props.size]" body>
38
- @if (props.prefix) {
39
- <val-text
40
- [props]="{ content: props.prefix, color: props.textColor, bold: true, size: props.size }"
41
- ></val-text>
42
- }
43
- <val-text
44
- [props]="{
45
- content: props.text,
46
- color: props.textColor,
47
- bold: false,
48
- size: props.size,
49
- allowPartialBold: props.allowPartialBold,
50
- processLinks: props.processLinks,
51
- }"
52
- ></val-text>
53
- </div>
54
- </val-box>
42
+ @if (props.prefix) {
43
+ <div class="val-notes-box__header">{{ props.prefix }}</div>
44
+ }
45
+ <div class="val-notes-box__body" [class]="'size-' + (props.size || 'medium')">
46
+ <val-text
47
+ [props]="{
48
+ content: props.text,
49
+ color: props.textColor,
50
+ bold: false,
51
+ size: props.size,
52
+ allowPartialBold: props.allowPartialBold,
53
+ processLinks: props.processLinks,
54
+ }"
55
+ ></val-text>
56
+ </div>
55
57
  </div>
56
- `, isInline: true, styles: ["@charset \"UTF-8\";:root{--val-container-sm: 540px;--val-container-md: 720px;--val-container-lg: 880px;--val-container-xl: 1100px;--val-container-padding: 16px;--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-medium)}body.dark,html.ion-palette-dark,body[data-theme=dark]{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143, 73, 248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}.content-container{display:inline-grid}.notes-box-compact{display:inline-block;width:fit-content;max-width:100%}.notes-box-compact ::ng-deep val-box ion-card{margin:0;box-shadow:none}.notes-box-align-center{text-align:center}.notes-box-align-center:not(.notes-box-compact){display:flex;justify-content:center}.notes-box-align-right{text-align:right}.notes-box-align-right:not(.notes-box-compact){display:flex;justify-content:flex-end}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: BoxComponent, selector: "val-box", inputs: ["props"], outputs: ["onClick"] }, { kind: "component", type: TextComponent, selector: "val-text", inputs: ["props"] }] }); }
58
+ `, isInline: true, styles: ["@charset \"UTF-8\";:root{--val-container-sm: 540px;--val-container-md: 720px;--val-container-lg: 880px;--val-container-xl: 1100px;--val-container-padding: 16px;--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-medium)}body.dark,html.ion-palette-dark,body[data-theme=dark]{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143, 73, 248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}:host{display:block}.val-notes-box{--notes-rgb: var(--ion-color-primary-rgb, 112, 38, 223);--notes-bg: rgba(var(--notes-rgb), .07);--notes-border: rgba(var(--notes-rgb), .18);--notes-accent: rgb(var(--notes-rgb));--notes-text: var(--ion-color-dark, #0a0612);--notes-link: rgb(var(--notes-rgb));position:relative;display:block;padding:14px 18px 14px 20px;background:var(--notes-bg);border:1px solid var(--notes-border);border-left:4px solid var(--notes-accent);border-radius:10px;color:var(--notes-text);margin:0;line-height:1.55}.val-notes-box.is-rounded{border-radius:12px}.val-notes-box[data-color=primary]{--notes-rgb: var(--ion-color-primary-rgb)}.val-notes-box[data-color=secondary]{--notes-rgb: var(--ion-color-secondary-rgb)}.val-notes-box[data-color=tertiary]{--notes-rgb: var(--ion-color-tertiary-rgb)}.val-notes-box[data-color=success]{--notes-rgb: var(--ion-color-success-rgb)}.val-notes-box[data-color=warning]{--notes-rgb: var(--ion-color-warning-rgb)}.val-notes-box[data-color=danger]{--notes-rgb: var(--ion-color-danger-rgb)}.val-notes-box[data-color=medium]{--notes-rgb: var(--ion-color-medium-rgb)}.val-notes-box[data-color=dark]{--notes-rgb: var(--ion-color-dark-rgb)}.val-notes-box[data-color=light]{--notes-rgb: var(--ion-color-medium-rgb)}.val-notes-box__header{display:block;margin:0 0 6px;font-weight:700;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--notes-accent);font-family:var(--ion-font-family, inherit)}.val-notes-box__body{display:block;color:var(--notes-text);font-size:14px;line-height:1.6}.val-notes-box__body.size-small{font-size:13px;line-height:1.55}.val-notes-box__body.size-large{font-size:15px;line-height:1.6}.val-notes-box__body.size-xlarge{font-size:16px;line-height:1.55}.val-notes-box__body ::ng-deep val-text{display:block;color:var(--notes-text)}.val-notes-box__body ::ng-deep val-text p{margin:0;color:inherit}.val-notes-box__body ::ng-deep val-text ion-text{color:var(--notes-text)!important}.val-notes-box__body ::ng-deep val-text strong,.val-notes-box__body ::ng-deep val-text b,.val-notes-box__body ::ng-deep .partial-bold{color:var(--notes-text);font-weight:700}.val-notes-box__body ::ng-deep val-text a{color:var(--notes-link);text-decoration:underline;text-underline-offset:2px;font-weight:600}.val-notes-box__body ::ng-deep val-text a:hover{opacity:.85}.val-notes-box.align-center,.val-notes-box.align-center .val-notes-box__header{text-align:center}.val-notes-box.align-right,.val-notes-box.align-right .val-notes-box__header{text-align:right}.val-notes-box.is-compact{display:inline-block;width:fit-content;max-width:100%;padding:5px 12px;border-left-width:1px;border-radius:999px;font-size:12px;line-height:1.3}.val-notes-box.is-compact .val-notes-box__header{display:inline;margin:0 6px 0 0;font-size:11px;letter-spacing:.06em}.val-notes-box.is-compact .val-notes-box__body{display:inline;font-size:12px}.val-notes-box.is-compact ::ng-deep val-text{display:inline}.val-notes-box.is-compact ::ng-deep val-text p{display:inline}@media (prefers-color-scheme: dark){:host-context(body:not(.light)) .val-notes-box{--notes-bg: rgba(var(--notes-rgb), .16);--notes-border: rgba(var(--notes-rgb), .3);--notes-text: var(--ion-color-light, #f4f5f8)}}:host-context(body.dark) .val-notes-box,:host-context(.theme-dark) .val-notes-box,:host-context([data-theme=dark]) .val-notes-box{--notes-bg: rgba(var(--notes-rgb), .16);--notes-border: rgba(var(--notes-rgb), .3);--notes-text: var(--ion-color-light, #f4f5f8)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: TextComponent, selector: "val-text", inputs: ["props"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
57
59
  }
58
60
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NotesBoxComponent, decorators: [{
59
61
  type: Component,
60
- args: [{ selector: 'val-notes-box', standalone: true, imports: [CommonModule, BoxComponent, TextComponent], template: `
62
+ args: [{ selector: 'val-notes-box', standalone: true, imports: [CommonModule, TextComponent], template: `
61
63
  <div
62
- [class.notes-box-compact]="props.compact"
63
- [class.notes-box-align-center]="props.align === 'center'"
64
- [class.notes-box-align-right]="props.align === 'right'"
64
+ class="val-notes-box"
65
+ [class.is-compact]="props.compact"
66
+ [class.is-rounded]="props.rounded"
67
+ [class.align-center]="props.align === 'center'"
68
+ [class.align-right]="props.align === 'right'"
69
+ [attr.data-color]="props.color || 'primary'"
70
+ role="note"
65
71
  >
66
- <val-box
67
- [props]="{
68
- icon: '',
69
- bordered: false,
70
- color: props.color,
71
- leftBorder: !props.compact,
72
- rounded: props.rounded,
73
- padding: props.padding || (props.compact ? '6px 12px' : undefined),
74
- }"
75
- >
76
- <div [ngClass]="['content-container', props.size]" body>
77
- @if (props.prefix) {
78
- <val-text
79
- [props]="{ content: props.prefix, color: props.textColor, bold: true, size: props.size }"
80
- ></val-text>
81
- }
82
- <val-text
83
- [props]="{
84
- content: props.text,
85
- color: props.textColor,
86
- bold: false,
87
- size: props.size,
88
- allowPartialBold: props.allowPartialBold,
89
- processLinks: props.processLinks,
90
- }"
91
- ></val-text>
92
- </div>
93
- </val-box>
72
+ @if (props.prefix) {
73
+ <div class="val-notes-box__header">{{ props.prefix }}</div>
74
+ }
75
+ <div class="val-notes-box__body" [class]="'size-' + (props.size || 'medium')">
76
+ <val-text
77
+ [props]="{
78
+ content: props.text,
79
+ color: props.textColor,
80
+ bold: false,
81
+ size: props.size,
82
+ allowPartialBold: props.allowPartialBold,
83
+ processLinks: props.processLinks,
84
+ }"
85
+ ></val-text>
86
+ </div>
94
87
  </div>
95
- `, styles: ["@charset \"UTF-8\";:root{--val-container-sm: 540px;--val-container-md: 720px;--val-container-lg: 880px;--val-container-xl: 1100px;--val-container-padding: 16px;--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-medium)}body.dark,html.ion-palette-dark,body[data-theme=dark]{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143, 73, 248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}.content-container{display:inline-grid}.notes-box-compact{display:inline-block;width:fit-content;max-width:100%}.notes-box-compact ::ng-deep val-box ion-card{margin:0;box-shadow:none}.notes-box-align-center{text-align:center}.notes-box-align-center:not(.notes-box-compact){display:flex;justify-content:center}.notes-box-align-right{text-align:right}.notes-box-align-right:not(.notes-box-compact){display:flex;justify-content:flex-end}\n"] }]
96
- }], ctorParameters: () => [], propDecorators: { props: [{
88
+ `, changeDetection: ChangeDetectionStrategy.OnPush, styles: ["@charset \"UTF-8\";:root{--val-container-sm: 540px;--val-container-md: 720px;--val-container-lg: 880px;--val-container-xl: 1100px;--val-container-padding: 16px;--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-medium)}body.dark,html.ion-palette-dark,body[data-theme=dark]{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143, 73, 248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}:host{display:block}.val-notes-box{--notes-rgb: var(--ion-color-primary-rgb, 112, 38, 223);--notes-bg: rgba(var(--notes-rgb), .07);--notes-border: rgba(var(--notes-rgb), .18);--notes-accent: rgb(var(--notes-rgb));--notes-text: var(--ion-color-dark, #0a0612);--notes-link: rgb(var(--notes-rgb));position:relative;display:block;padding:14px 18px 14px 20px;background:var(--notes-bg);border:1px solid var(--notes-border);border-left:4px solid var(--notes-accent);border-radius:10px;color:var(--notes-text);margin:0;line-height:1.55}.val-notes-box.is-rounded{border-radius:12px}.val-notes-box[data-color=primary]{--notes-rgb: var(--ion-color-primary-rgb)}.val-notes-box[data-color=secondary]{--notes-rgb: var(--ion-color-secondary-rgb)}.val-notes-box[data-color=tertiary]{--notes-rgb: var(--ion-color-tertiary-rgb)}.val-notes-box[data-color=success]{--notes-rgb: var(--ion-color-success-rgb)}.val-notes-box[data-color=warning]{--notes-rgb: var(--ion-color-warning-rgb)}.val-notes-box[data-color=danger]{--notes-rgb: var(--ion-color-danger-rgb)}.val-notes-box[data-color=medium]{--notes-rgb: var(--ion-color-medium-rgb)}.val-notes-box[data-color=dark]{--notes-rgb: var(--ion-color-dark-rgb)}.val-notes-box[data-color=light]{--notes-rgb: var(--ion-color-medium-rgb)}.val-notes-box__header{display:block;margin:0 0 6px;font-weight:700;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--notes-accent);font-family:var(--ion-font-family, inherit)}.val-notes-box__body{display:block;color:var(--notes-text);font-size:14px;line-height:1.6}.val-notes-box__body.size-small{font-size:13px;line-height:1.55}.val-notes-box__body.size-large{font-size:15px;line-height:1.6}.val-notes-box__body.size-xlarge{font-size:16px;line-height:1.55}.val-notes-box__body ::ng-deep val-text{display:block;color:var(--notes-text)}.val-notes-box__body ::ng-deep val-text p{margin:0;color:inherit}.val-notes-box__body ::ng-deep val-text ion-text{color:var(--notes-text)!important}.val-notes-box__body ::ng-deep val-text strong,.val-notes-box__body ::ng-deep val-text b,.val-notes-box__body ::ng-deep .partial-bold{color:var(--notes-text);font-weight:700}.val-notes-box__body ::ng-deep val-text a{color:var(--notes-link);text-decoration:underline;text-underline-offset:2px;font-weight:600}.val-notes-box__body ::ng-deep val-text a:hover{opacity:.85}.val-notes-box.align-center,.val-notes-box.align-center .val-notes-box__header{text-align:center}.val-notes-box.align-right,.val-notes-box.align-right .val-notes-box__header{text-align:right}.val-notes-box.is-compact{display:inline-block;width:fit-content;max-width:100%;padding:5px 12px;border-left-width:1px;border-radius:999px;font-size:12px;line-height:1.3}.val-notes-box.is-compact .val-notes-box__header{display:inline;margin:0 6px 0 0;font-size:11px;letter-spacing:.06em}.val-notes-box.is-compact .val-notes-box__body{display:inline;font-size:12px}.val-notes-box.is-compact ::ng-deep val-text{display:inline}.val-notes-box.is-compact ::ng-deep val-text p{display:inline}@media (prefers-color-scheme: dark){:host-context(body:not(.light)) .val-notes-box{--notes-bg: rgba(var(--notes-rgb), .16);--notes-border: rgba(var(--notes-rgb), .3);--notes-text: var(--ion-color-light, #f4f5f8)}}:host-context(body.dark) .val-notes-box,:host-context(.theme-dark) .val-notes-box,:host-context([data-theme=dark]) .val-notes-box{--notes-bg: rgba(var(--notes-rgb), .16);--notes-border: rgba(var(--notes-rgb), .3);--notes-text: var(--ion-color-light, #f4f5f8)}\n"] }]
89
+ }], propDecorators: { props: [{
97
90
  type: Input
98
91
  }] } });
99
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90ZXMtYm94LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9tb2xlY3VsZXMvbm90ZXMtYm94L25vdGVzLWJveC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7OztBQTZDaEU7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxPQUFPLGlCQUFpQjtJQWU1QixnQkFBZSxDQUFDO0lBRWhCLFFBQVEsS0FBSSxDQUFDOytHQWpCRixpQkFBaUI7bUdBQWpCLGlCQUFpQixxR0FoRGxCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1DVCxzcUdBcENTLFlBQVksNkhBQUUsWUFBWSw2RkFBRSxhQUFhOzs0RkFpRHhDLGlCQUFpQjtrQkFwRDdCLFNBQVM7K0JBQ0UsZUFBZSxjQUNiLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxZQUFZLEVBQUUsYUFBYSxDQUFDLFlBQzFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1DVDt3REEwQkQsS0FBSztzQkFESixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQm94Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvYm94L2JveC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGV4dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3RleHQvdGV4dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTm90ZXNCb3hNZXRhZGF0YSB9IGZyb20gJy4vdHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtbm90ZXMtYm94JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgQm94Q29tcG9uZW50LCBUZXh0Q29tcG9uZW50XSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2XG4gICAgICBbY2xhc3Mubm90ZXMtYm94LWNvbXBhY3RdPVwicHJvcHMuY29tcGFjdFwiXG4gICAgICBbY2xhc3Mubm90ZXMtYm94LWFsaWduLWNlbnRlcl09XCJwcm9wcy5hbGlnbiA9PT0gJ2NlbnRlcidcIlxuICAgICAgW2NsYXNzLm5vdGVzLWJveC1hbGlnbi1yaWdodF09XCJwcm9wcy5hbGlnbiA9PT0gJ3JpZ2h0J1wiXG4gICAgPlxuICAgICAgPHZhbC1ib3hcbiAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICBpY29uOiAnJyxcbiAgICAgICAgICBib3JkZXJlZDogZmFsc2UsXG4gICAgICAgICAgY29sb3I6IHByb3BzLmNvbG9yLFxuICAgICAgICAgIGxlZnRCb3JkZXI6ICFwcm9wcy5jb21wYWN0LFxuICAgICAgICAgIHJvdW5kZWQ6IHByb3BzLnJvdW5kZWQsXG4gICAgICAgICAgcGFkZGluZzogcHJvcHMucGFkZGluZyB8fCAocHJvcHMuY29tcGFjdCA/ICc2cHggMTJweCcgOiB1bmRlZmluZWQpLFxuICAgICAgICB9XCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBbbmdDbGFzc109XCJbJ2NvbnRlbnQtY29udGFpbmVyJywgcHJvcHMuc2l6ZV1cIiBib2R5PlxuICAgICAgICAgIEBpZiAocHJvcHMucHJlZml4KSB7XG4gICAgICAgICAgICA8dmFsLXRleHRcbiAgICAgICAgICAgICAgW3Byb3BzXT1cInsgY29udGVudDogcHJvcHMucHJlZml4LCBjb2xvcjogcHJvcHMudGV4dENvbG9yLCBib2xkOiB0cnVlLCBzaXplOiBwcm9wcy5zaXplIH1cIlxuICAgICAgICAgICAgPjwvdmFsLXRleHQ+XG4gICAgICAgICAgfVxuICAgICAgICAgIDx2YWwtdGV4dFxuICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgY29udGVudDogcHJvcHMudGV4dCxcbiAgICAgICAgICAgICAgY29sb3I6IHByb3BzLnRleHRDb2xvcixcbiAgICAgICAgICAgICAgYm9sZDogZmFsc2UsXG4gICAgICAgICAgICAgIHNpemU6IHByb3BzLnNpemUsXG4gICAgICAgICAgICAgIGFsbG93UGFydGlhbEJvbGQ6IHByb3BzLmFsbG93UGFydGlhbEJvbGQsXG4gICAgICAgICAgICAgIHByb2Nlc3NMaW5rczogcHJvcHMucHJvY2Vzc0xpbmtzLFxuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgPjwvdmFsLXRleHQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC92YWwtYm94PlxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZVVybHM6IFsnLi9ub3Rlcy1ib3guY29tcG9uZW50LnNjc3MnXSxcbn0pXG4vKipcbiAqIHZhbC1ub3Rlcy1ib3hcbiAqXG4gKiBEaXNwbGF5cyBhIHN0eWxlZCBub3Rlcy9pbmZvIGJveCB3aXRoIG9wdGlvbmFsIHByZWZpeCBhbmQgY29uZmlndXJhYmxlIGNvbG9yLCBzaXplLCBhbmQgcGFkZGluZy5cbiAqXG4gKiBAZXhhbXBsZVxuICogPHZhbC1ub3Rlcy1ib3ggW3Byb3BzXT1cInsgdGV4dDogJ05vdGUnLCBwcmVmaXg6ICdJbmZvJywgY29sb3I6ICdwcmltYXJ5JywgdGV4dENvbG9yOiAnZGFyaycsIHNpemU6ICdtZWRpdW0nLCByb3VuZGVkOiB0cnVlLCBwYWRkaW5nOiAnOHB4JyB9XCI+PC92YWwtbm90ZXMtYm94PlxuICpcbiAqIEBpbnB1dCBwcm9wczogTm90ZXNCb3hNZXRhZGF0YSAtIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBub3RlcyBib3ggKHRleHQsIHByZWZpeCwgY29sb3IsIHRleHRDb2xvciwgc2l6ZSwgcm91bmRlZCwgcGFkZGluZylcbiAqL1xuZXhwb3J0IGNsYXNzIE5vdGVzQm94Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgLyoqXG4gICAqIE5vdGVzIGJveCBjb25maWd1cmF0aW9uIG9iamVjdC5cbiAgICogQHR5cGUge05vdGVzQm94TWV0YWRhdGF9XG4gICAqIEBwcm9wZXJ0eSB0ZXh0IC0gVGhlIG1haW4gdGV4dCBjb250ZW50LlxuICAgKiBAcHJvcGVydHkgcHJlZml4IC0gT3B0aW9uYWwgcHJlZml4IHRleHQgKGJvbGQpLlxuICAgKiBAcHJvcGVydHkgY29sb3IgLSBUaGUgYmFja2dyb3VuZCBjb2xvciBvZiB0aGUgYm94LlxuICAgKiBAcHJvcGVydHkgdGV4dENvbG9yIC0gVGhlIGNvbG9yIG9mIHRoZSB0ZXh0LlxuICAgKiBAcHJvcGVydHkgc2l6ZSAtIFRoZSBzaXplIG9mIHRoZSB0ZXh0IGFuZCBib3guXG4gICAqIEBwcm9wZXJ0eSByb3VuZGVkIC0gV2hldGhlciB0aGUgYm94IGhhcyByb3VuZGVkIGNvcm5lcnMuXG4gICAqIEBwcm9wZXJ0eSBwYWRkaW5nIC0gQ3VzdG9tIHBhZGRpbmcgZm9yIHRoZSBib3guXG4gICAqL1xuICBASW5wdXQoKVxuICBwcm9wczogTm90ZXNCb3hNZXRhZGF0YTtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgbmdPbkluaXQoKSB7fVxufVxuIl19
92
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90ZXMtYm94LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9tb2xlY3VsZXMvbm90ZXMtYm94L25vdGVzLWJveC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7QUFHaEU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXdCRztBQW1DSCxNQUFNLE9BQU8saUJBQWlCOytHQUFqQixpQkFBaUI7bUdBQWpCLGlCQUFpQixxR0E5QmxCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTBCVCxncE1BM0JTLFlBQVksK0JBQUUsYUFBYTs7NEZBK0IxQixpQkFBaUI7a0JBbEM3QixTQUFTOytCQUNFLGVBQWUsY0FDYixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsYUFBYSxDQUFDLFlBQzVCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTBCVCxtQkFFZ0IsdUJBQXVCLENBQUMsTUFBTTs4QkFJdEMsS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUZXh0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvdGV4dC90ZXh0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOb3Rlc0JveE1ldGFkYXRhIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogYHZhbC1ub3Rlcy1ib3hgIOKAlCBjYWxsb3V0IC8gYWRtb25pdGlvbiBwYXJhIHJlc2FsdGFyIGluZm9ybWFjacOzbiBkZW50cm8gZGUgdW5cbiAqIGZsdWpvIGRlIHRleHRvLlxuICpcbiAqIERpc2XDsW8gdGlwbyBHaXRIdWIvRG9jdXNhdXJ1czogZm9uZG8gdGludGFkbyBzdWF2ZSwgYWNjZW50IGVuIGVsIGJvcmRlXG4gKiBpenF1aWVyZG8sIHByZWZpam8gZW4gbWF5w7pzY3VsYXMgcGVxdWXDsWFzLiBGdW5jaW9uYSBlbiBsaWdodCAmIGRhcmsuXG4gKlxuICogRWwgY29sb3IgZXMgdW4gSW9uaWMgQ29sb3IgKHByaW1hcnksIHN1Y2Nlc3MsIHdhcm5pbmcsIGRhbmdlciwgdGVydGlhcnksIOKApikuXG4gKiBObyB1c2EgYGlvbi1jYXJkYCBuaSBgaW9uLWNvbG9yPVwiWFwiYCBjb21vIGJhY2tncm91bmQg4oCUIHNpbm8gdW5hIG1lemNsYVxuICogYHJnYmEoLS1pb24tY29sb3ItWC1yZ2IsIDAuMDgpYCBwYXJhIG5vIGFzZml4aWFyIGVsIGNvbnRlbmlkby5cbiAqXG4gKiBSZW5kZXJpemEgaW5saW5lIEhUTUwgKGA8c3Ryb25nPmAsIGxpbmtzIHZpYSBgcHJvY2Vzc0xpbmtzYCkgY3VhbmRvIGxvc1xuICogZmxhZ3MgZXN0w6FuIGFjdGl2b3MuXG4gKlxuICogQGV4YW1wbGVcbiAqIDx2YWwtbm90ZXMtYm94IFtwcm9wc109XCJ7XG4gKiAgIHRleHQ6ICdSZWNvcmTDoSBndWFyZGFyIHR1cyBjYW1iaW9zIGFudGVzIGRlIHNhbGlyLicsXG4gKiAgIHByZWZpeDogJ1RpcCcsXG4gKiAgIGNvbG9yOiAndGVydGlhcnknLFxuICogICB0ZXh0Q29sb3I6ICdkYXJrJyxcbiAqICAgc2l6ZTogJ21lZGl1bScsXG4gKiAgIHJvdW5kZWQ6IHRydWUsXG4gKiAgIGFsbG93UGFydGlhbEJvbGQ6IHRydWUsXG4gKiB9XCI+PC92YWwtbm90ZXMtYm94PlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtbm90ZXMtYm94JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgVGV4dENvbXBvbmVudF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJ2YWwtbm90ZXMtYm94XCJcbiAgICAgIFtjbGFzcy5pcy1jb21wYWN0XT1cInByb3BzLmNvbXBhY3RcIlxuICAgICAgW2NsYXNzLmlzLXJvdW5kZWRdPVwicHJvcHMucm91bmRlZFwiXG4gICAgICBbY2xhc3MuYWxpZ24tY2VudGVyXT1cInByb3BzLmFsaWduID09PSAnY2VudGVyJ1wiXG4gICAgICBbY2xhc3MuYWxpZ24tcmlnaHRdPVwicHJvcHMuYWxpZ24gPT09ICdyaWdodCdcIlxuICAgICAgW2F0dHIuZGF0YS1jb2xvcl09XCJwcm9wcy5jb2xvciB8fCAncHJpbWFyeSdcIlxuICAgICAgcm9sZT1cIm5vdGVcIlxuICAgID5cbiAgICAgIEBpZiAocHJvcHMucHJlZml4KSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2YWwtbm90ZXMtYm94X19oZWFkZXJcIj57eyBwcm9wcy5wcmVmaXggfX08L2Rpdj5cbiAgICAgIH1cbiAgICAgIDxkaXYgY2xhc3M9XCJ2YWwtbm90ZXMtYm94X19ib2R5XCIgW2NsYXNzXT1cIidzaXplLScgKyAocHJvcHMuc2l6ZSB8fCAnbWVkaXVtJylcIj5cbiAgICAgICAgPHZhbC10ZXh0XG4gICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgIGNvbnRlbnQ6IHByb3BzLnRleHQsXG4gICAgICAgICAgICBjb2xvcjogcHJvcHMudGV4dENvbG9yLFxuICAgICAgICAgICAgYm9sZDogZmFsc2UsXG4gICAgICAgICAgICBzaXplOiBwcm9wcy5zaXplLFxuICAgICAgICAgICAgYWxsb3dQYXJ0aWFsQm9sZDogcHJvcHMuYWxsb3dQYXJ0aWFsQm9sZCxcbiAgICAgICAgICAgIHByb2Nlc3NMaW5rczogcHJvcHMucHJvY2Vzc0xpbmtzLFxuICAgICAgICAgIH1cIlxuICAgICAgICA+PC92YWwtdGV4dD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZVVybHM6IFsnLi9ub3Rlcy1ib3guY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIE5vdGVzQm94Q29tcG9uZW50IHtcbiAgLyoqIE5vdGVzIGJveCBjb25maWd1cmF0aW9uIG9iamVjdC4gKi9cbiAgQElucHV0KCkgcHJvcHMhOiBOb3Rlc0JveE1ldGFkYXRhO1xufVxuIl19