valtech-components 4.0.108 → 4.0.109

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.
@@ -2,38 +2,24 @@ import { Component, EventEmitter, Output, computed, input } from '@angular/core'
2
2
  import { ButtonComponent } from '../../atoms/button/button.component';
3
3
  import * as i0 from "@angular/core";
4
4
  /**
5
- * val-section-header
5
+ * val-section-header — standard section eyebrow for all factory apps.
6
6
  *
7
- * Standard molecule for section titles across all factory apps. Renders a
8
- * bold title + optional right-aligned action button(s) on one row, with an
9
- * optional muted subtitle below.
10
- *
11
- * Replaces ad-hoc eyebrow spans, custom `.section-header` divs, and
12
- * paired val-title + val-button combinations that accumulate per-page
13
- * padding inconsistencies.
14
- *
15
- * **Actions:** pass `actions: ButtonMetadata[]` for right-side buttons.
16
- * Use `fill: 'clear'` + `size: 'small'` for a text-link style CTA, or
17
- * `fill: 'outline'` + `size: 'small'` for a contained button (e.g. "New").
7
+ * Two-row layout:
8
+ * ```
9
+ * ┌────────────────────────────────────────────────┐
10
+ * │ TITLE (bold 18px) [action btn] │ ← row 1, space-between
11
+ * │ info link / subtitle (muted 13px) │ ← row 2, optional
12
+ * └────────────────────────────────────────────────┘
13
+ * ```
18
14
  *
19
- * **Theming:** set `--val-section-header-cta-color` on the host or parent
20
- * to tint plain-text CTAs without affecting full buttons.
15
+ * CSS var `--val-section-header-cta-color` tints the `infoLink` text color.
21
16
  *
22
- * @example
23
- * ```html
24
- * <val-section-header
25
- * [props]="{
26
- * title: 'Premios',
27
- * subtitle: 'Regalos sorteados por ronda.',
28
- * actions: [{ text: '¿Qué son?', fill: 'clear', size: 'small', color: 'primary', type: 'button', state: 'ENABLED', token: 'info' }]
29
- * }"
30
- * (actionClick)="openInfoModal()" />
31
- * ```
17
+ * Both `action` (button) and `infoLink` (text link) emit `(actionClick)` with
18
+ * their respective `token`.
32
19
  */
33
20
  export class SectionHeaderComponent {
34
21
  constructor() {
35
22
  this.props = input({});
36
- /** Emits the clicked button's `token` (from `actions`). */
37
23
  this.actionClick = new EventEmitter();
38
24
  this.config = computed(() => ({
39
25
  title: '',
@@ -44,37 +30,39 @@ export class SectionHeaderComponent {
44
30
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: SectionHeaderComponent, isStandalone: true, selector: "val-section-header", inputs: { props: { classPropertyName: "props", publicName: "props", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { actionClick: "actionClick" }, ngImport: i0, template: `
45
31
  <div class="sh-row">
46
32
  <span class="sh-title">{{ config().title }}</span>
47
- @if (config().actions?.length) {
48
- <div class="sh-actions">
49
- @for (action of config().actions; track action.token || $index) {
50
- <val-button [props]="action" (onClick)="actionClick.emit($event)" />
51
- }
52
- </div>
33
+ @if (config().action; as act) {
34
+ <val-button [props]="act" (onClick)="actionClick.emit($event)" />
53
35
  }
54
36
  </div>
37
+ @if (config().infoLink; as link) {
38
+ <button type="button" class="sh-info-link" (click)="actionClick.emit(link.token ?? 'info')">
39
+ {{ link.label }}
40
+ </button>
41
+ }
55
42
  @if (config().subtitle) {
56
43
  <p class="sh-subtitle">{{ config().subtitle }}</p>
57
44
  }
58
- `, isInline: true, styles: [":host{display:block}.sh-row{display:flex;align-items:center;justify-content:space-between;gap:8px}.sh-title{font-size:1.125rem;font-weight:800;color:var(--val-ink, var(--ion-color-dark, #2f2a36));letter-spacing:-.01em;line-height:1.25;margin:0}.sh-actions{display:flex;align-items:center;gap:4px;flex-shrink:0}.sh-subtitle{margin:4px 0 0;font-size:.8125rem;color:var(--val-ink-soft, var(--ion-color-medium, #92949c));line-height:1.4}\n"], dependencies: [{ kind: "component", type: ButtonComponent, selector: "val-button", inputs: ["preset", "props"], outputs: ["onClick"] }] }); }
45
+ `, isInline: true, styles: [":host{display:block}.sh-row{display:flex;align-items:center;justify-content:space-between;gap:8px}.sh-title{font-size:1.125rem;font-weight:800;color:var(--val-ink, var(--ion-color-dark, #2f2a36));letter-spacing:-.01em;line-height:1.25;margin:0}.sh-info-link{display:inline-block;margin:4px 0 0;padding:0;background:none;border:none;cursor:pointer;font-size:.8125rem;font-family:inherit;font-weight:600;color:var(--val-section-header-cta-color, var(--ion-color-primary, #3880ff));line-height:1.4;text-align:start}.sh-subtitle{display:block;margin:4px 0 0;font-size:.8125rem;color:var(--val-ink-soft, var(--ion-color-medium, #92949c));line-height:1.4}\n"], dependencies: [{ kind: "component", type: ButtonComponent, selector: "val-button", inputs: ["preset", "props"], outputs: ["onClick"] }] }); }
59
46
  }
60
47
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SectionHeaderComponent, decorators: [{
61
48
  type: Component,
62
49
  args: [{ selector: 'val-section-header', standalone: true, imports: [ButtonComponent], template: `
63
50
  <div class="sh-row">
64
51
  <span class="sh-title">{{ config().title }}</span>
65
- @if (config().actions?.length) {
66
- <div class="sh-actions">
67
- @for (action of config().actions; track action.token || $index) {
68
- <val-button [props]="action" (onClick)="actionClick.emit($event)" />
69
- }
70
- </div>
52
+ @if (config().action; as act) {
53
+ <val-button [props]="act" (onClick)="actionClick.emit($event)" />
71
54
  }
72
55
  </div>
56
+ @if (config().infoLink; as link) {
57
+ <button type="button" class="sh-info-link" (click)="actionClick.emit(link.token ?? 'info')">
58
+ {{ link.label }}
59
+ </button>
60
+ }
73
61
  @if (config().subtitle) {
74
62
  <p class="sh-subtitle">{{ config().subtitle }}</p>
75
63
  }
76
- `, styles: [":host{display:block}.sh-row{display:flex;align-items:center;justify-content:space-between;gap:8px}.sh-title{font-size:1.125rem;font-weight:800;color:var(--val-ink, var(--ion-color-dark, #2f2a36));letter-spacing:-.01em;line-height:1.25;margin:0}.sh-actions{display:flex;align-items:center;gap:4px;flex-shrink:0}.sh-subtitle{margin:4px 0 0;font-size:.8125rem;color:var(--val-ink-soft, var(--ion-color-medium, #92949c));line-height:1.4}\n"] }]
64
+ `, styles: [":host{display:block}.sh-row{display:flex;align-items:center;justify-content:space-between;gap:8px}.sh-title{font-size:1.125rem;font-weight:800;color:var(--val-ink, var(--ion-color-dark, #2f2a36));letter-spacing:-.01em;line-height:1.25;margin:0}.sh-info-link{display:inline-block;margin:4px 0 0;padding:0;background:none;border:none;cursor:pointer;font-size:.8125rem;font-family:inherit;font-weight:600;color:var(--val-section-header-cta-color, var(--ion-color-primary, #3880ff));line-height:1.4;text-align:start}.sh-subtitle{display:block;margin:4px 0 0;font-size:.8125rem;color:var(--val-ink-soft, var(--ion-color-medium, #92949c));line-height:1.4}\n"] }]
77
65
  }], propDecorators: { actionClick: [{
78
66
  type: Output
79
67
  }] } });
80
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdGlvbi1oZWFkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9zZWN0aW9uLWhlYWRlci9zZWN0aW9uLWhlYWRlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOztBQUd0RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTRCRztBQXNCSCxNQUFNLE9BQU8sc0JBQXNCO0lBckJuQztRQXNCVyxVQUFLLEdBQUcsS0FBSyxDQUFpQyxFQUFFLENBQUMsQ0FBQztRQUUzRCwyREFBMkQ7UUFDakQsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBRTFDLFdBQU0sR0FBRyxRQUFRLENBQXdCLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDdkQsS0FBSyxFQUFFLEVBQUU7WUFDVCxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUU7U0FDaEIsQ0FBQyxDQUFDLENBQUM7S0FDTDsrR0FWWSxzQkFBc0I7bUdBQXRCLHNCQUFzQiwyUEFqQnZCOzs7Ozs7Ozs7Ozs7OztHQWNULDZmQWZTLGVBQWU7OzRGQWtCZCxzQkFBc0I7a0JBckJsQyxTQUFTOytCQUNFLG9CQUFvQixjQUNsQixJQUFJLFdBQ1AsQ0FBQyxlQUFlLENBQUMsWUFDaEI7Ozs7Ozs7Ozs7Ozs7O0dBY1Q7OEJBT1MsV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBPdXRwdXQsIGNvbXB1dGVkLCBpbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2VjdGlvbkhlYWRlck1ldGFkYXRhIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogdmFsLXNlY3Rpb24taGVhZGVyXG4gKlxuICogU3RhbmRhcmQgbW9sZWN1bGUgZm9yIHNlY3Rpb24gdGl0bGVzIGFjcm9zcyBhbGwgZmFjdG9yeSBhcHBzLiBSZW5kZXJzIGFcbiAqIGJvbGQgdGl0bGUgKyBvcHRpb25hbCByaWdodC1hbGlnbmVkIGFjdGlvbiBidXR0b24ocykgb24gb25lIHJvdywgd2l0aCBhblxuICogb3B0aW9uYWwgbXV0ZWQgc3VidGl0bGUgYmVsb3cuXG4gKlxuICogUmVwbGFjZXMgYWQtaG9jIGV5ZWJyb3cgc3BhbnMsIGN1c3RvbSBgLnNlY3Rpb24taGVhZGVyYCBkaXZzLCBhbmRcbiAqIHBhaXJlZCB2YWwtdGl0bGUgKyB2YWwtYnV0dG9uIGNvbWJpbmF0aW9ucyB0aGF0IGFjY3VtdWxhdGUgcGVyLXBhZ2VcbiAqIHBhZGRpbmcgaW5jb25zaXN0ZW5jaWVzLlxuICpcbiAqICoqQWN0aW9uczoqKiBwYXNzIGBhY3Rpb25zOiBCdXR0b25NZXRhZGF0YVtdYCBmb3IgcmlnaHQtc2lkZSBidXR0b25zLlxuICogVXNlIGBmaWxsOiAnY2xlYXInYCArIGBzaXplOiAnc21hbGwnYCBmb3IgYSB0ZXh0LWxpbmsgc3R5bGUgQ1RBLCBvclxuICogYGZpbGw6ICdvdXRsaW5lJ2AgKyBgc2l6ZTogJ3NtYWxsJ2AgZm9yIGEgY29udGFpbmVkIGJ1dHRvbiAoZS5nLiBcIk5ld1wiKS5cbiAqXG4gKiAqKlRoZW1pbmc6Kiogc2V0IGAtLXZhbC1zZWN0aW9uLWhlYWRlci1jdGEtY29sb3JgIG9uIHRoZSBob3N0IG9yIHBhcmVudFxuICogdG8gdGludCBwbGFpbi10ZXh0IENUQXMgd2l0aG91dCBhZmZlY3RpbmcgZnVsbCBidXR0b25zLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBodG1sXG4gKiA8dmFsLXNlY3Rpb24taGVhZGVyXG4gKiAgIFtwcm9wc109XCJ7XG4gKiAgICAgdGl0bGU6ICdQcmVtaW9zJyxcbiAqICAgICBzdWJ0aXRsZTogJ1JlZ2Fsb3Mgc29ydGVhZG9zIHBvciByb25kYS4nLFxuICogICAgIGFjdGlvbnM6IFt7IHRleHQ6ICfCv1F1w6kgc29uPycsIGZpbGw6ICdjbGVhcicsIHNpemU6ICdzbWFsbCcsIGNvbG9yOiAncHJpbWFyeScsIHR5cGU6ICdidXR0b24nLCBzdGF0ZTogJ0VOQUJMRUQnLCB0b2tlbjogJ2luZm8nIH1dXG4gKiAgIH1cIlxuICogICAoYWN0aW9uQ2xpY2spPVwib3BlbkluZm9Nb2RhbCgpXCIgLz5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtc2VjdGlvbi1oZWFkZXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQnV0dG9uQ29tcG9uZW50XSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwic2gtcm93XCI+XG4gICAgICA8c3BhbiBjbGFzcz1cInNoLXRpdGxlXCI+e3sgY29uZmlnKCkudGl0bGUgfX08L3NwYW4+XG4gICAgICBAaWYgKGNvbmZpZygpLmFjdGlvbnM/Lmxlbmd0aCkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwic2gtYWN0aW9uc1wiPlxuICAgICAgICAgIEBmb3IgKGFjdGlvbiBvZiBjb25maWcoKS5hY3Rpb25zOyB0cmFjayBhY3Rpb24udG9rZW4gfHwgJGluZGV4KSB7XG4gICAgICAgICAgICA8dmFsLWJ1dHRvbiBbcHJvcHNdPVwiYWN0aW9uXCIgKG9uQ2xpY2spPVwiYWN0aW9uQ2xpY2suZW1pdCgkZXZlbnQpXCIgLz5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuICAgIEBpZiAoY29uZmlnKCkuc3VidGl0bGUpIHtcbiAgICAgIDxwIGNsYXNzPVwic2gtc3VidGl0bGVcIj57eyBjb25maWcoKS5zdWJ0aXRsZSB9fTwvcD5cbiAgICB9XG4gIGAsXG4gIHN0eWxlVXJsOiAnLi9zZWN0aW9uLWhlYWRlci5jb21wb25lbnQuc2NzcycsXG59KVxuZXhwb3J0IGNsYXNzIFNlY3Rpb25IZWFkZXJDb21wb25lbnQge1xuICByZWFkb25seSBwcm9wcyA9IGlucHV0PFBhcnRpYWw8U2VjdGlvbkhlYWRlck1ldGFkYXRhPj4oe30pO1xuXG4gIC8qKiBFbWl0cyB0aGUgY2xpY2tlZCBidXR0b24ncyBgdG9rZW5gIChmcm9tIGBhY3Rpb25zYCkuICovXG4gIEBPdXRwdXQoKSBhY3Rpb25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIHJlYWRvbmx5IGNvbmZpZyA9IGNvbXB1dGVkPFNlY3Rpb25IZWFkZXJNZXRhZGF0YT4oKCkgPT4gKHtcbiAgICB0aXRsZTogJycsXG4gICAgLi4udGhpcy5wcm9wcygpLFxuICB9KSk7XG59XG4iXX0=
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdGlvbi1oZWFkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9zZWN0aW9uLWhlYWRlci9zZWN0aW9uLWhlYWRlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOztBQUd0RTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUF1QkgsTUFBTSxPQUFPLHNCQUFzQjtJQXRCbkM7UUF1QlcsVUFBSyxHQUFHLEtBQUssQ0FBaUMsRUFBRSxDQUFDLENBQUM7UUFFakQsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBRTFDLFdBQU0sR0FBRyxRQUFRLENBQXdCLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDdkQsS0FBSyxFQUFFLEVBQUU7WUFDVCxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUU7U0FDaEIsQ0FBQyxDQUFDLENBQUM7S0FDTDsrR0FUWSxzQkFBc0I7bUdBQXRCLHNCQUFzQiwyUEFsQnZCOzs7Ozs7Ozs7Ozs7Ozs7R0FlVCxxdEJBaEJTLGVBQWU7OzRGQW1CZCxzQkFBc0I7a0JBdEJsQyxTQUFTOytCQUNFLG9CQUFvQixjQUNsQixJQUFJLFdBQ1AsQ0FBQyxlQUFlLENBQUMsWUFDaEI7Ozs7Ozs7Ozs7Ozs7OztHQWVUOzhCQU1TLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgT3V0cHV0LCBjb21wdXRlZCwgaW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL2J1dHRvbi9idXR0b24uY29tcG9uZW50JztcbmltcG9ydCB7IFNlY3Rpb25IZWFkZXJNZXRhZGF0YSB9IGZyb20gJy4vdHlwZXMnO1xuXG4vKipcbiAqIHZhbC1zZWN0aW9uLWhlYWRlciDigJQgc3RhbmRhcmQgc2VjdGlvbiBleWVicm93IGZvciBhbGwgZmFjdG9yeSBhcHBzLlxuICpcbiAqIFR3by1yb3cgbGF5b3V0OlxuICogYGBgXG4gKiDilIzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJBcbiAqIOKUgiAgVElUTEUgKGJvbGQgMThweCkgICAgICAgICAgICAgIFthY3Rpb24gYnRuXSAg4pSCICDihpAgcm93IDEsIHNwYWNlLWJldHdlZW5cbiAqIOKUgiAgaW5mbyBsaW5rIC8gc3VidGl0bGUgKG11dGVkIDEzcHgpICAgICAgICAgICAg4pSCICDihpAgcm93IDIsIG9wdGlvbmFsXG4gKiDilJTilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJhcbiAqIGBgYFxuICpcbiAqIENTUyB2YXIgYC0tdmFsLXNlY3Rpb24taGVhZGVyLWN0YS1jb2xvcmAgdGludHMgdGhlIGBpbmZvTGlua2AgdGV4dCBjb2xvci5cbiAqXG4gKiBCb3RoIGBhY3Rpb25gIChidXR0b24pIGFuZCBgaW5mb0xpbmtgICh0ZXh0IGxpbmspIGVtaXQgYChhY3Rpb25DbGljaylgIHdpdGhcbiAqIHRoZWlyIHJlc3BlY3RpdmUgYHRva2VuYC5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLXNlY3Rpb24taGVhZGVyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0J1dHRvbkNvbXBvbmVudF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cInNoLXJvd1wiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJzaC10aXRsZVwiPnt7IGNvbmZpZygpLnRpdGxlIH19PC9zcGFuPlxuICAgICAgQGlmIChjb25maWcoKS5hY3Rpb247IGFzIGFjdCkge1xuICAgICAgICA8dmFsLWJ1dHRvbiBbcHJvcHNdPVwiYWN0XCIgKG9uQ2xpY2spPVwiYWN0aW9uQ2xpY2suZW1pdCgkZXZlbnQpXCIgLz5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgICBAaWYgKGNvbmZpZygpLmluZm9MaW5rOyBhcyBsaW5rKSB7XG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInNoLWluZm8tbGlua1wiIChjbGljayk9XCJhY3Rpb25DbGljay5lbWl0KGxpbmsudG9rZW4gPz8gJ2luZm8nKVwiPlxuICAgICAgICB7eyBsaW5rLmxhYmVsIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICB9XG4gICAgQGlmIChjb25maWcoKS5zdWJ0aXRsZSkge1xuICAgICAgPHAgY2xhc3M9XCJzaC1zdWJ0aXRsZVwiPnt7IGNvbmZpZygpLnN1YnRpdGxlIH19PC9wPlxuICAgIH1cbiAgYCxcbiAgc3R5bGVVcmw6ICcuL3NlY3Rpb24taGVhZGVyLmNvbXBvbmVudC5zY3NzJyxcbn0pXG5leHBvcnQgY2xhc3MgU2VjdGlvbkhlYWRlckNvbXBvbmVudCB7XG4gIHJlYWRvbmx5IHByb3BzID0gaW5wdXQ8UGFydGlhbDxTZWN0aW9uSGVhZGVyTWV0YWRhdGE+Pih7fSk7XG5cbiAgQE91dHB1dCgpIGFjdGlvbkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgcmVhZG9ubHkgY29uZmlnID0gY29tcHV0ZWQ8U2VjdGlvbkhlYWRlck1ldGFkYXRhPigoKSA9PiAoe1xuICAgIHRpdGxlOiAnJyxcbiAgICAuLi50aGlzLnByb3BzKCksXG4gIH0pKTtcbn1cbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL3NlY3Rpb24taGVhZGVyL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCdXR0b25NZXRhZGF0YSB9IGZyb20gJy4uLy4uL3R5cGVzJztcblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciBgdmFsLXNlY3Rpb24taGVhZGVyYC5cbiAqXG4gKiBQcmVzZW50YXRpb25hbCBtb2xlY3VsZSDigJQgYWxsIHN0cmluZ3MgYXJlIGFscmVhZHktcmVzb2x2ZWQgKGNvbnN1bWVyXG4gKiB0cmFuc2xhdGVzIHZpYSBJMThuU2VydmljZSkuIE5vIGkxOG4gb2YgaXRzIG93bi5cbiAqXG4gKiBAZXhhbXBsZSBUaXRsZS1vbmx5XG4gKiBgYGBodG1sXG4gKiA8dmFsLXNlY3Rpb24taGVhZGVyIFtwcm9wc109XCJ7IHRpdGxlOiAnVGFsb25hcmlvcycgfVwiIC8+XG4gKiBgYGBcbiAqXG4gKiBAZXhhbXBsZSBUaXRsZSArIHRleHQgQ1RBICsgc3VidGl0bGVcbiAqIGBgYGh0bWxcbiAqIDx2YWwtc2VjdGlvbi1oZWFkZXJcbiAqICAgW3Byb3BzXT1cIntcbiAqICAgICB0aXRsZTogJ1ByZW1pb3MnLFxuICogICAgIHN1YnRpdGxlOiAnTG9zIHJlZ2Fsb3Mgc29ydGVhZG9zIGR1cmFudGUgZWwgZXZlbnRvLicsXG4gKiAgICAgYWN0aW9uczogW3sgdGV4dDogJ8K/UXXDqSBzb24/JywgZmlsbDogJ2NsZWFyJywgc2l6ZTogJ3NtYWxsJywgY29sb3I6ICdwcmltYXJ5JywgdHlwZTogJ2J1dHRvbicsIHN0YXRlOiAnRU5BQkxFRCcsIHRva2VuOiAnaW5mbycgfV1cbiAqICAgfVwiXG4gKiAgIChhY3Rpb25DbGljayk9XCJvcGVuSW5mb01vZGFsKClcIiAvPlxuICogYGBgXG4gKlxuICogQGV4YW1wbGUgVGl0bGUgKyBjcmVhdGUgYnV0dG9uXG4gKiBgYGBodG1sXG4gKiA8dmFsLXNlY3Rpb24taGVhZGVyXG4gKiAgIFtwcm9wc109XCJ7XG4gKiAgICAgdGl0bGU6ICdUYWxvbmFyaW9zJyxcbiAqICAgICBhY3Rpb25zOiBbeyB0ZXh0OiAnTnVldmEgdGFuZGEnLCBmaWxsOiAnb3V0bGluZScsIHNpemU6ICdzbWFsbCcsIGNvbG9yOiAncHJpbWFyeScsIHR5cGU6ICdidXR0b24nLCBzdGF0ZTogJ0VOQUJMRUQnLCB0b2tlbjogJ2NyZWF0ZScgfV1cbiAqICAgfVwiXG4gKiAgIChhY3Rpb25DbGljayk9XCJvbkFjdGlvbigkZXZlbnQpXCIgLz5cbiAqIGBgYFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlY3Rpb25IZWFkZXJNZXRhZGF0YSB7XG4gIC8qKiBNYWluIHNlY3Rpb24gdGl0bGUuIEJvbGQsIH4xOHB4LiAqL1xuICB0aXRsZTogc3RyaW5nO1xuICAvKiogTXV0ZWQgaGVscGVyIGxpbmUgYmVsb3cgdGhlIHRpdGxlIHJvdy4gKi9cbiAgc3VidGl0bGU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBSaWdodC1hbGlnbmVkIGFjdGlvbiBidXR0b25zLiBSZW5kZXJlZCBhcyBgdmFsLWJ1dHRvbmAgY29tcG9uZW50cy5cbiAgICogRWFjaCBlbWl0cyBgKGFjdGlvbkNsaWNrKWAgd2l0aCBpdHMgb3duIGB0b2tlbmAuXG4gICAqIFVzZSBgZmlsbDogJ2NsZWFyJ2AgKyBgc2l6ZTogJ3NtYWxsJ2AgZm9yIGEgdGV4dC1saW5rIHN0eWxlIENUQS5cbiAgICovXG4gIGFjdGlvbnM/OiBCdXR0b25NZXRhZGF0YVtdO1xufVxuIl19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL3NlY3Rpb24taGVhZGVyL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCdXR0b25NZXRhZGF0YSB9IGZyb20gJy4uLy4uL3R5cGVzJztcblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciBgdmFsLXNlY3Rpb24taGVhZGVyYC5cbiAqXG4gKiBMYXlvdXQgKHR3byByb3dzKTpcbiAqIGBgYFxuICog4pSM4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSQXG4gKiDilIIgIHRpdGxlIChib2xkLCAxOHB4KSAgICAgICAgW2FjdGlvbiBidXR0b25dICDilIIgIOKGkCByb3cgMSwgc3BhY2UtYmV0d2VlblxuICog4pSCICBpbmZvIGxpbmsgLyBzdWJ0aXRsZSAobXV0ZWQpICAgICAgICAgICAgICAg4pSCICDihpAgcm93IDIsIG9wdGlvbmFsXG4gKiDilJTilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJhcbiAqIGBgYFxuICpcbiAqIEJvdGggYGFjdGlvbmAgYW5kIGBpbmZvTGlua2AgZW1pdCBgKGFjdGlvbkNsaWNrKWAgd2l0aCB0aGVpciBgdG9rZW5gLlxuICpcbiAqIEBleGFtcGxlIFRpdGxlICsgcHJpbWFyeSBhY3Rpb24gYnV0dG9uXG4gKiBgYGBodG1sXG4gKiA8dmFsLXNlY3Rpb24taGVhZGVyXG4gKiAgIFtwcm9wc109XCJ7IHRpdGxlOiAnVGFsb25hcmlvcycsIGFjdGlvbjogY3JlYXRlQnV0dG9uUHJvcHMoKSB9XCJcbiAqICAgKGFjdGlvbkNsaWNrKT1cIm9wZW5DcmVhdGUoKVwiIC8+XG4gKiBgYGBcbiAqXG4gKiBAZXhhbXBsZSBUaXRsZSArIHJvdy0xIGluZm8gbGluayAobm8gcHJpbWFyeSBhY3Rpb24pXG4gKiBgYGBodG1sXG4gKiA8dmFsLXNlY3Rpb24taGVhZGVyXG4gKiAgIFtwcm9wc109XCJ7IHRpdGxlOiAnUHJlbWlvcycsIGluZm9MaW5rOiB7IGxhYmVsOiAnwr9RdcOpIHNvbj8nLCB0b2tlbjogJ2luZm8nIH0gfVwiXG4gKiAgIChhY3Rpb25DbGljayk9XCJvcGVuSW5mbygpXCIgLz5cbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlIEZ1bGwg4oCUIHRpdGxlICsgYWN0aW9uICsgcm93LTIgaW5mbyBsaW5rXG4gKiBgYGBodG1sXG4gKiA8dmFsLXNlY3Rpb24taGVhZGVyXG4gKiAgIFtwcm9wc109XCJ7XG4gKiAgICAgdGl0bGU6ICdWZW5kZWRvcmVzIHkgdGFsb25hcmlvcycsXG4gKiAgICAgYWN0aW9uOiBjcmVhdGVCdXR0b25Qcm9wcygpLFxuICogICAgIGluZm9MaW5rOiB7IGxhYmVsOiAnwr9RdcOpIHNvbiBsb3MgdGFsb25hcmlvcz8nLCB0b2tlbjogJ2luZm8nIH1cbiAqICAgfVwiXG4gKiAgIChhY3Rpb25DbGljayk9XCJvbkFjdGlvbigkZXZlbnQpXCIgLz5cbiAqIGBgYFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlY3Rpb25IZWFkZXJNZXRhZGF0YSB7XG4gIC8qKiBNYWluIHNlY3Rpb24gdGl0bGUg4oCUIGJvbGQsIH4xOHB4LiAqL1xuICB0aXRsZTogc3RyaW5nO1xuICAvKipcbiAgICogUHJpbWFyeSBhY3Rpb24gYnV0dG9uIHJlbmRlcmVkIG9uIHRoZSBSSUdIVCBvZiByb3cgMSAoc3BhY2UtYmV0d2VlbikuXG4gICAqIEVtaXRzIGAoYWN0aW9uQ2xpY2spYCB3aXRoIHRoZSBidXR0b24ncyBgdG9rZW5gLlxuICAgKi9cbiAgYWN0aW9uPzogQnV0dG9uTWV0YWRhdGE7XG4gIC8qKlxuICAgKiBDbGlja2FibGUgaW5mbyAvIGhlbHAgbGluayByZW5kZXJlZCBhdCB0aGUgU1RBUlQgb2Ygcm93IDIgKGJlbG93IHRpdGxlKS5cbiAgICogRW1pdHMgYChhY3Rpb25DbGljaylgIHdpdGggaXRzIGB0b2tlbmAgKGRlZmF1bHRzIHRvIGAnaW5mbydgKS5cbiAgICogVXNlIGZvciBcIsK/UXXDqSBlcyBlc3RvP1wiLXN0eWxlIGxpbmtzLlxuICAgKi9cbiAgaW5mb0xpbms/OiB7XG4gICAgbGFiZWw6IHN0cmluZztcbiAgICB0b2tlbj86IHN0cmluZztcbiAgfTtcbiAgLyoqXG4gICAqIFN0YXRpYyBtdXRlZCB0ZXh0IGluIHJvdyAyIChzaG93biBiZWxvdyBgaW5mb0xpbmtgIGlmIGJvdGggYXJlIHNldCkuXG4gICAqIFVzZSBmb3IgYnJpZWYgZGVzY3JpcHRpdmUgY29weSB0aGF0IGRvZXMgbm90IG5lZWQgdG8gYmUgY2xpY2thYmxlLlxuICAgKi9cbiAgc3VidGl0bGU/OiBzdHJpbmc7XG59XG4iXX0=
@@ -2,5 +2,5 @@
2
2
  * Current version of valtech-components.
3
3
  * This is automatically updated during the publish process.
4
4
  */
5
- export const VERSION = '4.0.108';
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDdXJyZW50IHZlcnNpb24gb2YgdmFsdGVjaC1jb21wb25lbnRzLlxuICogVGhpcyBpcyBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQgZHVyaW5nIHRoZSBwdWJsaXNoIHByb2Nlc3MuXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzQuMC4xMDgnO1xuIl19
5
+ export const VERSION = '4.0.109';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDdXJyZW50IHZlcnNpb24gb2YgdmFsdGVjaC1jb21wb25lbnRzLlxuICogVGhpcyBpcyBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQgZHVyaW5nIHRoZSBwdWJsaXNoIHByb2Nlc3MuXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzQuMC4xMDknO1xuIl19
@@ -56,7 +56,7 @@ import { BrowserMultiFormatReader } from '@zxing/browser';
56
56
  * Current version of valtech-components.
57
57
  * This is automatically updated during the publish process.
58
58
  */
59
- const VERSION = '4.0.108';
59
+ const VERSION = '4.0.109';
60
60
 
61
61
  // Control de estado de refresco (singleton a nivel de módulo)
62
62
  let isRefreshing = false;
@@ -28953,38 +28953,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
28953
28953
  }] } });
28954
28954
 
28955
28955
  /**
28956
- * val-section-header
28956
+ * val-section-header — standard section eyebrow for all factory apps.
28957
28957
  *
28958
- * Standard molecule for section titles across all factory apps. Renders a
28959
- * bold title + optional right-aligned action button(s) on one row, with an
28960
- * optional muted subtitle below.
28961
- *
28962
- * Replaces ad-hoc eyebrow spans, custom `.section-header` divs, and
28963
- * paired val-title + val-button combinations that accumulate per-page
28964
- * padding inconsistencies.
28965
- *
28966
- * **Actions:** pass `actions: ButtonMetadata[]` for right-side buttons.
28967
- * Use `fill: 'clear'` + `size: 'small'` for a text-link style CTA, or
28968
- * `fill: 'outline'` + `size: 'small'` for a contained button (e.g. "New").
28958
+ * Two-row layout:
28959
+ * ```
28960
+ * ┌────────────────────────────────────────────────┐
28961
+ * │ TITLE (bold 18px) [action btn] │ ← row 1, space-between
28962
+ * │ info link / subtitle (muted 13px) │ ← row 2, optional
28963
+ * └────────────────────────────────────────────────┘
28964
+ * ```
28969
28965
  *
28970
- * **Theming:** set `--val-section-header-cta-color` on the host or parent
28971
- * to tint plain-text CTAs without affecting full buttons.
28966
+ * CSS var `--val-section-header-cta-color` tints the `infoLink` text color.
28972
28967
  *
28973
- * @example
28974
- * ```html
28975
- * <val-section-header
28976
- * [props]="{
28977
- * title: 'Premios',
28978
- * subtitle: 'Regalos sorteados por ronda.',
28979
- * actions: [{ text: '¿Qué son?', fill: 'clear', size: 'small', color: 'primary', type: 'button', state: 'ENABLED', token: 'info' }]
28980
- * }"
28981
- * (actionClick)="openInfoModal()" />
28982
- * ```
28968
+ * Both `action` (button) and `infoLink` (text link) emit `(actionClick)` with
28969
+ * their respective `token`.
28983
28970
  */
28984
28971
  class SectionHeaderComponent {
28985
28972
  constructor() {
28986
28973
  this.props = input({});
28987
- /** Emits the clicked button's `token` (from `actions`). */
28988
28974
  this.actionClick = new EventEmitter();
28989
28975
  this.config = computed(() => ({
28990
28976
  title: '',
@@ -28995,36 +28981,38 @@ class SectionHeaderComponent {
28995
28981
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: SectionHeaderComponent, isStandalone: true, selector: "val-section-header", inputs: { props: { classPropertyName: "props", publicName: "props", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { actionClick: "actionClick" }, ngImport: i0, template: `
28996
28982
  <div class="sh-row">
28997
28983
  <span class="sh-title">{{ config().title }}</span>
28998
- @if (config().actions?.length) {
28999
- <div class="sh-actions">
29000
- @for (action of config().actions; track action.token || $index) {
29001
- <val-button [props]="action" (onClick)="actionClick.emit($event)" />
29002
- }
29003
- </div>
28984
+ @if (config().action; as act) {
28985
+ <val-button [props]="act" (onClick)="actionClick.emit($event)" />
29004
28986
  }
29005
28987
  </div>
28988
+ @if (config().infoLink; as link) {
28989
+ <button type="button" class="sh-info-link" (click)="actionClick.emit(link.token ?? 'info')">
28990
+ {{ link.label }}
28991
+ </button>
28992
+ }
29006
28993
  @if (config().subtitle) {
29007
28994
  <p class="sh-subtitle">{{ config().subtitle }}</p>
29008
28995
  }
29009
- `, isInline: true, styles: [":host{display:block}.sh-row{display:flex;align-items:center;justify-content:space-between;gap:8px}.sh-title{font-size:1.125rem;font-weight:800;color:var(--val-ink, var(--ion-color-dark, #2f2a36));letter-spacing:-.01em;line-height:1.25;margin:0}.sh-actions{display:flex;align-items:center;gap:4px;flex-shrink:0}.sh-subtitle{margin:4px 0 0;font-size:.8125rem;color:var(--val-ink-soft, var(--ion-color-medium, #92949c));line-height:1.4}\n"], dependencies: [{ kind: "component", type: ButtonComponent, selector: "val-button", inputs: ["preset", "props"], outputs: ["onClick"] }] }); }
28996
+ `, isInline: true, styles: [":host{display:block}.sh-row{display:flex;align-items:center;justify-content:space-between;gap:8px}.sh-title{font-size:1.125rem;font-weight:800;color:var(--val-ink, var(--ion-color-dark, #2f2a36));letter-spacing:-.01em;line-height:1.25;margin:0}.sh-info-link{display:inline-block;margin:4px 0 0;padding:0;background:none;border:none;cursor:pointer;font-size:.8125rem;font-family:inherit;font-weight:600;color:var(--val-section-header-cta-color, var(--ion-color-primary, #3880ff));line-height:1.4;text-align:start}.sh-subtitle{display:block;margin:4px 0 0;font-size:.8125rem;color:var(--val-ink-soft, var(--ion-color-medium, #92949c));line-height:1.4}\n"], dependencies: [{ kind: "component", type: ButtonComponent, selector: "val-button", inputs: ["preset", "props"], outputs: ["onClick"] }] }); }
29010
28997
  }
29011
28998
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SectionHeaderComponent, decorators: [{
29012
28999
  type: Component,
29013
29000
  args: [{ selector: 'val-section-header', standalone: true, imports: [ButtonComponent], template: `
29014
29001
  <div class="sh-row">
29015
29002
  <span class="sh-title">{{ config().title }}</span>
29016
- @if (config().actions?.length) {
29017
- <div class="sh-actions">
29018
- @for (action of config().actions; track action.token || $index) {
29019
- <val-button [props]="action" (onClick)="actionClick.emit($event)" />
29020
- }
29021
- </div>
29003
+ @if (config().action; as act) {
29004
+ <val-button [props]="act" (onClick)="actionClick.emit($event)" />
29022
29005
  }
29023
29006
  </div>
29007
+ @if (config().infoLink; as link) {
29008
+ <button type="button" class="sh-info-link" (click)="actionClick.emit(link.token ?? 'info')">
29009
+ {{ link.label }}
29010
+ </button>
29011
+ }
29024
29012
  @if (config().subtitle) {
29025
29013
  <p class="sh-subtitle">{{ config().subtitle }}</p>
29026
29014
  }
29027
- `, styles: [":host{display:block}.sh-row{display:flex;align-items:center;justify-content:space-between;gap:8px}.sh-title{font-size:1.125rem;font-weight:800;color:var(--val-ink, var(--ion-color-dark, #2f2a36));letter-spacing:-.01em;line-height:1.25;margin:0}.sh-actions{display:flex;align-items:center;gap:4px;flex-shrink:0}.sh-subtitle{margin:4px 0 0;font-size:.8125rem;color:var(--val-ink-soft, var(--ion-color-medium, #92949c));line-height:1.4}\n"] }]
29015
+ `, styles: [":host{display:block}.sh-row{display:flex;align-items:center;justify-content:space-between;gap:8px}.sh-title{font-size:1.125rem;font-weight:800;color:var(--val-ink, var(--ion-color-dark, #2f2a36));letter-spacing:-.01em;line-height:1.25;margin:0}.sh-info-link{display:inline-block;margin:4px 0 0;padding:0;background:none;border:none;cursor:pointer;font-size:.8125rem;font-family:inherit;font-weight:600;color:var(--val-section-header-cta-color, var(--ion-color-primary, #3880ff));line-height:1.4;text-align:start}.sh-subtitle{display:block;margin:4px 0 0;font-size:.8125rem;color:var(--val-ink-soft, var(--ion-color-medium, #92949c));line-height:1.4}\n"] }]
29028
29016
  }], propDecorators: { actionClick: [{
29029
29017
  type: Output
29030
29018
  }] } });