ngwr 10.0.0 → 10.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/README.md +9 -8
- package/action-sheet/styles/_index.scss +6 -1
- package/badge/styles/_index.scss +1 -1
- package/badge/styles/_tag.scss +2 -2
- package/border-glow/styles/_index.scss +5 -0
- package/button/styles/_index.scss +6 -6
- package/calendar/styles/_index.scss +9 -1
- package/circular-text/styles/_index.scss +6 -1
- package/density/styles/_index.scss +3 -1
- package/dialog/styles/_index.scss +1 -2
- package/drag-drop/styles/_index.scss +20 -7
- package/event-calendar/styles/_index.scss +284 -0
- package/falling-text/styles/_index.scss +5 -0
- package/fesm2022/ngwr-alert.mjs +8 -3
- package/fesm2022/ngwr-alert.mjs.map +1 -1
- package/fesm2022/ngwr-back-top.mjs +6 -4
- package/fesm2022/ngwr-back-top.mjs.map +1 -1
- package/fesm2022/ngwr-border-glow.mjs +12 -9
- package/fesm2022/ngwr-border-glow.mjs.map +1 -1
- package/fesm2022/ngwr-breadcrumbs.mjs +2 -2
- package/fesm2022/ngwr-breadcrumbs.mjs.map +1 -1
- package/fesm2022/ngwr-calendar.mjs +5 -3
- package/fesm2022/ngwr-calendar.mjs.map +1 -1
- package/fesm2022/ngwr-card.mjs +2 -2
- package/fesm2022/ngwr-card.mjs.map +1 -1
- package/fesm2022/ngwr-carousel.mjs +17 -4
- package/fesm2022/ngwr-carousel.mjs.map +1 -1
- package/fesm2022/ngwr-cascader.mjs +31 -4
- package/fesm2022/ngwr-cascader.mjs.map +1 -1
- package/fesm2022/ngwr-checkbox.mjs +12 -3
- package/fesm2022/ngwr-checkbox.mjs.map +1 -1
- package/fesm2022/ngwr-circular-text.mjs +2 -2
- package/fesm2022/ngwr-circular-text.mjs.map +1 -1
- package/fesm2022/ngwr-command-palette.mjs +7 -3
- package/fesm2022/ngwr-command-palette.mjs.map +1 -1
- package/fesm2022/ngwr-counter.mjs +9 -1
- package/fesm2022/ngwr-counter.mjs.map +1 -1
- package/fesm2022/ngwr-date-picker.mjs +23 -6
- package/fesm2022/ngwr-date-picker.mjs.map +1 -1
- package/fesm2022/ngwr-descriptions.mjs +5 -4
- package/fesm2022/ngwr-descriptions.mjs.map +1 -1
- package/fesm2022/ngwr-drag-drop.mjs +2 -2
- package/fesm2022/ngwr-drag-drop.mjs.map +1 -1
- package/fesm2022/ngwr-dropdown.mjs +4 -0
- package/fesm2022/ngwr-dropdown.mjs.map +1 -1
- package/fesm2022/ngwr-event-calendar.mjs +723 -0
- package/fesm2022/ngwr-event-calendar.mjs.map +1 -0
- package/fesm2022/ngwr-falling-text.mjs +2 -2
- package/fesm2022/ngwr-falling-text.mjs.map +1 -1
- package/fesm2022/ngwr-file-upload.mjs +2 -2
- package/fesm2022/ngwr-file-upload.mjs.map +1 -1
- package/fesm2022/ngwr-form.mjs +258 -42
- package/fesm2022/ngwr-form.mjs.map +1 -1
- package/fesm2022/ngwr-fuzzy-text.mjs +15 -1
- package/fesm2022/ngwr-fuzzy-text.mjs.map +1 -1
- package/fesm2022/ngwr-gauge.mjs +8 -3
- package/fesm2022/ngwr-gauge.mjs.map +1 -1
- package/fesm2022/ngwr-glitch-text.mjs +2 -2
- package/fesm2022/ngwr-glitch-text.mjs.map +1 -1
- package/fesm2022/ngwr-gradient-text.mjs +2 -2
- package/fesm2022/ngwr-gradient-text.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-en.mjs +73 -5
- package/fesm2022/ngwr-i18n-en.mjs.map +1 -1
- package/fesm2022/ngwr-i18n-ru.mjs +73 -5
- package/fesm2022/ngwr-i18n-ru.mjs.map +1 -1
- package/fesm2022/ngwr-i18n.mjs +20 -2
- package/fesm2022/ngwr-i18n.mjs.map +1 -1
- package/fesm2022/ngwr-icon.mjs +5 -0
- package/fesm2022/ngwr-icon.mjs.map +1 -1
- package/fesm2022/ngwr-input-number.mjs +19 -3
- package/fesm2022/ngwr-input-number.mjs.map +1 -1
- package/fesm2022/ngwr-input.mjs +48 -6
- package/fesm2022/ngwr-input.mjs.map +1 -1
- package/fesm2022/ngwr-knob.mjs +8 -3
- package/fesm2022/ngwr-knob.mjs.map +1 -1
- package/fesm2022/ngwr-lightbox.mjs +32 -3
- package/fesm2022/ngwr-lightbox.mjs.map +1 -1
- package/fesm2022/ngwr-line-chart.mjs +3 -3
- package/fesm2022/ngwr-line-chart.mjs.map +1 -1
- package/fesm2022/ngwr-list.mjs +2 -2
- package/fesm2022/ngwr-list.mjs.map +1 -1
- package/fesm2022/ngwr-loading-bar.mjs +2 -2
- package/fesm2022/ngwr-loading-bar.mjs.map +1 -1
- package/fesm2022/ngwr-marquee.mjs +2 -2
- package/fesm2022/ngwr-marquee.mjs.map +1 -1
- package/fesm2022/ngwr-media.mjs +3 -0
- package/fesm2022/ngwr-media.mjs.map +1 -1
- package/fesm2022/ngwr-meter-group.mjs +14 -3
- package/fesm2022/ngwr-meter-group.mjs.map +1 -1
- package/fesm2022/ngwr-page-header.mjs +2 -2
- package/fesm2022/ngwr-page-header.mjs.map +1 -1
- package/fesm2022/ngwr-pagination.mjs +1 -1
- package/fesm2022/ngwr-pagination.mjs.map +1 -1
- package/fesm2022/ngwr-progress.mjs +8 -2
- package/fesm2022/ngwr-progress.mjs.map +1 -1
- package/fesm2022/ngwr-qr.mjs.map +1 -1
- package/fesm2022/ngwr-rating.mjs +6 -4
- package/fesm2022/ngwr-rating.mjs.map +1 -1
- package/fesm2022/ngwr-result.mjs +19 -12
- package/fesm2022/ngwr-result.mjs.map +1 -1
- package/fesm2022/ngwr-segmented.mjs +2 -2
- package/fesm2022/ngwr-segmented.mjs.map +1 -1
- package/fesm2022/ngwr-select.mjs +28 -8
- package/fesm2022/ngwr-select.mjs.map +1 -1
- package/fesm2022/ngwr-shiny-text.mjs +4 -6
- package/fesm2022/ngwr-shiny-text.mjs.map +1 -1
- package/fesm2022/ngwr-speed-dial.mjs +11 -3
- package/fesm2022/ngwr-speed-dial.mjs.map +1 -1
- package/fesm2022/ngwr-spotlight-card.mjs +2 -2
- package/fesm2022/ngwr-spotlight-card.mjs.map +1 -1
- package/fesm2022/ngwr-squircle.mjs +1 -1
- package/fesm2022/ngwr-squircle.mjs.map +1 -1
- package/fesm2022/ngwr-star-border.mjs +2 -2
- package/fesm2022/ngwr-star-border.mjs.map +1 -1
- package/fesm2022/ngwr-switch.mjs +10 -3
- package/fesm2022/ngwr-switch.mjs.map +1 -1
- package/fesm2022/ngwr-table.mjs +233 -19
- package/fesm2022/ngwr-table.mjs.map +1 -1
- package/fesm2022/ngwr-tabs.mjs +21 -4
- package/fesm2022/ngwr-tabs.mjs.map +1 -1
- package/fesm2022/ngwr-textarea.mjs +20 -4
- package/fesm2022/ngwr-textarea.mjs.map +1 -1
- package/fesm2022/ngwr-tilt-card.mjs +2 -2
- package/fesm2022/ngwr-tilt-card.mjs.map +1 -1
- package/fesm2022/ngwr-toolbar.mjs +2 -2
- package/fesm2022/ngwr-toolbar.mjs.map +1 -1
- package/fesm2022/ngwr-tour.mjs +264 -0
- package/fesm2022/ngwr-tour.mjs.map +1 -0
- package/fesm2022/ngwr-transfer.mjs +184 -0
- package/fesm2022/ngwr-transfer.mjs.map +1 -0
- package/fesm2022/ngwr-tree.mjs +23 -6
- package/fesm2022/ngwr-tree.mjs.map +1 -1
- package/fesm2022/ngwr-typewriter.mjs +2 -2
- package/fesm2022/ngwr-typewriter.mjs.map +1 -1
- package/fesm2022/ngwr-validators.mjs +118 -2
- package/fesm2022/ngwr-validators.mjs.map +1 -1
- package/fesm2022/ngwr-version.mjs +2 -2
- package/fesm2022/ngwr-version.mjs.map +1 -1
- package/fesm2022/ngwr-virtual-scroll.mjs +2 -2
- package/fesm2022/ngwr-virtual-scroll.mjs.map +1 -1
- package/fesm2022/ngwr-waves.mjs +2 -2
- package/fesm2022/ngwr-waves.mjs.map +1 -1
- package/form/styles/_index.scss +8 -4
- package/glitch-text/styles/_index.scss +5 -0
- package/gradient-text/styles/_index.scss +5 -0
- package/i18n/en.json +74 -6
- package/i18n/ru.json +74 -6
- package/icon/styles/_index.scss +5 -0
- package/keyboard/styles/_index.scss +5 -0
- package/llms-full.txt +123 -62
- package/llms.txt +29 -8
- package/loading-bar/styles/_index.scss +5 -0
- package/marquee/styles/_index.scss +7 -2
- package/overlay/styles/_index.scss +5 -0
- package/package.json +13 -1
- package/popover/styles/_index.scss +48 -12
- package/pull-to-refresh/styles/_index.scss +5 -0
- package/result/styles/_index.scss +3 -3
- package/schematics/icon-set/index.js +80 -34
- package/schematics/icon-set/schema.json +8 -3
- package/schematics/ng-add/index.js +5 -2
- package/schematics/page/templates.js +17 -21
- package/schematics/provider/index.js +31 -13
- package/schematics/provider/schema.json +40 -24
- package/schematics/use/index.js +5 -1
- package/schematics/use/schema.json +8 -3
- package/schematics/use/symbol-map.json +6 -177
- package/segmented/styles/_index.scss +1 -1
- package/select/styles/_index.scss +7 -3
- package/shiny-text/styles/_index.scss +5 -0
- package/speed-dial/styles/_index.scss +12 -1
- package/spotlight-card/styles/_index.scss +5 -0
- package/squircle/styles/_index.scss +5 -0
- package/star-border/styles/_index.scss +5 -0
- package/statistic/styles/_index.scss +2 -2
- package/styles/_animations.scss +6 -0
- package/styles.scss +3 -0
- package/table/styles/_index.scss +100 -2
- package/theme/styles/_colors.scss +43 -1
- package/theme/styles/_dark.scss +18 -6
- package/theme/styles/_focus.scss +2 -8
- package/tilt-card/styles/_index.scss +5 -0
- package/toast/styles/_index.scss +6 -3
- package/tour/styles/_index.scss +63 -0
- package/transfer/styles/_index.scss +105 -0
- package/types/ngwr-alert.d.ts +4 -1
- package/types/ngwr-avatar.d.ts +1 -1
- package/types/ngwr-back-top.d.ts +3 -2
- package/types/ngwr-badge.d.ts +1 -1
- package/types/ngwr-border-glow.d.ts +0 -1
- package/types/ngwr-carousel.d.ts +10 -1
- package/types/ngwr-cascader.d.ts +12 -1
- package/types/ngwr-checkbox.d.ts +9 -1
- package/types/ngwr-command-palette.d.ts +4 -1
- package/types/ngwr-date-picker.d.ts +9 -1
- package/types/ngwr-density.d.ts +1 -1
- package/types/ngwr-divider.d.ts +1 -1
- package/types/ngwr-event-calendar.d.ts +358 -0
- package/types/ngwr-form.d.ts +177 -20
- package/types/ngwr-fuzzy-text.d.ts +8 -0
- package/types/ngwr-gauge.d.ts +4 -1
- package/types/ngwr-i18n.d.ts +15 -0
- package/types/ngwr-input-number.d.ts +8 -1
- package/types/ngwr-input.d.ts +50 -20
- package/types/ngwr-knob.d.ts +4 -1
- package/types/ngwr-lightbox.d.ts +7 -1
- package/types/ngwr-line-chart.d.ts +1 -1
- package/types/ngwr-media.d.ts +1 -1
- package/types/ngwr-meter-group.d.ts +9 -1
- package/types/ngwr-page-header.d.ts +2 -2
- package/types/ngwr-pagination.d.ts +1 -1
- package/types/ngwr-progress.d.ts +4 -1
- package/types/ngwr-rating.d.ts +3 -2
- package/types/ngwr-result.d.ts +12 -6
- package/types/ngwr-segmented.d.ts +6 -0
- package/types/ngwr-select.d.ts +13 -7
- package/types/ngwr-shiny-text.d.ts +2 -4
- package/types/ngwr-speed-dial.d.ts +7 -1
- package/types/ngwr-squircle.d.ts +1 -1
- package/types/ngwr-switch.d.ts +7 -1
- package/types/ngwr-table.d.ts +126 -6
- package/types/ngwr-tabs.d.ts +1 -4
- package/types/ngwr-textarea.d.ts +8 -1
- package/types/ngwr-toolbar.d.ts +2 -2
- package/types/ngwr-tour.d.ts +132 -0
- package/types/ngwr-transfer.d.ts +118 -0
- package/types/ngwr-tree.d.ts +10 -2
- package/types/ngwr-validators.d.ts +62 -2
- package/types/ngwr-version.d.ts +2 -2
- package/typewriter/styles/_index.scss +5 -0
- package/typography/styles/_index.scss +3 -3
- package/virtual-scroll/styles/_index.scss +6 -1
- package/waves/styles/_index.scss +5 -0
package/styles.scss
CHANGED
|
@@ -51,6 +51,7 @@
|
|
|
51
51
|
@forward './divider/styles';
|
|
52
52
|
@forward './donut-chart/styles';
|
|
53
53
|
@forward './drag-drop/styles';
|
|
54
|
+
@forward './event-calendar/styles';
|
|
54
55
|
@forward './drawer/styles';
|
|
55
56
|
@forward './dropdown/styles';
|
|
56
57
|
@forward './empty/styles';
|
|
@@ -112,6 +113,8 @@
|
|
|
112
113
|
@forward './timeline/styles';
|
|
113
114
|
@forward './toast/styles';
|
|
114
115
|
@forward './toolbar/styles';
|
|
116
|
+
@forward './tour/styles';
|
|
117
|
+
@forward './transfer/styles';
|
|
115
118
|
@forward './tree/styles';
|
|
116
119
|
@forward './typewriter/styles';
|
|
117
120
|
@forward './typography/styles';
|
package/table/styles/_index.scss
CHANGED
|
@@ -126,8 +126,67 @@
|
|
|
126
126
|
opacity: 0.35;
|
|
127
127
|
}
|
|
128
128
|
|
|
129
|
-
|
|
130
|
-
|
|
129
|
+
// NOTE: `.cdk-drag-animating` is NOT here. CDK puts it on the preview clone,
|
|
130
|
+
// which lives in `<body>` — see the rule at the end of this file.
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
// --- Tree rows ------------------------------------------------------------
|
|
134
|
+
// Depth lives on the `<tr>` as `--wr-table-depth` and is spent inside the tree
|
|
135
|
+
// column's cell, not as a lead column: a new column would break `columnOrder`
|
|
136
|
+
// indexes and the pin measurements, and a child would stop being an ordinary
|
|
137
|
+
// `<tr>` going through the same cell loop.
|
|
138
|
+
&__tree-lead {
|
|
139
|
+
display: inline-flex;
|
|
140
|
+
align-items: center;
|
|
141
|
+
vertical-align: middle;
|
|
142
|
+
margin-inline-end: 0.25rem;
|
|
143
|
+
padding-inline-start: calc(var(--wr-table-depth, 0) * var(--wr-table-indent, 1.25rem));
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
&__tree-toggle {
|
|
147
|
+
appearance: none;
|
|
148
|
+
flex: 0 0 auto;
|
|
149
|
+
display: inline-flex;
|
|
150
|
+
align-items: center;
|
|
151
|
+
justify-content: center;
|
|
152
|
+
width: 1.25rem;
|
|
153
|
+
height: 1.25rem;
|
|
154
|
+
padding: 0;
|
|
155
|
+
background: transparent;
|
|
156
|
+
border: 0;
|
|
157
|
+
border-radius: var(--wr-border-radius-sm);
|
|
158
|
+
color: var(--wr-color-on-surface-muted);
|
|
159
|
+
cursor: pointer;
|
|
160
|
+
|
|
161
|
+
&:hover {
|
|
162
|
+
background: var(--wr-color-hover);
|
|
163
|
+
color: var(--wr-color-on-surface);
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
// A leaf keeps the slot so labels line up down a column, but is not a
|
|
167
|
+
// button and is hidden from assistive tech.
|
|
168
|
+
&--leaf {
|
|
169
|
+
cursor: default;
|
|
170
|
+
visibility: hidden;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
&__tree-icon {
|
|
175
|
+
width: 0.875rem;
|
|
176
|
+
height: 0.875rem;
|
|
177
|
+
transition: transform var(--wr-transition-base);
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
&__tree-toggle--open &__tree-icon,
|
|
181
|
+
&__tree-toggle--open .wr-table__tree-icon {
|
|
182
|
+
transform: rotate(90deg);
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
// Card mode stacks label / value with `justify-content: space-between`, so an
|
|
186
|
+
// extra inline child would strand the chevron mid-row. Fold the lead into the
|
|
187
|
+
// value side instead.
|
|
188
|
+
&--responsive &__tree-lead {
|
|
189
|
+
margin-inline-end: 0.375rem;
|
|
131
190
|
}
|
|
132
191
|
|
|
133
192
|
// --- Row selection --------------------------------------------------------
|
|
@@ -206,6 +265,9 @@
|
|
|
206
265
|
}
|
|
207
266
|
|
|
208
267
|
// --- Summary / footer row -------------------------------------------------
|
|
268
|
+
// `&__foot-cell--lead` is emitted on the selection / expand footer cells and
|
|
269
|
+
// carries no styles of its own — it exists as a public hook so consumers can
|
|
270
|
+
// target those two cells without matching on position.
|
|
209
271
|
&__foot-cell {
|
|
210
272
|
padding: calc(0.625rem * var(--wr-density-y, 1)) calc(0.875rem * var(--wr-density-x, 1));
|
|
211
273
|
background: var(--wr-table-head-bg);
|
|
@@ -762,3 +824,39 @@
|
|
|
762
824
|
}
|
|
763
825
|
}
|
|
764
826
|
}
|
|
827
|
+
|
|
828
|
+
// The dragged header's preview is a clone CDK moves to `document.body`, so it
|
|
829
|
+
// leaves `.wr-table` behind and no ancestor selector reaches it — the clone's
|
|
830
|
+
// own `wr-table__th` class does. Declared here rather than inherited: until the
|
|
831
|
+
// drag-drop entry point's rules were scoped, this preview silently wore
|
|
832
|
+
// `wr-sortable-list`'s lift shadow, and scoping them without this would have
|
|
833
|
+
// left the column preview with no chrome at all.
|
|
834
|
+
.cdk-drag-preview.wr-table__th {
|
|
835
|
+
box-sizing: border-box;
|
|
836
|
+
display: flex;
|
|
837
|
+
align-items: center;
|
|
838
|
+
// Every value has to resolve in `<body>`: the `--wr-table-*` tokens are
|
|
839
|
+
// declared on `.wr-table`, which the preview has left, so they are passed with
|
|
840
|
+
// the same defaults that block sets. `--wr-density-*` and `--wr-color-*` are
|
|
841
|
+
// root-level and resolve as-is.
|
|
842
|
+
padding: calc(0.625rem * var(--wr-density-y, 1)) calc(0.875rem * var(--wr-density-x, 1));
|
|
843
|
+
background: var(--wr-table-head-bg, rgba(var(--wr-color-outline-rgb), 0.25));
|
|
844
|
+
color: var(--wr-color-on-surface-muted);
|
|
845
|
+
font-family: var(--wr-font-family-base);
|
|
846
|
+
font-weight: 600;
|
|
847
|
+
font-size: var(--wr-text-xs);
|
|
848
|
+
letter-spacing: var(--wr-table-head-letter-spacing, var(--wr-tracking-normal));
|
|
849
|
+
text-transform: var(--wr-table-head-transform, none);
|
|
850
|
+
white-space: nowrap;
|
|
851
|
+
border-radius: var(--wr-border-radius-sm);
|
|
852
|
+
box-shadow: 0 8px 12px rgba(var(--wr-color-backdrop-rgb), 0.24);
|
|
853
|
+
// The preview must track the cursor 1:1 — never animate its transform.
|
|
854
|
+
transition: none;
|
|
855
|
+
}
|
|
856
|
+
|
|
857
|
+
// The settle animation after a drop. Same element as the rule above — CDK adds
|
|
858
|
+
// `cdk-drag-animating` to the preview while it flies back to the drop slot — so
|
|
859
|
+
// it must come after it to beat that `transition: none` at equal specificity.
|
|
860
|
+
.cdk-drag-animating.wr-table__th {
|
|
861
|
+
transition: transform 0.18s var(--wr-ease-out);
|
|
862
|
+
}
|
|
@@ -141,7 +141,11 @@ $contrast-light: #ffffff !default;
|
|
|
141
141
|
// labels / captions / placeholders read consistently. One place each.
|
|
142
142
|
// Only the full-opacity token above is AA-safe for body text; these two are
|
|
143
143
|
// decorative by design (0.85 reaches ~3.5:1, 0.6 ~2.3:1 on a light surface).
|
|
144
|
-
|
|
144
|
+
// 0.95, not 0.85: the role itself is 5.35:1 on the light surface, but wrapping
|
|
145
|
+
// it at 0.85 composited to #778291 — 3.90:1, under the AA bar. 0.95 is the
|
|
146
|
+
// most softening that still clears it (4.81), which leaves this token barely
|
|
147
|
+
// distinguishable from the flat role it wraps.
|
|
148
|
+
--wr-color-text-muted: rgba(var(--wr-color-muted-text-rgb), 0.95);
|
|
145
149
|
--wr-color-text-faint: rgba(var(--wr-color-muted-text-rgb), 0.6);
|
|
146
150
|
|
|
147
151
|
// Neutral gray ramp — a FIXED primitive scale (slate). Each step is a stable
|
|
@@ -214,6 +218,44 @@ $contrast-light: #ffffff !default;
|
|
|
214
218
|
--wr-color-#{$name}-soft-contrast: color-mix(in srgb, var(--wr-color-#{$name}) 62%, var(--wr-color-dark));
|
|
215
219
|
--wr-color-#{$name}-active: rgba(var(--wr-color-#{$name}-rgb), 0.2);
|
|
216
220
|
}
|
|
221
|
+
|
|
222
|
+
// `-ink`: the intent used as TEXT on `--wr-color-surface`.
|
|
223
|
+
//
|
|
224
|
+
// v10 fixed the opposite direction — `-contrast`, the label ON a filled
|
|
225
|
+
// intent. The inverse was never covered, and the light theme fails WCAG AA
|
|
226
|
+
// everywhere an outlined / bordered variant paints the hue as its own label:
|
|
227
|
+
// warning lands at 1.71:1 against a 4.5 bar, medium 3.10, success 3.33,
|
|
228
|
+
// danger and info 3.68, secondary 3.99. Dark passes on all of them, because
|
|
229
|
+
// its bases were retuned lighter for a dark canvas and that happens to be the
|
|
230
|
+
// accessible direction.
|
|
231
|
+
//
|
|
232
|
+
// Same recipe as `-soft-contrast`: mixing toward `--wr-color-dark` darkens in
|
|
233
|
+
// light and lightens in dark from ONE declaration, because that token itself
|
|
234
|
+
// flips. The share is per intent rather than uniform — warning has to travel
|
|
235
|
+
// furthest (a yellow readable on white is not yellow), and forcing every
|
|
236
|
+
// intent to warning's share would drag primary to near-navy for no reason.
|
|
237
|
+
// Each is the measured minimum that clears 4.5:1 in BOTH themes on the surface
|
|
238
|
+
// and on the tag's 6% / 10% tints, with 3pp of headroom.
|
|
239
|
+
$ink-mix: (
|
|
240
|
+
primary: 93%,
|
|
241
|
+
secondary: 80%,
|
|
242
|
+
success: 72%,
|
|
243
|
+
warning: 50%,
|
|
244
|
+
danger: 77%,
|
|
245
|
+
info: 76%,
|
|
246
|
+
medium: 69%,
|
|
247
|
+
);
|
|
248
|
+
|
|
249
|
+
@each $name, $share in $ink-mix {
|
|
250
|
+
--wr-color-#{$name}-ink: color-mix(in srgb, var(--wr-color-#{$name}) #{$share}, var(--wr-color-dark));
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
// `light` is a surface tone by definition — a hair off the page background in
|
|
254
|
+
// either theme — so there is no darkening that keeps it recognisable AND
|
|
255
|
+
// readable. It borrows the page's own ink; the border still carries the
|
|
256
|
+
// intent. `dark` already IS the ink.
|
|
257
|
+
--wr-color-light-ink: var(--wr-color-on-surface);
|
|
258
|
+
--wr-color-dark-ink: var(--wr-color-dark);
|
|
217
259
|
}
|
|
218
260
|
|
|
219
261
|
// Public SCSS list
|
package/theme/styles/_dark.scss
CHANGED
|
@@ -38,7 +38,8 @@ $_dark: #e6ebf3;
|
|
|
38
38
|
// Text
|
|
39
39
|
// Softer than pure-white — easier on the eyes for long reading.
|
|
40
40
|
--wr-color-dark: #{$_dark};
|
|
41
|
-
--wr-color-dark-rgb:
|
|
41
|
+
--wr-color-dark-rgb:
|
|
42
|
+
#{color.channel($_dark, 'red')}, #{color.channel($_dark, 'green')}, #{color.channel($_dark, 'blue')};
|
|
42
43
|
// `*-contrast` values are baked at SCSS compile time from the light
|
|
43
44
|
// palette, so they don't auto-flip when `--wr-color-dark` /
|
|
44
45
|
// `--wr-color-white` are reassigned for dark mode. Tooltip-style
|
|
@@ -50,8 +51,16 @@ $_dark: #e6ebf3;
|
|
|
50
51
|
// palette's near-black ink, so `.wr-btn--dark:hover` painted itself almost
|
|
51
52
|
// black while keeping the near-black `-contrast` text. `dark` is an INK token,
|
|
52
53
|
// so unlike `light` below its shades mean exactly what they say.
|
|
53
|
-
|
|
54
|
-
|
|
54
|
+
// `color.scale`, not `color.adjust`, for the two lighter steps. In dark mode
|
|
55
|
+
// `dark` IS the near-white ink (#e6ebf3, L 92.7%), so `adjust(+10%)` asks for
|
|
56
|
+
// L 102.7% — out of gamut. Sass then cannot emit rgb and falls back to legacy
|
|
57
|
+
// comma-hsl with an out-of-range lightness, which browsers clamp: the token
|
|
58
|
+
// silently became pure white instead of a controlled step. `scale` moves a
|
|
59
|
+
// percentage of the REMAINING headroom, so it approaches white without ever
|
|
60
|
+
// leaving the gamut. 70% reproduces the previous `-light` to within a rounding
|
|
61
|
+
// step; 85% is the distinct step beyond it.
|
|
62
|
+
--wr-color-dark-light: #{color.scale($_dark, $lightness: 70%)};
|
|
63
|
+
--wr-color-dark-lighter: #{color.scale($_dark, $lightness: 85%)};
|
|
55
64
|
--wr-color-dark-dark: #{color.adjust($_dark, $lightness: -5%)};
|
|
56
65
|
--wr-color-dark-darker: #{color.adjust($_dark, $lightness: -10%)};
|
|
57
66
|
|
|
@@ -63,7 +72,8 @@ $_dark: #e6ebf3;
|
|
|
63
72
|
// divider on cards / inputs without shouting — matches what Vercel
|
|
64
73
|
// and shadcn ship for the same job.
|
|
65
74
|
--wr-color-light: #{$_light};
|
|
66
|
-
--wr-color-light-rgb:
|
|
75
|
+
--wr-color-light-rgb:
|
|
76
|
+
#{color.channel($_light, 'red')}, #{color.channel($_light, 'green')}, #{color.channel($_light, 'blue')};
|
|
67
77
|
// The baked contrast pairs with the LIGHT value (#cbd5e1 → dark text);
|
|
68
78
|
// the dark surface above needs light text instead.
|
|
69
79
|
--wr-color-light-contrast: #e6ebf3;
|
|
@@ -89,7 +99,8 @@ $_dark: #e6ebf3;
|
|
|
89
99
|
// Lifted from slate-400 → slate-300-ish for better legibility on
|
|
90
100
|
// the deeper canvas.
|
|
91
101
|
--wr-color-medium: #{$_medium};
|
|
92
|
-
--wr-color-medium-rgb:
|
|
102
|
+
--wr-color-medium-rgb:
|
|
103
|
+
#{color.channel($_medium, 'red')}, #{color.channel($_medium, 'green')}, #{color.channel($_medium, 'blue')};
|
|
93
104
|
// This block shipped base + rgb only, so contrast and all four shades still
|
|
94
105
|
// came from the light palette's slate. Ink token, plain shades.
|
|
95
106
|
--wr-color-medium-contrast: #{colors.contrast($_medium)};
|
|
@@ -125,7 +136,8 @@ $_dark: #e6ebf3;
|
|
|
125
136
|
// Re-derived, not inherited: the light-palette token would pair the wrong
|
|
126
137
|
// foreground with a re-tuned base.
|
|
127
138
|
--wr-color-#{$name}-contrast: #{colors.contrast($base)};
|
|
128
|
-
--wr-color-#{$name}-rgb:
|
|
139
|
+
--wr-color-#{$name}-rgb:
|
|
140
|
+
#{color.channel($base, 'red')}, #{color.channel($base, 'green')}, #{color.channel($base, 'blue')};
|
|
129
141
|
--wr-color-#{$name}-light: #{color.adjust($base, $lightness: 5%)};
|
|
130
142
|
--wr-color-#{$name}-lighter: #{color.adjust($base, $lightness: 10%)};
|
|
131
143
|
--wr-color-#{$name}-dark: #{color.adjust($base, $lightness: -5%)};
|
package/theme/styles/_focus.scss
CHANGED
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
}
|
|
38
38
|
|
|
39
39
|
// Mention option rows
|
|
40
|
-
.wr-
|
|
40
|
+
.wr-mention-panel__option:focus-visible {
|
|
41
41
|
@include focus-ring;
|
|
42
42
|
}
|
|
43
43
|
|
|
@@ -64,13 +64,7 @@
|
|
|
64
64
|
}
|
|
65
65
|
|
|
66
66
|
// Stepper step headers
|
|
67
|
-
.wr-
|
|
68
|
-
@include focus-ring;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
// Toast close/copy
|
|
72
|
-
.wr-toast__close:focus-visible,
|
|
73
|
-
.wr-toast__copy:focus-visible {
|
|
67
|
+
.wr-stepper__header:focus-visible {
|
|
74
68
|
@include focus-ring;
|
|
75
69
|
}
|
|
76
70
|
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
// Pull the whole theme so a standalone `@use 'ngwr/<name>'` brings in every
|
|
2
|
+
// design token this stylesheet references. Sass deduplicates `@use` per
|
|
3
|
+
// compilation, so the umbrella sheet still emits the theme only once.
|
|
4
|
+
@use '../../theme/styles' as theme;
|
|
5
|
+
|
|
1
6
|
// 3D mouse-tilt card. The transform is set imperatively by `[wrTilt]`,
|
|
2
7
|
// so this stylesheet just covers the card chrome + the optional glare
|
|
3
8
|
// overlay that the directive appends when `[glare]="true"`.
|
package/toast/styles/_index.scss
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
@use '../../theme/styles' as theme;
|
|
2
2
|
|
|
3
|
+
// `info` mapped to `primary` before the `info` intent existed; alert has used
|
|
4
|
+
// the real intent since it landed, so the same toast and alert read as two
|
|
5
|
+
// different colours for the same meaning.
|
|
3
6
|
$toast-colors: (
|
|
4
|
-
info:
|
|
7
|
+
info: info,
|
|
5
8
|
success: success,
|
|
6
9
|
warning: warning,
|
|
7
10
|
danger: danger,
|
|
@@ -59,7 +62,7 @@ $toast-colors: (
|
|
|
59
62
|
width: auto;
|
|
60
63
|
max-width: calc(100% - 2rem);
|
|
61
64
|
transition:
|
|
62
|
-
transform 240ms
|
|
65
|
+
transform 240ms var(--wr-ease-out),
|
|
63
66
|
opacity 240ms ease,
|
|
64
67
|
box-shadow 240ms ease;
|
|
65
68
|
transform-origin: center top;
|
|
@@ -89,7 +92,7 @@ $toast-colors: (
|
|
|
89
92
|
|
|
90
93
|
&--stack.wr-toast-host--expanded .wr-toast {
|
|
91
94
|
transition:
|
|
92
|
-
transform 240ms
|
|
95
|
+
transform 240ms var(--wr-ease-out),
|
|
93
96
|
opacity 240ms ease;
|
|
94
97
|
}
|
|
95
98
|
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
@use '../../theme/styles' as theme;
|
|
2
|
+
|
|
3
|
+
// The cut-out. A bare box sized to the spotlit element, dimming everything
|
|
4
|
+
// around it with one enormous spread shadow — the target itself is never
|
|
5
|
+
// covered, so it stays readable and clickable.
|
|
6
|
+
.wr-tour__spotlight {
|
|
7
|
+
position: fixed;
|
|
8
|
+
z-index: 1000;
|
|
9
|
+
pointer-events: none;
|
|
10
|
+
border-radius: var(--wr-border-radius-base);
|
|
11
|
+
box-shadow: 0 0 0 9999px rgba(var(--wr-color-backdrop-rgb), 0.55);
|
|
12
|
+
transition:
|
|
13
|
+
top var(--wr-transition-base),
|
|
14
|
+
left var(--wr-transition-base),
|
|
15
|
+
width var(--wr-transition-base),
|
|
16
|
+
height var(--wr-transition-base);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.wr-tour-popup {
|
|
20
|
+
display: block;
|
|
21
|
+
max-width: 20rem;
|
|
22
|
+
padding: 1rem;
|
|
23
|
+
background: var(--wr-color-surface);
|
|
24
|
+
color: var(--wr-color-on-surface);
|
|
25
|
+
border: 1px solid var(--wr-color-outline);
|
|
26
|
+
@include theme.smooth-br(var(--wr-border-radius-base));
|
|
27
|
+
box-shadow: 0 12px 24px rgba(var(--wr-color-backdrop-rgb), 0.24);
|
|
28
|
+
font-family: var(--wr-font-family-base);
|
|
29
|
+
|
|
30
|
+
&__progress {
|
|
31
|
+
margin: 0 0 0.375rem;
|
|
32
|
+
font-size: var(--wr-text-xs);
|
|
33
|
+
color: var(--wr-color-on-surface-muted);
|
|
34
|
+
font-variant-numeric: tabular-nums;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
&__title {
|
|
38
|
+
margin: 0 0 0.375rem;
|
|
39
|
+
font-size: var(--wr-text-base);
|
|
40
|
+
font-weight: var(--wr-font-weight-semibold);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
&__content {
|
|
44
|
+
margin: 0 0 0.875rem;
|
|
45
|
+
font-size: var(--wr-text-sm);
|
|
46
|
+
line-height: var(--wr-leading-normal);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
&__actions {
|
|
50
|
+
display: flex;
|
|
51
|
+
align-items: center;
|
|
52
|
+
gap: 0.5rem;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
&__spacer {
|
|
56
|
+
flex: 1 1 auto;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
// The popup rides above the cut-out.
|
|
61
|
+
.wr-tour-overlay {
|
|
62
|
+
z-index: 1001;
|
|
63
|
+
}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
@use '../../theme/styles' as theme;
|
|
2
|
+
|
|
3
|
+
.wr-transfer {
|
|
4
|
+
--wr-transfer-pane-width: 14rem;
|
|
5
|
+
--wr-transfer-pane-height: 15rem;
|
|
6
|
+
|
|
7
|
+
display: flex;
|
|
8
|
+
align-items: stretch;
|
|
9
|
+
gap: 0.75rem;
|
|
10
|
+
font-family: var(--wr-font-family-base);
|
|
11
|
+
color: var(--wr-color-on-surface);
|
|
12
|
+
|
|
13
|
+
&--disabled {
|
|
14
|
+
opacity: 0.6;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
&__pane {
|
|
18
|
+
display: flex;
|
|
19
|
+
flex-direction: column;
|
|
20
|
+
flex: 1 1 var(--wr-transfer-pane-width);
|
|
21
|
+
min-width: 0;
|
|
22
|
+
border: 1px solid var(--wr-color-outline);
|
|
23
|
+
@include theme.smooth-br(var(--wr-border-radius-base));
|
|
24
|
+
background: var(--wr-color-surface);
|
|
25
|
+
overflow: hidden;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
&__head {
|
|
29
|
+
display: flex;
|
|
30
|
+
align-items: center;
|
|
31
|
+
gap: 0.5rem;
|
|
32
|
+
padding: 0.5rem 0.625rem;
|
|
33
|
+
border-bottom: 1px solid var(--wr-color-outline);
|
|
34
|
+
background: rgba(var(--wr-color-outline-rgb), 0.25);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
&__title {
|
|
38
|
+
flex: 1 1 auto;
|
|
39
|
+
min-width: 0;
|
|
40
|
+
overflow: hidden;
|
|
41
|
+
text-overflow: ellipsis;
|
|
42
|
+
white-space: nowrap;
|
|
43
|
+
font-size: var(--wr-text-sm);
|
|
44
|
+
font-weight: var(--wr-font-weight-medium);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
&__count {
|
|
48
|
+
flex: 0 0 auto;
|
|
49
|
+
font-size: var(--wr-text-xs);
|
|
50
|
+
color: var(--wr-color-on-surface-muted);
|
|
51
|
+
font-variant-numeric: tabular-nums;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
&__search {
|
|
55
|
+
padding: 0.5rem 0.625rem;
|
|
56
|
+
border-bottom: 1px solid var(--wr-color-outline);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
&__list {
|
|
60
|
+
flex: 1 1 auto;
|
|
61
|
+
margin: 0;
|
|
62
|
+
padding: 0.25rem;
|
|
63
|
+
list-style: none;
|
|
64
|
+
overflow-y: auto;
|
|
65
|
+
max-height: var(--wr-transfer-pane-height);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
&__item {
|
|
69
|
+
padding: 0.25rem 0.375rem;
|
|
70
|
+
border-radius: var(--wr-border-radius-sm);
|
|
71
|
+
|
|
72
|
+
&:hover {
|
|
73
|
+
background: var(--wr-color-hover);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
&--disabled:hover {
|
|
77
|
+
background: transparent;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
&__empty {
|
|
82
|
+
padding: 1rem 0.375rem;
|
|
83
|
+
text-align: center;
|
|
84
|
+
font-size: var(--wr-text-sm);
|
|
85
|
+
color: var(--wr-color-on-surface-muted);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
&__actions {
|
|
89
|
+
display: flex;
|
|
90
|
+
flex-direction: column;
|
|
91
|
+
justify-content: center;
|
|
92
|
+
gap: 0.5rem;
|
|
93
|
+
flex: 0 0 auto;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
&__move .wr-icon__svg {
|
|
97
|
+
width: 1rem;
|
|
98
|
+
height: 1rem;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
// No container query here on purpose: `@container` only styles DESCENDANTS, so
|
|
102
|
+
// a rule that reflows `.wr-transfer` itself could never match its own query.
|
|
103
|
+
// Doing it properly means the house `responsive` opt-in modifier (a wrapper
|
|
104
|
+
// that establishes the container) — not yet shipped for this component.
|
|
105
|
+
}
|
package/types/ngwr-alert.d.ts
CHANGED
|
@@ -23,6 +23,9 @@ type WrAlertType = 'info' | 'success' | 'warning' | 'danger' | 'neutral' | 'offl
|
|
|
23
23
|
* @see https://ngwr.dev/reference/components/alert
|
|
24
24
|
*/
|
|
25
25
|
declare class WrAlert {
|
|
26
|
+
/** Accessible name. Falls back to `alert.close`, then `'Close alert'`. */
|
|
27
|
+
readonly closeLabel: _angular_core.InputSignal<string | null>;
|
|
28
|
+
protected readonly resolvedCloseLabel: _angular_core.Signal<string>;
|
|
26
29
|
/**
|
|
27
30
|
* Optional headline shown at the top of the alert.
|
|
28
31
|
*
|
|
@@ -71,7 +74,7 @@ declare class WrAlert {
|
|
|
71
74
|
protected readonly liveLevel: _angular_core.Signal<"assertive" | "polite" | null>;
|
|
72
75
|
protected onClose(): void;
|
|
73
76
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<WrAlert, never>;
|
|
74
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrAlert, "wr-alert", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "iconName": { "alias": "iconName"; "required": false; "isSignal": true; }; "message": { "alias": "message"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "closeable": { "alias": "closeable"; "required": false; "isSignal": true; }; }, { "closed": "closed"; }, never, never, true, never>;
|
|
77
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrAlert, "wr-alert", never, { "closeLabel": { "alias": "closeLabel"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "iconName": { "alias": "iconName"; "required": false; "isSignal": true; }; "message": { "alias": "message"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "closeable": { "alias": "closeable"; "required": false; "isSignal": true; }; }, { "closed": "closed"; }, never, never, true, never>;
|
|
75
78
|
}
|
|
76
79
|
|
|
77
80
|
export { WrAlert };
|
package/types/ngwr-avatar.d.ts
CHANGED
package/types/ngwr-back-top.d.ts
CHANGED
|
@@ -20,8 +20,9 @@ declare class WrBackTop {
|
|
|
20
20
|
readonly visibilityThreshold: _angular_core.InputSignalWithTransform<number, unknown>;
|
|
21
21
|
/** Pixel offset subtracted from the scroll target — for sticky headers. @default 0 */
|
|
22
22
|
readonly offset: _angular_core.InputSignalWithTransform<number, unknown>;
|
|
23
|
-
/** Accessible label for the button.
|
|
24
|
-
readonly ariaLabel: _angular_core.InputSignal<string>;
|
|
23
|
+
/** Accessible label for the button. Falls back to `backTop.label`, then `'Back to top'`. */
|
|
24
|
+
readonly ariaLabel: _angular_core.InputSignal<string | null>;
|
|
25
|
+
protected readonly resolvedAriaLabel: _angular_core.Signal<string>;
|
|
25
26
|
protected readonly visible: _angular_core.WritableSignal<boolean>;
|
|
26
27
|
private readonly scroll;
|
|
27
28
|
private readonly platform;
|
package/types/ngwr-badge.d.ts
CHANGED
|
@@ -50,7 +50,6 @@ declare class WrBorderGlow {
|
|
|
50
50
|
readonly animated: _angular_core.InputSignalWithTransform<boolean, any>;
|
|
51
51
|
private readonly el;
|
|
52
52
|
private readonly platform;
|
|
53
|
-
private readonly destroyRef;
|
|
54
53
|
private readonly isBrowser;
|
|
55
54
|
/** Inline CSS variable bag — recomputed when colour / radius / sensitivity inputs change. */
|
|
56
55
|
protected readonly cssVars: _angular_core.Signal<Record<string, string>>;
|
package/types/ngwr-carousel.d.ts
CHANGED
|
@@ -26,6 +26,15 @@ declare class WrCarouselSlide {
|
|
|
26
26
|
*/
|
|
27
27
|
declare class WrCarousel {
|
|
28
28
|
/** Active slide index. Two-way bindable. @default 0 */
|
|
29
|
+
/** Accessible name of the previous-slide button. Falls back to `carousel.prev`. */
|
|
30
|
+
readonly prevLabel: _angular_core.InputSignal<string | null>;
|
|
31
|
+
/** Accessible name of the next-slide button. Falls back to `carousel.next`. */
|
|
32
|
+
readonly nextLabel: _angular_core.InputSignal<string | null>;
|
|
33
|
+
/** Accessible name of the dot group. Falls back to `carousel.pagination`. */
|
|
34
|
+
readonly paginationLabel: _angular_core.InputSignal<string | null>;
|
|
35
|
+
protected readonly resolvedPrevLabel: _angular_core.Signal<string>;
|
|
36
|
+
protected readonly resolvedNextLabel: _angular_core.Signal<string>;
|
|
37
|
+
protected readonly resolvedPaginationLabel: _angular_core.Signal<string>;
|
|
29
38
|
readonly active: _angular_core.ModelSignal<number>;
|
|
30
39
|
/** Show prev / next arrow buttons. @default true */
|
|
31
40
|
readonly showArrows: _angular_core.InputSignalWithTransform<boolean, any>;
|
|
@@ -58,7 +67,7 @@ declare class WrCarousel {
|
|
|
58
67
|
protected onSwipeMove(event: TouchEvent): void;
|
|
59
68
|
protected onSwipeEnd(event: TouchEvent, viewport: HTMLElement): void;
|
|
60
69
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<WrCarousel, never>;
|
|
61
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrCarousel, "wr-carousel", never, { "active": { "alias": "active"; "required": false; "isSignal": true; }; "showArrows": { "alias": "showArrows"; "required": false; "isSignal": true; }; "showDots": { "alias": "showDots"; "required": false; "isSignal": true; }; "autoplay": { "alias": "autoplay"; "required": false; "isSignal": true; }; "intervalMs": { "alias": "intervalMs"; "required": false; "isSignal": true; }; "loop": { "alias": "loop"; "required": false; "isSignal": true; }; }, { "active": "activeChange"; }, ["slides"], ["*"], true, never>;
|
|
70
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrCarousel, "wr-carousel", never, { "prevLabel": { "alias": "prevLabel"; "required": false; "isSignal": true; }; "nextLabel": { "alias": "nextLabel"; "required": false; "isSignal": true; }; "paginationLabel": { "alias": "paginationLabel"; "required": false; "isSignal": true; }; "active": { "alias": "active"; "required": false; "isSignal": true; }; "showArrows": { "alias": "showArrows"; "required": false; "isSignal": true; }; "showDots": { "alias": "showDots"; "required": false; "isSignal": true; }; "autoplay": { "alias": "autoplay"; "required": false; "isSignal": true; }; "intervalMs": { "alias": "intervalMs"; "required": false; "isSignal": true; }; "loop": { "alias": "loop"; "required": false; "isSignal": true; }; }, { "active": "activeChange"; }, ["slides"], ["*"], true, never>;
|
|
62
71
|
}
|
|
63
72
|
|
|
64
73
|
export { WrCarousel, WrCarouselSlide };
|
package/types/ngwr-cascader.d.ts
CHANGED
|
@@ -51,10 +51,21 @@ interface WrCascaderOption<T = string> {
|
|
|
51
51
|
*/
|
|
52
52
|
type WrCascaderSize = 'sm' | 'md' | 'lg';
|
|
53
53
|
declare class WrCascader<T = string> implements FormValueControl<unknown> {
|
|
54
|
+
/** Accessible name. Falls back to `select.clearSelection`, then `'Clear selection'`. */
|
|
55
|
+
readonly clearLabel: _angular_core.InputSignal<string | null>;
|
|
56
|
+
protected readonly resolvedClearLabel: _angular_core.Signal<string>;
|
|
54
57
|
/** Root-level options. Each may have `children` for deeper levels. */
|
|
55
58
|
readonly options: _angular_core.InputSignal<readonly WrCascaderOption<T>[]>;
|
|
56
59
|
/** Placeholder shown when no path is selected. @default '' */
|
|
57
60
|
readonly placeholder: _angular_core.InputSignal<string>;
|
|
61
|
+
/**
|
|
62
|
+
* Accessible name of the trigger. Falls back to the placeholder, then to
|
|
63
|
+
* `select.label` — a `role="combobox"` with nothing selected and no
|
|
64
|
+
* placeholder otherwise has no name at all.
|
|
65
|
+
*/
|
|
66
|
+
readonly ariaLabel: _angular_core.InputSignal<string | null>;
|
|
67
|
+
private readonly labelText;
|
|
68
|
+
protected readonly resolvedAriaLabel: _angular_core.Signal<string>;
|
|
58
69
|
/**
|
|
59
70
|
* Disable the cascader. Bound automatically from the field's disabled state
|
|
60
71
|
* when used with `[formField]`.
|
|
@@ -115,7 +126,7 @@ declare class WrCascader<T = string> implements FormValueControl<unknown> {
|
|
|
115
126
|
private openOverlay;
|
|
116
127
|
private closeOverlay;
|
|
117
128
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<WrCascader<any>, never>;
|
|
118
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrCascader<any>, "wr-cascader", never, { "options": { "alias": "options"; "required": true; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "changeOnSelect": { "alias": "changeOnSelect"; "required": false; "isSignal": true; }; "separator": { "alias": "separator"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touch": "touch"; }, never, never, true, never>;
|
|
129
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrCascader<any>, "wr-cascader", never, { "clearLabel": { "alias": "clearLabel"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": true; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "changeOnSelect": { "alias": "changeOnSelect"; "required": false; "isSignal": true; }; "separator": { "alias": "separator"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touch": "touch"; }, never, never, true, never>;
|
|
119
130
|
}
|
|
120
131
|
|
|
121
132
|
export { WrCascader };
|
package/types/ngwr-checkbox.d.ts
CHANGED
|
@@ -47,6 +47,14 @@ declare class WrCheckbox implements FormCheckboxControl {
|
|
|
47
47
|
* `value`.)
|
|
48
48
|
*/
|
|
49
49
|
readonly checkboxValue: _angular_core.InputSignal<unknown>;
|
|
50
|
+
/**
|
|
51
|
+
* Accessible name for a checkbox used WITHOUT projected text — a selection
|
|
52
|
+
* cell in a table, say. The wrapping `<label>` names the control whenever
|
|
53
|
+
* content is projected; with none, the native input has no name, and an
|
|
54
|
+
* `aria-label` put on the host lands on a `<wr-checkbox>` element that no
|
|
55
|
+
* screen reader ever announces.
|
|
56
|
+
*/
|
|
57
|
+
readonly ariaLabel: _angular_core.InputSignal<string | null>;
|
|
50
58
|
/**
|
|
51
59
|
* Checked state — the form value. Bound by `[formField]`, two-way via
|
|
52
60
|
* `[(checked)]`, or `[(ngModel)]`. Ignored inside a `<wr-checkbox-group>`,
|
|
@@ -87,7 +95,7 @@ declare class WrCheckbox implements FormCheckboxControl {
|
|
|
87
95
|
protected onInputChange(event: Event): void;
|
|
88
96
|
protected onInputBlur(): void;
|
|
89
97
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<WrCheckbox, never>;
|
|
90
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrCheckbox, "wr-checkbox", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "checkboxValue": { "alias": "checkboxValue"; "required": false; "isSignal": true; }; "checked": { "alias": "checked"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "indeterminate": { "alias": "indeterminate"; "required": false; "isSignal": true; }; }, { "checked": "checkedChange"; "touch": "touch"; }, never, ["*"], true, never>;
|
|
98
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrCheckbox, "wr-checkbox", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "checkboxValue": { "alias": "checkboxValue"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "checked": { "alias": "checked"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "indeterminate": { "alias": "indeterminate"; "required": false; "isSignal": true; }; }, { "checked": "checkedChange"; "touch": "touch"; }, never, ["*"], true, never>;
|
|
91
99
|
}
|
|
92
100
|
|
|
93
101
|
/**
|
|
@@ -56,6 +56,9 @@ interface Bucket {
|
|
|
56
56
|
* @see https://ngwr.dev/reference/components/command-palette
|
|
57
57
|
*/
|
|
58
58
|
declare class WrCommandPalette {
|
|
59
|
+
/** Accessible name. Falls back to `commandPalette.label`, then `'Command palette'`. */
|
|
60
|
+
readonly paletteLabel: _angular_core.InputSignal<string | null>;
|
|
61
|
+
protected readonly resolvedPaletteLabel: _angular_core.Signal<string>;
|
|
59
62
|
/** Items shown in the palette. */
|
|
60
63
|
readonly items: _angular_core.InputSignal<readonly WrCommandItem[]>;
|
|
61
64
|
/** Controlled open state (two-way bindable). @default false */
|
|
@@ -118,7 +121,7 @@ declare class WrCommandPalette {
|
|
|
118
121
|
close(): void;
|
|
119
122
|
private commit;
|
|
120
123
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<WrCommandPalette, never>;
|
|
121
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrCommandPalette, "wr-command-palette", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "open": { "alias": "open"; "required": false; "isSignal": true; }; "trigger": { "alias": "trigger"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "emptyText": { "alias": "emptyText"; "required": false; "isSignal": true; }; "closeOnPick": { "alias": "closeOnPick"; "required": false; "isSignal": true; }; "responsive": { "alias": "responsive"; "required": false; "isSignal": true; }; }, { "open": "openChange"; "picked": "picked"; }, never, never, true, never>;
|
|
124
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrCommandPalette, "wr-command-palette", never, { "paletteLabel": { "alias": "paletteLabel"; "required": false; "isSignal": true; }; "items": { "alias": "items"; "required": false; "isSignal": true; }; "open": { "alias": "open"; "required": false; "isSignal": true; }; "trigger": { "alias": "trigger"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "emptyText": { "alias": "emptyText"; "required": false; "isSignal": true; }; "closeOnPick": { "alias": "closeOnPick"; "required": false; "isSignal": true; }; "responsive": { "alias": "responsive"; "required": false; "isSignal": true; }; }, { "open": "openChange"; "picked": "picked"; }, never, never, true, never>;
|
|
122
125
|
}
|
|
123
126
|
|
|
124
127
|
export { WrCommandPalette };
|