yukit-web 0.0.22 → 0.0.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "yukit-web",
3
3
  "description": "Angular UI component library for Yurest web applications.",
4
- "version": "0.0.22",
4
+ "version": "0.0.24",
5
5
  "author": {
6
6
  "name": "Yurest Solutions",
7
7
  "email": "develop@yurest.com"
@@ -3,6 +3,7 @@
3
3
  --yuw-accent-foreground: var(--neutrals-white);
4
4
  --secondary: var(--sidebar-accent);
5
5
  --secondary-foreground: var(--sidebar-accent-foreground);
6
+ --yuw-callout-bg: var(--accent-primary-lighter-2);
6
7
  }
7
8
 
8
9
  [data-yuw-color='primary'] button.bg-primary:not(:disabled) {
@@ -19,6 +20,7 @@
19
20
  --yuw-accent-foreground: var(--background);
20
21
  --secondary: var(--neutrals-element-low);
21
22
  --secondary-foreground: var(--neutrals-overlay-accent);
23
+ --yuw-callout-bg: var(--neutrals-overlay);
22
24
  }
23
25
 
24
26
  [data-yuw-color='secondary'] button.bg-primary:not(:disabled) {
@@ -35,6 +37,7 @@
35
37
  --yuw-accent-foreground: var(--neutrals-white);
36
38
  --secondary: var(--feedback-error-light);
37
39
  --secondary-foreground: var(--neutrals-surface);
40
+ --yuw-callout-bg: var(--feedback-error-lighter-2);
38
41
  }
39
42
 
40
43
  [data-yuw-color='destructive'] button.bg-primary:not(:disabled):hover {
@@ -46,6 +49,7 @@
46
49
  --yuw-accent-foreground: var(--neutrals-white);
47
50
  --secondary: var(--feedback-success-light);
48
51
  --secondary-foreground: var(--neutrals-surface);
52
+ --yuw-callout-bg: var(--feedback-success-lighter-2);
49
53
  }
50
54
 
51
55
  [data-yuw-color='success'] button.bg-primary:not(:disabled):hover {
@@ -57,6 +61,7 @@
57
61
  --yuw-accent-foreground: var(--neutrals-white);
58
62
  --secondary: var(--feedback-warning-light);
59
63
  --secondary-foreground: var(--neutrals-surface);
64
+ --yuw-callout-bg: var(--feedback-warning-lighter-2);
60
65
  }
61
66
 
62
67
  [data-yuw-color='warning'] button.bg-primary:not(:disabled):hover {
@@ -68,6 +73,7 @@
68
73
  --yuw-accent-foreground: var(--neutrals-white);
69
74
  --secondary: var(--feedback-info-light);
70
75
  --secondary-foreground: var(--neutrals-surface);
76
+ --yuw-callout-bg: var(--feedback-info-lighter-2);
71
77
  }
72
78
 
73
79
  [data-yuw-color='info'] button.bg-primary:not(:disabled):hover {
@@ -79,6 +85,7 @@
79
85
  --yuw-accent-foreground: var(--neutrals-white);
80
86
  --secondary: var(--feedback-additional-light);
81
87
  --secondary-foreground: var(--neutrals-surface);
88
+ --yuw-callout-bg: var(--feedback-additional-lighter-2);
82
89
  }
83
90
 
84
91
  [data-yuw-color='violet'] button.bg-primary:not(:disabled):hover {
@@ -90,6 +97,7 @@
90
97
  --yuw-accent-foreground: var(--neutrals-white);
91
98
  --secondary: var(--neutrals-overlay);
92
99
  --secondary-foreground: var(--neutrals-element-mid);
100
+ --yuw-callout-bg: var(--neutrals-overlay);
93
101
  }
94
102
 
95
103
  [data-yuw-color='muted'] button.bg-primary:not(:disabled):hover {
@@ -126,42 +134,49 @@
126
134
  --yuw-accent: var(--accent-primary-dark);
127
135
  --secondary: var(--sidebar-accent);
128
136
  --secondary-foreground: var(--sidebar-accent-foreground);
137
+ --yuw-callout-bg: var(--accent-primary-lighter-2);
129
138
  }
130
139
 
131
140
  .dark [data-yuw-color='secondary'] {
132
141
  --secondary: var(--neutrals-element-low);
133
142
  --secondary-foreground: var(--neutrals-overlay-accent);
134
143
  --input: color-mix(in oklab, var(--yuw-accent) 40%, transparent);
144
+ --yuw-callout-bg: var(--neutrals-overlay);
135
145
  }
136
146
 
137
147
  .dark [data-yuw-color='destructive'] {
138
148
  --yuw-accent: var(--feedback-error-dark);
139
149
  --secondary: var(--feedback-error-lighter-2);
140
150
  --secondary-foreground: var(--neutrals-white);
151
+ --yuw-callout-bg: var(--feedback-error-lighter-2);
141
152
  }
142
153
 
143
154
  .dark [data-yuw-color='success'] {
144
155
  --yuw-accent: var(--feedback-success-dark);
145
156
  --secondary: var(--feedback-success-lighter-2);
146
157
  --secondary-foreground: var(--neutrals-white);
158
+ --yuw-callout-bg: var(--feedback-success-lighter-2);
147
159
  }
148
160
 
149
161
  .dark [data-yuw-color='warning'] {
150
162
  --yuw-accent: var(--feedback-warning-dark);
151
163
  --secondary: var(--feedback-warning-lighter-2);
152
164
  --secondary-foreground: var(--neutrals-white);
165
+ --yuw-callout-bg: var(--feedback-warning-lighter-2);
153
166
  }
154
167
 
155
168
  .dark [data-yuw-color='info'] {
156
169
  --yuw-accent: var(--feedback-info-dark);
157
170
  --secondary: var(--feedback-info-lighter-2);
158
171
  --secondary-foreground: var(--neutrals-white);
172
+ --yuw-callout-bg: var(--feedback-info-lighter-2);
159
173
  }
160
174
 
161
175
  .dark [data-yuw-color='violet'] {
162
176
  --yuw-accent-foreground: var(--neutrals-white);
163
177
  --secondary: var(--feedback-additional-dark);
164
178
  --secondary-foreground: var(--neutrals-white);
179
+ --yuw-callout-bg: var(--feedback-additional-lighter-2);
165
180
  }
166
181
 
167
182
  .dark [data-yuw-color] button.bg-background:not(:disabled):hover {
@@ -132,6 +132,8 @@ interface YuwTextFieldContract {
132
132
  readonly readonly: InputSignalWithTransform<boolean, unknown>;
133
133
  readonly required: InputSignalWithTransform<boolean, unknown>;
134
134
  readonly invalid: InputSignalWithTransform<boolean, unknown>;
135
+ readonly helperText: InputSignal<string | undefined>;
136
+ readonly errorText: InputSignal<string | undefined>;
135
137
  readonly name: InputSignal<string | undefined>;
136
138
  readonly autocomplete: InputSignal<string | undefined>;
137
139
  }
@@ -678,7 +680,11 @@ declare const YuwAccordionImports: readonly [typeof YuwAccordion, typeof YuwAcco
678
680
  * - `disabled`: Disables input interaction.
679
681
  * - `readonly`: Makes the field read-only.
680
682
  * - `required`: Marks the field as required.
681
- * - `invalid`: Forces invalid styling.
683
+ * - `invalid`: Forces invalid styling. Applied from the first blur on, so a pristine field is not flagged while typing.
684
+ * - `helperText`: Hint shown under the field. Replaced by the error while one is displayed.
685
+ * - `errorText`: Error shown under the field while it is in its error state (form validation or
686
+ * `invalid`). Overrides the `message` carried by the bound control's validation errors (signal or
687
+ * reactive forms); required when no such message exists.
682
688
  * - `name`: HTML `name` attribute.
683
689
  * - `autocomplete`: Native `autocomplete` attribute.
684
690
  * - `maxlength`: Hard cap on character count, enforced natively by the browser.
@@ -702,6 +708,8 @@ declare class YuwInputComponent extends YuwValueAccessorBase<string> implements
702
708
  private readonly _rightAddons;
703
709
  readonly autocomplete: _angular_core.InputSignal<string | undefined>;
704
710
  readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
711
+ readonly errorText: _angular_core.InputSignal<string | undefined>;
712
+ readonly helperText: _angular_core.InputSignal<string | undefined>;
705
713
  readonly inputId: _angular_core.InputSignal<string | undefined>;
706
714
  readonly inputmode: _angular_core.InputSignal<YuwInputModeDto | undefined>;
707
715
  readonly invalid: _angular_core.InputSignalWithTransform<boolean, unknown>;
@@ -726,7 +734,7 @@ declare class YuwInputComponent extends YuwValueAccessorBase<string> implements
726
734
  protected onChange(): void;
727
735
  protected onInput(event: Event): void;
728
736
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwInputComponent, never>;
729
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwInputComponent, "yuw-input", never, { "autocomplete": { "alias": "autocomplete"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "inputId": { "alias": "inputId"; "required": false; "isSignal": true; }; "inputmode": { "alias": "inputmode"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "maxlength": { "alias": "maxlength"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "userClass": { "alias": "class"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "committed": "committed"; }, ["_leftAddons", "_rightAddons"], ["yuw-left-addon", "yuw-right-addon"], true, never>;
737
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwInputComponent, "yuw-input", never, { "autocomplete": { "alias": "autocomplete"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "errorText": { "alias": "errorText"; "required": false; "isSignal": true; }; "helperText": { "alias": "helperText"; "required": false; "isSignal": true; }; "inputId": { "alias": "inputId"; "required": false; "isSignal": true; }; "inputmode": { "alias": "inputmode"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "maxlength": { "alias": "maxlength"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "userClass": { "alias": "class"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "committed": "committed"; }, ["_leftAddons", "_rightAddons"], ["yuw-left-addon", "yuw-right-addon"], true, never>;
730
738
  }
731
739
 
732
740
  /**
@@ -754,7 +762,11 @@ declare const YuwInputAddonImports: readonly [typeof YuwLeftAddonDirective, type
754
762
  * - `disabled`: Disables input interaction.
755
763
  * - `readonly`: Makes the field read-only.
756
764
  * - `required`: Marks the field as required.
757
- * - `invalid`: Forces invalid styling.
765
+ * - `invalid`: Forces invalid styling. Applied from the first blur on, so a pristine field is not flagged while typing.
766
+ * - `helperText`: Hint shown under the field. Replaced by the error while one is displayed.
767
+ * - `errorText`: Error shown under the field while it is in its error state (form validation or
768
+ * `invalid`). Overrides the `message` carried by the bound control's validation errors (signal or
769
+ * reactive forms); required when no such message exists.
758
770
  * - `name`: HTML `name` attribute.
759
771
  * - `autocomplete`: Native `autocomplete` attribute.
760
772
  * - `rows`: Fallback visible height in lines where `field-sizing` is unsupported; ignored otherwise.
@@ -776,6 +788,8 @@ declare class YuwTextareaComponent extends YuwValueAccessorBase<string> implemen
776
788
  private readonly _rightAddons;
777
789
  readonly autocomplete: _angular_core.InputSignal<string | undefined>;
778
790
  readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
791
+ readonly errorText: _angular_core.InputSignal<string | undefined>;
792
+ readonly helperText: _angular_core.InputSignal<string | undefined>;
779
793
  readonly inputId: _angular_core.InputSignal<string | undefined>;
780
794
  readonly invalid: _angular_core.InputSignalWithTransform<boolean, unknown>;
781
795
  readonly maxlength: _angular_core.InputSignal<number | undefined>;
@@ -798,7 +812,7 @@ declare class YuwTextareaComponent extends YuwValueAccessorBase<string> implemen
798
812
  protected onChange(): void;
799
813
  protected onInput(event: Event): void;
800
814
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwTextareaComponent, never>;
801
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwTextareaComponent, "yuw-textarea", never, { "autocomplete": { "alias": "autocomplete"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "inputId": { "alias": "inputId"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "maxlength": { "alias": "maxlength"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "rows": { "alias": "rows"; "required": false; "isSignal": true; }; "userClass": { "alias": "class"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "committed": "committed"; }, ["_leftAddons", "_rightAddons"], ["yuw-left-addon", "yuw-right-addon"], true, never>;
815
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwTextareaComponent, "yuw-textarea", never, { "autocomplete": { "alias": "autocomplete"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "errorText": { "alias": "errorText"; "required": false; "isSignal": true; }; "helperText": { "alias": "helperText"; "required": false; "isSignal": true; }; "inputId": { "alias": "inputId"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "maxlength": { "alias": "maxlength"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "rows": { "alias": "rows"; "required": false; "isSignal": true; }; "userClass": { "alias": "class"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "committed": "committed"; }, ["_leftAddons", "_rightAddons"], ["yuw-left-addon", "yuw-right-addon"], true, never>;
802
816
  }
803
817
 
804
818
  /**
@@ -818,7 +832,11 @@ type YuwSearchInputCollapseFromDto = 'left' | 'right';
818
832
  * - `disabled`: Disables input interaction.
819
833
  * - `readonly`: Makes the field read-only.
820
834
  * - `required`: Marks the field as required.
821
- * - `invalid`: Forces invalid styling.
835
+ * - `invalid`: Forces invalid styling. Applied from the first blur on, so a pristine field is not flagged while typing.
836
+ * - `helperText`: Hint shown under the field. Replaced by the error while one is displayed.
837
+ * - `errorText`: Error shown under the field while it is in its error state (form validation or
838
+ * `invalid`). Overrides the `message` carried by the bound control's validation errors (signal or
839
+ * reactive forms); required when no such message exists.
822
840
  * - `name`: HTML `name` attribute.
823
841
  * - `autocomplete`: Native `autocomplete` attribute.
824
842
  * - `placeholder`: Hint text shown inside the empty field.
@@ -871,8 +889,10 @@ declare class YuwSearchInputComponent extends YuwValueAccessorBase<string> imple
871
889
  readonly clearAriaLabel: _angular_core.InputSignal<string | undefined>;
872
890
  readonly collapseFrom: _angular_core.InputSignal<YuwSearchInputCollapseFromDto | undefined>;
873
891
  readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
892
+ readonly errorText: _angular_core.InputSignal<string | undefined>;
874
893
  readonly expandAriaLabel: _angular_core.InputSignal<string | undefined>;
875
894
  readonly expandedWidth: _angular_core.InputSignal<string>;
895
+ readonly helperText: _angular_core.InputSignal<string | undefined>;
876
896
  readonly inputId: _angular_core.InputSignal<string | undefined>;
877
897
  readonly invalid: _angular_core.InputSignalWithTransform<boolean, unknown>;
878
898
  readonly name: _angular_core.InputSignal<string | undefined>;
@@ -921,7 +941,7 @@ declare class YuwSearchInputComponent extends YuwValueAccessorBase<string> imple
921
941
  protected onExpandFocus(event: FocusEvent): void;
922
942
  protected onInput(event: Event): void;
923
943
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwSearchInputComponent, never>;
924
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwSearchInputComponent, "yuw-search-input", never, { "autocomplete": { "alias": "autocomplete"; "required": false; "isSignal": true; }; "clearAriaLabel": { "alias": "clearAriaLabel"; "required": false; "isSignal": true; }; "collapseFrom": { "alias": "collapseFrom"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "expandAriaLabel": { "alias": "expandAriaLabel"; "required": false; "isSignal": true; }; "expandedWidth": { "alias": "expandedWidth"; "required": false; "isSignal": true; }; "inputId": { "alias": "inputId"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "transparent": { "alias": "transparent"; "required": false; "isSignal": true; }; "userClass": { "alias": "class"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "committed": "committed"; "searched": "searched"; }, never, never, true, never>;
944
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwSearchInputComponent, "yuw-search-input", never, { "autocomplete": { "alias": "autocomplete"; "required": false; "isSignal": true; }; "clearAriaLabel": { "alias": "clearAriaLabel"; "required": false; "isSignal": true; }; "collapseFrom": { "alias": "collapseFrom"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "errorText": { "alias": "errorText"; "required": false; "isSignal": true; }; "expandAriaLabel": { "alias": "expandAriaLabel"; "required": false; "isSignal": true; }; "expandedWidth": { "alias": "expandedWidth"; "required": false; "isSignal": true; }; "helperText": { "alias": "helperText"; "required": false; "isSignal": true; }; "inputId": { "alias": "inputId"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "transparent": { "alias": "transparent"; "required": false; "isSignal": true; }; "userClass": { "alias": "class"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "committed": "committed"; "searched": "searched"; }, never, never, true, never>;
925
945
  }
926
946
 
927
947
  /**
@@ -934,7 +954,11 @@ declare class YuwSearchInputComponent extends YuwValueAccessorBase<string> imple
934
954
  * - `disabled`: Disables input interaction.
935
955
  * - `readonly`: Makes the field read-only.
936
956
  * - `required`: Marks the field as required.
937
- * - `invalid`: Forces invalid styling.
957
+ * - `invalid`: Forces invalid styling. Applied from the first blur on, so a pristine field is not flagged while typing.
958
+ * - `helperText`: Hint shown under the field. Replaced by the error while one is displayed.
959
+ * - `errorText`: Error shown under the field while it is in its error state (form validation or
960
+ * `invalid`). Overrides the `message` carried by the bound control's validation errors (signal or
961
+ * reactive forms); required when no such message exists.
938
962
  * - `name`: HTML `name` attribute.
939
963
  * - `autocomplete`: Native `autocomplete` attribute (e.g. `'current-password'`, `'new-password'`).
940
964
  * - `placeholder`: Hint text shown inside the empty field.
@@ -955,6 +979,8 @@ declare class YuwPasswordInputComponent extends YuwValueAccessorBase<string> imp
955
979
  private readonly _leftAddons;
956
980
  readonly autocomplete: _angular_core.InputSignal<string | undefined>;
957
981
  readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
982
+ readonly errorText: _angular_core.InputSignal<string | undefined>;
983
+ readonly helperText: _angular_core.InputSignal<string | undefined>;
958
984
  readonly inputId: _angular_core.InputSignal<string | undefined>;
959
985
  readonly invalid: _angular_core.InputSignalWithTransform<boolean, unknown>;
960
986
  readonly masked: _angular_core.ModelSignal<boolean>;
@@ -978,7 +1004,7 @@ declare class YuwPasswordInputComponent extends YuwValueAccessorBase<string> imp
978
1004
  protected onInput(event: Event): void;
979
1005
  protected onToggleReveal(): void;
980
1006
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwPasswordInputComponent, never>;
981
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwPasswordInputComponent, "yuw-password-input", never, { "autocomplete": { "alias": "autocomplete"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "inputId": { "alias": "inputId"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "masked": { "alias": "masked"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "revealAriaLabel": { "alias": "revealAriaLabel"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "userClass": { "alias": "class"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "masked": "maskedChange"; "value": "valueChange"; "committed": "committed"; }, ["_leftAddons"], ["yuw-left-addon"], true, never>;
1007
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwPasswordInputComponent, "yuw-password-input", never, { "autocomplete": { "alias": "autocomplete"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "errorText": { "alias": "errorText"; "required": false; "isSignal": true; }; "helperText": { "alias": "helperText"; "required": false; "isSignal": true; }; "inputId": { "alias": "inputId"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "masked": { "alias": "masked"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "revealAriaLabel": { "alias": "revealAriaLabel"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "userClass": { "alias": "class"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "masked": "maskedChange"; "value": "valueChange"; "committed": "committed"; }, ["_leftAddons"], ["yuw-left-addon"], true, never>;
982
1008
  }
983
1009
 
984
1010
  /**
@@ -1010,7 +1036,11 @@ type YuwInputOtpModeDto = 'numeric' | 'text';
1010
1036
  * - `mode`: Virtual-keyboard hint (`'numeric'`, `'text'`). Default is `'numeric'`.
1011
1037
  * - `disabled`: Disables input interaction.
1012
1038
  * - `size`: Cell size, matching the `<yuw-button>` of the same name.
1013
- * - `invalid`: Forces invalid styling.
1039
+ * - `invalid`: Forces invalid styling. Applied from the first blur on, so a pristine field is not flagged while typing.
1040
+ * - `helperText`: Hint shown under the field. Replaced by the error while one is displayed.
1041
+ * - `errorText`: Error shown under the field while it is in its error state (form validation or
1042
+ * `invalid`). Overrides the `message` carried by the bound control's validation errors (signal or
1043
+ * reactive forms); required when no such message exists.
1014
1044
  * - `autofocus`: Focuses the field on init. Appropriate on dedicated verification screens.
1015
1045
  * - `transformPaste`: Normalizes pasted text before it fills the slots.
1016
1046
  * - `class`: Extra classes merged onto the OTP container.
@@ -1027,7 +1057,9 @@ type YuwInputOtpModeDto = 'numeric' | 'text';
1027
1057
  declare class YuwInputOtpComponent extends YuwValueAccessorBase<string> {
1028
1058
  readonly autofocus: _angular_core.InputSignalWithTransform<boolean, unknown>;
1029
1059
  readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
1060
+ readonly errorText: _angular_core.InputSignal<string | undefined>;
1030
1061
  readonly groupSizes: _angular_core.InputSignal<readonly number[]>;
1062
+ readonly helperText: _angular_core.InputSignal<string | undefined>;
1031
1063
  readonly inputId: _angular_core.InputSignal<string | undefined>;
1032
1064
  readonly invalid: _angular_core.InputSignalWithTransform<boolean, unknown>;
1033
1065
  readonly mode: _angular_core.InputSignal<YuwInputOtpModeDto>;
@@ -1045,7 +1077,7 @@ declare class YuwInputOtpComponent extends YuwValueAccessorBase<string> {
1045
1077
  protected _emptyValue(): string;
1046
1078
  protected onValueChange(next: string): void;
1047
1079
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwInputOtpComponent, never>;
1048
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwInputOtpComponent, "yuw-input-otp", never, { "autofocus": { "alias": "autofocus"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "groupSizes": { "alias": "groupSizes"; "required": false; "isSignal": true; }; "inputId": { "alias": "inputId"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "transformPaste": { "alias": "transformPaste"; "required": false; "isSignal": true; }; "userClass": { "alias": "class"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "completed": "completed"; }, never, never, true, never>;
1080
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwInputOtpComponent, "yuw-input-otp", never, { "autofocus": { "alias": "autofocus"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "errorText": { "alias": "errorText"; "required": false; "isSignal": true; }; "groupSizes": { "alias": "groupSizes"; "required": false; "isSignal": true; }; "helperText": { "alias": "helperText"; "required": false; "isSignal": true; }; "inputId": { "alias": "inputId"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "transformPaste": { "alias": "transformPaste"; "required": false; "isSignal": true; }; "userClass": { "alias": "class"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "completed": "completed"; }, never, never, true, never>;
1049
1081
  }
1050
1082
 
1051
1083
  /**
@@ -1879,10 +1911,17 @@ type YuwDatatableRowClass<TData extends RowData> = string | ((row: TData, index:
1879
1911
  * - `columnVisibility`: Two-way column visibility state (`ColumnVisibilityState`).
1880
1912
  * - `rowSelection`: Two-way row selection state (`RowSelectionState`).
1881
1913
  * - `pagination`: Two-way pagination state (`PaginationState`). Default is `{ pageIndex: 0, pageSize: 10 }`.
1914
+ * - `totalItems`: Total row count across all pages, for server-side pagination where `data` holds
1915
+ * only the current page. When set, pagination becomes manual — TanStack stops slicing `data`
1916
+ * itself and `getPageCount()` is derived from this count instead of `data.length`. Leave unset
1917
+ * for the default client-side pagination, where `data` holds the whole dataset.
1882
1918
  *
1883
1919
  * Outputs:
1884
1920
  * - `selectedRowsChange`: Emits the selected row objects (`TData[]`) on selection changes. The
1885
1921
  * initial state does not emit — only actual changes after mount.
1922
+ * - `rowClicked`: Emits a row's data (`TData`) on click, Enter, or Space. Every body row carries
1923
+ * `role="button"` and `tabindex="0"` so it stays operable from the keyboard, not just the mouse,
1924
+ * even when nothing is listening.
1886
1925
  *
1887
1926
  * Usage:
1888
1927
  * ```html
@@ -1932,6 +1971,7 @@ declare class YuwDatatableComponent<TData extends RowData> implements OnInit {
1932
1971
  readonly sorting: _angular_core.ModelSignal<SortingState>;
1933
1972
  readonly summary: _angular_core.InputSignalWithTransform<boolean, unknown>;
1934
1973
  readonly tableClass: _angular_core.InputSignal<string | undefined>;
1974
+ readonly totalItems: _angular_core.InputSignal<number | undefined>;
1935
1975
  protected rowClicked: _angular_core.OutputEmitterRef<TData>;
1936
1976
  protected readonly _ariaSort: Record<'asc' | 'desc', 'ascending' | 'descending'>;
1937
1977
  private readonly _options;
@@ -1969,8 +2009,9 @@ declare class YuwDatatableComponent<TData extends RowData> implements OnInit {
1969
2009
  ngOnInit(): void;
1970
2010
  protected onPageChange(page: number): void;
1971
2011
  protected onRowClick(row: TData): void;
2012
+ protected onRowKeydown(event: KeyboardEvent, row: TData): void;
1972
2013
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwDatatableComponent<any>, never>;
1973
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwDatatableComponent<any>, "yuw-datatable", never, { "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "caption": { "alias": "caption"; "required": false; "isSignal": true; }; "cellClass": { "alias": "cellClass"; "required": false; "isSignal": true; }; "columnFilters": { "alias": "columnFilters"; "required": false; "isSignal": true; }; "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "columnVisibility": { "alias": "columnVisibility"; "required": false; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; "emptyText": { "alias": "emptyText"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "loadingRows": { "alias": "loadingRows"; "required": false; "isSignal": true; }; "nextPageLabel": { "alias": "nextPageLabel"; "required": true; "isSignal": true; }; "paginated": { "alias": "paginated"; "required": false; "isSignal": true; }; "pagination": { "alias": "pagination"; "required": false; "isSignal": true; }; "paginationAriaLabel": { "alias": "paginationAriaLabel"; "required": true; "isSignal": true; }; "paginationEllipsisSrText": { "alias": "paginationEllipsisSrText"; "required": true; "isSignal": true; }; "previousPageLabel": { "alias": "previousPageLabel"; "required": true; "isSignal": true; }; "rowClass": { "alias": "rowClass"; "required": false; "isSignal": true; }; "rowSelection": { "alias": "rowSelection"; "required": false; "isSignal": true; }; "selectable": { "alias": "selectable"; "required": false; "isSignal": true; }; "sortable": { "alias": "sortable"; "required": false; "isSignal": true; }; "sorting": { "alias": "sorting"; "required": false; "isSignal": true; }; "summary": { "alias": "summary"; "required": false; "isSignal": true; }; "tableClass": { "alias": "tableClass"; "required": false; "isSignal": true; }; }, { "columnFilters": "columnFiltersChange"; "columnVisibility": "columnVisibilityChange"; "pagination": "paginationChange"; "rowSelection": "rowSelectionChange"; "sorting": "sortingChange"; "rowClicked": "rowClicked"; "selectedRowsChange": "selectedRowsChange"; }, ["customPagination"], ["[yuwDatatablePagination]"], true, never>;
2014
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwDatatableComponent<any>, "yuw-datatable", never, { "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "caption": { "alias": "caption"; "required": false; "isSignal": true; }; "cellClass": { "alias": "cellClass"; "required": false; "isSignal": true; }; "columnFilters": { "alias": "columnFilters"; "required": false; "isSignal": true; }; "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "columnVisibility": { "alias": "columnVisibility"; "required": false; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; "emptyText": { "alias": "emptyText"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "loadingRows": { "alias": "loadingRows"; "required": false; "isSignal": true; }; "nextPageLabel": { "alias": "nextPageLabel"; "required": true; "isSignal": true; }; "paginated": { "alias": "paginated"; "required": false; "isSignal": true; }; "pagination": { "alias": "pagination"; "required": false; "isSignal": true; }; "paginationAriaLabel": { "alias": "paginationAriaLabel"; "required": true; "isSignal": true; }; "paginationEllipsisSrText": { "alias": "paginationEllipsisSrText"; "required": true; "isSignal": true; }; "previousPageLabel": { "alias": "previousPageLabel"; "required": true; "isSignal": true; }; "rowClass": { "alias": "rowClass"; "required": false; "isSignal": true; }; "rowSelection": { "alias": "rowSelection"; "required": false; "isSignal": true; }; "selectable": { "alias": "selectable"; "required": false; "isSignal": true; }; "sortable": { "alias": "sortable"; "required": false; "isSignal": true; }; "sorting": { "alias": "sorting"; "required": false; "isSignal": true; }; "summary": { "alias": "summary"; "required": false; "isSignal": true; }; "tableClass": { "alias": "tableClass"; "required": false; "isSignal": true; }; "totalItems": { "alias": "totalItems"; "required": false; "isSignal": true; }; }, { "columnFilters": "columnFiltersChange"; "columnVisibility": "columnVisibilityChange"; "pagination": "paginationChange"; "rowSelection": "rowSelectionChange"; "sorting": "sortingChange"; "rowClicked": "rowClicked"; "selectedRowsChange": "selectedRowsChange"; }, ["customPagination"], ["[yuwDatatablePagination]"], true, never>;
1974
2015
  }
1975
2016
 
1976
2017
  declare class YuwDatatableRowSelect {
@@ -2400,6 +2441,9 @@ type YuwAlertVariantDto = 'default' | 'destructive';
2400
2441
  *
2401
2442
  * Inputs:
2402
2443
  * - `variant`: Visual tone (`'default'`, `'destructive'`). Default is `'default'`.
2444
+ * - `color`: Shared color vocabulary (`YuwColorDto`, e.g. `'warning'`, `'info'`, `'destructive'`)
2445
+ * for a tinted callout — soft background, colored border, icon and title/border in the color's
2446
+ * strong tone. Leave unset for the plain `variant`-only look.
2403
2447
  * - `title`: Heading text. User-facing text the consuming app is responsible for translating.
2404
2448
  * Ignored when a `[yuwAlertTitle]` slot is projected.
2405
2449
  * - `description`: Body text. User-facing text the consuming app is responsible for translating.
@@ -2416,7 +2460,7 @@ type YuwAlertVariantDto = 'default' | 'destructive';
2416
2460
  *
2417
2461
  * Usage:
2418
2462
  * ```html
2419
- * <yuw-alert variant="destructive" title="Pago rechazado" description="Revisa los datos de la tarjeta.">
2463
+ * <yuw-alert color="warning" title="Pago pendiente" description="Revisa los datos de la tarjeta.">
2420
2464
  * <ng-icon yuwAlertIcon name="lucideTriangleAlert" />
2421
2465
  * <yuw-button yuwAlertAction size="sm" variant="ghost">Reintentar</yuw-button>
2422
2466
  * </yuw-alert>
@@ -2431,12 +2475,15 @@ declare class YuwAlertComponent {
2431
2475
  protected readonly descriptionSlot: _angular_core.Signal<YuwAlertDescriptionDirective | undefined>;
2432
2476
  protected readonly hasAction: _angular_core.Signal<YuwAlertActionDirective | undefined>;
2433
2477
  protected readonly titleSlot: _angular_core.Signal<YuwAlertTitleDirective | undefined>;
2478
+ readonly color: _angular_core.InputSignal<YuwColorDto | undefined>;
2434
2479
  readonly description: _angular_core.InputSignal<string | undefined>;
2435
2480
  readonly title: _angular_core.InputSignal<string | undefined>;
2436
2481
  readonly userClass: _angular_core.InputSignal<string>;
2437
2482
  readonly variant: _angular_core.InputSignal<YuwAlertVariantDto>;
2483
+ protected readonly alertClass: _angular_core.Signal<string>;
2484
+ protected readonly effectiveVariant: _angular_core.Signal<YuwAlertVariantDto>;
2438
2485
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwAlertComponent, never>;
2439
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwAlertComponent, "yuw-alert", never, { "description": { "alias": "description"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "userClass": { "alias": "class"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; }, {}, ["descriptionSlot", "hasAction", "titleSlot"], ["[yuwAlertIcon]", "[yuwAlertTitle]", "[yuwAlertDescription]", "*", "[yuwAlertAction]"], true, never>;
2486
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwAlertComponent, "yuw-alert", never, { "color": { "alias": "color"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "userClass": { "alias": "class"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; }, {}, ["descriptionSlot", "hasAction", "titleSlot"], ["[yuwAlertIcon]", "[yuwAlertTitle]", "[yuwAlertDescription]", "*", "[yuwAlertAction]"], true, never>;
2440
2487
  }
2441
2488
  declare const YuwAlertImports: readonly [typeof YuwAlertComponent, typeof YuwAlertActionDirective, typeof YuwAlertTitleDirective, typeof YuwAlertDescriptionDirective];
2442
2489