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.
Files changed (233) hide show
  1. package/README.md +9 -8
  2. package/action-sheet/styles/_index.scss +6 -1
  3. package/badge/styles/_index.scss +1 -1
  4. package/badge/styles/_tag.scss +2 -2
  5. package/border-glow/styles/_index.scss +5 -0
  6. package/button/styles/_index.scss +6 -6
  7. package/calendar/styles/_index.scss +9 -1
  8. package/circular-text/styles/_index.scss +6 -1
  9. package/density/styles/_index.scss +3 -1
  10. package/dialog/styles/_index.scss +1 -2
  11. package/drag-drop/styles/_index.scss +20 -7
  12. package/event-calendar/styles/_index.scss +284 -0
  13. package/falling-text/styles/_index.scss +5 -0
  14. package/fesm2022/ngwr-alert.mjs +8 -3
  15. package/fesm2022/ngwr-alert.mjs.map +1 -1
  16. package/fesm2022/ngwr-back-top.mjs +6 -4
  17. package/fesm2022/ngwr-back-top.mjs.map +1 -1
  18. package/fesm2022/ngwr-border-glow.mjs +12 -9
  19. package/fesm2022/ngwr-border-glow.mjs.map +1 -1
  20. package/fesm2022/ngwr-breadcrumbs.mjs +2 -2
  21. package/fesm2022/ngwr-breadcrumbs.mjs.map +1 -1
  22. package/fesm2022/ngwr-calendar.mjs +5 -3
  23. package/fesm2022/ngwr-calendar.mjs.map +1 -1
  24. package/fesm2022/ngwr-card.mjs +2 -2
  25. package/fesm2022/ngwr-card.mjs.map +1 -1
  26. package/fesm2022/ngwr-carousel.mjs +17 -4
  27. package/fesm2022/ngwr-carousel.mjs.map +1 -1
  28. package/fesm2022/ngwr-cascader.mjs +31 -4
  29. package/fesm2022/ngwr-cascader.mjs.map +1 -1
  30. package/fesm2022/ngwr-checkbox.mjs +12 -3
  31. package/fesm2022/ngwr-checkbox.mjs.map +1 -1
  32. package/fesm2022/ngwr-circular-text.mjs +2 -2
  33. package/fesm2022/ngwr-circular-text.mjs.map +1 -1
  34. package/fesm2022/ngwr-command-palette.mjs +7 -3
  35. package/fesm2022/ngwr-command-palette.mjs.map +1 -1
  36. package/fesm2022/ngwr-counter.mjs +9 -1
  37. package/fesm2022/ngwr-counter.mjs.map +1 -1
  38. package/fesm2022/ngwr-date-picker.mjs +23 -6
  39. package/fesm2022/ngwr-date-picker.mjs.map +1 -1
  40. package/fesm2022/ngwr-descriptions.mjs +5 -4
  41. package/fesm2022/ngwr-descriptions.mjs.map +1 -1
  42. package/fesm2022/ngwr-drag-drop.mjs +2 -2
  43. package/fesm2022/ngwr-drag-drop.mjs.map +1 -1
  44. package/fesm2022/ngwr-dropdown.mjs +4 -0
  45. package/fesm2022/ngwr-dropdown.mjs.map +1 -1
  46. package/fesm2022/ngwr-event-calendar.mjs +723 -0
  47. package/fesm2022/ngwr-event-calendar.mjs.map +1 -0
  48. package/fesm2022/ngwr-falling-text.mjs +2 -2
  49. package/fesm2022/ngwr-falling-text.mjs.map +1 -1
  50. package/fesm2022/ngwr-file-upload.mjs +2 -2
  51. package/fesm2022/ngwr-file-upload.mjs.map +1 -1
  52. package/fesm2022/ngwr-form.mjs +258 -42
  53. package/fesm2022/ngwr-form.mjs.map +1 -1
  54. package/fesm2022/ngwr-fuzzy-text.mjs +15 -1
  55. package/fesm2022/ngwr-fuzzy-text.mjs.map +1 -1
  56. package/fesm2022/ngwr-gauge.mjs +8 -3
  57. package/fesm2022/ngwr-gauge.mjs.map +1 -1
  58. package/fesm2022/ngwr-glitch-text.mjs +2 -2
  59. package/fesm2022/ngwr-glitch-text.mjs.map +1 -1
  60. package/fesm2022/ngwr-gradient-text.mjs +2 -2
  61. package/fesm2022/ngwr-gradient-text.mjs.map +1 -1
  62. package/fesm2022/ngwr-i18n-en.mjs +73 -5
  63. package/fesm2022/ngwr-i18n-en.mjs.map +1 -1
  64. package/fesm2022/ngwr-i18n-ru.mjs +73 -5
  65. package/fesm2022/ngwr-i18n-ru.mjs.map +1 -1
  66. package/fesm2022/ngwr-i18n.mjs +20 -2
  67. package/fesm2022/ngwr-i18n.mjs.map +1 -1
  68. package/fesm2022/ngwr-icon.mjs +5 -0
  69. package/fesm2022/ngwr-icon.mjs.map +1 -1
  70. package/fesm2022/ngwr-input-number.mjs +19 -3
  71. package/fesm2022/ngwr-input-number.mjs.map +1 -1
  72. package/fesm2022/ngwr-input.mjs +48 -6
  73. package/fesm2022/ngwr-input.mjs.map +1 -1
  74. package/fesm2022/ngwr-knob.mjs +8 -3
  75. package/fesm2022/ngwr-knob.mjs.map +1 -1
  76. package/fesm2022/ngwr-lightbox.mjs +32 -3
  77. package/fesm2022/ngwr-lightbox.mjs.map +1 -1
  78. package/fesm2022/ngwr-line-chart.mjs +3 -3
  79. package/fesm2022/ngwr-line-chart.mjs.map +1 -1
  80. package/fesm2022/ngwr-list.mjs +2 -2
  81. package/fesm2022/ngwr-list.mjs.map +1 -1
  82. package/fesm2022/ngwr-loading-bar.mjs +2 -2
  83. package/fesm2022/ngwr-loading-bar.mjs.map +1 -1
  84. package/fesm2022/ngwr-marquee.mjs +2 -2
  85. package/fesm2022/ngwr-marquee.mjs.map +1 -1
  86. package/fesm2022/ngwr-media.mjs +3 -0
  87. package/fesm2022/ngwr-media.mjs.map +1 -1
  88. package/fesm2022/ngwr-meter-group.mjs +14 -3
  89. package/fesm2022/ngwr-meter-group.mjs.map +1 -1
  90. package/fesm2022/ngwr-page-header.mjs +2 -2
  91. package/fesm2022/ngwr-page-header.mjs.map +1 -1
  92. package/fesm2022/ngwr-pagination.mjs +1 -1
  93. package/fesm2022/ngwr-pagination.mjs.map +1 -1
  94. package/fesm2022/ngwr-progress.mjs +8 -2
  95. package/fesm2022/ngwr-progress.mjs.map +1 -1
  96. package/fesm2022/ngwr-qr.mjs.map +1 -1
  97. package/fesm2022/ngwr-rating.mjs +6 -4
  98. package/fesm2022/ngwr-rating.mjs.map +1 -1
  99. package/fesm2022/ngwr-result.mjs +19 -12
  100. package/fesm2022/ngwr-result.mjs.map +1 -1
  101. package/fesm2022/ngwr-segmented.mjs +2 -2
  102. package/fesm2022/ngwr-segmented.mjs.map +1 -1
  103. package/fesm2022/ngwr-select.mjs +28 -8
  104. package/fesm2022/ngwr-select.mjs.map +1 -1
  105. package/fesm2022/ngwr-shiny-text.mjs +4 -6
  106. package/fesm2022/ngwr-shiny-text.mjs.map +1 -1
  107. package/fesm2022/ngwr-speed-dial.mjs +11 -3
  108. package/fesm2022/ngwr-speed-dial.mjs.map +1 -1
  109. package/fesm2022/ngwr-spotlight-card.mjs +2 -2
  110. package/fesm2022/ngwr-spotlight-card.mjs.map +1 -1
  111. package/fesm2022/ngwr-squircle.mjs +1 -1
  112. package/fesm2022/ngwr-squircle.mjs.map +1 -1
  113. package/fesm2022/ngwr-star-border.mjs +2 -2
  114. package/fesm2022/ngwr-star-border.mjs.map +1 -1
  115. package/fesm2022/ngwr-switch.mjs +10 -3
  116. package/fesm2022/ngwr-switch.mjs.map +1 -1
  117. package/fesm2022/ngwr-table.mjs +233 -19
  118. package/fesm2022/ngwr-table.mjs.map +1 -1
  119. package/fesm2022/ngwr-tabs.mjs +21 -4
  120. package/fesm2022/ngwr-tabs.mjs.map +1 -1
  121. package/fesm2022/ngwr-textarea.mjs +20 -4
  122. package/fesm2022/ngwr-textarea.mjs.map +1 -1
  123. package/fesm2022/ngwr-tilt-card.mjs +2 -2
  124. package/fesm2022/ngwr-tilt-card.mjs.map +1 -1
  125. package/fesm2022/ngwr-toolbar.mjs +2 -2
  126. package/fesm2022/ngwr-toolbar.mjs.map +1 -1
  127. package/fesm2022/ngwr-tour.mjs +264 -0
  128. package/fesm2022/ngwr-tour.mjs.map +1 -0
  129. package/fesm2022/ngwr-transfer.mjs +184 -0
  130. package/fesm2022/ngwr-transfer.mjs.map +1 -0
  131. package/fesm2022/ngwr-tree.mjs +23 -6
  132. package/fesm2022/ngwr-tree.mjs.map +1 -1
  133. package/fesm2022/ngwr-typewriter.mjs +2 -2
  134. package/fesm2022/ngwr-typewriter.mjs.map +1 -1
  135. package/fesm2022/ngwr-validators.mjs +118 -2
  136. package/fesm2022/ngwr-validators.mjs.map +1 -1
  137. package/fesm2022/ngwr-version.mjs +2 -2
  138. package/fesm2022/ngwr-version.mjs.map +1 -1
  139. package/fesm2022/ngwr-virtual-scroll.mjs +2 -2
  140. package/fesm2022/ngwr-virtual-scroll.mjs.map +1 -1
  141. package/fesm2022/ngwr-waves.mjs +2 -2
  142. package/fesm2022/ngwr-waves.mjs.map +1 -1
  143. package/form/styles/_index.scss +8 -4
  144. package/glitch-text/styles/_index.scss +5 -0
  145. package/gradient-text/styles/_index.scss +5 -0
  146. package/i18n/en.json +74 -6
  147. package/i18n/ru.json +74 -6
  148. package/icon/styles/_index.scss +5 -0
  149. package/keyboard/styles/_index.scss +5 -0
  150. package/llms-full.txt +123 -62
  151. package/llms.txt +29 -8
  152. package/loading-bar/styles/_index.scss +5 -0
  153. package/marquee/styles/_index.scss +7 -2
  154. package/overlay/styles/_index.scss +5 -0
  155. package/package.json +13 -1
  156. package/popover/styles/_index.scss +48 -12
  157. package/pull-to-refresh/styles/_index.scss +5 -0
  158. package/result/styles/_index.scss +3 -3
  159. package/schematics/icon-set/index.js +80 -34
  160. package/schematics/icon-set/schema.json +8 -3
  161. package/schematics/ng-add/index.js +5 -2
  162. package/schematics/page/templates.js +17 -21
  163. package/schematics/provider/index.js +31 -13
  164. package/schematics/provider/schema.json +40 -24
  165. package/schematics/use/index.js +5 -1
  166. package/schematics/use/schema.json +8 -3
  167. package/schematics/use/symbol-map.json +6 -177
  168. package/segmented/styles/_index.scss +1 -1
  169. package/select/styles/_index.scss +7 -3
  170. package/shiny-text/styles/_index.scss +5 -0
  171. package/speed-dial/styles/_index.scss +12 -1
  172. package/spotlight-card/styles/_index.scss +5 -0
  173. package/squircle/styles/_index.scss +5 -0
  174. package/star-border/styles/_index.scss +5 -0
  175. package/statistic/styles/_index.scss +2 -2
  176. package/styles/_animations.scss +6 -0
  177. package/styles.scss +3 -0
  178. package/table/styles/_index.scss +100 -2
  179. package/theme/styles/_colors.scss +43 -1
  180. package/theme/styles/_dark.scss +18 -6
  181. package/theme/styles/_focus.scss +2 -8
  182. package/tilt-card/styles/_index.scss +5 -0
  183. package/toast/styles/_index.scss +6 -3
  184. package/tour/styles/_index.scss +63 -0
  185. package/transfer/styles/_index.scss +105 -0
  186. package/types/ngwr-alert.d.ts +4 -1
  187. package/types/ngwr-avatar.d.ts +1 -1
  188. package/types/ngwr-back-top.d.ts +3 -2
  189. package/types/ngwr-badge.d.ts +1 -1
  190. package/types/ngwr-border-glow.d.ts +0 -1
  191. package/types/ngwr-carousel.d.ts +10 -1
  192. package/types/ngwr-cascader.d.ts +12 -1
  193. package/types/ngwr-checkbox.d.ts +9 -1
  194. package/types/ngwr-command-palette.d.ts +4 -1
  195. package/types/ngwr-date-picker.d.ts +9 -1
  196. package/types/ngwr-density.d.ts +1 -1
  197. package/types/ngwr-divider.d.ts +1 -1
  198. package/types/ngwr-event-calendar.d.ts +358 -0
  199. package/types/ngwr-form.d.ts +177 -20
  200. package/types/ngwr-fuzzy-text.d.ts +8 -0
  201. package/types/ngwr-gauge.d.ts +4 -1
  202. package/types/ngwr-i18n.d.ts +15 -0
  203. package/types/ngwr-input-number.d.ts +8 -1
  204. package/types/ngwr-input.d.ts +50 -20
  205. package/types/ngwr-knob.d.ts +4 -1
  206. package/types/ngwr-lightbox.d.ts +7 -1
  207. package/types/ngwr-line-chart.d.ts +1 -1
  208. package/types/ngwr-media.d.ts +1 -1
  209. package/types/ngwr-meter-group.d.ts +9 -1
  210. package/types/ngwr-page-header.d.ts +2 -2
  211. package/types/ngwr-pagination.d.ts +1 -1
  212. package/types/ngwr-progress.d.ts +4 -1
  213. package/types/ngwr-rating.d.ts +3 -2
  214. package/types/ngwr-result.d.ts +12 -6
  215. package/types/ngwr-segmented.d.ts +6 -0
  216. package/types/ngwr-select.d.ts +13 -7
  217. package/types/ngwr-shiny-text.d.ts +2 -4
  218. package/types/ngwr-speed-dial.d.ts +7 -1
  219. package/types/ngwr-squircle.d.ts +1 -1
  220. package/types/ngwr-switch.d.ts +7 -1
  221. package/types/ngwr-table.d.ts +126 -6
  222. package/types/ngwr-tabs.d.ts +1 -4
  223. package/types/ngwr-textarea.d.ts +8 -1
  224. package/types/ngwr-toolbar.d.ts +2 -2
  225. package/types/ngwr-tour.d.ts +132 -0
  226. package/types/ngwr-transfer.d.ts +118 -0
  227. package/types/ngwr-tree.d.ts +10 -2
  228. package/types/ngwr-validators.d.ts +62 -2
  229. package/types/ngwr-version.d.ts +2 -2
  230. package/typewriter/styles/_index.scss +5 -0
  231. package/typography/styles/_index.scss +3 -3
  232. package/virtual-scroll/styles/_index.scss +6 -1
  233. package/waves/styles/_index.scss +5 -0
package/llms-full.txt CHANGED
@@ -3,6 +3,9 @@
3
3
  > Generated from the library source: every entry point with its import path,
4
4
  > selector(s), public exports, and description. For exact input / output
5
5
  > signatures read the bundled `.d.ts` types. Concise quick-ref: /llms.txt
6
+ >
7
+ > One component at a time: every docs page also ships as markdown at the same
8
+ > URL plus `.md` — e.g. https://ngwr.dev/reference/components/select.md
6
9
 
7
10
  ## ngwr/action-sheet
8
11
  - import: `import { WrActionSheet } from 'ngwr/action-sheet'`
@@ -25,18 +28,19 @@
25
28
  ## ngwr/anchor
26
29
  - import: `import { WrAnchor } from 'ngwr/anchor'`
27
30
  - selector: `wr-anchor`
28
- - exports: WrAnchor, type WrAnchorLink
31
+ - exports: WrAnchor, WrAnchorLink
29
32
  - Scroll-spy in-page navigation. Click a link to smooth-scroll; the closest visible heading auto-highlights.
30
33
 
31
34
  ## ngwr/aurora
32
35
  - import: `import { WrAurora } from 'ngwr/aurora'`
33
36
  - selector: `wr-aurora`
34
37
  - exports: WrAurora
38
+ - Flowing northern-lights ribbons rendered with a WebGL2 simplex-noise shader, ramped across three colour stops. Use as a hero / section background.
35
39
 
36
40
  ## ngwr/avatar
37
41
  - import: `import { WrAvatar } from 'ngwr/avatar'`
38
42
  - selector: `wr-avatar`
39
- - exports: WrAvatar, WrAvatarSize
43
+ - exports: WrAvatar, WrAvatarSize, WrAvatarShape
40
44
  - Image avatar with a fixed square or rounded shape. Shows a spinner while the image loads.
41
45
 
42
46
  ## ngwr/back-top
@@ -48,24 +52,26 @@
48
52
  ## ngwr/badge
49
53
  - import: `import { WrBadge } from 'ngwr/badge'`
50
54
  - selector: `wr-badge`, `wr-tag`
51
- - exports: WrBadge, WrTag, WrBadgeSize, WrTagIconPosition
55
+ - exports: WrBadge, WrTag, WrBadgeSize, WrBadgeShape, WrTagIconPosition
52
56
  - Small status indicator with color variants and optional pill shape. Reach for `<wr-tag>` (in the same entry) when you need a richer label — icons, loading state, outlined / transparent styles.
53
57
 
54
58
  ## ngwr/bar-chart
55
59
  - import: `import { WrBarChart } from 'ngwr/bar-chart'`
56
60
  - selector: `wr-bar-chart`
57
- - exports: WrBarChart, type WrBarChartDatum
61
+ - exports: WrBarChart, WrBarChartDatum
58
62
  - Vertical bars, one series. Per-bar color overrides via the `color` field.
59
63
 
60
64
  ## ngwr/blur-text
61
65
  - import: `import { WrBlurText } from 'ngwr/blur-text'`
62
66
  - selector: `wr-blur-text`
63
67
  - exports: WrBlurText
68
+ - Reveals text by blurring each piece in from a coloured offset, through a half-blurred mid-step, into the steady state. Triggers on viewport entry. Dependency-free port — uses `IntersectionObserver` + Web Animations API.
64
69
 
65
70
  ## ngwr/border-glow
66
71
  - import: `import { WrBorderGlow } from 'ngwr/border-glow'`
67
72
  - selector: `wr-border-glow`
68
73
  - exports: WrBorderGlow
74
+ - Cursor-tracked glowing border card. A cone of light follows the pointer along the perimeter, brightening as the cursor approaches an edge. Optional `[animated]` mode plays a one-shot sweep on mount.
69
75
 
70
76
  ## ngwr/breadcrumbs
71
77
  - import: `import { WrBreadcrumbs } from 'ngwr/breadcrumbs'`
@@ -81,7 +87,7 @@
81
87
 
82
88
  ## ngwr/button
83
89
  - import: `import { WrButton } from 'ngwr/button'`
84
- - selector: `wr-btn-group`, `wr-btn, button[wr-btn], a[wr-btn]`
90
+ - selector: `wr-btn-group`, `wr-btn`, `button[wr-btn]`, `a[wr-btn]`
85
91
  - exports: WrButton, WrButtonGroup, WrButtonSize, WrButtonShape, WrButtonIconPosition
86
92
  - Trigger an action. Renders as <wr-btn>, button[wr-btn], or a[wr-btn].
87
93
 
@@ -94,7 +100,7 @@
94
100
  ## ngwr/calendar-heatmap
95
101
  - import: `import { WrCalendarHeatmap } from 'ngwr/calendar-heatmap'`
96
102
  - selector: `wr-calendar-heatmap`
97
- - exports: WrCalendarHeatmap, type WrHeatmapDatum
103
+ - exports: WrCalendarHeatmap, WrHeatmapDatum
98
104
  - Year-grid heatmap — the classic GitHub contributions layout.
99
105
 
100
106
  ## ngwr/card
@@ -112,40 +118,42 @@
112
118
  ## ngwr/cascader
113
119
  - import: `import { WrCascader } from 'ngwr/cascader'`
114
120
  - selector: `wr-cascader`
115
- - exports: WrCascader, type WrCascaderOption, type WrCascaderSize
121
+ - exports: WrCascader, WrCascaderOption, WrCascaderSize
116
122
  - Multi-level select. Drills through hierarchical categories one column at a time; picking a leaf commits the full path. A signal-forms native control — it implements `FormValueControl`, so `[formField]` binds straight to its `value` model (`readonly T[]`). `[(value)]` works standalone, and `[(ngModel)]` / reactive forms keep working through Angular's bridge.
117
123
 
118
124
  ## ngwr/checkbox
119
125
  - import: `import { WrCheckbox } from 'ngwr/checkbox'`
120
126
  - selector: `wr-checkbox-group`, `wr-checkbox`
121
- - exports: WrCheckbox, WrCheckboxSize, WrCheckboxGroup, WR_CHECKBOX_GROUP, type WrCheckboxGroupContext
127
+ - exports: WrCheckbox, WrCheckboxSize, WrCheckboxGroup, WR_CHECKBOX_GROUP, WrCheckboxGroupContext
122
128
  - Two-state checkbox. Standalone (boolean) or inside <wr-checkbox-group> (array of values).
123
129
 
124
130
  ## ngwr/circular-text
125
131
  - import: `import { WrCircularText } from 'ngwr/circular-text'`
126
132
  - selector: `wr-circular-text`
127
- - exports: WrCircularText, type WrCircularTextHover
133
+ - exports: WrCircularText, WrCircularTextHover
134
+ - Text laid out around a circle, with the whole circle spinning on a keyframe. Hover behaviour swaps the spin rate (or pauses) without resetting the rotation angle. Pure CSS port — no JS animation loop.
128
135
 
129
136
  ## ngwr/click-spark
130
137
  - import: `import { WrClickSpark } from 'ngwr/click-spark'`
131
138
  - selector: `wr-click-spark`
132
- - exports: WrClickSpark, type WrClickSparkEasing
139
+ - exports: WrClickSpark, WrClickSparkEasing
140
+ - Click ripple. Bursts a ring of short line sparks from the click point across any projected content. The canvas overlay has `pointer-events: none`, so projected DOM stays fully interactive.
133
141
 
134
142
  ## ngwr/clipboard
135
143
  - import: `import { WrClipboard } from 'ngwr/clipboard'`
136
- - exports: WrClipboard, type WrClipboardPermission
144
+ - exports: WrClipboard, WrClipboardPermission
137
145
  - Programmatic clipboard read and write. Uses `navigator.clipboard.writeText` when available, with a hidden-textarea + `execCommand` fallback for non-secure contexts.
138
146
 
139
147
  ## ngwr/collapse
140
148
  - import: `import { WrCollapse } from 'ngwr/collapse'`
141
149
  - selector: `wr-accordion`, `wr-collapse-group`, `wr-collapse`
142
- - exports: WrCollapse, WrCollapseGroup, WrAccordion, WR_COLLAPSE_GROUP, type WrCollapseGroupContext
150
+ - exports: WrCollapse, WrCollapseGroup, WrAccordion, WR_COLLAPSE_GROUP, WrCollapseGroupContext
143
151
  - Expandable panel with a clickable header. Two-way binds `open`. Wrap in `<wr-collapse-group accordion>` for single-open behavior.
144
152
 
145
153
  ## ngwr/color-picker
146
154
  - import: `import { WrColorPicker } from 'ngwr/color-picker'`
147
155
  - selector: `[wrColorPickerTrigger]`, `wr-color-picker`
148
- - exports: WrColorPicker, WrColorPickerTrigger, hslToRgb, hsvToRgb, parseHex, rgbToHsl, rgbToHsv, toHex, type WrHsl, type WrHsv, type WrRgb, WrColorFormat
156
+ - exports: WrColorPicker, WrColorPickerTrigger, hslToRgb, hsvToRgb, parseHex, rgbToHsl, rgbToHsv, toHex, WrHsl, WrHsv, WrRgb, WrColorFormat
149
157
  - HSV canvas + hue / alpha sliders + HEX / RGB / HSL inputs + optional swatches. Use `<wr-color-picker>` inline or anchor it to a button with `[wrColorPickerTrigger]`.
150
158
 
151
159
  ## ngwr/command-palette
@@ -163,6 +171,7 @@
163
171
  ## ngwr/confetti
164
172
  - import: `import { WrConfetti } from 'ngwr/confetti'`
165
173
  - exports: WrConfetti, WrConfettiOptions
174
+ - Imperative confetti service. Inject `WrConfetti` and call `.fire()` on a celebration event.
166
175
 
167
176
  ## ngwr/context-menu
168
177
  - import: `import { WrContextMenu } from 'ngwr/context-menu'`
@@ -172,18 +181,18 @@
172
181
 
173
182
  ## ngwr/cookie
174
183
  - import: `import { WrCookie } from 'ngwr/cookie'`
175
- - exports: WrCookie, type WrCookieOptions
184
+ - exports: WrCookie, WrCookieOptions
176
185
  - Thin, SSR-safe `document.cookie` wrapper modelled after `WrStorage`. Read, write, delete, and list cookies — with typed options for expiry, path, domain, secure, and SameSite.
177
186
 
178
187
  ## ngwr/counter
179
188
  - import: `import { WrCounter } from 'ngwr/counter'`
180
189
  - selector: `wr-count-up`, `wr-counter`
181
- - exports: WrCounter, WrCounterMode, WrCountUp, type WrCountUpDirection, type WrCountUpEasing, type WrCountUpTrigger
190
+ - exports: WrCounter, WrCounterMode, WrCountUp, WrCountUpDirection, WrCountUpEasing, WrCountUpTrigger
182
191
  - Animated number display. Use **odometer** mode for rolling-digit motion (mechanical counter look) or **tween** mode for an eased count-up from the previous value.
183
192
 
184
193
  ## ngwr/date-adapter
185
194
  - import: `import { WrDateAdapter } from 'ngwr/date-adapter'`
186
- - exports: WrDateAdapter, WrNativeDateAdapter, provideWrDateAdapter, type WrDateAdapterOptions, WR_DATE_LOCALE, WrDateFormat, isNamedFormat
195
+ - exports: WrDateAdapter, WrNativeDateAdapter, provideWrDateAdapter, WrDateAdapterOptions, WR_DATE_LOCALE, WrDateFormat, isNamedFormat
187
196
 
188
197
  ## ngwr/date-adapter-fns
189
198
  - import: `import { WrDateFnsAdapter } from 'ngwr/date-adapter-fns'`
@@ -202,12 +211,13 @@
202
211
  ## ngwr/decrypt-text
203
212
  - import: `import { WrDecryptText } from 'ngwr/decrypt-text'`
204
213
  - selector: `wr-decrypt-text`
205
- - exports: WrDecryptText, type WrDecryptTextAnimateOn, type WrDecryptTextClickMode, type WrDecryptTextRevealDirection
214
+ - exports: WrDecryptText, WrDecryptTextAnimateOn, WrDecryptTextClickMode, WrDecryptTextRevealDirection
215
+ - Reveals a string by scrambling characters and progressively replacing scramble glyphs with the originals. Sequential reveal in three directions, or non-sequential settle after N iterations. Four trigger modes: hover, click, view, in-view + hover. Dependency-free port — signals + `setInterval`.
206
216
 
207
217
  ## ngwr/density
208
218
  - import: `import { WrDensity } from 'ngwr/density'`
209
219
  - selector: `[wrDensity]`
210
- - exports: WrDensity, WrDensityDirective, provideWrDensity, WR_DENSITY_CONFIG, DEFAULT_WR_DENSITY_CONFIG, type WrDensityValue, type WrDensityConfig
220
+ - exports: WrDensity, WrDensityDirective, provideWrDensity, WR_DENSITY_CONFIG, DEFAULT_WR_DENSITY_CONFIG, WrDensityValue, WrDensityConfig
211
221
  - Density scale — `compact` / `default` / `comfortable` / `touch` — applied as CSS-variable multipliers on per-component paddings. `touch` enlarges hit areas for finger input. Persisted via WrStorage and overrideable per-subtree with the `[wrDensity]` directive.
212
222
 
213
223
  ## ngwr/descriptions
@@ -218,6 +228,7 @@
218
228
 
219
229
  ## ngwr/dialog
220
230
  - import: `import { WrDialog } from 'ngwr/dialog'`
231
+ - selector: `[wrDialogClose]`, `[wrDialogContent]`, `[wrDialogFooter]`, `[wrDialogTitle]`
221
232
  - exports: WrDialog, WrDialogRef, WR_DIALOG_DATA, WR_DIALOG_REF, WrDialogOptions, WrDialogTitle, WrDialogContent, WrDialogFooter, WrDialogClose
222
233
  - Modal dialogs via a service that wraps @angular/cdk/dialog. Open any component as a dialog and read its close result as a Promise.
223
234
 
@@ -229,24 +240,24 @@
229
240
  ## ngwr/divider
230
241
  - import: `import { WrDivider } from 'ngwr/divider'`
231
242
  - selector: `wr-divider`
232
- - exports: WrDivider, WrDividerType
243
+ - exports: WrDivider, WrDividerType, WrDividerAlign
233
244
  - Horizontal separator. Solid, dashed, or dotted; tinted with any theme color.
234
245
 
235
246
  ## ngwr/donut-chart
236
247
  - import: `import { WrDonutChart } from 'ngwr/donut-chart'`
237
248
  - selector: `wr-donut-chart`
238
- - exports: WrDonutChart, type WrDonutSegment
239
- - Data shapes used by the inputs and outputs above.
249
+ - exports: WrDonutChart, WrDonutSegment
250
+ - Ring chart with optional center label / value. Set `thickness="0"` for a solid pie.
240
251
 
241
252
  ## ngwr/drag-drop
242
253
  - import: `import { WrSortableList } from 'ngwr/drag-drop'`
243
254
  - selector: `[wrDragHandle]`, `wr-sortable-list`
244
- - exports: WrSortableList, type WrSortableReorderEvent, WrDragHandle
255
+ - exports: WrSortableList, WrSortableReorderEvent, WrDragHandle
245
256
  - `<wr-sortable-list>` wraps CDK's `cdkDropList` + `cdkDrag` with a signal-based two-way `[(items)]` binding. Includes the `[wrDragHandle]` helper and themed `.cdk-drag-preview` / `.cdk-drag-placeholder` defaults. Touch-ready: a default touch start-delay lets a quick swipe scroll the list while a hold begins a drag.
246
257
 
247
258
  ## ngwr/drawer
248
259
  - import: `import { WrDrawer } from 'ngwr/drawer'`
249
- - selector: `wr-drawer`
260
+ - selector: `[wrDrawerClose]`, `[wrDrawerContent]`, `[wrDrawerFooter]`, `[wrDrawerTitle]`, `wr-drawer`
250
261
  - exports: WrDrawer, WrDrawerManager, WrDrawerRef, WR_DRAWER_DATA, WR_DRAWER_REF, WrDrawerTitle, WrDrawerContent, WrDrawerFooter, WrDrawerClose, WrDrawerOptions, WrDrawerPosition
251
262
  - Side panel that slides in from any edge. Use the component when the markup lives in your template, or `WrDrawerManager` to open any component as a drawer and read its close result.
252
263
 
@@ -262,10 +273,17 @@
262
273
  - exports: WrEmpty
263
274
  - Empty-state placeholder for when the underlying data is missing. Project a description and an optional `[wrEmptyActions]` row.
264
275
 
276
+ ## ngwr/event-calendar
277
+ - import: `import { WrEventCalendar } from 'ngwr/event-calendar'`
278
+ - selector: `ng-template[wrCalendarEvent]`, `wr-event-calendar`
279
+ - exports: WrEventCalendar, WrCalendarEventTemplate, WrCalendarEvent, WrCalendarEventChange, WrCalendarEventContext, WrCalendarSlot, WrCalendarView
280
+ - Month, week and day views of a set of events — draggable, resizable, keyboard-operable.
281
+
265
282
  ## ngwr/falling-text
266
283
  - import: `import { WrFallingText } from 'ngwr/falling-text'`
267
284
  - selector: `wr-falling-text`
268
- - exports: WrFallingText, type WrFallingTextTrigger
285
+ - exports: WrFallingText, WrFallingTextTrigger
286
+ - Words fall like physical bodies — gravity, wall / floor collision, body-to-body bouncing, and cursor drag-to-pick-up. Words start at their typeset position and release into the simulator on trigger. Reactbits' original uses matter-js; this port ships a minimal in-house AABB physics simulator so there's no extra runtime dependency.
269
287
 
270
288
  ## ngwr/file-upload
271
289
  - import: `import { WrFileUpload } from 'ngwr/file-upload'`
@@ -275,14 +293,15 @@
275
293
 
276
294
  ## ngwr/form
277
295
  - import: `import { WrFormItem } from 'ngwr/form'`
278
- - selector: `wr-form-field`, `wr-form-error`, `wr-form-item`
279
- - exports: WrFormItem, WrFormField, WrFormError
296
+ - selector: `wr-form-error`, `wr-form-field`, `wr-form-item`
297
+ - exports: WrFormItem, WrFormField, WrFormError, WR_FORM_FIELD, WrFormFieldContext, WR_FORM_ERRORS, WR_FORM_ERROR_FALLBACKS, provideWrFormErrors, WrFormErrorContext, WrFormErrorMessage, WrFormErrorMessages
280
298
  - Layout helpers: <wr-form-item> wraps a label + control + error message; <wr-form-error> renders inline error text.
281
299
 
282
300
  ## ngwr/fuzzy-text
283
301
  - import: `import { WrFuzzyText } from 'ngwr/fuzzy-text'`
284
302
  - selector: `wr-fuzzy-text`
285
- - exports: WrFuzzyText, type WrFuzzyTextDirection
303
+ - exports: WrFuzzyText, WrFuzzyTextDirection
304
+ - Canvas-rendered fuzzy text — each row (or column) is offset by a random amount per frame for a TV-static or motion-blur look. Intensity ramps up on hover, click, and during periodic glitch bursts.
286
305
 
287
306
  ## ngwr/gauge
288
307
  - import: `import { WrGauge } from 'ngwr/gauge'`
@@ -294,30 +313,48 @@
294
313
  - import: `import { WrGlitchText } from 'ngwr/glitch-text'`
295
314
  - selector: `wr-glitch-text`
296
315
  - exports: WrGlitchText
316
+ - Colour-split horizontal-tear glitch on the provided text. Defaults to glitching on hover; flip `[enableOnHover]` to play constantly. Pure CSS port — two pseudo-element clones with offset coloured shadows and a clip-path keyframe.
297
317
 
298
318
  ## ngwr/gradient-text
299
319
  - import: `import { WrGradientText } from 'ngwr/gradient-text'`
300
320
  - selector: `wr-gradient-text`
301
- - exports: WrGradientText, type WrGradientTextDirection
321
+ - exports: WrGradientText, WrGradientTextDirection
322
+ - Animated multi-stop gradient text. The gradient slides across the text via `background-clip: text`. Optional border variant wraps the text in a dark pill with the same animated gradient as a border ring. Pure CSS port — no JS animation loop.
302
323
 
303
324
  ## ngwr/hotkey
304
325
  - import: `import { WrHotkey } from 'ngwr/hotkey'`
305
326
  - selector: `[wrHotkey]`
306
- - exports: WrHotkey, WrHotkeyBinding, parseHotkeySpec, matchesHotkey, type WrParsedHotkey, WrHotkeyHandle, WrHotkeyOptions, WrHotkeySpec
307
- - Raw `keydown` listeners need platform-aware modifier mapping (⌘ vs Ctrl), input-field exclusion, and teardown. `WrHotkey` registers a declarative combo and cleans up with the host's `DestroyRef`.
327
+ - exports: WrHotkey, WrHotkeyBinding, parseHotkeySpec, matchesHotkey, WrParsedHotkey, WrHotkeyHandle, WrHotkeyOptions, WrHotkeySpec
328
+ - Global keybinding registry. Specs like `mod+k` — `mod` auto-resolves to Cmd on macOS / Ctrl elsewhere. Skips bindings while an input / textarea has focus by default. `[wrHotkey]` is the declarative form of the same registry — also global unless you pass `[scoped]="true"` to limit it to the host element.
308
329
 
309
330
  ## ngwr/i18n
310
331
  - import: `import { WrI18n } from 'ngwr/i18n'`
311
332
  - selector: `[wrT]`
312
- - exports: WrI18n, WrTPipe, WrTDirective, WR_I18N_CONFIG, DEFAULT_WR_I18N_CONFIG, type WrI18nCatalog, type WrI18nConfig, type WrI18nConfigResolved, type WrI18nParams, type WrI18nMissingHandler, WR_I18N_LOADER, type WrI18nLoader, WR_I18N_BASE_CATALOGS, type WrI18nBaseCatalogs, WrI18nStaticLoader, type WrI18nStaticCatalogs, type WrI18nStaticScopedCatalogs, WrI18nHttpLoader, type WrI18nHttpLoaderConfig, provideWrI18n, provideWrI18nBaseCatalogs, provideWrI18nStaticLoader, provideWrI18nHttpLoader, type ProvideWrI18nOptions, useI18nText, readI18nText, useI18nFormatter
333
+ - exports: WrI18n, WrTPipe, WrTDirective, WR_I18N_CONFIG, DEFAULT_WR_I18N_CONFIG, WrI18nCatalog, WrI18nConfig, WrI18nConfigResolved, WrI18nParams, WrI18nMissingHandler, WR_I18N_LOADER, WrI18nLoader, WR_I18N_BASE_CATALOGS, WrI18nBaseCatalogs, WrI18nStaticLoader, WrI18nStaticCatalogs, WrI18nStaticScopedCatalogs, WrI18nHttpLoader, WrI18nHttpLoaderConfig, provideWrI18n, provideWrI18nBaseCatalogs, provideWrI18nStaticLoader, provideWrI18nHttpLoader, ProvideWrI18nOptions, useI18nText, readI18nText, useI18nFormatter
313
334
  - Reactive i18n service. Active locale lives on a signal, catalogs load lazily through a swappable loader (HTTP or static), and double-brace placeholders interpolate at render time. Scopes let feature modules ship and load their own catalogs.
314
335
 
336
+ ## ngwr/i18n/en
337
+ - import: `import { wrEn } from 'ngwr/i18n/en'`
338
+ - exports: wrEn
339
+
340
+ ## ngwr/i18n/ru
341
+ - import: `import { wrRu } from 'ngwr/i18n/ru'`
342
+ - exports: wrRu
343
+
315
344
  ## ngwr/icon
316
345
  - import: `import { WrIcon } from 'ngwr/icon'`
317
346
  - selector: `wr-icon`
318
347
  - exports: WrIcon, provideWrIcons, svgIcon, WrIconDef, WrIconName
319
348
  - The icon renderer. Resolves a registered name from the `provideWrIcons` registry and inlines its SVG. ngwr ships no built-in icons — bring your own via an adapter or `svgIcon()`.
320
349
 
350
+ ## ngwr/icon/adapters/feather
351
+ - import: `import { feather } from 'ngwr/icon/adapters/feather'`
352
+ - exports: feather, featherIcons
353
+
354
+ ## ngwr/icon/adapters/lucide
355
+ - import: `import { lucide } from 'ngwr/icon/adapters/lucide'`
356
+ - exports: lucide, lucideIcons, LucideIconNode
357
+
321
358
  ## ngwr/image-cropper
322
359
  - import: `import { WrImageCropper } from 'ngwr/image-cropper'`
323
360
  - selector: `wr-image-cropper`
@@ -326,7 +363,7 @@
326
363
 
327
364
  ## ngwr/input
328
365
  - import: `import { WrInput } from 'ngwr/input'`
329
- - selector: `wr-input-group`, `wr-password-toggle`
366
+ - selector: `[wrInputPrefix]`, `[wrInputSuffix]`, `input[wrInput]`, `textarea[wrInput]`, `wr-input-group`, `wr-password-toggle`
330
367
  - exports: WrInput, WrInputPrefix, WrInputSuffix, WrInputGroup, WrPasswordToggle, WrInputType, WrInputSize
331
368
  - Attribute directive applied to a native `<input>` (or `<textarea>`). Because the styling lives on the real input, third-party directives like `ngx-mask`, custom validators, and `[(ngModel)]` compose naturally on the same element.
332
369
 
@@ -369,7 +406,7 @@
369
406
  ## ngwr/line-chart
370
407
  - import: `import { WrLineChart } from 'ngwr/line-chart'`
371
408
  - selector: `wr-line-chart`
372
- - exports: WrLineChart, type WrLineSeries
409
+ - exports: WrLineChart, WrLineSeries
373
410
  - Multi-series line chart with a hover tooltip that snaps to the nearest x-axis tick.
374
411
 
375
412
  ## ngwr/list
@@ -381,13 +418,14 @@
381
418
  ## ngwr/loading-bar
382
419
  - import: `import { WrLoadingBar } from 'ngwr/loading-bar'`
383
420
  - selector: `wr-loading-bar`
384
- - exports: WrLoadingBar, type WrLoadingState, WrLoadingBarComponent
421
+ - exports: WrLoadingBar, WrLoadingState, WrLoadingBarComponent
385
422
  - Top-of-page progress bar driven by router navigations out of the box, plus a manual `start()` / `complete()` slot API for HTTP interceptors or any long-running task.
386
423
 
387
424
  ## ngwr/marquee
388
425
  - import: `import { WrMarquee } from 'ngwr/marquee'`
389
426
  - selector: `wr-marquee`
390
- - exports: WrMarquee, type WrMarqueeItem, type WrMarqueeImage, type WrMarqueeNode
427
+ - exports: WrMarquee, WrMarqueeItem, WrMarqueeImage, WrMarqueeNode
428
+ - Endless rAF-driven horizontal carousel. Pass items as image sources or Angular templates; the track auto-duplicates to cover the container. Optional edge fades, pause/scale-on-hover, custom hover speed.
391
429
 
392
430
  ## ngwr/media
393
431
  - import: `import { WrMedia } from 'ngwr/media'`
@@ -413,7 +451,7 @@
413
451
  - Stacked-segment progress bar. Each segment is sized proportionally to its `value` relative to the sum (or the explicit `max`); legend listed underneath.
414
452
 
415
453
  ## ngwr/overlay
416
- - import: `import { wrAppendOverlayClose } from 'ngwr/overlay'`
454
+ - import: `import { WrOutsideClick } from 'ngwr/overlay'`
417
455
  - exports: wrAppendOverlayClose, WrOutsideClick, WrOverlayContainer, provideWrOverlay, provideWrResponsiveOverlays, WR_OVERLAY, WR_OVERLAY_CONTAINER, WR_RESPONSIVE_OVERLAYS, wrPresentAsSheet
418
456
 
419
457
  ## ngwr/page-header
@@ -425,28 +463,29 @@
425
463
  ## ngwr/pagination
426
464
  - import: `import { WrPagination } from 'ngwr/pagination'`
427
465
  - selector: `wr-pagination`
428
- - exports: WrPagination, WrPaginationAlign
466
+ - exports: WrPagination, WrPaginationAlign, WrPaginationSize, WrPaginationShape
429
467
  - Numbered page navigator. Two-way binds currentPage and pageSize via signal models.
430
468
 
431
469
  ## ngwr/pipes
432
470
  - import: `import { WrBytes } from 'ngwr/pipes'`
433
- - exports: WrBytes, WrDate, WrMark, WrNumber, type WrNumberStyle, WrPlural, type WrPluralForms, type WrPluralOptions, WrRange, WrTruncate
471
+ - exports: WrBytes, WrDate, WrMark, WrNumber, WrNumberStyle, WrPlural, WrPluralForms, WrPluralOptions, WrRange, WrTruncate
434
472
 
435
473
  ## ngwr/platform
436
474
  - import: `import { WrPlatform } from 'ngwr/platform'`
437
- - exports: WrPlatform, WrVisualViewport, WrHaptics, type WrHapticImpact
475
+ - exports: WrPlatform, WrVisualViewport, WrHaptics, WrHapticImpact
438
476
  - SSR-safe environment probes. Use to gate browser-only code paths and react to user preferences.
439
477
 
440
478
  ## ngwr/popconfirm
441
479
  - import: `import { WrPopconfirm } from 'ngwr/popconfirm'`
442
480
  - selector: `wr-popconfirm`, `[wrPopconfirm]`
443
481
  - exports: WrPopconfirm, WrPopconfirmPanel, WrPopconfirmPosition
482
+ - Small "Are you sure?" panel anchored to its trigger. Emits confirmed or cancelled.
444
483
 
445
484
  ## ngwr/popover
446
485
  - import: `import { WrPopover } from 'ngwr/popover'`
447
486
  - selector: `[wrPopover]`
448
487
  - exports: WrPopover, WrPopoverPosition
449
- - Popover mode only — with `responsive` (or app-wide via `provideWrResponsiveOverlays()`) the panel slides up as a full-width bottom-sheet with a backdrop on small viewports. Tooltips never become sheets. Open this on a phone (or narrow the window below 640px).
488
+ - Anchored content panel. Project a template (popover) or pass a plain string (tooltip — use `mode="tooltip"`). Click, hover, or focus to open. Built on CDK Overlay.
450
489
 
451
490
  ## ngwr/progress
452
491
  - import: `import { WrProgress } from 'ngwr/progress'`
@@ -469,7 +508,7 @@
469
508
  ## ngwr/radio
470
509
  - import: `import { WrRadio } from 'ngwr/radio'`
471
510
  - selector: `wr-radio-group`, `wr-radio`
472
- - exports: WrRadio, WrRadioSize, WrRadioGroup, WR_RADIO_GROUP, type WrRadioGroupContext
511
+ - exports: WrRadio, WrRadioSize, WrRadioGroup, WR_RADIO_GROUP, WrRadioGroupContext
473
512
  - Single-choice option. Always used inside <wr-radio-group>, which is the form control: it implements `FormValueControl`, so `[formField]` binds straight to its `value` model. `[(value)]` works standalone, and `[(ngModel)]` / reactive forms keep working through Angular's bridge.
474
513
 
475
514
  ## ngwr/rating
@@ -481,13 +520,14 @@
481
520
  ## ngwr/result
482
521
  - import: `import { WrResult } from 'ngwr/result'`
483
522
  - selector: `wr-result-404`, `wr-result-403`, `wr-result-500`, `wr-result`
484
- - exports: WrResult, type WrResultStatus, WrResult404, WrResult403, WrResult500
523
+ - exports: WrResult, WrResultStatus, WrResult404, WrResult403, WrResult500
485
524
  - Large-illustration result / empty-state. Built-in statuses: success / warning / error / info / empty. Plus ready-made `<wr-result-404>`, `<wr-result-403>`, `<wr-result-500>` presets.
486
525
 
487
526
  ## ngwr/rotating-text
488
527
  - import: `import { WrRotatingText } from 'ngwr/rotating-text'`
489
528
  - selector: `wr-rotating-text`
490
- - exports: WrRotatingText, type WrRotatingTextSplit, type WrRotatingTextStaggerFrom
529
+ - exports: WrRotatingText, WrRotatingTextSplit, WrRotatingTextStaggerFrom
530
+ - Cycles through a list of strings, animating each transition character-by-character (or word/line). Auto-advances on a timer by default; also controllable imperatively via `next()` / `previous()` / `jumpTo()` / `reset()`.
491
531
 
492
532
  ## ngwr/scroll
493
533
  - import: `import { WrScroll } from 'ngwr/scroll'`
@@ -503,13 +543,14 @@
503
543
  ## ngwr/select
504
544
  - import: `import { WrSelect } from 'ngwr/select'`
505
545
  - selector: `wr-option-group`, `wr-option`, `wr-select`
506
- - exports: WrSelect, WrOption, WrOptionGroup, WR_SELECT, type WrSelectContext, WrSelectMode, WrSelectSearchLoader, WrSelectTagValidator, WrSelectSize
546
+ - exports: WrSelect, WrOption, WrOptionGroup, WR_SELECT, WrSelectContext, WrSelectMode, WrSelectSearchLoader, WrSelectTagValidator, WrSelectSize
507
547
  - Native-like select built on CDK Overlay. A signal-forms native control — it implements `FormValueControl`, so `[formField]` binds straight to its `value` model. `[(value)]` works standalone, and `[(ngModel)]` / reactive forms keep working through Angular's bridge.
508
548
 
509
549
  ## ngwr/shiny-text
510
550
  - import: `import { WrShinyText } from 'ngwr/shiny-text'`
511
551
  - selector: `[wrShimmer]`, `wr-shiny-text`
512
552
  - exports: WrShinyText, WrShimmer
553
+ - Shimmer-over-text effect. A bright stripe sweeps across the text using `background-clip: text` + an animated `background-position`. Pure CSS port — no JS animation loop.
513
554
 
514
555
  ## ngwr/sidebar
515
556
  - import: `import { WrSidebar } from 'ngwr/sidebar'`
@@ -538,7 +579,7 @@
538
579
  ## ngwr/speed-dial
539
580
  - import: `import { WrSpeedDial } from 'ngwr/speed-dial'`
540
581
  - selector: `wr-speed-dial`
541
- - exports: WrSpeedDial, type WrSpeedDialAction, type WrSpeedDialDirection
582
+ - exports: WrSpeedDial, WrSpeedDialAction, WrSpeedDialDirection
542
583
  - Floating action button that fans out a set of secondary actions on click.
543
584
 
544
585
  ## ngwr/spinner
@@ -551,11 +592,13 @@
551
592
  - import: `import { WrSplashCursor } from 'ngwr/splash-cursor'`
552
593
  - selector: `wr-splash-cursor`
553
594
  - exports: WrSplashCursor, WrFluidConfig
595
+ - WebGL fluid simulation that splashes colourful dye wherever the pointer moves or clicks. Fullscreen click-through overlay by default, or contained in any positioned box — where the dye collides with the walls. Renders nothing under prefers-reduced-motion or without WebGL.
554
596
 
555
597
  ## ngwr/split-text
556
598
  - import: `import { WrSplitText } from 'ngwr/split-text'`
557
599
  - selector: `wr-split-text`
558
- - exports: WrSplitText, type WrSplitTextMotion, type WrSplitTextUnit
600
+ - exports: WrSplitText, WrSplitTextMotion, WrSplitTextUnit
601
+ - Reveals text by splitting it into chars or words and staggering each piece in from a `from` state to a `to` state when the element scrolls into view. GSAP-free port — uses `IntersectionObserver` + Web Animations API.
559
602
 
560
603
  ## ngwr/splitter
561
604
  - import: `import { WrSplitter } from 'ngwr/splitter'`
@@ -567,17 +610,19 @@
567
610
  - import: `import { WrSpotlightCard } from 'ngwr/spotlight-card'`
568
611
  - selector: `wr-spotlight-card`, `[wrSpotlight]`
569
612
  - exports: WrSpotlightCard, WrSpotlight
613
+ - Cursor-tracked spotlight card. A soft radial highlight follows the pointer, fading in on hover.
570
614
 
571
615
  ## ngwr/squircle
572
- - import: `import { squirclePath } from 'ngwr/squircle'`
616
+ - import: `import { WrSquircle } from 'ngwr/squircle'`
573
617
  - selector: `wr-squircle`, `[wrSquircle]`
574
- - exports: squirclePath, type WrSquircleCorners, WrSquircle, type WrSquircleCornerMask, WrSquircleHost
618
+ - exports: squirclePath, WrSquircleCorners, WrSquircle, WrSquircleCornerMask, WrSquircleHost
575
619
  - Figma-style smooth-corner rectangle. Standalone `<wr-squircle>` or `[wrSquircle]` directive that clips any element with a superellipse path. Re-computes on resize. The CSS-`corner-shape` route (via the `smooth-br` SCSS mixin) is also wired into most ngwr components — both paths are considered **experimental** while the underlying CSS spec stabilises.
576
620
 
577
621
  ## ngwr/star-border
578
622
  - import: `import { WrStarBorder } from 'ngwr/star-border'`
579
- - selector: `wr-star-border, [wr-star-border]`
580
- - exports: WrStarBorder, type WrStarBorderMode, type WrStarBorderRays
623
+ - selector: `wr-star-border`, `[wr-star-border]`
624
+ - exports: WrStarBorder, WrStarBorderMode, WrStarBorderRays
625
+ - Radial comet rays sweeping along the edges of a rounded container. Run them forever or only on hover, mirrored on both edges or as a single ray.
581
626
 
582
627
  ## ngwr/statistic
583
628
  - import: `import { WrStatistic } from 'ngwr/statistic'`
@@ -588,12 +633,12 @@
588
633
  ## ngwr/stepper
589
634
  - import: `import { WrStepper } from 'ngwr/stepper'`
590
635
  - selector: `wr-step`, `wr-stepper`
591
- - exports: WrStepper, WrStep, WR_STEPPER, type WrStepperContext
636
+ - exports: WrStepper, WrStep, WR_STEPPER, WrStepperContext
592
637
  - Multi-step wizard. Numbered headers with completed / active / pending states, content body for the active step. Two-way bind `[(active)]` to the step index.
593
638
 
594
639
  ## ngwr/storage
595
640
  - import: `import { WrStorage } from 'ngwr/storage'`
596
- - exports: WrStorage, provideWrStorage, type ProvideWrStorageOptions, WR_STORAGE_CONFIG, DEFAULT_WR_STORAGE_CONFIG, type WrStorageConfig, type WrStorageConfigResolved, WR_STORAGE_ENGINE, createMemoryStorage, type WrStorageEngine
641
+ - exports: WrStorage, provideWrStorage, ProvideWrStorageOptions, WR_STORAGE_CONFIG, DEFAULT_WR_STORAGE_CONFIG, WrStorageConfig, WrStorageConfigResolved, WR_STORAGE_ENGINE, createMemoryStorage, WrStorageEngine
597
642
  - Reactive key/value storage on top of any `Storage`-compatible engine. Swap the engine through DI (defaults to `localStorage` with an in-memory SSR / private-mode fallback). Built-in prefixing, TTL, and signal-based `watch()` for local + cross-tab updates.
598
643
 
599
644
  ## ngwr/switch
@@ -611,7 +656,7 @@
611
656
  ## ngwr/tabs
612
657
  - import: `import { WrTabs } from 'ngwr/tabs'`
613
658
  - selector: `wr-tab`, `wr-tabs`
614
- - exports: WrTabs, WrTab, WR_TABS, type WrTabsContext
659
+ - exports: WrTabs, WrTab, WR_TABS, WrTabsContext
615
660
  - Tabbed container. Use projected content for simple tabs, or set routerLink on children to switch into router mode.
616
661
 
617
662
  ## ngwr/textarea
@@ -621,19 +666,20 @@
621
666
  - Multi-line text input with optional autosize. A signal-forms native control — it implements `FormValueControl`, so `[formField]` binds straight to its `value` model. `[(value)]` works standalone, and `[(ngModel)]` / reactive forms keep working through Angular's bridge.
622
667
 
623
668
  ## ngwr/theme
624
- - import: `import { WR_COLORS } from 'ngwr/theme'`
625
- - exports: WR_COLORS, WrColor, WrTheme, provideWrTheme, WR_THEME_CONFIG, DEFAULT_WR_THEME_CONFIG, type WrResolvedTheme, type WrThemeMode, type WrThemeConfig
669
+ - import: `import { WrTheme } from 'ngwr/theme'`
670
+ - exports: WR_COLORS, WrColor, WrTheme, provideWrTheme, WR_THEME_CONFIG, DEFAULT_WR_THEME_CONFIG, WrResolvedTheme, WrThemeMode, WrThemeConfig
626
671
  - Light / dark theme manager. Writes `[data-theme]` on `<html>`, persists the chosen mode to localStorage. `auto` mode follows `WrPlatform.prefersDark`.
627
672
 
628
673
  ## ngwr/tilt-card
629
674
  - import: `import { WrTiltCard } from 'ngwr/tilt-card'`
630
675
  - selector: `wr-tilt-card`, `[wrTilt]`
631
676
  - exports: WrTiltCard, WrTilt
677
+ - Cursor-tracked 3D tilt. Use `<wr-tilt-card>` for a ready-made card host, or `[wrTilt]` to add the tilt behaviour to any element.
632
678
 
633
679
  ## ngwr/timeline
634
680
  - import: `import { WrTimeline } from 'ngwr/timeline'`
635
681
  - selector: `wr-timeline-item`, `wr-timeline`
636
- - exports: WrTimeline, WrTimelineItem, type WrTimelineColor
682
+ - exports: WrTimeline, WrTimelineItem, WrTimelineColor
637
683
  - Event ladder with markers. Vertical (default) or horizontal. Dot colors: primary / success / warning / danger / medium.
638
684
 
639
685
  ## ngwr/toast
@@ -648,16 +694,29 @@
648
694
  - exports: WrToolbar
649
695
  - Three-zone action bar — start / center / end. Each zone collapses when empty.
650
696
 
697
+ ## ngwr/tour
698
+ - import: `import { WrTour } from 'ngwr/tour'`
699
+ - selector: `wr-tour-popup`
700
+ - exports: WrTour, WrTourPopup, WrTourPlacement, WrTourStep
701
+ - Guided product tour — a spotlight over one element at a time plus a popup explaining it.
702
+
703
+ ## ngwr/transfer
704
+ - import: `import { WrTransfer } from 'ngwr/transfer'`
705
+ - selector: `wr-transfer`
706
+ - exports: WrTransfer, WrTransferItem
707
+ - Dual listbox — two panes and the buttons that move rows between them. The RIGHT pane is the value.
708
+
651
709
  ## ngwr/tree
652
710
  - import: `import { WrTree } from 'ngwr/tree'`
653
711
  - selector: `wr-tree`
654
712
  - exports: WrTree, WrTreeNode, WrTreeSelectionMode
655
- - Click a row to select. Arrow keys navigate, ←/→ collapse/expand, Enter or Space selects, Home/End jump to ends.
713
+ - Hierarchical list with expand / collapse, selection (single or multi), and full keyboard navigation. Renders inline (display widget) or as a `wr-select`-style combobox via `openOn="overlay"` (form-bound picker — replaces the standalone `wr-tree-select`).
656
714
 
657
715
  ## ngwr/typewriter
658
716
  - import: `import { WrTypewriter } from 'ngwr/typewriter'`
659
717
  - selector: `wr-typewriter`
660
- - exports: WrTypewriter, type WrTypewriterVariableSpeed
718
+ - exports: WrTypewriter, WrTypewriterVariableSpeed
719
+ - Classic typewriter — types out a string char-by-char, optionally deletes it, then types the next string. Cycles through `[texts]` (or a single string) with a blinking cursor. Pure JS (no GSAP), pure CSS cursor blink.
661
720
 
662
721
  ## ngwr/typography
663
722
  - import: `import { WrTypography } from 'ngwr/typography'`
@@ -666,7 +725,7 @@
666
725
  - One directive covering every text role. It sets no element of its own — put it on the `<p>`, `<h1>`, `<code>` or `<ul>` you already have, pick a variant, and it applies the shared `--wr-text-*` / `--wr-font-weight-*` / `--wr-leading-*` tokens by binding a class.
667
726
 
668
727
  ## ngwr/utils
669
- - import: `import { Maybe } from 'ngwr/utils'`
728
+ - import: `import { isDefined } from 'ngwr/utils'`
670
729
  - exports: Maybe, SafeAny, isDefined, isNonEmptyArray, isObservable, clamp, round, numAttr, resolveCssSize, ResolveCssSizeOptions, ResolvedCssSize, getRootFontSize, getFocusableElements, trapFocus, randomId, noop, debounce, throttle, WrDebouncedFn, WrThrottledFn, KEYS, hasModifier, isPrintableKey, WrKey, badgeLog
671
730
 
672
731
  ## ngwr/validators
@@ -674,7 +733,8 @@
674
733
  - exports: WrValidators
675
734
 
676
735
  ## ngwr/version
677
- - import: `import { … } from 'ngwr/version'`
736
+ - import: `import { NGWR_VERSION } from 'ngwr/version'`
737
+ - exports: NGWR_VERSION, NGWR_VERSION_TOKEN
678
738
 
679
739
  ## ngwr/virtual-scroll
680
740
  - import: `import { WrVirtualScroll } from 'ngwr/virtual-scroll'`
@@ -686,9 +746,10 @@
686
746
  - import: `import { WrWaves } from 'ngwr/waves'`
687
747
  - selector: `wr-waves`
688
748
  - exports: WrWaves
749
+ - Wave-field background — a grid of lines drifting on perlin noise, nudged by the pointer. Line colour follows the theme out of the box. Use behind hero copy or section content.
689
750
 
690
751
  ## ngwr/window
691
- - import: `import { WR_WINDOW_DATA } from 'ngwr/window'`
752
+ - import: `import { WrWindowManager } from 'ngwr/window'`
692
753
  - selector: `wr-window-container`, `wr-window-taskbar`, `wr-window`
693
- - exports: WR_WINDOW_DATA, WR_WINDOW_REF, WrWindowManager, type WrWindowBeforeCloseHook, WrWindowRef, WrWindowTaskbar, WrWindowChromeSize, WrWindowConfig, WrWindowOs, WrWindowPersistMode, WrWindowSize, WrWindowSnap, WrWindowState, WrWindowStorageConfig
754
+ - exports: WR_WINDOW_DATA, WR_WINDOW_REF, WrWindowManager, WrWindowBeforeCloseHook, WrWindowRef, WrWindowTaskbar, WrWindowChromeSize, WrWindowConfig, WrWindowOs, WrWindowPersistMode, WrWindowSize, WrWindowSnap, WrWindowState, WrWindowStorageConfig
694
755
  - Free-floating OS-style window opened programmatically via `WrWindowManager`. Drag the header to move, drag any edge or corner to resize, minimize to the taskbar. There is no declarative `<wr-window>` component — the manager is the only entry point so the API stays single-track. Need a backdrop + focus trap? That's `WrDialog`, not this.