yukit-web 0.0.28 → 0.1.0
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/.npm/_cacache/content-v2/sha512/{59/7e/59a471059322312370a187e6abe8182a88f1cb119661081bae8eb13a36d66346f6ed768463df6a24917de7ce13b75466ed462894c31bbf4c4681f09f44bd → 18/b5/a119ec0bb8ef0ba5bc253c80a9abc2f385f5d58a10c2723ea6021cd2200f37dff8f097b60c9109e40870f68f106c3cbf085783377db49c41c33696cef968} +1 -1
- package/.npm/_cacache/index-v5/64/dc/73c7a26f2e6eb0c711133d96c247da5ecf0eba708cd37c450a7b3c7cb488 +1 -1
- package/.npm/_logs/{2026-09-30T09_49_15_417Z-debug-0.log → 2026-09-30T14_41_18_455Z-debug-0.log} +10 -10
- package/.npm/_logs/{2026-09-30T09_49_15_907Z-debug-0.log → 2026-09-30T14_41_18_921Z-debug-0.log} +2 -2
- package/README.md +15 -3
- package/fesm2022/yukit-web.mjs +126 -51
- package/fesm2022/yukit-web.mjs.map +1 -1
- package/package.json +1 -1
- package/src/lib/theme/tokens/color.css +477 -323
- package/src/lib/theme/tokens/component-colors.css +90 -97
- package/src/lib/theme/tokens/typography.css +11 -3
- package/types/yukit-web.d.ts +29 -12
|
@@ -1,95 +1,133 @@
|
|
|
1
1
|
[data-yuw-color='primary'] {
|
|
2
|
-
--yuw-accent: var(--
|
|
3
|
-
--yuw-accent-foreground: var(--
|
|
4
|
-
--secondary: var(--
|
|
5
|
-
--secondary-foreground: var(--
|
|
6
|
-
--yuw-callout-bg: var(--
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
[data-yuw-color='primary'] button.bg-primary:not(:disabled) {
|
|
10
|
-
background: var(--gradient-primary-button);
|
|
11
|
-
border: none;
|
|
2
|
+
--yuw-accent: var(--primary-fill-cta);
|
|
3
|
+
--yuw-accent-foreground: var(--primary-on-fill);
|
|
4
|
+
--secondary: var(--primary-subtle-hover);
|
|
5
|
+
--secondary-foreground: var(--primary-text);
|
|
6
|
+
--yuw-callout-bg: var(--primary-subtle);
|
|
12
7
|
}
|
|
13
8
|
|
|
14
9
|
[data-yuw-color='primary'] button.bg-primary:not(:disabled):hover {
|
|
15
|
-
background: var(--
|
|
10
|
+
background: var(--primary-fill-hover);
|
|
16
11
|
}
|
|
17
12
|
|
|
18
13
|
[data-yuw-color='secondary'] {
|
|
14
|
+
--yuw-accent: var(--secondary-fill);
|
|
15
|
+
--yuw-accent-foreground: var(--secondary-on-fill);
|
|
16
|
+
--secondary: var(--secondary-subtle-hover);
|
|
17
|
+
--secondary-foreground: var(--secondary-text);
|
|
18
|
+
--yuw-callout-bg: var(--secondary-subtle);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
[data-yuw-color='secondary'] button.bg-primary:not(:disabled):hover {
|
|
22
|
+
background: var(--secondary-fill-hover);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
[data-yuw-color='neutral'] {
|
|
19
26
|
--yuw-accent: var(--neutrals-element-high);
|
|
20
27
|
--yuw-accent-foreground: var(--background);
|
|
21
|
-
--secondary: var(--neutrals-
|
|
22
|
-
--secondary-foreground: var(--neutrals-
|
|
28
|
+
--secondary: var(--neutrals-fill);
|
|
29
|
+
--secondary-foreground: var(--neutrals-element-high);
|
|
23
30
|
--yuw-callout-bg: var(--neutrals-overlay);
|
|
24
31
|
}
|
|
25
32
|
|
|
26
|
-
[data-yuw-color='
|
|
27
|
-
background: var(--
|
|
28
|
-
border: none;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
[data-yuw-color='secondary'] button.bg-primary:not(:disabled):hover {
|
|
32
|
-
background: var(--neutrals-element-high-gradient-hover);
|
|
33
|
+
[data-yuw-color='neutral'] button.bg-primary:not(:disabled):hover {
|
|
34
|
+
background: var(--gray-11);
|
|
33
35
|
}
|
|
34
36
|
|
|
35
37
|
[data-yuw-color='destructive'] {
|
|
36
|
-
--yuw-accent: var(--
|
|
37
|
-
--yuw-accent-foreground: var(--
|
|
38
|
-
--secondary: var(--
|
|
39
|
-
--secondary-foreground: var(--
|
|
40
|
-
--yuw-callout-bg: var(--
|
|
38
|
+
--yuw-accent: var(--error-fill);
|
|
39
|
+
--yuw-accent-foreground: var(--error-on-fill);
|
|
40
|
+
--secondary: var(--error-subtle-hover);
|
|
41
|
+
--secondary-foreground: var(--error-text);
|
|
42
|
+
--yuw-callout-bg: var(--error-subtle);
|
|
41
43
|
}
|
|
42
44
|
|
|
43
45
|
[data-yuw-color='destructive'] button.bg-primary:not(:disabled):hover {
|
|
44
|
-
background: var(--
|
|
46
|
+
background: var(--error-fill-hover);
|
|
45
47
|
}
|
|
46
48
|
|
|
47
49
|
[data-yuw-color='success'] {
|
|
48
|
-
--yuw-accent: var(--
|
|
49
|
-
--yuw-accent-foreground: var(--
|
|
50
|
-
--secondary: var(--
|
|
51
|
-
--secondary-foreground: var(--
|
|
52
|
-
--yuw-callout-bg: var(--
|
|
50
|
+
--yuw-accent: var(--success-fill);
|
|
51
|
+
--yuw-accent-foreground: var(--success-on-fill);
|
|
52
|
+
--secondary: var(--success-subtle-hover);
|
|
53
|
+
--secondary-foreground: var(--success-text);
|
|
54
|
+
--yuw-callout-bg: var(--success-subtle);
|
|
53
55
|
}
|
|
54
56
|
|
|
55
57
|
[data-yuw-color='success'] button.bg-primary:not(:disabled):hover {
|
|
56
|
-
background: var(--
|
|
58
|
+
background: var(--success-fill-hover);
|
|
57
59
|
}
|
|
58
60
|
|
|
59
61
|
[data-yuw-color='warning'] {
|
|
60
|
-
--yuw-accent: var(--
|
|
61
|
-
--yuw-accent-foreground: var(--
|
|
62
|
-
--secondary: var(--
|
|
63
|
-
--secondary-foreground: var(--
|
|
64
|
-
--yuw-callout-bg: var(--
|
|
62
|
+
--yuw-accent: var(--warning-fill);
|
|
63
|
+
--yuw-accent-foreground: var(--warning-on-fill);
|
|
64
|
+
--secondary: var(--warning-subtle-hover);
|
|
65
|
+
--secondary-foreground: var(--warning-text);
|
|
66
|
+
--yuw-callout-bg: var(--warning-subtle);
|
|
65
67
|
}
|
|
66
68
|
|
|
67
69
|
[data-yuw-color='warning'] button.bg-primary:not(:disabled):hover {
|
|
68
|
-
background: var(--
|
|
70
|
+
background: var(--warning-fill-hover);
|
|
69
71
|
}
|
|
70
72
|
|
|
71
73
|
[data-yuw-color='info'] {
|
|
72
|
-
--yuw-accent: var(--
|
|
73
|
-
--yuw-accent-foreground: var(--
|
|
74
|
-
--secondary: var(--
|
|
75
|
-
--secondary-foreground: var(--
|
|
76
|
-
--yuw-callout-bg: var(--
|
|
74
|
+
--yuw-accent: var(--info-fill);
|
|
75
|
+
--yuw-accent-foreground: var(--info-on-fill);
|
|
76
|
+
--secondary: var(--info-subtle-hover);
|
|
77
|
+
--secondary-foreground: var(--info-text);
|
|
78
|
+
--yuw-callout-bg: var(--info-subtle);
|
|
77
79
|
}
|
|
78
80
|
|
|
79
81
|
[data-yuw-color='info'] button.bg-primary:not(:disabled):hover {
|
|
80
|
-
background: var(--
|
|
82
|
+
background: var(--info-fill-hover);
|
|
81
83
|
}
|
|
82
84
|
|
|
83
85
|
[data-yuw-color='violet'] {
|
|
84
|
-
--yuw-accent: var(--
|
|
85
|
-
--yuw-accent-foreground: var(--
|
|
86
|
-
--secondary: var(--
|
|
87
|
-
--secondary-foreground: var(--
|
|
88
|
-
--yuw-callout-bg: var(--
|
|
86
|
+
--yuw-accent: var(--violet-fill);
|
|
87
|
+
--yuw-accent-foreground: var(--violet-on-fill);
|
|
88
|
+
--secondary: var(--violet-subtle-hover);
|
|
89
|
+
--secondary-foreground: var(--violet-text);
|
|
90
|
+
--yuw-callout-bg: var(--violet-subtle);
|
|
89
91
|
}
|
|
90
92
|
|
|
91
93
|
[data-yuw-color='violet'] button.bg-primary:not(:disabled):hover {
|
|
92
|
-
background: var(--
|
|
94
|
+
background: var(--violet-fill-hover);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
[data-yuw-color='orange'] {
|
|
98
|
+
--yuw-accent: var(--orange-fill);
|
|
99
|
+
--yuw-accent-foreground: var(--orange-on-fill);
|
|
100
|
+
--secondary: var(--orange-subtle-hover);
|
|
101
|
+
--secondary-foreground: var(--orange-text);
|
|
102
|
+
--yuw-callout-bg: var(--orange-subtle);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
[data-yuw-color='orange'] button.bg-primary:not(:disabled):hover {
|
|
106
|
+
background: var(--orange-fill-hover);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
[data-yuw-color='pink'] {
|
|
110
|
+
--yuw-accent: var(--pink-fill);
|
|
111
|
+
--yuw-accent-foreground: var(--pink-on-fill);
|
|
112
|
+
--secondary: var(--pink-subtle-hover);
|
|
113
|
+
--secondary-foreground: var(--pink-text);
|
|
114
|
+
--yuw-callout-bg: var(--pink-subtle);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
[data-yuw-color='pink'] button.bg-primary:not(:disabled):hover {
|
|
118
|
+
background: var(--pink-fill-hover);
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
[data-yuw-color='teal'] {
|
|
122
|
+
--yuw-accent: var(--teal-fill);
|
|
123
|
+
--yuw-accent-foreground: var(--teal-on-fill);
|
|
124
|
+
--secondary: var(--teal-subtle-hover);
|
|
125
|
+
--secondary-foreground: var(--teal-text);
|
|
126
|
+
--yuw-callout-bg: var(--teal-subtle);
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
[data-yuw-color='teal'] button.bg-primary:not(:disabled):hover {
|
|
130
|
+
background: var(--teal-fill-hover);
|
|
93
131
|
}
|
|
94
132
|
|
|
95
133
|
[data-yuw-color='muted'] {
|
|
@@ -122,7 +160,7 @@
|
|
|
122
160
|
--muted: color-mix(in oklab, var(--yuw-accent) 5%, transparent);
|
|
123
161
|
}
|
|
124
162
|
|
|
125
|
-
[data-yuw-color='
|
|
163
|
+
[data-yuw-color='neutral'] {
|
|
126
164
|
--border: var(--neutrals-outline-accent);
|
|
127
165
|
}
|
|
128
166
|
|
|
@@ -130,53 +168,8 @@
|
|
|
130
168
|
--ring: var(--yuw-accent);
|
|
131
169
|
}
|
|
132
170
|
|
|
133
|
-
.dark [data-yuw-color='
|
|
134
|
-
--yuw-accent: var(--accent-primary-dark);
|
|
135
|
-
--secondary: var(--sidebar-accent);
|
|
136
|
-
--secondary-foreground: var(--sidebar-accent-foreground);
|
|
137
|
-
--yuw-callout-bg: var(--accent-primary-lighter-2);
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
.dark [data-yuw-color='secondary'] {
|
|
141
|
-
--secondary: var(--neutrals-element-low);
|
|
142
|
-
--secondary-foreground: var(--neutrals-overlay-accent);
|
|
171
|
+
.dark [data-yuw-color='neutral'] {
|
|
143
172
|
--input: color-mix(in oklab, var(--yuw-accent) 40%, transparent);
|
|
144
|
-
--yuw-callout-bg: var(--neutrals-overlay);
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
.dark [data-yuw-color='destructive'] {
|
|
148
|
-
--yuw-accent: var(--feedback-error-dark);
|
|
149
|
-
--secondary: var(--feedback-error-lighter-2);
|
|
150
|
-
--secondary-foreground: var(--neutrals-white);
|
|
151
|
-
--yuw-callout-bg: var(--feedback-error-lighter-2);
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
.dark [data-yuw-color='success'] {
|
|
155
|
-
--yuw-accent: var(--feedback-success-dark);
|
|
156
|
-
--secondary: var(--feedback-success-lighter-2);
|
|
157
|
-
--secondary-foreground: var(--neutrals-white);
|
|
158
|
-
--yuw-callout-bg: var(--feedback-success-lighter-2);
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
.dark [data-yuw-color='warning'] {
|
|
162
|
-
--yuw-accent: var(--feedback-warning-dark);
|
|
163
|
-
--secondary: var(--feedback-warning-lighter-2);
|
|
164
|
-
--secondary-foreground: var(--neutrals-white);
|
|
165
|
-
--yuw-callout-bg: var(--feedback-warning-lighter-2);
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
.dark [data-yuw-color='info'] {
|
|
169
|
-
--yuw-accent: var(--feedback-info-dark);
|
|
170
|
-
--secondary: var(--feedback-info-lighter-2);
|
|
171
|
-
--secondary-foreground: var(--neutrals-white);
|
|
172
|
-
--yuw-callout-bg: var(--feedback-info-lighter-2);
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
.dark [data-yuw-color='violet'] {
|
|
176
|
-
--yuw-accent-foreground: var(--neutrals-white);
|
|
177
|
-
--secondary: var(--feedback-additional-dark);
|
|
178
|
-
--secondary-foreground: var(--neutrals-white);
|
|
179
|
-
--yuw-callout-bg: var(--feedback-additional-lighter-2);
|
|
180
173
|
}
|
|
181
174
|
|
|
182
175
|
.dark [data-yuw-color] button.bg-background:not(:disabled):hover {
|
|
@@ -1,7 +1,15 @@
|
|
|
1
|
+
@font-face {
|
|
2
|
+
font-family: GeistFont;
|
|
3
|
+
src: url('font/Geist-Variable.woff2') format('woff2');
|
|
4
|
+
font-weight: 100 900;
|
|
5
|
+
font-style: normal;
|
|
6
|
+
}
|
|
7
|
+
|
|
1
8
|
:root {
|
|
2
|
-
--font-sans:
|
|
3
|
-
|
|
4
|
-
|
|
9
|
+
--font-sans:
|
|
10
|
+
'GeistFont', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans',
|
|
11
|
+
sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji';
|
|
12
|
+
--font-mono: 'GeistFont', ui-monospace, SFMono-Regular, 'SF Mono', Menlo, Consolas, 'Liberation Mono', monospace;
|
|
5
13
|
|
|
6
14
|
/* Type scale — web (default) */
|
|
7
15
|
--text-display-large-weight: 700; /* Bold */
|
package/types/yukit-web.d.ts
CHANGED
|
@@ -262,6 +262,8 @@ type YuwComboboxValue = string | string[] | undefined;
|
|
|
262
262
|
* - `clearAriaLabel`: When set, the clear button is shown on the single-selection control and
|
|
263
263
|
* this is its accessible name; when absent, there is no clear button. One input, one source of
|
|
264
264
|
* truth. User-facing text — the consuming app is responsible for providing it translated.
|
|
265
|
+
* - `keepValueOnEscape`: Stops Escape from clearing the selection when the list is closed, so a
|
|
266
|
+
* filter picker keeps its choices and Escape only dismisses.
|
|
265
267
|
* - `inputId`: HTML `id` for the focusable control (the search input, or the trigger button when
|
|
266
268
|
* `readonlyTrigger` is set), enabling external `<label for="...">` association.
|
|
267
269
|
* - `readonlyTrigger`: Renders control as a button showing selected label, placing search input inside popover.
|
|
@@ -279,6 +281,7 @@ type YuwComboboxValue = string | string[] | undefined;
|
|
|
279
281
|
* ```
|
|
280
282
|
*/
|
|
281
283
|
declare class YuwComboboxComponent<TData = unknown> extends YuwValueAccessorBase<YuwComboboxValue> {
|
|
284
|
+
private readonly _element;
|
|
282
285
|
private readonly _multipleBox;
|
|
283
286
|
private readonly _panel;
|
|
284
287
|
private readonly _singleBox;
|
|
@@ -287,6 +290,7 @@ declare class YuwComboboxComponent<TData = unknown> extends YuwValueAccessorBase
|
|
|
287
290
|
readonly emptyText: _angular_core.InputSignal<string | undefined>;
|
|
288
291
|
readonly inputId: _angular_core.InputSignal<string | undefined>;
|
|
289
292
|
readonly invalid: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
293
|
+
readonly keepValueOnEscape: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
290
294
|
readonly multiple: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
291
295
|
readonly options: _angular_core.InputSignal<YuwComboboxOptionDto<TData>[]>;
|
|
292
296
|
readonly placeholder: _angular_core.InputSignal<string | undefined>;
|
|
@@ -312,6 +316,7 @@ declare class YuwComboboxComponent<TData = unknown> extends YuwValueAccessorBase
|
|
|
312
316
|
protected readonly _selectedValues: _angular_core.Signal<Set<string>>;
|
|
313
317
|
protected readonly _singleValue: _angular_core.Signal<string | undefined>;
|
|
314
318
|
protected readonly _triggerClass: _angular_core.Signal<string>;
|
|
319
|
+
constructor();
|
|
315
320
|
/**
|
|
316
321
|
* Focuses the field and opens its option list. For a combobox living inside a popover or sheet:
|
|
317
322
|
* the container calls it when it opens, so the user sees the options without a second click.
|
|
@@ -320,8 +325,16 @@ declare class YuwComboboxComponent<TData = unknown> extends YuwValueAccessorBase
|
|
|
320
325
|
protected _emptyValue(): YuwComboboxValue;
|
|
321
326
|
protected _onFocusOut(event: FocusEvent): void;
|
|
322
327
|
protected onValueChange(next: YuwComboboxValue | null): void;
|
|
328
|
+
/**
|
|
329
|
+
* The brain clears the whole selection when Escape is pressed with the list closed. While
|
|
330
|
+
* `keepValueOnEscape` is on, that reset is skipped for the duration of the Escape keydown only,
|
|
331
|
+
* so the clear button and programmatic resets still work and the event keeps propagating (an
|
|
332
|
+
* enclosing popover can still close on it). Nothing is registered while the input is off, and
|
|
333
|
+
* the returned function undoes it all.
|
|
334
|
+
*/
|
|
335
|
+
private _guardEscape;
|
|
323
336
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwComboboxComponent<any>, never>;
|
|
324
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwComboboxComponent<any>, "yuw-combobox", never, { "clearAriaLabel": { "alias": "clearAriaLabel"; "required": false; "isSignal": true; }; "emptyText": { "alias": "emptyText"; "required": false; "isSignal": true; }; "inputId": { "alias": "inputId"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": true; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "readonlyTrigger": { "alias": "readonlyTrigger"; "required": false; "isSignal": true; }; "search": { "alias": "search"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "triggerAriaLabel": { "alias": "triggerAriaLabel"; "required": true; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "search": "searchChange"; "value": "valueChange"; }, ["itemTemplate"], never, true, never>;
|
|
337
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwComboboxComponent<any>, "yuw-combobox", never, { "clearAriaLabel": { "alias": "clearAriaLabel"; "required": false; "isSignal": true; }; "emptyText": { "alias": "emptyText"; "required": false; "isSignal": true; }; "inputId": { "alias": "inputId"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "keepValueOnEscape": { "alias": "keepValueOnEscape"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": true; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "readonlyTrigger": { "alias": "readonlyTrigger"; "required": false; "isSignal": true; }; "search": { "alias": "search"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "triggerAriaLabel": { "alias": "triggerAriaLabel"; "required": true; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "search": "searchChange"; "value": "valueChange"; }, ["itemTemplate"], never, true, never>;
|
|
325
338
|
}
|
|
326
339
|
|
|
327
340
|
interface YuwPageSort {
|
|
@@ -368,7 +381,7 @@ interface YuwPagedList<Filters> {
|
|
|
368
381
|
*/
|
|
369
382
|
declare function createPagedList<Filters>(options: YuwPagedListOptions<Filters>): YuwPagedList<Filters>;
|
|
370
383
|
|
|
371
|
-
type YuwColorDto = 'primary' | 'secondary' | 'destructive' | 'success' | 'warning' | 'info' | 'muted' | 'violet';
|
|
384
|
+
type YuwColorDto = 'primary' | 'secondary' | 'neutral' | 'destructive' | 'success' | 'warning' | 'info' | 'muted' | 'violet' | 'orange' | 'pink' | 'teal';
|
|
372
385
|
|
|
373
386
|
/**
|
|
374
387
|
* A single action button, rendered as a `<button>` or, when `href` is set, an `<a>`.
|
|
@@ -379,7 +392,7 @@ type YuwColorDto = 'primary' | 'secondary' | 'destructive' | 'success' | 'warnin
|
|
|
379
392
|
* Inputs:
|
|
380
393
|
* - `variant`: Button style variant (`'default'`, `'secondary'`, `'outline'`, `'destructive'`, `'ghost'`, `'link'`). Default is `'default'`.
|
|
381
394
|
* - `size`: Button size (`'default'`, `'sm'`, `'lg'`, `'icon'`, etc.). Default is `'default'`.
|
|
382
|
-
* - `color`: Brand color theme (any `YuwColorDto` value). Default is `'
|
|
395
|
+
* - `color`: Brand color theme (any `YuwColorDto` value). Default is `'neutral'`.
|
|
383
396
|
* - `disabled`: Disables button interactions.
|
|
384
397
|
* - `type`: HTML button type (`'button'`, `'submit'`, `'reset'`). Default is `'button'`.
|
|
385
398
|
* - `href`: Renders button as an anchor tag navigating to specified URL.
|
|
@@ -419,7 +432,7 @@ declare class YuwButtonComponent {
|
|
|
419
432
|
readonly size: _angular_core.InputSignal<"default" | "xs" | "sm" | "lg" | "icon" | "icon-xs" | "icon-sm" | "icon-lg" | null | undefined>;
|
|
420
433
|
readonly target: _angular_core.InputSignal<string | undefined>;
|
|
421
434
|
readonly transparent: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
422
|
-
readonly type: _angular_core.InputSignal<"button" | "
|
|
435
|
+
readonly type: _angular_core.InputSignal<"button" | "reset" | "submit">;
|
|
423
436
|
readonly userClass: _angular_core.InputSignal<string>;
|
|
424
437
|
readonly variant: _angular_core.InputSignal<"link" | "default" | "secondary" | "destructive" | "outline" | "ghost" | null | undefined>;
|
|
425
438
|
readonly yuwDropdownMenuTrigger: _angular_core.InputSignal<TemplateRef<unknown> | undefined>;
|
|
@@ -551,7 +564,7 @@ declare class YuwButtonGroupComponent {
|
|
|
551
564
|
color: YuwColorDto;
|
|
552
565
|
transparent: boolean;
|
|
553
566
|
disabled: boolean;
|
|
554
|
-
type: "button" | "
|
|
567
|
+
type: "button" | "reset" | "submit";
|
|
555
568
|
class: string;
|
|
556
569
|
id: string;
|
|
557
570
|
label?: string;
|
|
@@ -1259,7 +1272,7 @@ declare class YuwLabel extends HlmLabel {
|
|
|
1259
1272
|
|
|
1260
1273
|
/**
|
|
1261
1274
|
* Checkbox control supporting two-way boolean binding, form integration (`ngModel`, `formControlName`),
|
|
1262
|
-
* indeterminate state, and
|
|
1275
|
+
* indeterminate state, and primary styling variant.
|
|
1263
1276
|
*
|
|
1264
1277
|
* Projected content becomes the checkbox's clickable label: the control is wrapped in a `<label>`,
|
|
1265
1278
|
* so clicking the text toggles it and the text is announced as the accessible name. Without
|
|
@@ -1276,7 +1289,7 @@ declare class YuwLabel extends HlmLabel {
|
|
|
1276
1289
|
* - `ariaLabel`: Accessible name for screen readers when there's no visible label.
|
|
1277
1290
|
* - `ariaLabelledby`: ID of an external element that labels the checkbox.
|
|
1278
1291
|
* - `ariaDescribedby`: ID of an external element that describes the checkbox (hints, errors).
|
|
1279
|
-
* - `
|
|
1292
|
+
* - `primary`: Primary colour checked state. Defaults to `false` (secondary colour); set `primary` to opt in.
|
|
1280
1293
|
*
|
|
1281
1294
|
* Usage:
|
|
1282
1295
|
* ```html
|
|
@@ -1293,15 +1306,15 @@ declare class YuwCheckboxComponent extends YuwValueAccessorBase<boolean> {
|
|
|
1293
1306
|
readonly inputId: _angular_core.InputSignal<string | undefined>;
|
|
1294
1307
|
readonly invalid: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
1295
1308
|
readonly name: _angular_core.InputSignal<string | undefined>;
|
|
1309
|
+
readonly primary: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
1296
1310
|
readonly required: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
1297
|
-
readonly secondary: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
1298
1311
|
readonly value: _angular_core.ModelSignal<boolean>;
|
|
1299
1312
|
protected readonly _focusSelectors: string[];
|
|
1300
1313
|
protected readonly _class: _angular_core.Signal<string>;
|
|
1301
1314
|
protected _emptyValue(): boolean;
|
|
1302
1315
|
protected onCheckedChange(checked: boolean): void;
|
|
1303
1316
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwCheckboxComponent, never>;
|
|
1304
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwCheckboxComponent, "yuw-checkbox", never, { "ariaDescribedby": { "alias": "ariaDescribedby"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "ariaLabelledby": { "alias": "ariaLabelledby"; "required": false; "isSignal": true; }; "indeterminate": { "alias": "indeterminate"; "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; }; "
|
|
1317
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwCheckboxComponent, "yuw-checkbox", never, { "ariaDescribedby": { "alias": "ariaDescribedby"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "ariaLabelledby": { "alias": "ariaLabelledby"; "required": false; "isSignal": true; }; "indeterminate": { "alias": "indeterminate"; "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; }; "primary": { "alias": "primary"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "value": { "alias": "checked"; "required": false; "isSignal": true; }; }, { "indeterminate": "indeterminateChange"; "value": "checkedChange"; }, never, ["*"], true, never>;
|
|
1305
1318
|
}
|
|
1306
1319
|
|
|
1307
1320
|
type YuwSwitchSizeDto = 'default' | 'xs' | 'sm' | 'lg';
|
|
@@ -1317,6 +1330,7 @@ type YuwSwitchSizeDto = 'default' | 'xs' | 'sm' | 'lg';
|
|
|
1317
1330
|
* - `checked` (alias for `value`): Two-way boolean on/off state. Bind as `[(checked)]`.
|
|
1318
1331
|
* - `size`: Track size (`'default'`, `'xs'`, `'sm'`, `'lg'`). Named to match the rest of the
|
|
1319
1332
|
* library; the pixel values keep a switch's own proportions rather than the field heights.
|
|
1333
|
+
* - `primary`: Primary colour checked state. Defaults to `false` (secondary colour); set `primary` to opt in.
|
|
1320
1334
|
* - `disabled`: Disables switch interaction.
|
|
1321
1335
|
* - `inputId`: HTML `id` for the underlying control, enabling external `<label for="...">` association.
|
|
1322
1336
|
* - `ariaLabel`: Accessible name for switches with no visible adjacent label.
|
|
@@ -1332,6 +1346,7 @@ declare class YuwSwitchComponent extends YuwValueAccessorBase<boolean> {
|
|
|
1332
1346
|
readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
|
|
1333
1347
|
readonly ariaLabelledby: _angular_core.InputSignal<string | undefined>;
|
|
1334
1348
|
readonly inputId: _angular_core.InputSignal<string | undefined>;
|
|
1349
|
+
readonly primary: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
1335
1350
|
readonly size: _angular_core.InputSignal<YuwSwitchSizeDto>;
|
|
1336
1351
|
readonly value: _angular_core.ModelSignal<boolean>;
|
|
1337
1352
|
protected readonly _focusSelectors: string[];
|
|
@@ -1340,7 +1355,7 @@ declare class YuwSwitchComponent extends YuwValueAccessorBase<boolean> {
|
|
|
1340
1355
|
protected _emptyValue(): boolean;
|
|
1341
1356
|
protected onCheckedChange(checked: boolean): void;
|
|
1342
1357
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwSwitchComponent, never>;
|
|
1343
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwSwitchComponent, "yuw-switch", never, { "ariaDescribedby": { "alias": "ariaDescribedby"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "ariaLabelledby": { "alias": "ariaLabelledby"; "required": false; "isSignal": true; }; "inputId": { "alias": "inputId"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "value": { "alias": "checked"; "required": false; "isSignal": true; }; }, { "value": "checkedChange"; }, never, ["*"], true, never>;
|
|
1358
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwSwitchComponent, "yuw-switch", never, { "ariaDescribedby": { "alias": "ariaDescribedby"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "ariaLabelledby": { "alias": "ariaLabelledby"; "required": false; "isSignal": true; }; "inputId": { "alias": "inputId"; "required": false; "isSignal": true; }; "primary": { "alias": "primary"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "value": { "alias": "checked"; "required": false; "isSignal": true; }; }, { "value": "checkedChange"; }, never, ["*"], true, never>;
|
|
1344
1359
|
}
|
|
1345
1360
|
|
|
1346
1361
|
/**
|
|
@@ -1365,6 +1380,7 @@ interface YuwRadioOptionDto {
|
|
|
1365
1380
|
* Inputs / Models:
|
|
1366
1381
|
* - `value`: Two-way selected option value (`string | undefined`). `undefined` means nothing is selected.
|
|
1367
1382
|
* - `options`: Required array of radio options (`YuwRadioOptionDto[]`).
|
|
1383
|
+
* - `primary`: Primary colour selected dot. Defaults to `false` (secondary colour); set `primary` to opt in.
|
|
1368
1384
|
* - `disabled`: Disables all radio options.
|
|
1369
1385
|
* - `required`: Marks the group as required.
|
|
1370
1386
|
* - `name`: Shared HTML `name` attribute for all radios, making them mutually exclusive in native
|
|
@@ -1386,6 +1402,7 @@ declare class YuwRadioGroupComponent extends YuwValueAccessorBase<string | undef
|
|
|
1386
1402
|
readonly ariaLabelledby: _angular_core.InputSignal<string | undefined>;
|
|
1387
1403
|
readonly name: _angular_core.InputSignal<string | undefined>;
|
|
1388
1404
|
readonly options: _angular_core.InputSignal<readonly YuwRadioOptionDto[]>;
|
|
1405
|
+
readonly primary: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
1389
1406
|
readonly required: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
1390
1407
|
readonly userClass: _angular_core.InputSignal<string>;
|
|
1391
1408
|
readonly value: _angular_core.ModelSignal<string | undefined>;
|
|
@@ -1396,7 +1413,7 @@ declare class YuwRadioGroupComponent extends YuwValueAccessorBase<string | undef
|
|
|
1396
1413
|
protected _emptyValue(): string | undefined;
|
|
1397
1414
|
protected onValueChange(next: string): void;
|
|
1398
1415
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwRadioGroupComponent, never>;
|
|
1399
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwRadioGroupComponent, "yuw-radio-group", never, { "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "ariaLabelledby": { "alias": "ariaLabelledby"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": true; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "userClass": { "alias": "class"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
|
|
1416
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwRadioGroupComponent, "yuw-radio-group", never, { "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "ariaLabelledby": { "alias": "ariaLabelledby"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": true; "isSignal": true; }; "primary": { "alias": "primary"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "userClass": { "alias": "class"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
|
|
1400
1417
|
}
|
|
1401
1418
|
|
|
1402
1419
|
/**
|
|
@@ -2501,7 +2518,7 @@ type YuwPopoverAlignDto = 'start' | 'center' | 'end';
|
|
|
2501
2518
|
* over the library defaults via `twMerge`.
|
|
2502
2519
|
* - `triggerVariant`: Button style variant for the trigger button.
|
|
2503
2520
|
* - `triggerColor`: Brand color theme for the trigger button (any `YuwColorDto` value). Default is
|
|
2504
|
-
* `'
|
|
2521
|
+
* `'neutral'`.
|
|
2505
2522
|
* - `triggerSize`: Button size for the trigger button.
|
|
2506
2523
|
* - `triggerTransparent`: Strips the trigger's background and border in every state (rest, hover,
|
|
2507
2524
|
* open), for triggers whose projected content is the whole control — an avatar, a name, a chevron.
|