ngwr 10.0.0 → 10.2.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.
Files changed (238) hide show
  1. package/README.md +9 -8
  2. package/action-sheet/styles/_index.scss +6 -1
  3. package/alert/styles/_index.scss +7 -3
  4. package/badge/styles/_index.scss +1 -1
  5. package/badge/styles/_tag.scss +2 -2
  6. package/border-glow/styles/_index.scss +5 -0
  7. package/breadcrumbs/styles/_index.scss +1 -1
  8. package/button/styles/_index.scss +6 -6
  9. package/calendar/styles/_index.scss +9 -1
  10. package/circular-text/styles/_index.scss +6 -1
  11. package/density/styles/_index.scss +3 -1
  12. package/dialog/styles/_index.scss +1 -2
  13. package/drag-drop/styles/_index.scss +20 -7
  14. package/event-calendar/styles/_index.scss +284 -0
  15. package/falling-text/styles/_index.scss +5 -0
  16. package/fesm2022/ngwr-alert.mjs +8 -3
  17. package/fesm2022/ngwr-alert.mjs.map +1 -1
  18. package/fesm2022/ngwr-back-top.mjs +6 -4
  19. package/fesm2022/ngwr-back-top.mjs.map +1 -1
  20. package/fesm2022/ngwr-border-glow.mjs +12 -9
  21. package/fesm2022/ngwr-border-glow.mjs.map +1 -1
  22. package/fesm2022/ngwr-breadcrumbs.mjs +2 -2
  23. package/fesm2022/ngwr-breadcrumbs.mjs.map +1 -1
  24. package/fesm2022/ngwr-calendar.mjs +5 -3
  25. package/fesm2022/ngwr-calendar.mjs.map +1 -1
  26. package/fesm2022/ngwr-card.mjs +2 -2
  27. package/fesm2022/ngwr-card.mjs.map +1 -1
  28. package/fesm2022/ngwr-carousel.mjs +17 -4
  29. package/fesm2022/ngwr-carousel.mjs.map +1 -1
  30. package/fesm2022/ngwr-cascader.mjs +31 -4
  31. package/fesm2022/ngwr-cascader.mjs.map +1 -1
  32. package/fesm2022/ngwr-checkbox.mjs +12 -3
  33. package/fesm2022/ngwr-checkbox.mjs.map +1 -1
  34. package/fesm2022/ngwr-circular-text.mjs +2 -2
  35. package/fesm2022/ngwr-circular-text.mjs.map +1 -1
  36. package/fesm2022/ngwr-command-palette.mjs +7 -3
  37. package/fesm2022/ngwr-command-palette.mjs.map +1 -1
  38. package/fesm2022/ngwr-counter.mjs +9 -1
  39. package/fesm2022/ngwr-counter.mjs.map +1 -1
  40. package/fesm2022/ngwr-date-picker.mjs +23 -6
  41. package/fesm2022/ngwr-date-picker.mjs.map +1 -1
  42. package/fesm2022/ngwr-descriptions.mjs +5 -4
  43. package/fesm2022/ngwr-descriptions.mjs.map +1 -1
  44. package/fesm2022/ngwr-drag-drop.mjs +2 -2
  45. package/fesm2022/ngwr-drag-drop.mjs.map +1 -1
  46. package/fesm2022/ngwr-dropdown.mjs +4 -0
  47. package/fesm2022/ngwr-dropdown.mjs.map +1 -1
  48. package/fesm2022/ngwr-event-calendar.mjs +723 -0
  49. package/fesm2022/ngwr-event-calendar.mjs.map +1 -0
  50. package/fesm2022/ngwr-falling-text.mjs +2 -2
  51. package/fesm2022/ngwr-falling-text.mjs.map +1 -1
  52. package/fesm2022/ngwr-file-upload.mjs +2 -2
  53. package/fesm2022/ngwr-file-upload.mjs.map +1 -1
  54. package/fesm2022/ngwr-form.mjs +258 -42
  55. package/fesm2022/ngwr-form.mjs.map +1 -1
  56. package/fesm2022/ngwr-fuzzy-text.mjs +15 -1
  57. package/fesm2022/ngwr-fuzzy-text.mjs.map +1 -1
  58. package/fesm2022/ngwr-gauge.mjs +8 -3
  59. package/fesm2022/ngwr-gauge.mjs.map +1 -1
  60. package/fesm2022/ngwr-glitch-text.mjs +2 -2
  61. package/fesm2022/ngwr-glitch-text.mjs.map +1 -1
  62. package/fesm2022/ngwr-gradient-text.mjs +2 -2
  63. package/fesm2022/ngwr-gradient-text.mjs.map +1 -1
  64. package/fesm2022/ngwr-i18n-en.mjs +73 -5
  65. package/fesm2022/ngwr-i18n-en.mjs.map +1 -1
  66. package/fesm2022/ngwr-i18n-ru.mjs +73 -5
  67. package/fesm2022/ngwr-i18n-ru.mjs.map +1 -1
  68. package/fesm2022/ngwr-i18n.mjs +20 -2
  69. package/fesm2022/ngwr-i18n.mjs.map +1 -1
  70. package/fesm2022/ngwr-icon.mjs +5 -0
  71. package/fesm2022/ngwr-icon.mjs.map +1 -1
  72. package/fesm2022/ngwr-input-number.mjs +19 -3
  73. package/fesm2022/ngwr-input-number.mjs.map +1 -1
  74. package/fesm2022/ngwr-input.mjs +48 -6
  75. package/fesm2022/ngwr-input.mjs.map +1 -1
  76. package/fesm2022/ngwr-knob.mjs +8 -3
  77. package/fesm2022/ngwr-knob.mjs.map +1 -1
  78. package/fesm2022/ngwr-lightbox.mjs +32 -3
  79. package/fesm2022/ngwr-lightbox.mjs.map +1 -1
  80. package/fesm2022/ngwr-line-chart.mjs +3 -3
  81. package/fesm2022/ngwr-line-chart.mjs.map +1 -1
  82. package/fesm2022/ngwr-list.mjs +2 -2
  83. package/fesm2022/ngwr-list.mjs.map +1 -1
  84. package/fesm2022/ngwr-loading-bar.mjs +2 -2
  85. package/fesm2022/ngwr-loading-bar.mjs.map +1 -1
  86. package/fesm2022/ngwr-marquee.mjs +2 -2
  87. package/fesm2022/ngwr-marquee.mjs.map +1 -1
  88. package/fesm2022/ngwr-media.mjs +3 -0
  89. package/fesm2022/ngwr-media.mjs.map +1 -1
  90. package/fesm2022/ngwr-meter-group.mjs +14 -3
  91. package/fesm2022/ngwr-meter-group.mjs.map +1 -1
  92. package/fesm2022/ngwr-page-header.mjs +2 -2
  93. package/fesm2022/ngwr-page-header.mjs.map +1 -1
  94. package/fesm2022/ngwr-pagination.mjs +1 -1
  95. package/fesm2022/ngwr-pagination.mjs.map +1 -1
  96. package/fesm2022/ngwr-progress.mjs +8 -2
  97. package/fesm2022/ngwr-progress.mjs.map +1 -1
  98. package/fesm2022/ngwr-qr.mjs.map +1 -1
  99. package/fesm2022/ngwr-rating.mjs +6 -4
  100. package/fesm2022/ngwr-rating.mjs.map +1 -1
  101. package/fesm2022/ngwr-result.mjs +19 -12
  102. package/fesm2022/ngwr-result.mjs.map +1 -1
  103. package/fesm2022/ngwr-segmented.mjs +2 -2
  104. package/fesm2022/ngwr-segmented.mjs.map +1 -1
  105. package/fesm2022/ngwr-select.mjs +28 -8
  106. package/fesm2022/ngwr-select.mjs.map +1 -1
  107. package/fesm2022/ngwr-shiny-text.mjs +4 -6
  108. package/fesm2022/ngwr-shiny-text.mjs.map +1 -1
  109. package/fesm2022/ngwr-speed-dial.mjs +11 -3
  110. package/fesm2022/ngwr-speed-dial.mjs.map +1 -1
  111. package/fesm2022/ngwr-spotlight-card.mjs +2 -2
  112. package/fesm2022/ngwr-spotlight-card.mjs.map +1 -1
  113. package/fesm2022/ngwr-squircle.mjs +1 -1
  114. package/fesm2022/ngwr-squircle.mjs.map +1 -1
  115. package/fesm2022/ngwr-star-border.mjs +2 -2
  116. package/fesm2022/ngwr-star-border.mjs.map +1 -1
  117. package/fesm2022/ngwr-switch.mjs +10 -3
  118. package/fesm2022/ngwr-switch.mjs.map +1 -1
  119. package/fesm2022/ngwr-table.mjs +233 -19
  120. package/fesm2022/ngwr-table.mjs.map +1 -1
  121. package/fesm2022/ngwr-tabs.mjs +21 -4
  122. package/fesm2022/ngwr-tabs.mjs.map +1 -1
  123. package/fesm2022/ngwr-textarea.mjs +20 -4
  124. package/fesm2022/ngwr-textarea.mjs.map +1 -1
  125. package/fesm2022/ngwr-tilt-card.mjs +2 -2
  126. package/fesm2022/ngwr-tilt-card.mjs.map +1 -1
  127. package/fesm2022/ngwr-toolbar.mjs +2 -2
  128. package/fesm2022/ngwr-toolbar.mjs.map +1 -1
  129. package/fesm2022/ngwr-tour.mjs +264 -0
  130. package/fesm2022/ngwr-tour.mjs.map +1 -0
  131. package/fesm2022/ngwr-transfer.mjs +184 -0
  132. package/fesm2022/ngwr-transfer.mjs.map +1 -0
  133. package/fesm2022/ngwr-tree.mjs +23 -6
  134. package/fesm2022/ngwr-tree.mjs.map +1 -1
  135. package/fesm2022/ngwr-typewriter.mjs +2 -2
  136. package/fesm2022/ngwr-typewriter.mjs.map +1 -1
  137. package/fesm2022/ngwr-validators.mjs +118 -2
  138. package/fesm2022/ngwr-validators.mjs.map +1 -1
  139. package/fesm2022/ngwr-version.mjs +2 -2
  140. package/fesm2022/ngwr-version.mjs.map +1 -1
  141. package/fesm2022/ngwr-virtual-scroll.mjs +2 -2
  142. package/fesm2022/ngwr-virtual-scroll.mjs.map +1 -1
  143. package/fesm2022/ngwr-waves.mjs +2 -2
  144. package/fesm2022/ngwr-waves.mjs.map +1 -1
  145. package/form/styles/_index.scss +8 -4
  146. package/glitch-text/styles/_index.scss +5 -0
  147. package/gradient-text/styles/_index.scss +5 -0
  148. package/i18n/en.json +74 -6
  149. package/i18n/ru.json +74 -6
  150. package/icon/styles/_index.scss +5 -0
  151. package/keyboard/styles/_index.scss +5 -0
  152. package/llms-full.txt +123 -62
  153. package/llms.txt +29 -8
  154. package/loading-bar/styles/_index.scss +5 -0
  155. package/marquee/styles/_index.scss +7 -2
  156. package/overlay/styles/_index.scss +5 -0
  157. package/package.json +13 -1
  158. package/popover/styles/_index.scss +48 -12
  159. package/pull-to-refresh/styles/_index.scss +5 -0
  160. package/result/styles/_index.scss +3 -3
  161. package/schematics/icon-set/index.js +80 -34
  162. package/schematics/icon-set/schema.json +8 -3
  163. package/schematics/ng-add/index.js +5 -2
  164. package/schematics/page/templates.js +17 -21
  165. package/schematics/provider/index.js +31 -13
  166. package/schematics/provider/schema.json +40 -24
  167. package/schematics/use/index.js +5 -1
  168. package/schematics/use/schema.json +8 -3
  169. package/schematics/use/symbol-map.json +6 -177
  170. package/segmented/styles/_index.scss +1 -1
  171. package/select/styles/_index.scss +7 -3
  172. package/shiny-text/styles/_index.scss +5 -0
  173. package/sidebar/styles/_index.scss +3 -3
  174. package/speed-dial/styles/_index.scss +12 -1
  175. package/spotlight-card/styles/_index.scss +5 -0
  176. package/squircle/styles/_index.scss +5 -0
  177. package/star-border/styles/_index.scss +5 -0
  178. package/statistic/styles/_index.scss +2 -2
  179. package/stepper/styles/_index.scss +3 -3
  180. package/styles/_animations.scss +6 -0
  181. package/styles.scss +3 -0
  182. package/table/styles/_index.scss +100 -2
  183. package/tabs/styles/_index.scss +1 -1
  184. package/theme/styles/_colors.scss +65 -2
  185. package/theme/styles/_dark.scss +18 -6
  186. package/theme/styles/_focus.scss +2 -8
  187. package/tilt-card/styles/_index.scss +5 -0
  188. package/toast/styles/_index.scss +6 -3
  189. package/tour/styles/_index.scss +63 -0
  190. package/transfer/styles/_index.scss +105 -0
  191. package/types/ngwr-alert.d.ts +4 -1
  192. package/types/ngwr-avatar.d.ts +1 -1
  193. package/types/ngwr-back-top.d.ts +3 -2
  194. package/types/ngwr-badge.d.ts +1 -1
  195. package/types/ngwr-border-glow.d.ts +0 -1
  196. package/types/ngwr-carousel.d.ts +10 -1
  197. package/types/ngwr-cascader.d.ts +12 -1
  198. package/types/ngwr-checkbox.d.ts +9 -1
  199. package/types/ngwr-command-palette.d.ts +4 -1
  200. package/types/ngwr-date-picker.d.ts +9 -1
  201. package/types/ngwr-density.d.ts +1 -1
  202. package/types/ngwr-divider.d.ts +1 -1
  203. package/types/ngwr-event-calendar.d.ts +358 -0
  204. package/types/ngwr-form.d.ts +177 -20
  205. package/types/ngwr-fuzzy-text.d.ts +8 -0
  206. package/types/ngwr-gauge.d.ts +4 -1
  207. package/types/ngwr-i18n.d.ts +15 -0
  208. package/types/ngwr-input-number.d.ts +8 -1
  209. package/types/ngwr-input.d.ts +50 -20
  210. package/types/ngwr-knob.d.ts +4 -1
  211. package/types/ngwr-lightbox.d.ts +7 -1
  212. package/types/ngwr-line-chart.d.ts +1 -1
  213. package/types/ngwr-media.d.ts +1 -1
  214. package/types/ngwr-meter-group.d.ts +9 -1
  215. package/types/ngwr-page-header.d.ts +2 -2
  216. package/types/ngwr-pagination.d.ts +1 -1
  217. package/types/ngwr-progress.d.ts +4 -1
  218. package/types/ngwr-rating.d.ts +3 -2
  219. package/types/ngwr-result.d.ts +12 -6
  220. package/types/ngwr-segmented.d.ts +6 -0
  221. package/types/ngwr-select.d.ts +13 -7
  222. package/types/ngwr-shiny-text.d.ts +2 -4
  223. package/types/ngwr-speed-dial.d.ts +7 -1
  224. package/types/ngwr-squircle.d.ts +1 -1
  225. package/types/ngwr-switch.d.ts +7 -1
  226. package/types/ngwr-table.d.ts +126 -6
  227. package/types/ngwr-tabs.d.ts +1 -4
  228. package/types/ngwr-textarea.d.ts +8 -1
  229. package/types/ngwr-toolbar.d.ts +2 -2
  230. package/types/ngwr-tour.d.ts +132 -0
  231. package/types/ngwr-transfer.d.ts +118 -0
  232. package/types/ngwr-tree.d.ts +10 -2
  233. package/types/ngwr-validators.d.ts +62 -2
  234. package/types/ngwr-version.d.ts +2 -2
  235. package/typewriter/styles/_index.scss +5 -0
  236. package/typography/styles/_index.scss +5 -5
  237. package/virtual-scroll/styles/_index.scss +6 -1
  238. package/waves/styles/_index.scss +5 -0
@@ -40,11 +40,11 @@
40
40
  font-variant-numeric: tabular-nums;
41
41
 
42
42
  &--up {
43
- color: var(--wr-color-success);
43
+ color: var(--wr-color-success-ink);
44
44
  }
45
45
 
46
46
  &--down {
47
- color: var(--wr-color-danger);
47
+ color: var(--wr-color-danger-ink);
48
48
  }
49
49
 
50
50
  &--flat {
@@ -69,7 +69,7 @@
69
69
 
70
70
  &:hover:not(:disabled) .wr-stepper__indicator {
71
71
  border-color: var(--wr-color-primary);
72
- color: var(--wr-color-primary);
72
+ color: var(--wr-color-primary-ink);
73
73
  }
74
74
  }
75
75
 
@@ -94,7 +94,7 @@
94
94
 
95
95
  &__header--active &__indicator {
96
96
  border-color: var(--wr-color-primary);
97
- color: var(--wr-color-primary);
97
+ color: var(--wr-color-primary-ink);
98
98
  background: var(--wr-color-primary-soft);
99
99
  }
100
100
 
@@ -114,7 +114,7 @@
114
114
  }
115
115
 
116
116
  &__header--active &__label {
117
- color: var(--wr-color-primary);
117
+ color: var(--wr-color-primary-ink);
118
118
  }
119
119
 
120
120
  &__optional,
@@ -106,6 +106,12 @@
106
106
  }
107
107
  }
108
108
 
109
+ // Literal curves on purpose. `animation-timing-function` inside a keyframe is
110
+ // resolved when the keyframe is parsed, not against the animated element, so a
111
+ // `var(--wr-ease-*)` here silently evaluates to the element's own
112
+ // animation-timing-function instead — verified in Chrome: the tokenised version
113
+ // reports the element's `steps(4)` where a literal reports the curve. These two
114
+ // are the only motion values in the library that cannot read the token layer.
109
115
  @keyframes wr-bounce {
110
116
  0%,
111
117
  100% {
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';
@@ -126,8 +126,67 @@
126
126
  opacity: 0.35;
127
127
  }
128
128
 
129
- .cdk-drag-animating {
130
- transition: transform 0.18s cubic-bezier(0, 0, 0.2, 1);
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
+ }
@@ -4,7 +4,7 @@
4
4
  --wr-tabs-border: var(--wr-color-outline);
5
5
  --wr-tabs-color: var(--wr-color-on-surface-muted);
6
6
  --wr-tabs-color-hover: var(--wr-color-on-surface);
7
- --wr-tabs-color-active: var(--wr-color-primary);
7
+ --wr-tabs-color-active: var(--wr-color-primary-ink);
8
8
  --wr-tabs-indicator: var(--wr-color-primary);
9
9
  --wr-tabs-font-size: var(--wr-control-font-size-md);
10
10
  --wr-tabs-line-height: var(--wr-control-line-height-md);
@@ -28,7 +28,15 @@ $base-colors: (
28
28
  $contrast-threshold: 150 !default;
29
29
 
30
30
  // Dark text used on light backgrounds.
31
- $contrast-dark: #171616 !default;
31
+ //
32
+ // Pure black, not a near-black. `_contrast()` does not blend — it picks
33
+ // whichever of these two candidates scores higher against the fill — so this
34
+ // value IS the ceiling for every intent whose label comes out dark, and a
35
+ // softer black spends contrast that cannot be recovered anywhere else.
36
+ // Measured: #171616 cost between 0.74 and 1.95 across the ramp, and left
37
+ // `secondary` clearing AA by 0.02 when 5.26:1 was available. On a saturated
38
+ // chip the two are hard to tell apart; the ratio is not.
39
+ $contrast-dark: #000000 !default;
32
40
 
33
41
  // Light text used on dark backgrounds.
34
42
  $contrast-light: #ffffff !default;
@@ -141,7 +149,11 @@ $contrast-light: #ffffff !default;
141
149
  // labels / captions / placeholders read consistently. One place each.
142
150
  // Only the full-opacity token above is AA-safe for body text; these two are
143
151
  // decorative by design (0.85 reaches ~3.5:1, 0.6 ~2.3:1 on a light surface).
144
- --wr-color-text-muted: rgba(var(--wr-color-muted-text-rgb), 0.85);
152
+ // 0.95, not 0.85: the role itself is 5.35:1 on the light surface, but wrapping
153
+ // it at 0.85 composited to #778291 — 3.90:1, under the AA bar. 0.95 is the
154
+ // most softening that still clears it (4.81), which leaves this token barely
155
+ // distinguishable from the flat role it wraps.
156
+ --wr-color-text-muted: rgba(var(--wr-color-muted-text-rgb), 0.95);
145
157
  --wr-color-text-faint: rgba(var(--wr-color-muted-text-rgb), 0.6);
146
158
 
147
159
  // Neutral gray ramp — a FIXED primitive scale (slate). Each step is a stable
@@ -214,6 +226,57 @@ $contrast-light: #ffffff !default;
214
226
  --wr-color-#{$name}-soft-contrast: color-mix(in srgb, var(--wr-color-#{$name}) 62%, var(--wr-color-dark));
215
227
  --wr-color-#{$name}-active: rgba(var(--wr-color-#{$name}-rgb), 0.2);
216
228
  }
229
+
230
+ // `-ink`: the intent used as TEXT on `--wr-color-surface`.
231
+ //
232
+ // v10 fixed the opposite direction — `-contrast`, the label ON a filled
233
+ // intent. The inverse was never covered, and the light theme fails WCAG AA
234
+ // everywhere an outlined / bordered variant paints the hue as its own label:
235
+ // warning lands at 1.71:1 against a 4.5 bar, medium 3.10, success 3.33,
236
+ // danger and info 3.68, secondary 3.99. Dark passes on all of them, because
237
+ // its bases were retuned lighter for a dark canvas and that happens to be the
238
+ // accessible direction.
239
+ //
240
+ // Same recipe as `-soft-contrast`: mixing toward `--wr-color-dark` darkens in
241
+ // light and lightens in dark from ONE declaration, because that token itself
242
+ // flips. The share is per intent rather than uniform — warning has to travel
243
+ // furthest (a yellow readable on white is not yellow), and forcing every
244
+ // intent to warning's share would drag primary to near-navy for no reason.
245
+ // Each is the measured minimum that clears 4.5:1 in BOTH themes on the surface
246
+ // and on the tag's 6% / 10% tints, with 3pp of headroom.
247
+ // Calibrated against the `-soft` TINT, not the plain surface — it is the
248
+ // darker of the two backgrounds `-ink` is documented for, in both themes, so
249
+ // it is the binding one.
250
+ //
251
+ // Each share is the LARGEST (most saturated) value that still reaches 5.0:1
252
+ // there. Targeting AA's 4.5 exactly is what the first pass did, and it left
253
+ // every intent between 4.59 and 4.83 — inside rounding distance of the line.
254
+ // Anything that shifted the background a little then pushed it under:
255
+ // `wr-typography--code` measured 4.24 with `success-ink`, `wr-tag--primary`
256
+ // 4.42. Half a point of headroom absorbs that, for 2–7 points of share.
257
+ //
258
+ // Going further is not free: 5.25 costs 7–11 points and 5.5 up to 14, which
259
+ // on `primary` means 93% -> 79% and a visibly muddier blue.
260
+ $ink-mix: (
261
+ primary: 86%,
262
+ secondary: 75%,
263
+ success: 67%,
264
+ warning: 48%,
265
+ danger: 72%,
266
+ info: 71%,
267
+ medium: 65%,
268
+ );
269
+
270
+ @each $name, $share in $ink-mix {
271
+ --wr-color-#{$name}-ink: color-mix(in srgb, var(--wr-color-#{$name}) #{$share}, var(--wr-color-dark));
272
+ }
273
+
274
+ // `light` is a surface tone by definition — a hair off the page background in
275
+ // either theme — so there is no darkening that keeps it recognisable AND
276
+ // readable. It borrows the page's own ink; the border still carries the
277
+ // intent. `dark` already IS the ink.
278
+ --wr-color-light-ink: var(--wr-color-on-surface);
279
+ --wr-color-dark-ink: var(--wr-color-dark);
217
280
  }
218
281
 
219
282
  // Public SCSS list
@@ -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: #{color.channel($_dark, 'red')}, #{color.channel($_dark, 'green')}, #{color.channel($_dark, 'blue')};
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
- --wr-color-dark-light: #{color.adjust($_dark, $lightness: 5%)};
54
- --wr-color-dark-lighter: #{color.adjust($_dark, $lightness: 10%)};
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: #{color.channel($_light, 'red')}, #{color.channel($_light, 'green')}, #{color.channel($_light, 'blue')};
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: #{color.channel($_medium, 'red')}, #{color.channel($_medium, 'green')}, #{color.channel($_medium, 'blue')};
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: #{color.channel($base, 'red')}, #{color.channel($base, 'green')}, #{color.channel($base, 'blue')};
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%)};
@@ -37,7 +37,7 @@
37
37
  }
38
38
 
39
39
  // Mention option rows
40
- .wr-mention__option:focus-visible {
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-stepper__step:focus-visible {
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"`.
@@ -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: primary,
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 cubic-bezier(0.4, 0, 0.2, 1),
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 cubic-bezier(0.4, 0, 0.2, 1),
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
+ }
@@ -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 };
@@ -87,4 +87,4 @@ declare class WrAvatar {
87
87
  }
88
88
 
89
89
  export { WrAvatar };
90
- export type { WrAvatarSize };
90
+ export type { WrAvatarShape, WrAvatarSize };
@@ -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. @default 'Back to top' */
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;
@@ -155,4 +155,4 @@ declare class WrTag {
155
155
  }
156
156
 
157
157
  export { WrBadge, WrTag };
158
- export type { WrBadgeSize, WrTagIconPosition };
158
+ export type { WrBadgeShape, WrBadgeSize, WrTagIconPosition };
@@ -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>>;
@@ -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 };