@tekus/design-system 5.37.0 → 5.38.1
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/assets/tokens/tk-foundations.json +4 -0
- package/fesm2022/tekus-design-system-components-autocomplete.mjs +7 -17
- package/fesm2022/tekus-design-system-components-autocomplete.mjs.map +1 -1
- package/fesm2022/tekus-design-system-components-avatar.mjs +120 -0
- package/fesm2022/tekus-design-system-components-avatar.mjs.map +1 -0
- package/fesm2022/tekus-design-system-components-button.mjs +2 -2
- package/fesm2022/tekus-design-system-components-button.mjs.map +1 -1
- package/fesm2022/tekus-design-system-components-card.mjs +1 -1
- package/fesm2022/tekus-design-system-components-card.mjs.map +1 -1
- package/fesm2022/tekus-design-system-components-checkbox.mjs +9 -3
- package/fesm2022/tekus-design-system-components-checkbox.mjs.map +1 -1
- package/fesm2022/tekus-design-system-components-date-picker.mjs +16 -3
- package/fesm2022/tekus-design-system-components-date-picker.mjs.map +1 -1
- package/fesm2022/tekus-design-system-components-input-number.mjs +37 -3
- package/fesm2022/tekus-design-system-components-input-number.mjs.map +1 -1
- package/fesm2022/tekus-design-system-components-input-text.mjs +2 -2
- package/fesm2022/tekus-design-system-components-input-text.mjs.map +1 -1
- package/fesm2022/tekus-design-system-components-menu.mjs +2 -2
- package/fesm2022/tekus-design-system-components-menu.mjs.map +1 -1
- package/fesm2022/tekus-design-system-components-multiselect.mjs +2 -2
- package/fesm2022/tekus-design-system-components-multiselect.mjs.map +1 -1
- package/fesm2022/tekus-design-system-components-panel-menu.mjs +2 -2
- package/fesm2022/tekus-design-system-components-panel-menu.mjs.map +1 -1
- package/fesm2022/tekus-design-system-components-radio-button.mjs +9 -3
- package/fesm2022/tekus-design-system-components-radio-button.mjs.map +1 -1
- package/fesm2022/tekus-design-system-components-select.mjs +37 -32
- package/fesm2022/tekus-design-system-components-select.mjs.map +1 -1
- package/fesm2022/tekus-design-system-components-sidebar-layout.mjs +2 -2
- package/fesm2022/tekus-design-system-components-sidebar-layout.mjs.map +1 -1
- package/fesm2022/tekus-design-system-components-table.mjs +1 -1
- package/fesm2022/tekus-design-system-components-table.mjs.map +1 -1
- package/fesm2022/tekus-design-system-components-tabs.mjs +2 -2
- package/fesm2022/tekus-design-system-components-tabs.mjs.map +1 -1
- package/fesm2022/tekus-design-system-components-textarea.mjs +2 -2
- package/fesm2022/tekus-design-system-components-textarea.mjs.map +1 -1
- package/fesm2022/tekus-design-system-components-time-picker.mjs +13 -3
- package/fesm2022/tekus-design-system-components-time-picker.mjs.map +1 -1
- package/fesm2022/tekus-design-system-components-toggle.mjs +4 -3
- package/fesm2022/tekus-design-system-components-toggle.mjs.map +1 -1
- package/fesm2022/tekus-design-system-components-toolbar.mjs +2 -2
- package/fesm2022/tekus-design-system-components-toolbar.mjs.map +1 -1
- package/fesm2022/tekus-design-system-components-topbar.mjs +2 -2
- package/fesm2022/tekus-design-system-components-topbar.mjs.map +1 -1
- package/fesm2022/tekus-design-system-core-types.mjs +4 -3
- package/fesm2022/tekus-design-system-core-types.mjs.map +1 -1
- package/fesm2022/tekus-design-system-core.mjs +4 -3
- package/fesm2022/tekus-design-system-core.mjs.map +1 -1
- package/package.json +5 -1
- package/scss/_config.scss +242 -0
- package/scss/tk-bundle.scss +105 -0
- package/styles/variables.css +1 -0
- package/types/tekus-design-system-components-autocomplete.d.ts +3 -12
- package/types/tekus-design-system-components-avatar.d.ts +104 -0
- package/types/tekus-design-system-components-checkbox.d.ts +7 -1
- package/types/tekus-design-system-components-date-picker.d.ts +11 -1
- package/types/tekus-design-system-components-input-number.d.ts +35 -1
- package/types/tekus-design-system-components-radio-button.d.ts +7 -1
- package/types/tekus-design-system-components-select.d.ts +2 -6
- package/types/tekus-design-system-components-time-picker.d.ts +8 -1
- package/types/tekus-design-system-components-toggle.d.ts +2 -1
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
// Internal configuration module — not for direct consumer import.
|
|
2
|
+
// All default color values match tk-foundations.json exactly.
|
|
3
|
+
|
|
4
|
+
@use 'sass:color';
|
|
5
|
+
@use 'sass:math';
|
|
6
|
+
|
|
7
|
+
// ── Configurable API ──────────────────────────────────────────────────────────
|
|
8
|
+
$config-brand: 'default' !default; // 'default' | 'brand-a' | 'brand-b'
|
|
9
|
+
$config-scale: null !default; // html font-size multiplier — overrides the brand's suggested scale
|
|
10
|
+
$config-primary: null !default; // hex color — auto-generates 11-step primary palette
|
|
11
|
+
$config-secondary: null !default; // hex color — auto-generates 11-step secondary palette
|
|
12
|
+
$config-accent: null !default; // hex color — auto-generates 11-step accent palette
|
|
13
|
+
$config-border-radius: null !default; // 'rounded' | 'pill' | 'square' — overrides the brand's default radius style
|
|
14
|
+
|
|
15
|
+
// ── Palette generation ────────────────────────────────────────────────────────
|
|
16
|
+
// Places $base at step 500; steps 50-400 mix toward white, steps 600-950 toward black.
|
|
17
|
+
// Components are rounded so Sass emits clean hex values instead of rgb() decimals.
|
|
18
|
+
@function _tk-palette-step($base, $step) {
|
|
19
|
+
$mixed: $base;
|
|
20
|
+
@if $step == 50 { $mixed: color.mix(white, $base, 91%); }
|
|
21
|
+
@else if $step == 100 { $mixed: color.mix(white, $base, 83%); }
|
|
22
|
+
@else if $step == 200 { $mixed: color.mix(white, $base, 67%); }
|
|
23
|
+
@else if $step == 300 { $mixed: color.mix(white, $base, 48%); }
|
|
24
|
+
@else if $step == 400 { $mixed: color.mix(white, $base, 28%); }
|
|
25
|
+
@else if $step == 600 { $mixed: color.mix($base, black, 85%); }
|
|
26
|
+
@else if $step == 700 { $mixed: color.mix($base, black, 70%); }
|
|
27
|
+
@else if $step == 800 { $mixed: color.mix($base, black, 52%); }
|
|
28
|
+
@else if $step == 900 { $mixed: color.mix($base, black, 35%); }
|
|
29
|
+
@else if $step == 950 { $mixed: color.mix($base, black, 20%); }
|
|
30
|
+
// Round components and return as a legacy sRGB color so Sass serializes to hex
|
|
31
|
+
@return color.change($mixed,
|
|
32
|
+
$red: math.round(color.channel($mixed, "red", $space: rgb)),
|
|
33
|
+
$green: math.round(color.channel($mixed, "green", $space: rgb)),
|
|
34
|
+
$blue: math.round(color.channel($mixed, "blue", $space: rgb))
|
|
35
|
+
);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// ── Default brand palettes ────────────────────────────────────────────────────
|
|
39
|
+
// Primary and accent are null for the default brand — variables.css already
|
|
40
|
+
// defines these values, so there's no need to duplicate them here.
|
|
41
|
+
// They are populated only when a brand preset or $config-primary/$config-accent is set.
|
|
42
|
+
$brand-primary-50: null;
|
|
43
|
+
$brand-primary-100: null;
|
|
44
|
+
$brand-primary-200: null;
|
|
45
|
+
$brand-primary-300: null;
|
|
46
|
+
$brand-primary-400: null;
|
|
47
|
+
$brand-primary-500: null;
|
|
48
|
+
$brand-primary-600: null;
|
|
49
|
+
$brand-primary-700: null;
|
|
50
|
+
$brand-primary-800: null;
|
|
51
|
+
$brand-primary-900: null;
|
|
52
|
+
$brand-primary-950: null;
|
|
53
|
+
|
|
54
|
+
$brand-accent-50: null;
|
|
55
|
+
$brand-accent-100: null;
|
|
56
|
+
$brand-accent-200: null;
|
|
57
|
+
$brand-accent-300: null;
|
|
58
|
+
$brand-accent-400: null;
|
|
59
|
+
$brand-accent-500: null;
|
|
60
|
+
$brand-accent-600: null;
|
|
61
|
+
$brand-accent-700: null;
|
|
62
|
+
$brand-accent-800: null;
|
|
63
|
+
$brand-accent-900: null;
|
|
64
|
+
$brand-accent-950: null;
|
|
65
|
+
|
|
66
|
+
// Secondary palette — defaults to the surface palette tokens from variables.css.
|
|
67
|
+
// Using var() cross-references so secondary tracks surface automatically.
|
|
68
|
+
// Override with $config-secondary: #hex to generate a fully custom palette.
|
|
69
|
+
$brand-secondary-50: var(--tk-color-base-surface-50);
|
|
70
|
+
$brand-secondary-100: var(--tk-color-base-surface-100);
|
|
71
|
+
$brand-secondary-200: var(--tk-color-base-surface-200);
|
|
72
|
+
$brand-secondary-300: var(--tk-color-base-surface-300);
|
|
73
|
+
$brand-secondary-400: var(--tk-color-base-surface-400);
|
|
74
|
+
$brand-secondary-500: var(--tk-color-base-surface-500);
|
|
75
|
+
$brand-secondary-600: var(--tk-color-base-surface-600);
|
|
76
|
+
$brand-secondary-700: var(--tk-color-base-surface-700);
|
|
77
|
+
$brand-secondary-800: var(--tk-color-base-surface-800);
|
|
78
|
+
$brand-secondary-900: var(--tk-color-base-surface-900);
|
|
79
|
+
$brand-secondary-950: var(--tk-color-base-surface-950);
|
|
80
|
+
|
|
81
|
+
// Typography
|
|
82
|
+
$brand-font-family: 'Poppins', sans-serif;
|
|
83
|
+
|
|
84
|
+
// Border radius style suggested by the brand — overridden by an explicit
|
|
85
|
+
// $config-border-radius. 'default' (rounded) | 'sharp' | 'soft' | 'pill'
|
|
86
|
+
$brand-radius-style: 'default';
|
|
87
|
+
|
|
88
|
+
// Rem scale suggested by the brand — overridden by an explicit $config-scale,
|
|
89
|
+
// same precedence as $brand-radius-style above.
|
|
90
|
+
$brand-scale: 1;
|
|
91
|
+
|
|
92
|
+
// ── Brand overrides ───────────────────────────────────────────────────────────
|
|
93
|
+
// Each brand declares all 11 primary + 11 accent shades so no shade leaks
|
|
94
|
+
// in from the default brand.
|
|
95
|
+
|
|
96
|
+
@if $config-brand == 'brand-a' {
|
|
97
|
+
// Primary: warm red
|
|
98
|
+
$brand-primary-50: #ffe8ec;
|
|
99
|
+
$brand-primary-100: #ffc1cc;
|
|
100
|
+
$brand-primary-200: #ff96a8;
|
|
101
|
+
$brand-primary-300: #ff6b83;
|
|
102
|
+
$brand-primary-400: #f5395c;
|
|
103
|
+
$brand-primary-500: #e40040;
|
|
104
|
+
$brand-primary-600: #c90039;
|
|
105
|
+
$brand-primary-700: #ad0031;
|
|
106
|
+
$brand-primary-800: #8a0027;
|
|
107
|
+
$brand-primary-900: #66001d;
|
|
108
|
+
$brand-primary-950: #3d0011;
|
|
109
|
+
|
|
110
|
+
// Accent: same hue (monochromatic brand)
|
|
111
|
+
$brand-accent-50: #ffe8ec;
|
|
112
|
+
$brand-accent-100: #ffc1cc;
|
|
113
|
+
$brand-accent-200: #ff96a8;
|
|
114
|
+
$brand-accent-300: #ff6b83;
|
|
115
|
+
$brand-accent-400: #f5395c;
|
|
116
|
+
$brand-accent-500: #e40040;
|
|
117
|
+
$brand-accent-600: #c90039;
|
|
118
|
+
$brand-accent-700: #ad0031;
|
|
119
|
+
$brand-accent-800: #8a0027;
|
|
120
|
+
$brand-accent-900: #66001d;
|
|
121
|
+
$brand-accent-950: #3d0011;
|
|
122
|
+
|
|
123
|
+
$brand-font-family: 'Inter', sans-serif;
|
|
124
|
+
$brand-radius-style: 'pill';
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
@else if $config-brand == 'brand-b' {
|
|
128
|
+
// Primary: corporate blue
|
|
129
|
+
$brand-primary-50: #e0f1fb;
|
|
130
|
+
$brand-primary-100: #b3d9f5;
|
|
131
|
+
$brand-primary-200: #80bfed;
|
|
132
|
+
$brand-primary-300: #4da5e5;
|
|
133
|
+
$brand-primary-400: #2691db;
|
|
134
|
+
$brand-primary-500: #007bc4;
|
|
135
|
+
$brand-primary-600: #006cb0;
|
|
136
|
+
$brand-primary-700: #005a96;
|
|
137
|
+
$brand-primary-800: #00477a;
|
|
138
|
+
$brand-primary-900: #003460;
|
|
139
|
+
$brand-primary-950: #001e3a;
|
|
140
|
+
|
|
141
|
+
// Accent: complementary teal
|
|
142
|
+
$brand-accent-50: #e0f7f4;
|
|
143
|
+
$brand-accent-100: #b3ece4;
|
|
144
|
+
$brand-accent-200: #80ded2;
|
|
145
|
+
$brand-accent-300: #4dd0bf;
|
|
146
|
+
$brand-accent-400: #26c5b0;
|
|
147
|
+
$brand-accent-500: #00b8a0;
|
|
148
|
+
$brand-accent-600: #00a390;
|
|
149
|
+
$brand-accent-700: #008a7a;
|
|
150
|
+
$brand-accent-800: #006e61;
|
|
151
|
+
$brand-accent-900: #005249;
|
|
152
|
+
$brand-accent-950: #003330;
|
|
153
|
+
|
|
154
|
+
$brand-font-family: 'Poppins', sans-serif;
|
|
155
|
+
$brand-radius-style: 'soft';
|
|
156
|
+
$brand-scale: 0.95;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
// ── Resolved scale ────────────────────────────────────────────────────────────
|
|
160
|
+
// An explicit $config-scale always wins over the brand's suggested scale;
|
|
161
|
+
// $brand-scale applies only when the consumer left it unset.
|
|
162
|
+
$scale: if($config-scale, $config-scale, $brand-scale);
|
|
163
|
+
|
|
164
|
+
// ── Border radius (scale handled separately by html font-size) ────────────────
|
|
165
|
+
// $config-border-radius, when set, overrides the brand's suggested style —
|
|
166
|
+
// same precedence as $config-primary/$config-secondary/$config-accent.
|
|
167
|
+
$radius-style: if($config-border-radius, $config-border-radius, $brand-radius-style);
|
|
168
|
+
|
|
169
|
+
$radius-xs: var(--tk-borderRadius-xs);
|
|
170
|
+
$radius-s: var(--tk-borderRadius-s);
|
|
171
|
+
$radius-m: var(--tk-borderRadius-m);
|
|
172
|
+
// The `l` slot is the "fully rounded" step: it is consumed only by pill-shaped
|
|
173
|
+
// surfaces (tag, multiselect chip, autocomplete chip), which were `full` before
|
|
174
|
+
// this theming layer existed. Basing it on --tk-borderRadius-l would silently
|
|
175
|
+
// shrink them from 62.4375rem to 1.5rem under the default/soft styles.
|
|
176
|
+
$radius-l: var(--tk-borderRadius-full);
|
|
177
|
+
// The `xl` slot is the *actual* adaptive counterpart of --tk-borderRadius-l
|
|
178
|
+
// (1.5rem), consumed by large decorative surfaces such as the avatar in its
|
|
179
|
+
// `l`/`xl` sizes. It exists as a separate slot because the `l` name above was
|
|
180
|
+
// already taken by the fully-rounded/pill step.
|
|
181
|
+
$radius-xl: var(--tk-borderRadius-l);
|
|
182
|
+
|
|
183
|
+
@if $radius-style == 'sharp' or $radius-style == 'square' {
|
|
184
|
+
$radius-xs: var(--tk-borderRadius-null);
|
|
185
|
+
$radius-s: var(--tk-borderRadius-null);
|
|
186
|
+
$radius-m: var(--tk-borderRadius-null);
|
|
187
|
+
$radius-l: var(--tk-borderRadius-null);
|
|
188
|
+
$radius-xl: var(--tk-borderRadius-null);
|
|
189
|
+
} @else if $radius-style == 'pill' {
|
|
190
|
+
$radius-xs: var(--tk-borderRadius-full);
|
|
191
|
+
$radius-s: var(--tk-borderRadius-full);
|
|
192
|
+
$radius-m: var(--tk-borderRadius-full);
|
|
193
|
+
$radius-l: var(--tk-borderRadius-full);
|
|
194
|
+
$radius-xl: var(--tk-borderRadius-full);
|
|
195
|
+
} @else if $radius-style == 'soft' {
|
|
196
|
+
$radius-m: 0.75rem;
|
|
197
|
+
}
|
|
198
|
+
// 'default' / 'rounded' → no override; keep the base values above as-is.
|
|
199
|
+
|
|
200
|
+
// ── Custom palette overrides (applied after brand presets) ────────────────────
|
|
201
|
+
// Custom colors override brand preset colors. Custom override at step 500 = the exact input hex.
|
|
202
|
+
@if $config-primary {
|
|
203
|
+
$brand-primary-50: _tk-palette-step($config-primary, 50);
|
|
204
|
+
$brand-primary-100: _tk-palette-step($config-primary, 100);
|
|
205
|
+
$brand-primary-200: _tk-palette-step($config-primary, 200);
|
|
206
|
+
$brand-primary-300: _tk-palette-step($config-primary, 300);
|
|
207
|
+
$brand-primary-400: _tk-palette-step($config-primary, 400);
|
|
208
|
+
$brand-primary-500: _tk-palette-step($config-primary, 500);
|
|
209
|
+
$brand-primary-600: _tk-palette-step($config-primary, 600);
|
|
210
|
+
$brand-primary-700: _tk-palette-step($config-primary, 700);
|
|
211
|
+
$brand-primary-800: _tk-palette-step($config-primary, 800);
|
|
212
|
+
$brand-primary-900: _tk-palette-step($config-primary, 900);
|
|
213
|
+
$brand-primary-950: _tk-palette-step($config-primary, 950);
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
@if $config-secondary {
|
|
217
|
+
$brand-secondary-50: _tk-palette-step($config-secondary, 50);
|
|
218
|
+
$brand-secondary-100: _tk-palette-step($config-secondary, 100);
|
|
219
|
+
$brand-secondary-200: _tk-palette-step($config-secondary, 200);
|
|
220
|
+
$brand-secondary-300: _tk-palette-step($config-secondary, 300);
|
|
221
|
+
$brand-secondary-400: _tk-palette-step($config-secondary, 400);
|
|
222
|
+
$brand-secondary-500: _tk-palette-step($config-secondary, 500);
|
|
223
|
+
$brand-secondary-600: _tk-palette-step($config-secondary, 600);
|
|
224
|
+
$brand-secondary-700: _tk-palette-step($config-secondary, 700);
|
|
225
|
+
$brand-secondary-800: _tk-palette-step($config-secondary, 800);
|
|
226
|
+
$brand-secondary-900: _tk-palette-step($config-secondary, 900);
|
|
227
|
+
$brand-secondary-950: _tk-palette-step($config-secondary, 950);
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
@if $config-accent {
|
|
231
|
+
$brand-accent-50: _tk-palette-step($config-accent, 50);
|
|
232
|
+
$brand-accent-100: _tk-palette-step($config-accent, 100);
|
|
233
|
+
$brand-accent-200: _tk-palette-step($config-accent, 200);
|
|
234
|
+
$brand-accent-300: _tk-palette-step($config-accent, 300);
|
|
235
|
+
$brand-accent-400: _tk-palette-step($config-accent, 400);
|
|
236
|
+
$brand-accent-500: _tk-palette-step($config-accent, 500);
|
|
237
|
+
$brand-accent-600: _tk-palette-step($config-accent, 600);
|
|
238
|
+
$brand-accent-700: _tk-palette-step($config-accent, 700);
|
|
239
|
+
$brand-accent-800: _tk-palette-step($config-accent, 800);
|
|
240
|
+
$brand-accent-900: _tk-palette-step($config-accent, 900);
|
|
241
|
+
$brand-accent-950: _tk-palette-step($config-accent, 950);
|
|
242
|
+
}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
// Public entry point for the configurable token bundle.
|
|
2
|
+
//
|
|
3
|
+
// Consumer usage (in end-project global stylesheet):
|
|
4
|
+
// @use '@tekus/design-system/scss/tk-bundle' with (
|
|
5
|
+
// $config-brand: 'brand-a', // preset brand (optional)
|
|
6
|
+
// $config-scale: 1.1, // rem scale multiplier (optional)
|
|
7
|
+
// $config-primary: #e40040, // custom primary hex → auto-generates 11-step palette
|
|
8
|
+
// $config-secondary: #007bc4, // custom secondary hex → emits --tk-color-base-secondary-*
|
|
9
|
+
// $config-accent: #00b8a0, // custom accent hex → overrides brand accent palette
|
|
10
|
+
// $config-border-radius: 'pill', // 'rounded' | 'pill' | 'square' (optional)
|
|
11
|
+
// );
|
|
12
|
+
//
|
|
13
|
+
// Scale is applied as an html font-size multiplier so ALL rem-based tokens
|
|
14
|
+
// (spacing, typography, radius, component sizes) scale uniformly without
|
|
15
|
+
// enumerating individual tokens.
|
|
16
|
+
//
|
|
17
|
+
// Brand sets preset primary/accent palettes, font-family, and border-radius style.
|
|
18
|
+
// Custom color params override those presets (or generate new palettes for secondary).
|
|
19
|
+
// Omitted params fall back to brand preset values.
|
|
20
|
+
//
|
|
21
|
+
// Border radius has 3 styles: 'rounded' (default — current token values, unchanged),
|
|
22
|
+
// 'pill' (fully rounded m/l radii, e.g. buttons/chips), and 'square' (no radius at all).
|
|
23
|
+
// When set, it overrides whatever radius style the selected brand suggests.
|
|
24
|
+
|
|
25
|
+
$config-brand: 'default' !default;
|
|
26
|
+
$config-scale: null !default;
|
|
27
|
+
$config-primary: null !default;
|
|
28
|
+
$config-secondary: null !default;
|
|
29
|
+
$config-accent: null !default;
|
|
30
|
+
$config-border-radius: null !default;
|
|
31
|
+
|
|
32
|
+
@use 'config' as cfg with (
|
|
33
|
+
$config-brand: $config-brand,
|
|
34
|
+
$config-scale: $config-scale,
|
|
35
|
+
$config-primary: $config-primary,
|
|
36
|
+
$config-secondary: $config-secondary,
|
|
37
|
+
$config-accent: $config-accent,
|
|
38
|
+
$config-border-radius: $config-border-radius
|
|
39
|
+
);
|
|
40
|
+
|
|
41
|
+
html {
|
|
42
|
+
font-size: calc(100% * #{cfg.$scale});
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
:root {
|
|
46
|
+
// ── Primary palette (only when brand or $config-primary is active) ─────────
|
|
47
|
+
// Default brand skips this block — variables.css defines primary values and
|
|
48
|
+
// re-emitting them as var() self-references would create an invalid CSS cycle.
|
|
49
|
+
@if cfg.$brand-primary-50 {
|
|
50
|
+
--tk-color-base-primary-50: #{cfg.$brand-primary-50};
|
|
51
|
+
--tk-color-base-primary-100: #{cfg.$brand-primary-100};
|
|
52
|
+
--tk-color-base-primary-200: #{cfg.$brand-primary-200};
|
|
53
|
+
--tk-color-base-primary-300: #{cfg.$brand-primary-300};
|
|
54
|
+
--tk-color-base-primary-400: #{cfg.$brand-primary-400};
|
|
55
|
+
--tk-color-base-primary-500: #{cfg.$brand-primary-500};
|
|
56
|
+
--tk-color-base-primary-600: #{cfg.$brand-primary-600};
|
|
57
|
+
--tk-color-base-primary-700: #{cfg.$brand-primary-700};
|
|
58
|
+
--tk-color-base-primary-800: #{cfg.$brand-primary-800};
|
|
59
|
+
--tk-color-base-primary-900: #{cfg.$brand-primary-900};
|
|
60
|
+
--tk-color-base-primary-950: #{cfg.$brand-primary-950};
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
// ── Accent palette (only when brand or $config-accent is active) ───────────
|
|
64
|
+
@if cfg.$brand-accent-50 {
|
|
65
|
+
--tk-color-base-accent-50: #{cfg.$brand-accent-50};
|
|
66
|
+
--tk-color-base-accent-100: #{cfg.$brand-accent-100};
|
|
67
|
+
--tk-color-base-accent-200: #{cfg.$brand-accent-200};
|
|
68
|
+
--tk-color-base-accent-300: #{cfg.$brand-accent-300};
|
|
69
|
+
--tk-color-base-accent-400: #{cfg.$brand-accent-400};
|
|
70
|
+
--tk-color-base-accent-500: #{cfg.$brand-accent-500};
|
|
71
|
+
--tk-color-base-accent-600: #{cfg.$brand-accent-600};
|
|
72
|
+
--tk-color-base-accent-700: #{cfg.$brand-accent-700};
|
|
73
|
+
--tk-color-base-accent-800: #{cfg.$brand-accent-800};
|
|
74
|
+
--tk-color-base-accent-900: #{cfg.$brand-accent-900};
|
|
75
|
+
--tk-color-base-accent-950: #{cfg.$brand-accent-950};
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
// ── Secondary palette (always emitted; defaults to surface palette) ─────────
|
|
79
|
+
--tk-color-base-secondary-50: #{cfg.$brand-secondary-50};
|
|
80
|
+
--tk-color-base-secondary-100: #{cfg.$brand-secondary-100};
|
|
81
|
+
--tk-color-base-secondary-200: #{cfg.$brand-secondary-200};
|
|
82
|
+
--tk-color-base-secondary-300: #{cfg.$brand-secondary-300};
|
|
83
|
+
--tk-color-base-secondary-400: #{cfg.$brand-secondary-400};
|
|
84
|
+
--tk-color-base-secondary-500: #{cfg.$brand-secondary-500};
|
|
85
|
+
--tk-color-base-secondary-600: #{cfg.$brand-secondary-600};
|
|
86
|
+
--tk-color-base-secondary-700: #{cfg.$brand-secondary-700};
|
|
87
|
+
--tk-color-base-secondary-800: #{cfg.$brand-secondary-800};
|
|
88
|
+
--tk-color-base-secondary-900: #{cfg.$brand-secondary-900};
|
|
89
|
+
--tk-color-base-secondary-950: #{cfg.$brand-secondary-950};
|
|
90
|
+
|
|
91
|
+
// ── Typography ─────────────────────────────────────────────────────────────
|
|
92
|
+
--tk-font-family: #{cfg.$brand-font-family};
|
|
93
|
+
|
|
94
|
+
// ── Brand-adaptive border radius ───────────────────────────────────────────
|
|
95
|
+
// Use these tokens where you want brand-style adaptation (buttons, inputs, cards).
|
|
96
|
+
// Keep --tk-borderRadius-xs/s/m/l for strict, non-adaptive values.
|
|
97
|
+
// Note: the `theme-l` step is the pill/fully-rounded slot — it resolves to
|
|
98
|
+
// --tk-borderRadius-full under every style except 'square'/'sharp'. It is NOT
|
|
99
|
+
// the adaptive counterpart of --tk-borderRadius-l; that one is `theme-xl`.
|
|
100
|
+
--tk-borderRadius-theme-xs: #{cfg.$radius-xs};
|
|
101
|
+
--tk-borderRadius-theme-s: #{cfg.$radius-s};
|
|
102
|
+
--tk-borderRadius-theme-m: #{cfg.$radius-m};
|
|
103
|
+
--tk-borderRadius-theme-l: #{cfg.$radius-l};
|
|
104
|
+
--tk-borderRadius-theme-xl: #{cfg.$radius-xl};
|
|
105
|
+
}
|
package/styles/variables.css
CHANGED
|
@@ -68,16 +68,6 @@ declare class AutocompleteComponent<T = unknown> implements ControlValueAccessor
|
|
|
68
68
|
* Allows usage with the syntax: `[(model)]="myValue"`.
|
|
69
69
|
*/
|
|
70
70
|
model: _angular_core.ModelSignal<AutocompleteValue<T> | undefined>;
|
|
71
|
-
/**
|
|
72
|
-
* @event modelChange
|
|
73
|
-
* @description
|
|
74
|
-
* Emits whenever the value changes.
|
|
75
|
-
* Payload: the selected item(s) of type `AutocompleteValue<T>`.
|
|
76
|
-
*
|
|
77
|
-
* @example
|
|
78
|
-
* <tk-autocomplete (modelChange)="onChange($event)"></tk-autocomplete>
|
|
79
|
-
*/
|
|
80
|
-
modelChange: _angular_core.OutputEmitterRef<AutocompleteValue<T>>;
|
|
81
71
|
private onChangeFn;
|
|
82
72
|
private onTouchedFn;
|
|
83
73
|
private readonly init;
|
|
@@ -121,7 +111,8 @@ declare class AutocompleteComponent<T = unknown> implements ControlValueAccessor
|
|
|
121
111
|
* @method handleChange
|
|
122
112
|
* @description
|
|
123
113
|
* Handles value changes from the autocomplete component.
|
|
124
|
-
* Updates Angular Forms
|
|
114
|
+
* Updates Angular Forms and Signals. `model.set()` emits the model's
|
|
115
|
+
* auto-generated `modelChange` output — no separate emit needed.
|
|
125
116
|
*
|
|
126
117
|
* @param {AutocompleteValue<T>} value - The new selected value(s).
|
|
127
118
|
*/
|
|
@@ -150,7 +141,7 @@ declare class AutocompleteComponent<T = unknown> implements ControlValueAccessor
|
|
|
150
141
|
*/
|
|
151
142
|
get effectiveControl(): FormControl | undefined;
|
|
152
143
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AutocompleteComponent<any>, never>;
|
|
153
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AutocompleteComponent<any>, "tk-autocomplete", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "control": { "alias": "control"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "model": { "alias": "model"; "required": false; "isSignal": true; }; }, { "model": "modelChange";
|
|
144
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AutocompleteComponent<any>, "tk-autocomplete", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "control": { "alias": "control"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "model": { "alias": "model"; "required": false; "isSignal": true; }; }, { "model": "modelChange"; }, never, never, true, never>;
|
|
154
145
|
}
|
|
155
146
|
|
|
156
147
|
export { AutocompleteComponent };
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import * as _angular_core from '@angular/core';
|
|
2
|
+
|
|
3
|
+
type AvatarVariant = 'text' | 'icon' | 'image';
|
|
4
|
+
type AvatarSeverity = 'secondary' | 'primary' | 'contrast';
|
|
5
|
+
type AvatarSize = 's' | 'm' | 'l' | 'xl';
|
|
6
|
+
/**
|
|
7
|
+
* Maximum number of characters rendered by the `'text'` variant. This variant is
|
|
8
|
+
* designed for initials (e.g. `'AB'`); longer strings break the layout at every
|
|
9
|
+
* size, so `value` is always truncated to this length rather than allowed to overflow.
|
|
10
|
+
*/
|
|
11
|
+
declare const AVATAR_TEXT_MAX_LENGTH = 2;
|
|
12
|
+
/**
|
|
13
|
+
* @component AvatarComponent
|
|
14
|
+
* @description
|
|
15
|
+
* A component used to represent a user, entity, or placeholder with initials, an icon, or an image.
|
|
16
|
+
*
|
|
17
|
+
* This component supports:
|
|
18
|
+
* - `variant`: What the avatar displays. Options: `'text' | 'icon' | 'image'`.
|
|
19
|
+
* - `severity`: The color scheme of the avatar. Options: `'secondary' | 'primary' | 'contrast'`. Ignored when `variant` is `'image'`.
|
|
20
|
+
* - `size`: The size of the avatar. Options: `'s' | 'm' | 'l' | 'xl'`.
|
|
21
|
+
* - `value`: The initials to display for the `'text'` variant. Limited to 2 characters — longer values are truncated.
|
|
22
|
+
* - `icon`: The icon name to display for the `'icon'` variant, rendered via `tk-icon`.
|
|
23
|
+
* - `image` / `alt`: The image source and accessible text for the `'image'` variant.
|
|
24
|
+
* - `ariaLabel`: The accessible name for the `'text'` and `'icon'` variants.
|
|
25
|
+
*
|
|
26
|
+
* @usage
|
|
27
|
+
* ### Basic Usage
|
|
28
|
+
* ```html
|
|
29
|
+
* <tk-avatar variant="text" value="AB" severity="primary" size="m" ariaLabel="Ana Bermúdez"></tk-avatar>
|
|
30
|
+
* <tk-avatar variant="icon" icon="user" severity="secondary" size="m" ariaLabel="Usuario sin foto"></tk-avatar>
|
|
31
|
+
* <tk-avatar variant="image" image="/assets/avatar.png" alt="Ana Bermúdez" size="m"></tk-avatar>
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
declare class AvatarComponent {
|
|
35
|
+
/**
|
|
36
|
+
* What the avatar displays.
|
|
37
|
+
* @default 'text'
|
|
38
|
+
*/
|
|
39
|
+
variant: _angular_core.InputSignal<AvatarVariant>;
|
|
40
|
+
/**
|
|
41
|
+
* The color scheme of the avatar. Ignored when `variant` is `'image'`.
|
|
42
|
+
* @default 'secondary'
|
|
43
|
+
*/
|
|
44
|
+
severity: _angular_core.InputSignal<AvatarSeverity>;
|
|
45
|
+
/**
|
|
46
|
+
* The size of the avatar.
|
|
47
|
+
* @default 'm'
|
|
48
|
+
*/
|
|
49
|
+
size: _angular_core.InputSignal<AvatarSize>;
|
|
50
|
+
/**
|
|
51
|
+
* The initials to display. Only used when `variant` is `'text'`.
|
|
52
|
+
*
|
|
53
|
+
* Limited to {@link AVATAR_TEXT_MAX_LENGTH} characters — this variant is meant
|
|
54
|
+
* for initials (e.g. `'AB'`), not arbitrary text. Longer values are silently
|
|
55
|
+
* truncated (see `displayValue`) since they overflow the avatar at every size.
|
|
56
|
+
*/
|
|
57
|
+
value: _angular_core.InputSignal<string>;
|
|
58
|
+
/** The icon name to display, forwarded to `tk-icon`. Only used when `variant` is `'icon'`. */
|
|
59
|
+
icon: _angular_core.InputSignal<string>;
|
|
60
|
+
/** The image source. Only used when `variant` is `'image'`. */
|
|
61
|
+
image: _angular_core.InputSignal<string>;
|
|
62
|
+
/** The accessible alt text for the image. Only used when `variant` is `'image'`. */
|
|
63
|
+
alt: _angular_core.InputSignal<string>;
|
|
64
|
+
/**
|
|
65
|
+
* The accessible name announced by screen readers, for the `'text'` and
|
|
66
|
+
* `'icon'` variants. Should be the entity the avatar stands for (e.g. the
|
|
67
|
+
* user's full name), not a description of the graphic.
|
|
68
|
+
*
|
|
69
|
+
* Always worth setting: neither variant carries a meaningful name on its own —
|
|
70
|
+
* `'text'` would otherwise announce bare initials and `'icon'` the raw icon
|
|
71
|
+
* name. The `'image'` variant ignores this input and uses `alt` instead,
|
|
72
|
+
* since its `<img>` already provides the accessible name.
|
|
73
|
+
*/
|
|
74
|
+
ariaLabel: _angular_core.InputSignal<string>;
|
|
75
|
+
/**
|
|
76
|
+
* The `value` truncated to {@link AVATAR_TEXT_MAX_LENGTH} characters. This is
|
|
77
|
+
* what actually gets rendered for the `'text'` variant.
|
|
78
|
+
*/
|
|
79
|
+
displayValue: _angular_core.Signal<string>;
|
|
80
|
+
/**
|
|
81
|
+
* Whether the avatar exposes itself as a labelled image to assistive tech.
|
|
82
|
+
* True for every variant except `'image'`, which is excluded because its
|
|
83
|
+
* `<img [alt]>` already carries the accessible name — adding `role="img"`
|
|
84
|
+
* plus a label on the wrapper too would announce the avatar twice.
|
|
85
|
+
*/
|
|
86
|
+
isLabelled: _angular_core.Signal<boolean>;
|
|
87
|
+
/**
|
|
88
|
+
* The accessible name actually rendered for the `'text'` and `'icon'`
|
|
89
|
+
* variants. Falls back to the displayed initials or the icon name when
|
|
90
|
+
* `ariaLabel` is not provided, so the avatar is never fully silent.
|
|
91
|
+
*/
|
|
92
|
+
accessibleLabel: _angular_core.Signal<string>;
|
|
93
|
+
/**
|
|
94
|
+
* Computed host class (BEM block + modifiers) combining `variant` and `size`
|
|
95
|
+
* always, plus `severity` unless `variant` is `'image'` (severity doesn't
|
|
96
|
+
* apply to images).
|
|
97
|
+
*/
|
|
98
|
+
hostClass: _angular_core.Signal<string>;
|
|
99
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AvatarComponent, never>;
|
|
100
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AvatarComponent, "tk-avatar", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "severity": { "alias": "severity"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "image": { "alias": "image"; "required": false; "isSignal": true; }; "alt": { "alias": "alt"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
export { AVATAR_TEXT_MAX_LENGTH, AvatarComponent };
|
|
104
|
+
export type { AvatarSeverity, AvatarSize, AvatarVariant };
|
|
@@ -58,6 +58,12 @@ declare class CheckboxComponent implements ControlValueAccessor, OnInit {
|
|
|
58
58
|
* Message to display when the control is invalid and touched.
|
|
59
59
|
*/
|
|
60
60
|
errorMessage: _angular_core.InputSignal<string>;
|
|
61
|
+
/**
|
|
62
|
+
* @property {InputSignal<string>} hint
|
|
63
|
+
* @description
|
|
64
|
+
* Hint text to display below the checkbox when there is no error.
|
|
65
|
+
*/
|
|
66
|
+
hint: _angular_core.InputSignal<string>;
|
|
61
67
|
/**
|
|
62
68
|
* @property {ModelSignal<boolean>} indeterminate
|
|
63
69
|
* @description
|
|
@@ -101,7 +107,7 @@ declare class CheckboxComponent implements ControlValueAccessor, OnInit {
|
|
|
101
107
|
*/
|
|
102
108
|
onBlur(): void;
|
|
103
109
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CheckboxComponent, never>;
|
|
104
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CheckboxComponent, "tk-checkbox", never, { "model": { "alias": "model"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "inputId": { "alias": "inputId"; "required": false; "isSignal": true; }; "binary": { "alias": "binary"; "required": false; "isSignal": true; }; "control": { "alias": "control"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "indeterminate": { "alias": "indeterminate"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "model": "modelChange"; "indeterminate": "indeterminateChange"; "disabled": "disabledChange"; }, never, never, true, never>;
|
|
110
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CheckboxComponent, "tk-checkbox", never, { "model": { "alias": "model"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "inputId": { "alias": "inputId"; "required": false; "isSignal": true; }; "binary": { "alias": "binary"; "required": false; "isSignal": true; }; "control": { "alias": "control"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "indeterminate": { "alias": "indeterminate"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "model": "modelChange"; "indeterminate": "indeterminateChange"; "disabled": "disabledChange"; }, never, never, true, never>;
|
|
105
111
|
}
|
|
106
112
|
|
|
107
113
|
export { CheckboxComponent };
|
|
@@ -213,6 +213,16 @@ declare class DatePickerComponent implements OnInit, ControlValueAccessor, Valid
|
|
|
213
213
|
* <tk-date-picker [minDate]="minDate" errorMessage="Date is required" />
|
|
214
214
|
*/
|
|
215
215
|
errorMessage: _angular_core.InputSignal<string | null>;
|
|
216
|
+
/**
|
|
217
|
+
* @description
|
|
218
|
+
* Hint text rendered beneath the field when there is no error to show.
|
|
219
|
+
*
|
|
220
|
+
* @default null
|
|
221
|
+
*
|
|
222
|
+
* @example
|
|
223
|
+
* <tk-date-picker hint="Format: dd/mm/yyyy" />
|
|
224
|
+
*/
|
|
225
|
+
hint: _angular_core.InputSignal<string | null>;
|
|
216
226
|
/**
|
|
217
227
|
* @description
|
|
218
228
|
* Optional external `FormControl` to bind when not using the standard
|
|
@@ -312,7 +322,7 @@ declare class DatePickerComponent implements OnInit, ControlValueAccessor, Valid
|
|
|
312
322
|
*/
|
|
313
323
|
private applyTimeCascading;
|
|
314
324
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DatePickerComponent, never>;
|
|
315
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DatePickerComponent, "tk-date-picker", never, { "required": { "alias": "required"; "required": false; "isSignal": true; }; "selectionMode": { "alias": "selectionMode"; "required": false; "isSignal": true; }; "showClear": { "alias": "showClear"; "required": false; "isSignal": true; }; "showIcon": { "alias": "showIcon"; "required": false; "isSignal": true; }; "dateFormat": { "alias": "dateFormat"; "required": false; "isSignal": true; }; "stepHour": { "alias": "stepHour"; "required": false; "isSignal": true; }; "stepMinute": { "alias": "stepMinute"; "required": false; "isSignal": true; }; "stepSecond": { "alias": "stepSecond"; "required": false; "isSignal": true; }; "showSeconds": { "alias": "showSeconds"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "inline": { "alias": "inline"; "required": false; "isSignal": true; }; "showTime": { "alias": "showTime"; "required": false; "isSignal": true; }; "hourFormat": { "alias": "hourFormat"; "required": false; "isSignal": true; }; "appendTo": { "alias": "appendTo"; "required": false; "isSignal": true; }; "baseZIndex": { "alias": "baseZIndex"; "required": false; "isSignal": true; }; "maxDate": { "alias": "maxDate"; "required": false; "isSignal": true; }; "minDate": { "alias": "minDate"; "required": false; "isSignal": true; }; "labelText": { "alias": "labelText"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "control": { "alias": "control"; "required": false; "isSignal": true; }; "modelValue": { "alias": "modelValue"; "required": false; "isSignal": true; }; }, { "modelValue": "modelValueChange"; "handleSelect": "handleSelect"; "handleClear": "handleClear"; }, never, never, true, never>;
|
|
325
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DatePickerComponent, "tk-date-picker", never, { "required": { "alias": "required"; "required": false; "isSignal": true; }; "selectionMode": { "alias": "selectionMode"; "required": false; "isSignal": true; }; "showClear": { "alias": "showClear"; "required": false; "isSignal": true; }; "showIcon": { "alias": "showIcon"; "required": false; "isSignal": true; }; "dateFormat": { "alias": "dateFormat"; "required": false; "isSignal": true; }; "stepHour": { "alias": "stepHour"; "required": false; "isSignal": true; }; "stepMinute": { "alias": "stepMinute"; "required": false; "isSignal": true; }; "stepSecond": { "alias": "stepSecond"; "required": false; "isSignal": true; }; "showSeconds": { "alias": "showSeconds"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "inline": { "alias": "inline"; "required": false; "isSignal": true; }; "showTime": { "alias": "showTime"; "required": false; "isSignal": true; }; "hourFormat": { "alias": "hourFormat"; "required": false; "isSignal": true; }; "appendTo": { "alias": "appendTo"; "required": false; "isSignal": true; }; "baseZIndex": { "alias": "baseZIndex"; "required": false; "isSignal": true; }; "maxDate": { "alias": "maxDate"; "required": false; "isSignal": true; }; "minDate": { "alias": "minDate"; "required": false; "isSignal": true; }; "labelText": { "alias": "labelText"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "control": { "alias": "control"; "required": false; "isSignal": true; }; "modelValue": { "alias": "modelValue"; "required": false; "isSignal": true; }; }, { "modelValue": "modelValueChange"; "handleSelect": "handleSelect"; "handleClear": "handleClear"; }, never, never, true, never>;
|
|
316
326
|
}
|
|
317
327
|
|
|
318
328
|
export { DatePickerComponent };
|
|
@@ -38,6 +38,12 @@ declare class InputNumberComponent implements ControlValueAccessor, OnInit {
|
|
|
38
38
|
* Message to display when the control is invalid and touched.
|
|
39
39
|
*/
|
|
40
40
|
errorMessage: _angular_core.InputSignal<string>;
|
|
41
|
+
/**
|
|
42
|
+
* @property {InputSignal<string>} hint
|
|
43
|
+
* @description
|
|
44
|
+
* Hint text to display below the input.
|
|
45
|
+
*/
|
|
46
|
+
hint: _angular_core.InputSignal<string>;
|
|
41
47
|
/**
|
|
42
48
|
* @property {InputSignal<boolean>} showButtons
|
|
43
49
|
* @description
|
|
@@ -45,6 +51,34 @@ declare class InputNumberComponent implements ControlValueAccessor, OnInit {
|
|
|
45
51
|
* @default false
|
|
46
52
|
*/
|
|
47
53
|
showButtons: _angular_core.InputSignal<boolean>;
|
|
54
|
+
/**
|
|
55
|
+
* @property {InputSignal<boolean>} useGrouping
|
|
56
|
+
* @description
|
|
57
|
+
* Whether to display thousands separators.
|
|
58
|
+
* @default false
|
|
59
|
+
*/
|
|
60
|
+
useGrouping: _angular_core.InputSignal<boolean>;
|
|
61
|
+
/**
|
|
62
|
+
* @property {InputSignal<number | null>} minFractionDigits
|
|
63
|
+
* @description
|
|
64
|
+
* Minimum number of decimal digits allowed.
|
|
65
|
+
*/
|
|
66
|
+
minFractionDigits: _angular_core.InputSignal<number | null>;
|
|
67
|
+
/**
|
|
68
|
+
* @property {InputSignal<number | null>} maxFractionDigits
|
|
69
|
+
* @description
|
|
70
|
+
* Maximum number of decimal digits allowed. Left unset (`null`) by
|
|
71
|
+
* default — integer entry only, matching prior behavior — and safe for
|
|
72
|
+
* already-bound decimal values (Intl.NumberFormat applies its own default
|
|
73
|
+
* of up to 3 decimal places for display when this isn't set, so no
|
|
74
|
+
* rounding happens). PrimeNG's InputNumber only lets the user *type* a new
|
|
75
|
+
* decimal separator when this is explicitly set to a value greater than 0
|
|
76
|
+
* — set it (e.g. `[maxFractionDigits]="2"`) to accept typed decimal
|
|
77
|
+
* input. Set to 0 only if you deliberately want to force integer-only
|
|
78
|
+
* display too — it rounds any already-bound decimal value.
|
|
79
|
+
* @default null
|
|
80
|
+
*/
|
|
81
|
+
maxFractionDigits: _angular_core.InputSignal<number | null>;
|
|
48
82
|
/**
|
|
49
83
|
* @property {boolean} disabled
|
|
50
84
|
* @description
|
|
@@ -98,7 +132,7 @@ declare class InputNumberComponent implements ControlValueAccessor, OnInit {
|
|
|
98
132
|
*/
|
|
99
133
|
onBlur(): void;
|
|
100
134
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<InputNumberComponent, never>;
|
|
101
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<InputNumberComponent, "tk-input-number", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "control": { "alias": "control"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "showButtons": { "alias": "showButtons"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
|
|
135
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<InputNumberComponent, "tk-input-number", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "control": { "alias": "control"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "showButtons": { "alias": "showButtons"; "required": false; "isSignal": true; }; "useGrouping": { "alias": "useGrouping"; "required": false; "isSignal": true; }; "minFractionDigits": { "alias": "minFractionDigits"; "required": false; "isSignal": true; }; "maxFractionDigits": { "alias": "maxFractionDigits"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
|
|
102
136
|
}
|
|
103
137
|
|
|
104
138
|
export { InputNumberComponent };
|
|
@@ -53,6 +53,12 @@ declare class RadioButtonComponent implements ControlValueAccessor, OnInit {
|
|
|
53
53
|
* Message to display when the control is invalid and touched.
|
|
54
54
|
*/
|
|
55
55
|
errorMessage: _angular_core.InputSignal<string>;
|
|
56
|
+
/**
|
|
57
|
+
* @property {InputSignal<string>} hint
|
|
58
|
+
* @description
|
|
59
|
+
* Hint text to display below the radio button when there is no error.
|
|
60
|
+
*/
|
|
61
|
+
hint: _angular_core.InputSignal<string>;
|
|
56
62
|
/**
|
|
57
63
|
* @property {ModelSignal<boolean>} disabled
|
|
58
64
|
* @description
|
|
@@ -94,7 +100,7 @@ declare class RadioButtonComponent implements ControlValueAccessor, OnInit {
|
|
|
94
100
|
*/
|
|
95
101
|
onBlur(): void;
|
|
96
102
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<RadioButtonComponent, never>;
|
|
97
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<RadioButtonComponent, "tk-radio-button", never, { "model": { "alias": "model"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "inputId": { "alias": "inputId"; "required": false; "isSignal": true; }; "control": { "alias": "control"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "model": "modelChange"; "disabled": "disabledChange"; }, never, never, true, never>;
|
|
103
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<RadioButtonComponent, "tk-radio-button", never, { "model": { "alias": "model"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "inputId": { "alias": "inputId"; "required": false; "isSignal": true; }; "control": { "alias": "control"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "model": "modelChange"; "disabled": "disabledChange"; }, never, never, true, never>;
|
|
98
104
|
}
|
|
99
105
|
|
|
100
106
|
export { RadioButtonComponent };
|