ngwr 7.3.0 → 9.0.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 (450) hide show
  1. package/README.md +79 -31
  2. package/action-sheet/styles/_index.scss +93 -0
  3. package/alert/styles/_index.scss +45 -18
  4. package/anchor/styles/_index.scss +3 -3
  5. package/avatar/styles/_index.scss +2 -2
  6. package/back-top/styles/_index.scss +1 -1
  7. package/badge/styles/_index.scss +11 -7
  8. package/badge/styles/_tag.scss +4 -4
  9. package/bar-chart/styles/_index.scss +5 -6
  10. package/border-glow/styles/_index.scss +3 -3
  11. package/breadcrumbs/styles/_index.scss +7 -5
  12. package/burger/styles/_index.scss +3 -3
  13. package/button/styles/_index.scss +34 -24
  14. package/calendar/styles/_index.scss +15 -13
  15. package/calendar-heatmap/styles/_index.scss +5 -3
  16. package/card/styles/_index.scss +5 -5
  17. package/carousel/styles/_index.scss +6 -6
  18. package/cascader/styles/_index.scss +69 -29
  19. package/checkbox/styles/_index.scss +41 -9
  20. package/collapse/styles/_index.scss +7 -7
  21. package/color-picker/styles/_index.scss +26 -21
  22. package/command-palette/styles/_index.scss +22 -19
  23. package/compare/styles/_index.scss +6 -6
  24. package/context-menu/styles/_index.scss +17 -7
  25. package/counter/styles/_index.scss +12 -1
  26. package/date-picker/styles/_index.scss +13 -14
  27. package/density/styles/_index.scss +3 -3
  28. package/descriptions/styles/_index.scss +9 -9
  29. package/dialog/styles/_index.scss +10 -9
  30. package/divider/styles/_index.scss +3 -3
  31. package/donut-chart/styles/_index.scss +3 -3
  32. package/drag-drop/styles/_index.scss +11 -6
  33. package/drawer/styles/_index.scss +26 -17
  34. package/dropdown/styles/_index.scss +7 -7
  35. package/empty/styles/_index.scss +4 -4
  36. package/fesm2022/ngwr-action-sheet.mjs +81 -0
  37. package/fesm2022/ngwr-action-sheet.mjs.map +1 -0
  38. package/fesm2022/ngwr-affix.mjs +3 -3
  39. package/fesm2022/ngwr-alert.mjs +23 -11
  40. package/fesm2022/ngwr-alert.mjs.map +1 -1
  41. package/fesm2022/ngwr-anchor.mjs +4 -4
  42. package/fesm2022/ngwr-anchor.mjs.map +1 -1
  43. package/fesm2022/ngwr-aurora.mjs +5 -4
  44. package/fesm2022/ngwr-aurora.mjs.map +1 -1
  45. package/fesm2022/ngwr-avatar.mjs +4 -4
  46. package/fesm2022/ngwr-avatar.mjs.map +1 -1
  47. package/fesm2022/ngwr-back-top.mjs +4 -4
  48. package/fesm2022/ngwr-back-top.mjs.map +1 -1
  49. package/fesm2022/ngwr-badge.mjs +8 -8
  50. package/fesm2022/ngwr-badge.mjs.map +1 -1
  51. package/fesm2022/ngwr-bar-chart.mjs +4 -4
  52. package/fesm2022/ngwr-bar-chart.mjs.map +1 -1
  53. package/fesm2022/ngwr-blur-text.mjs +3 -3
  54. package/fesm2022/ngwr-border-glow.mjs +4 -4
  55. package/fesm2022/ngwr-border-glow.mjs.map +1 -1
  56. package/fesm2022/ngwr-breadcrumbs.mjs +8 -8
  57. package/fesm2022/ngwr-breadcrumbs.mjs.map +1 -1
  58. package/fesm2022/ngwr-burger.mjs +4 -4
  59. package/fesm2022/ngwr-burger.mjs.map +1 -1
  60. package/fesm2022/ngwr-button.mjs +8 -8
  61. package/fesm2022/ngwr-button.mjs.map +1 -1
  62. package/fesm2022/ngwr-calendar-heatmap.mjs +4 -4
  63. package/fesm2022/ngwr-calendar-heatmap.mjs.map +1 -1
  64. package/fesm2022/ngwr-calendar.mjs +5 -5
  65. package/fesm2022/ngwr-calendar.mjs.map +1 -1
  66. package/fesm2022/ngwr-card.mjs +11 -11
  67. package/fesm2022/ngwr-card.mjs.map +1 -1
  68. package/fesm2022/ngwr-carousel.mjs +7 -7
  69. package/fesm2022/ngwr-carousel.mjs.map +1 -1
  70. package/fesm2022/ngwr-cascader.mjs +58 -89
  71. package/fesm2022/ngwr-cascader.mjs.map +1 -1
  72. package/fesm2022/ngwr-checkbox.mjs +80 -129
  73. package/fesm2022/ngwr-checkbox.mjs.map +1 -1
  74. package/fesm2022/ngwr-circular-text.mjs +5 -4
  75. package/fesm2022/ngwr-circular-text.mjs.map +1 -1
  76. package/fesm2022/ngwr-click-spark.mjs +27 -7
  77. package/fesm2022/ngwr-click-spark.mjs.map +1 -1
  78. package/fesm2022/ngwr-clipboard.mjs +28 -7
  79. package/fesm2022/ngwr-clipboard.mjs.map +1 -1
  80. package/fesm2022/ngwr-collapse.mjs +12 -12
  81. package/fesm2022/ngwr-collapse.mjs.map +1 -1
  82. package/fesm2022/ngwr-color-picker.mjs +58 -66
  83. package/fesm2022/ngwr-color-picker.mjs.map +1 -1
  84. package/fesm2022/ngwr-command-palette.mjs +4 -4
  85. package/fesm2022/ngwr-command-palette.mjs.map +1 -1
  86. package/fesm2022/ngwr-compare.mjs +4 -4
  87. package/fesm2022/ngwr-compare.mjs.map +1 -1
  88. package/fesm2022/ngwr-confetti.mjs +3 -3
  89. package/fesm2022/ngwr-context-menu.mjs +98 -75
  90. package/fesm2022/ngwr-context-menu.mjs.map +1 -1
  91. package/fesm2022/ngwr-cookie.mjs +19 -6
  92. package/fesm2022/ngwr-cookie.mjs.map +1 -1
  93. package/fesm2022/ngwr-counter.mjs +32 -14
  94. package/fesm2022/ngwr-counter.mjs.map +1 -1
  95. package/fesm2022/ngwr-date-adapter-fns.mjs +3 -3
  96. package/fesm2022/ngwr-date-adapter-luxon.mjs +3 -3
  97. package/fesm2022/ngwr-date-adapter.mjs +10 -5
  98. package/fesm2022/ngwr-date-adapter.mjs.map +1 -1
  99. package/fesm2022/ngwr-date-picker.mjs +142 -123
  100. package/fesm2022/ngwr-date-picker.mjs.map +1 -1
  101. package/fesm2022/ngwr-decrypt-text.mjs +3 -3
  102. package/fesm2022/ngwr-density.mjs +15 -15
  103. package/fesm2022/ngwr-density.mjs.map +1 -1
  104. package/fesm2022/ngwr-descriptions.mjs +7 -7
  105. package/fesm2022/ngwr-descriptions.mjs.map +1 -1
  106. package/fesm2022/ngwr-dialog.mjs +16 -16
  107. package/fesm2022/ngwr-dialog.mjs.map +1 -1
  108. package/fesm2022/ngwr-directives.mjs +22 -88
  109. package/fesm2022/ngwr-directives.mjs.map +1 -1
  110. package/fesm2022/ngwr-divider.mjs +4 -4
  111. package/fesm2022/ngwr-divider.mjs.map +1 -1
  112. package/fesm2022/ngwr-donut-chart.mjs +11 -5
  113. package/fesm2022/ngwr-donut-chart.mjs.map +1 -1
  114. package/fesm2022/ngwr-drag-drop.mjs +10 -9
  115. package/fesm2022/ngwr-drag-drop.mjs.map +1 -1
  116. package/fesm2022/ngwr-drawer.mjs +19 -18
  117. package/fesm2022/ngwr-drawer.mjs.map +1 -1
  118. package/fesm2022/ngwr-dropdown.mjs +13 -12
  119. package/fesm2022/ngwr-dropdown.mjs.map +1 -1
  120. package/fesm2022/ngwr-empty.mjs +4 -4
  121. package/fesm2022/ngwr-empty.mjs.map +1 -1
  122. package/fesm2022/ngwr-falling-text.mjs +5 -4
  123. package/fesm2022/ngwr-falling-text.mjs.map +1 -1
  124. package/fesm2022/ngwr-file-upload.mjs +58 -60
  125. package/fesm2022/ngwr-file-upload.mjs.map +1 -1
  126. package/fesm2022/ngwr-form.mjs +11 -11
  127. package/fesm2022/ngwr-form.mjs.map +1 -1
  128. package/fesm2022/ngwr-fuzzy-text.mjs +10 -8
  129. package/fesm2022/ngwr-fuzzy-text.mjs.map +1 -1
  130. package/fesm2022/ngwr-gauge.mjs +4 -4
  131. package/fesm2022/ngwr-gauge.mjs.map +1 -1
  132. package/fesm2022/ngwr-glitch-text.mjs +15 -7
  133. package/fesm2022/ngwr-glitch-text.mjs.map +1 -1
  134. package/fesm2022/ngwr-gradient-text.mjs +4 -4
  135. package/fesm2022/ngwr-gradient-text.mjs.map +1 -1
  136. package/fesm2022/ngwr-hotkey.mjs +7 -7
  137. package/fesm2022/ngwr-hotkey.mjs.map +1 -1
  138. package/fesm2022/ngwr-i18n.mjs +10 -10
  139. package/fesm2022/ngwr-i18n.mjs.map +1 -1
  140. package/fesm2022/ngwr-icon-adapters-lucide.mjs +6 -7
  141. package/fesm2022/ngwr-icon-adapters-lucide.mjs.map +1 -1
  142. package/fesm2022/ngwr-icon.mjs +4 -4
  143. package/fesm2022/ngwr-icon.mjs.map +1 -1
  144. package/fesm2022/ngwr-image-cropper.mjs +6 -5
  145. package/fesm2022/ngwr-image-cropper.mjs.map +1 -1
  146. package/fesm2022/ngwr-input-number.mjs +56 -73
  147. package/fesm2022/ngwr-input-number.mjs.map +1 -1
  148. package/fesm2022/ngwr-input-otp.mjs +52 -52
  149. package/fesm2022/ngwr-input-otp.mjs.map +1 -1
  150. package/fesm2022/ngwr-input.mjs +27 -18
  151. package/fesm2022/ngwr-input.mjs.map +1 -1
  152. package/fesm2022/ngwr-keyboard.mjs +4 -4
  153. package/fesm2022/ngwr-keyboard.mjs.map +1 -1
  154. package/fesm2022/ngwr-knob.mjs +47 -58
  155. package/fesm2022/ngwr-knob.mjs.map +1 -1
  156. package/fesm2022/ngwr-layout.mjs +16 -16
  157. package/fesm2022/ngwr-layout.mjs.map +1 -1
  158. package/fesm2022/ngwr-lightbox.mjs +20 -7
  159. package/fesm2022/ngwr-lightbox.mjs.map +1 -1
  160. package/fesm2022/ngwr-line-chart.mjs +4 -4
  161. package/fesm2022/ngwr-line-chart.mjs.map +1 -1
  162. package/fesm2022/ngwr-list.mjs +8 -8
  163. package/fesm2022/ngwr-list.mjs.map +1 -1
  164. package/fesm2022/ngwr-loading-bar.mjs +7 -7
  165. package/fesm2022/ngwr-loading-bar.mjs.map +1 -1
  166. package/fesm2022/ngwr-marquee.mjs +6 -5
  167. package/fesm2022/ngwr-marquee.mjs.map +1 -1
  168. package/fesm2022/ngwr-media.mjs +4 -4
  169. package/fesm2022/ngwr-media.mjs.map +1 -1
  170. package/fesm2022/ngwr-mention.mjs +15 -9
  171. package/fesm2022/ngwr-mention.mjs.map +1 -1
  172. package/fesm2022/ngwr-meta.mjs +7 -7
  173. package/fesm2022/ngwr-meta.mjs.map +1 -1
  174. package/fesm2022/ngwr-meter-group.mjs +4 -4
  175. package/fesm2022/ngwr-meter-group.mjs.map +1 -1
  176. package/fesm2022/ngwr-overlay.mjs +9 -4
  177. package/fesm2022/ngwr-overlay.mjs.map +1 -1
  178. package/fesm2022/ngwr-page-header.mjs +4 -4
  179. package/fesm2022/ngwr-page-header.mjs.map +1 -1
  180. package/fesm2022/ngwr-pagination.mjs +6 -16
  181. package/fesm2022/ngwr-pagination.mjs.map +1 -1
  182. package/fesm2022/ngwr-pipes.mjs +21 -21
  183. package/fesm2022/ngwr-platform.mjs +169 -5
  184. package/fesm2022/ngwr-platform.mjs.map +1 -1
  185. package/fesm2022/ngwr-popconfirm.mjs +7 -7
  186. package/fesm2022/ngwr-popconfirm.mjs.map +1 -1
  187. package/fesm2022/ngwr-popover.mjs +7 -7
  188. package/fesm2022/ngwr-popover.mjs.map +1 -1
  189. package/fesm2022/ngwr-progress.mjs +4 -4
  190. package/fesm2022/ngwr-progress.mjs.map +1 -1
  191. package/fesm2022/ngwr-pull-to-refresh.mjs +172 -0
  192. package/fesm2022/ngwr-pull-to-refresh.mjs.map +1 -0
  193. package/fesm2022/ngwr-qr.mjs +5 -5
  194. package/fesm2022/ngwr-qr.mjs.map +1 -1
  195. package/fesm2022/ngwr-radio.mjs +49 -72
  196. package/fesm2022/ngwr-radio.mjs.map +1 -1
  197. package/fesm2022/ngwr-rating.mjs +41 -65
  198. package/fesm2022/ngwr-rating.mjs.map +1 -1
  199. package/fesm2022/ngwr-result.mjs +13 -13
  200. package/fesm2022/ngwr-result.mjs.map +1 -1
  201. package/fesm2022/ngwr-rotating-text.mjs +15 -4
  202. package/fesm2022/ngwr-rotating-text.mjs.map +1 -1
  203. package/fesm2022/ngwr-scroll.mjs +4 -4
  204. package/fesm2022/ngwr-scroll.mjs.map +1 -1
  205. package/fesm2022/ngwr-segmented.mjs +10 -22
  206. package/fesm2022/ngwr-segmented.mjs.map +1 -1
  207. package/fesm2022/ngwr-select.mjs +303 -86
  208. package/fesm2022/ngwr-select.mjs.map +1 -1
  209. package/fesm2022/ngwr-shiny-text.mjs +7 -7
  210. package/fesm2022/ngwr-shiny-text.mjs.map +1 -1
  211. package/fesm2022/ngwr-sidebar.mjs +4 -4
  212. package/fesm2022/ngwr-sidebar.mjs.map +1 -1
  213. package/fesm2022/ngwr-skeleton.mjs +4 -4
  214. package/fesm2022/ngwr-skeleton.mjs.map +1 -1
  215. package/fesm2022/ngwr-slider.mjs +79 -73
  216. package/fesm2022/ngwr-slider.mjs.map +1 -1
  217. package/fesm2022/ngwr-sparkline.mjs +4 -4
  218. package/fesm2022/ngwr-sparkline.mjs.map +1 -1
  219. package/fesm2022/ngwr-speed-dial.mjs +13 -5
  220. package/fesm2022/ngwr-speed-dial.mjs.map +1 -1
  221. package/fesm2022/ngwr-spinner.mjs +4 -4
  222. package/fesm2022/ngwr-spinner.mjs.map +1 -1
  223. package/fesm2022/ngwr-splash-cursor.mjs +4 -4
  224. package/fesm2022/ngwr-splash-cursor.mjs.map +1 -1
  225. package/fesm2022/ngwr-split-text.mjs +3 -3
  226. package/fesm2022/ngwr-splitter.mjs +4 -4
  227. package/fesm2022/ngwr-splitter.mjs.map +1 -1
  228. package/fesm2022/ngwr-spotlight-card.mjs +8 -8
  229. package/fesm2022/ngwr-spotlight-card.mjs.map +1 -1
  230. package/fesm2022/ngwr-squircle.mjs +7 -7
  231. package/fesm2022/ngwr-squircle.mjs.map +1 -1
  232. package/fesm2022/ngwr-star-border.mjs +4 -4
  233. package/fesm2022/ngwr-star-border.mjs.map +1 -1
  234. package/fesm2022/ngwr-statistic.mjs +138 -14
  235. package/fesm2022/ngwr-statistic.mjs.map +1 -1
  236. package/fesm2022/ngwr-stepper.mjs +8 -8
  237. package/fesm2022/ngwr-stepper.mjs.map +1 -1
  238. package/fesm2022/ngwr-storage.mjs +4 -4
  239. package/fesm2022/ngwr-storage.mjs.map +1 -1
  240. package/fesm2022/ngwr-switch.mjs +22 -58
  241. package/fesm2022/ngwr-switch.mjs.map +1 -1
  242. package/fesm2022/ngwr-table.mjs +824 -20
  243. package/fesm2022/ngwr-table.mjs.map +1 -1
  244. package/fesm2022/ngwr-tabs.mjs +11 -8
  245. package/fesm2022/ngwr-tabs.mjs.map +1 -1
  246. package/fesm2022/ngwr-textarea.mjs +94 -67
  247. package/fesm2022/ngwr-textarea.mjs.map +1 -1
  248. package/fesm2022/ngwr-theme.mjs +20 -5
  249. package/fesm2022/ngwr-theme.mjs.map +1 -1
  250. package/fesm2022/ngwr-tilt-card.mjs +27 -11
  251. package/fesm2022/ngwr-tilt-card.mjs.map +1 -1
  252. package/fesm2022/ngwr-timeline.mjs +7 -7
  253. package/fesm2022/ngwr-timeline.mjs.map +1 -1
  254. package/fesm2022/ngwr-toast.mjs +47 -25
  255. package/fesm2022/ngwr-toast.mjs.map +1 -1
  256. package/fesm2022/ngwr-toolbar.mjs +4 -4
  257. package/fesm2022/ngwr-toolbar.mjs.map +1 -1
  258. package/fesm2022/ngwr-tree.mjs +280 -84
  259. package/fesm2022/ngwr-tree.mjs.map +1 -1
  260. package/fesm2022/ngwr-typewriter.mjs +10 -5
  261. package/fesm2022/ngwr-typewriter.mjs.map +1 -1
  262. package/fesm2022/ngwr-typography.mjs +4 -4
  263. package/fesm2022/ngwr-typography.mjs.map +1 -1
  264. package/fesm2022/ngwr-validators.mjs +42 -4
  265. package/fesm2022/ngwr-validators.mjs.map +1 -1
  266. package/fesm2022/ngwr-version.mjs +1 -1
  267. package/fesm2022/ngwr-version.mjs.map +1 -1
  268. package/fesm2022/ngwr-virtual-scroll.mjs +9 -7
  269. package/fesm2022/ngwr-virtual-scroll.mjs.map +1 -1
  270. package/fesm2022/ngwr-waves.mjs +6 -5
  271. package/fesm2022/ngwr-waves.mjs.map +1 -1
  272. package/fesm2022/ngwr-window.mjs +16 -15
  273. package/fesm2022/ngwr-window.mjs.map +1 -1
  274. package/file-upload/styles/_index.scss +14 -14
  275. package/form/styles/_index.scss +9 -9
  276. package/gauge/styles/_index.scss +2 -2
  277. package/glitch-text/styles/_index.scss +4 -7
  278. package/gradient-text/styles/_index.scss +1 -1
  279. package/image-cropper/styles/_index.scss +8 -7
  280. package/input/styles/_index.scss +35 -16
  281. package/input-number/styles/_index.scss +1 -1
  282. package/input-otp/styles/_index.scss +28 -10
  283. package/keyboard/styles/_index.scss +11 -9
  284. package/knob/styles/_index.scss +7 -3
  285. package/layout/styles/_index.scss +12 -12
  286. package/lightbox/styles/_index.scss +31 -10
  287. package/line-chart/styles/_index.scss +5 -5
  288. package/list/styles/_index.scss +6 -6
  289. package/llms-full.txt +45 -24
  290. package/llms.txt +48 -32
  291. package/marquee/styles/_index.scss +1 -1
  292. package/mention/styles/_index.scss +6 -6
  293. package/meter-group/styles/_index.scss +4 -4
  294. package/overlay/styles/_index.scss +9 -1
  295. package/package.json +21 -14
  296. package/page-header/styles/_index.scss +4 -4
  297. package/pagination/styles/_index.scss +6 -29
  298. package/popconfirm/styles/_index.scss +4 -4
  299. package/popover/styles/_index.scss +7 -7
  300. package/progress/styles/_index.scss +1 -1
  301. package/pull-to-refresh/styles/_index.scss +38 -0
  302. package/radio/styles/_index.scss +24 -9
  303. package/rating/styles/_index.scss +13 -2
  304. package/result/styles/_index.scss +3 -3
  305. package/schematics/migrations/v8/index.js +122 -0
  306. package/schematics/migrations/v9/index.js +71 -0
  307. package/schematics/migrations.json +10 -0
  308. package/schematics/ng-add/index.js +3 -3
  309. package/schematics/ng-add/schema.json +7 -7
  310. package/schematics/provider/schema.json +1 -1
  311. package/schematics/use/symbol-map.json +24 -2
  312. package/segmented/styles/_index.scss +35 -12
  313. package/select/styles/_index.scss +126 -43
  314. package/shiny-text/styles/_index.scss +4 -4
  315. package/sidebar/styles/_index.scss +15 -15
  316. package/slider/styles/_index.scss +7 -8
  317. package/speed-dial/styles/_index.scss +23 -6
  318. package/splash-cursor/styles/_index.scss +1 -0
  319. package/splitter/styles/_index.scss +11 -8
  320. package/spotlight-card/styles/_index.scss +11 -7
  321. package/star-border/styles/_index.scss +3 -3
  322. package/statistic/styles/_index.scss +51 -4
  323. package/stepper/styles/_index.scss +10 -10
  324. package/styles/_animations.scss +0 -23
  325. package/styles/_typography.scss +4 -1
  326. package/styles.scss +2 -1
  327. package/switch/styles/_index.scss +29 -10
  328. package/table/styles/_index.scss +456 -26
  329. package/tabs/styles/_index.scss +25 -6
  330. package/textarea/styles/_index.scss +65 -10
  331. package/theme/styles/_colors.scss +82 -1
  332. package/theme/styles/_dark.scss +22 -8
  333. package/theme/styles/_focus.scss +5 -0
  334. package/theme/styles/_variables.scss +24 -0
  335. package/tilt-card/styles/_index.scss +4 -4
  336. package/timeline/styles/_index.scss +18 -8
  337. package/toast/styles/_index.scss +24 -16
  338. package/toolbar/styles/_index.scss +5 -5
  339. package/tree/styles/_index.scss +63 -32
  340. package/types/ngwr-action-sheet.d.ts +75 -0
  341. package/types/ngwr-alert.d.ts +17 -7
  342. package/types/ngwr-anchor.d.ts +1 -1
  343. package/types/ngwr-avatar.d.ts +1 -1
  344. package/types/ngwr-back-top.d.ts +1 -1
  345. package/types/ngwr-badge.d.ts +4 -4
  346. package/types/ngwr-bar-chart.d.ts +1 -1
  347. package/types/ngwr-breadcrumbs.d.ts +1 -1
  348. package/types/ngwr-burger.d.ts +1 -1
  349. package/types/ngwr-button.d.ts +3 -3
  350. package/types/ngwr-calendar-heatmap.d.ts +1 -1
  351. package/types/ngwr-calendar.d.ts +1 -1
  352. package/types/ngwr-card.d.ts +1 -1
  353. package/types/ngwr-carousel.d.ts +1 -1
  354. package/types/ngwr-cascader.d.ts +31 -17
  355. package/types/ngwr-checkbox.d.ts +67 -44
  356. package/types/ngwr-click-spark.d.ts +13 -1
  357. package/types/ngwr-clipboard.d.ts +13 -2
  358. package/types/ngwr-collapse.d.ts +3 -3
  359. package/types/ngwr-color-picker.d.ts +24 -19
  360. package/types/ngwr-command-palette.d.ts +1 -1
  361. package/types/ngwr-compare.d.ts +1 -1
  362. package/types/ngwr-context-menu.d.ts +42 -23
  363. package/types/ngwr-cookie.d.ts +7 -1
  364. package/types/ngwr-counter.d.ts +9 -2
  365. package/types/ngwr-date-picker.d.ts +39 -23
  366. package/types/ngwr-density.d.ts +8 -8
  367. package/types/ngwr-descriptions.d.ts +1 -1
  368. package/types/ngwr-dialog.d.ts +1 -1
  369. package/types/ngwr-directives.d.ts +18 -49
  370. package/types/ngwr-divider.d.ts +2 -2
  371. package/types/ngwr-donut-chart.d.ts +1 -1
  372. package/types/ngwr-drag-drop.d.ts +1 -1
  373. package/types/ngwr-drawer.d.ts +1 -1
  374. package/types/ngwr-dropdown.d.ts +1 -1
  375. package/types/ngwr-empty.d.ts +1 -1
  376. package/types/ngwr-file-upload.d.ts +28 -17
  377. package/types/ngwr-form.d.ts +2 -2
  378. package/types/ngwr-fuzzy-text.d.ts +1 -1
  379. package/types/ngwr-gauge.d.ts +1 -1
  380. package/types/ngwr-glitch-text.d.ts +9 -3
  381. package/types/ngwr-hotkey.d.ts +1 -1
  382. package/types/ngwr-i18n.d.ts +1 -1
  383. package/types/ngwr-icon-adapters-lucide.d.ts +5 -3
  384. package/types/ngwr-icon.d.ts +1 -1
  385. package/types/ngwr-image-cropper.d.ts +1 -1
  386. package/types/ngwr-input-number.d.ts +25 -19
  387. package/types/ngwr-input-otp.d.ts +28 -18
  388. package/types/ngwr-input.d.ts +29 -15
  389. package/types/ngwr-keyboard.d.ts +1 -1
  390. package/types/ngwr-knob.d.ts +24 -19
  391. package/types/ngwr-layout.d.ts +1 -1
  392. package/types/ngwr-lightbox.d.ts +10 -2
  393. package/types/ngwr-line-chart.d.ts +1 -1
  394. package/types/ngwr-list.d.ts +1 -1
  395. package/types/ngwr-loading-bar.d.ts +1 -1
  396. package/types/ngwr-marquee.d.ts +1 -1
  397. package/types/ngwr-media.d.ts +1 -1
  398. package/types/ngwr-mention.d.ts +1 -1
  399. package/types/ngwr-meta.d.ts +1 -1
  400. package/types/ngwr-meter-group.d.ts +1 -1
  401. package/types/ngwr-page-header.d.ts +1 -1
  402. package/types/ngwr-pagination.d.ts +4 -10
  403. package/types/ngwr-platform.d.ts +93 -2
  404. package/types/ngwr-popconfirm.d.ts +3 -3
  405. package/types/ngwr-progress.d.ts +2 -2
  406. package/types/ngwr-pull-to-refresh.d.ts +69 -0
  407. package/types/ngwr-qr.d.ts +1 -1
  408. package/types/ngwr-radio.d.ts +39 -25
  409. package/types/ngwr-rating.d.ts +32 -20
  410. package/types/ngwr-result.d.ts +1 -1
  411. package/types/ngwr-rotating-text.d.ts +1 -0
  412. package/types/ngwr-scroll.d.ts +1 -1
  413. package/types/ngwr-segmented.d.ts +6 -3
  414. package/types/ngwr-select.d.ts +98 -27
  415. package/types/ngwr-sidebar.d.ts +1 -1
  416. package/types/ngwr-skeleton.d.ts +2 -2
  417. package/types/ngwr-slider.d.ts +35 -21
  418. package/types/ngwr-sparkline.d.ts +1 -1
  419. package/types/ngwr-speed-dial.d.ts +8 -2
  420. package/types/ngwr-spinner.d.ts +1 -1
  421. package/types/ngwr-splitter.d.ts +1 -1
  422. package/types/ngwr-spotlight-card.d.ts +1 -1
  423. package/types/ngwr-squircle.d.ts +1 -1
  424. package/types/ngwr-statistic.d.ts +75 -6
  425. package/types/ngwr-stepper.d.ts +2 -2
  426. package/types/ngwr-storage.d.ts +1 -1
  427. package/types/ngwr-switch.d.ts +24 -16
  428. package/types/ngwr-table.d.ts +417 -6
  429. package/types/ngwr-tabs.d.ts +1 -1
  430. package/types/ngwr-textarea.d.ts +45 -20
  431. package/types/ngwr-theme.d.ts +7 -2
  432. package/types/ngwr-tilt-card.d.ts +3 -0
  433. package/types/ngwr-timeline.d.ts +1 -1
  434. package/types/ngwr-toast.d.ts +8 -2
  435. package/types/ngwr-toolbar.d.ts +1 -1
  436. package/types/ngwr-tree.d.ts +100 -19
  437. package/types/ngwr-typography.d.ts +1 -1
  438. package/types/ngwr-validators.d.ts +4 -2
  439. package/types/ngwr-version.d.ts +1 -1
  440. package/types/ngwr-virtual-scroll.d.ts +1 -1
  441. package/types/ngwr-window.d.ts +1 -1
  442. package/typography/styles/_index.scss +11 -11
  443. package/virtual-scroll/styles/_index.scss +1 -1
  444. package/waves/styles/_index.scss +1 -1
  445. package/window/styles/_index.scss +26 -26
  446. package/fesm2022/ngwr-scramble-text.mjs +0 -165
  447. package/fesm2022/ngwr-scramble-text.mjs.map +0 -1
  448. package/scramble-text/scramble-text.scss +0 -1
  449. package/scramble-text/styles/_index.scss +0 -8
  450. package/types/ngwr-scramble-text.d.ts +0 -49
@@ -2,7 +2,7 @@ import * as ngwr_i18n from 'ngwr/i18n';
2
2
  import * as _angular_core from '@angular/core';
3
3
  import { InjectionToken, Signal, TemplateRef, ElementRef } from '@angular/core';
4
4
  import { BooleanInput } from '@angular/cdk/coercion';
5
- import { ControlValueAccessor } from '@angular/forms';
5
+ import { FormValueControl } from '@angular/forms/signals';
6
6
  import { Observable } from 'rxjs';
7
7
 
8
8
  /**
@@ -37,6 +37,8 @@ type WrSelectTagValidator = (value: string, existing: readonly string[]) => bool
37
37
  * so stale responses can't clobber fresh ones.
38
38
  */
39
39
  type WrSelectSearchLoader<T> = (query: string) => Observable<readonly T[]> | Promise<readonly T[]> | readonly T[];
40
+ /** Control size for `<wr-select>` — shares the `--wr-control-*` contract. */
41
+ type WrSelectSize = 'sm' | 'md' | 'lg';
40
42
 
41
43
  /**
42
44
  * @license
@@ -118,20 +120,22 @@ interface SelectedChip {
118
120
  * - `'tag'` — free-text + chips with `[separators]` / `[validate]` /
119
121
  * `[allowDuplicates]`. Replaces `<wr-chips-input>`.
120
122
  *
121
- * Implements `ControlValueAccessor` — usable with `[(ngModel)]`,
122
- * `formControl`, or `formControlName`.
123
+ * A signal-forms native control: it implements `FormValueControl<unknown>`, so
124
+ * `[formField]` binds straight to its `value` model — no
125
+ * `ControlValueAccessor` in between. `[(value)]` works standalone, and classic
126
+ * `[(ngModel)]` / reactive forms keep working through Angular's bridge.
123
127
  *
124
128
  * @example
125
129
  * ```html
126
- * <!-- Single -->
127
- * <wr-select placeholder="Pick a size" [(ngModel)]="size">
130
+ * <!-- Single (signal forms) -->
131
+ * <wr-select placeholder="Pick a size" [formField]="form.size">
128
132
  * <wr-option value="sm">Small</wr-option>
129
133
  * <wr-option value="md">Medium</wr-option>
130
134
  * <wr-option value="lg">Large</wr-option>
131
135
  * </wr-select>
132
136
  *
133
- * <!-- Multi -->
134
- * <wr-select mode="multi" placeholder="Pick tags" [(ngModel)]="tags">
137
+ * <!-- Multi (standalone two-way binding) -->
138
+ * <wr-select mode="multi" placeholder="Pick tags" [(value)]="tags">
135
139
  * <wr-option value="ts">TypeScript</wr-option>
136
140
  * <wr-option value="ng">Angular</wr-option>
137
141
  * </wr-select>
@@ -140,9 +144,9 @@ interface SelectedChip {
140
144
  * The legacy `[multi]="true"` boolean is still accepted but is now an
141
145
  * alias for `[mode]="'multi'"` — prefer the explicit mode.
142
146
  *
143
- * @see https://ngwr.dev/components/select
147
+ * @see https://ngwr.dev/reference/components/select
144
148
  */
145
- declare class WrSelect implements ControlValueAccessor, WrSelectContext {
149
+ declare class WrSelect implements FormValueControl<unknown>, WrSelectContext {
146
150
  /** Placeholder shown when no option is selected. Falls back to `select.placeholder`. */
147
151
  readonly placeholder: _angular_core.InputSignal<string | null>;
148
152
  /** Clear-selection (×) button aria-label. Falls back to `select.clearSelection`. */
@@ -151,10 +155,17 @@ declare class WrSelect implements ControlValueAccessor, WrSelectContext {
151
155
  protected readonly resolvedClear: _angular_core.Signal<string>;
152
156
  /** Per-chip ARIA label — interpolates `{{label}}`. @internal */
153
157
  protected readonly chipRemoveLabel: (params?: ngwr_i18n.WrI18nParams) => string;
154
- /** Disable the select. Also set by Angular forms via `setDisabledState`. */
158
+ /**
159
+ * Disable the select. Bound automatically from the field's disabled state
160
+ * when used with `[formField]`.
161
+ *
162
+ * @default false
163
+ */
155
164
  readonly disabled: _angular_core.InputSignalWithTransform<boolean, any>;
156
165
  /** Pill-shaped corners on the trigger. @default false */
157
166
  readonly rounded: _angular_core.InputSignalWithTransform<boolean, any>;
167
+ /** Control size — shares the `--wr-control-*` contract. @default 'md' */
168
+ readonly size: _angular_core.InputSignal<WrSelectSize>;
158
169
  /**
159
170
  * Present the option panel as a full-width bottom-sheet on small
160
171
  * viewports instead of an anchored dropdown. `undefined` follows the
@@ -214,6 +225,28 @@ declare class WrSelect implements ControlValueAccessor, WrSelectContext {
214
225
  * unmatched query commits the raw text as the form value. @default false
215
226
  */
216
227
  readonly freeText: _angular_core.InputSignalWithTransform<boolean, any>;
228
+ /**
229
+ * Search mode: window the option panel so thousands of `[options]` keep only
230
+ * ~one viewport of rows in the DOM. Opt-in and OFF by default. Engages ONLY on
231
+ * the pure data-array search tier — it silently falls back to the full render
232
+ * when static `<wr-option>` children are projected or the filtered list is
233
+ * empty. While on, rows are plain `role="option"` elements (no `<wr-option>`),
234
+ * navigated via `aria-activedescendant`, selected by value. @default false
235
+ */
236
+ readonly virtualScroll: _angular_core.InputSignalWithTransform<boolean, any>;
237
+ /**
238
+ * Search mode: uniform option-row height in px for the virtual window. `0`
239
+ * (default) measures the first rendered row once and reuses it, so it adapts
240
+ * to the control size. Read only when `virtualScroll` engages. @default 0
241
+ */
242
+ readonly rowHeight: _angular_core.InputSignalWithTransform<number, unknown>;
243
+ /**
244
+ * Search mode: height of the virtual scroll viewport — a number (px) or any
245
+ * CSS length. @default 256
246
+ */
247
+ readonly viewportHeight: _angular_core.InputSignal<string | number>;
248
+ /** Search mode: extra rows kept above/below the virtual viewport. @default 6 */
249
+ readonly overscan: _angular_core.InputSignalWithTransform<number, unknown>;
217
250
  /** Search mode: text shown when the filter / loader returns nothing. Falls back to `select.noResults`. */
218
251
  readonly noResultsText: _angular_core.InputSignal<string | null>;
219
252
  /** Search mode: text shown while the async loader is in flight. Falls back to `select.loading`. */
@@ -255,18 +288,19 @@ declare class WrSelect implements ControlValueAccessor, WrSelectContext {
255
288
  */
256
289
  readonly maxTagCount: _angular_core.InputSignalWithTransform<number, unknown>;
257
290
  /**
258
- * Unified value signal. Single mode holds `T | null`; multi mode
259
- * holds `readonly T[]`. Internal — consumers go through `[(ngModel)]`
260
- * or `[formControl]` via CVA.
261
- * @internal
291
+ * Unified value. Single mode holds a scalar (or `null`); multi / tag
292
+ * mode holds `readonly unknown[]`. Bound by `[formField]`, or two-way
293
+ * via `[(value)]`.
262
294
  */
263
- readonly value: _angular_core.WritableSignal<unknown>;
295
+ readonly value: _angular_core.ModelSignal<unknown>;
296
+ /** Emitted on blur / commit so a bound field can mark itself touched. */
297
+ readonly touch: _angular_core.OutputEmitterRef<void>;
264
298
  /** Listbox id used by the trigger's `aria-controls`. */
265
299
  protected readonly listboxId: string;
266
300
  /** Registered options (insertion order). Internal — distinct from the public `[options]` input. */
267
301
  private readonly registry;
268
302
  /** Keyboard cursor index into `options`. -1 = none. */
269
- private readonly activeIndex;
303
+ protected readonly activeIndex: _angular_core.WritableSignal<number>;
270
304
  /** Id of the active option (for `aria-activedescendant`). */
271
305
  readonly activeOptionId: _angular_core.Signal<string | null>;
272
306
  protected readonly open: _angular_core.WritableSignal<boolean>;
@@ -280,8 +314,7 @@ declare class WrSelect implements ControlValueAccessor, WrSelectContext {
280
314
  protected readonly visibleChips: _angular_core.Signal<readonly SelectedChip[]>;
281
315
  protected readonly hiddenChipCount: _angular_core.Signal<number>;
282
316
  protected readonly hasSelection: _angular_core.Signal<boolean>;
283
- private readonly disabledFromCva;
284
- /** Effective disabled state — input wins, CVA second. */
317
+ /** Effective disabled state. Part of {@link WrSelectContext} for child options. */
285
318
  readonly isDisabled: _angular_core.Signal<boolean>;
286
319
  protected readonly classes: _angular_core.Signal<string>;
287
320
  /**
@@ -290,6 +323,49 @@ declare class WrSelect implements ControlValueAccessor, WrSelectContext {
290
323
  * as an internal `<wr-option>` in the panel.
291
324
  */
292
325
  protected readonly dynamicOptions: _angular_core.Signal<readonly unknown[]>;
326
+ private static readonly FALLBACK_ROW_PX;
327
+ private static readonly FALLBACK_VIEWPORT_PX;
328
+ /** Consumer-projected `<wr-option>` children only (NOT the `@for`-rendered ones). */
329
+ private readonly projectedOptions;
330
+ /**
331
+ * `dynamicOptions()` narrowed to the current search query. `dynamicOptions()`
332
+ * is intentionally UNFILTERED (projected `<wr-option>` self-hide via CSS), so
333
+ * the virtual path — which renders plain rows that can't self-hide — filters
334
+ * here. Loader results are already query-scoped upstream.
335
+ */
336
+ protected readonly filteredDynamicOptions: _angular_core.Signal<readonly unknown[]>;
337
+ /**
338
+ * Virtualization engaged: opt-in, search mode, a non-empty filtered array, and
339
+ * NO projected `<wr-option>` children (those keep the full-render registry path
340
+ * so their DOM-derived labels / selection still work).
341
+ */
342
+ protected readonly virtualActive: _angular_core.Signal<boolean>;
343
+ private readonly scrollTop;
344
+ private readonly viewportPx;
345
+ private readonly measuredRowPx;
346
+ /** Effective uniform row height (px). */
347
+ protected readonly effRowH: _angular_core.Signal<number>;
348
+ private readonly fallbackViewportPx;
349
+ /** `viewportHeight` as a CSS length for the inline max-height (bare number → px). */
350
+ protected readonly resolvedViewportHeight: _angular_core.Signal<string>;
351
+ /** Rendered window [start,end) + spacer pads (px). */
352
+ protected readonly virtualWindow: _angular_core.Signal<{
353
+ start: number;
354
+ end: number;
355
+ padTop: number;
356
+ padBottom: number;
357
+ }>;
358
+ /** The windowed slice of options, each carrying its absolute index. */
359
+ protected readonly windowOptions: _angular_core.Signal<readonly {
360
+ item: unknown;
361
+ index: number;
362
+ }[]>;
363
+ /** Stable id for a virtual option row at filtered index `i`. */
364
+ protected virtualRowId(i: number): string;
365
+ /** The virtual scroll container inside the overlay panel, if attached. */
366
+ private get vlistElement();
367
+ /** Scroll filtered index `i` just into view (sets the `scrollTop` signal synchronously). */
368
+ private ensureVisible;
293
369
  /**
294
370
  * Count of registered options that pass the current search filter.
295
371
  * Hides the noResults state when the panel has at least one visible row.
@@ -321,9 +397,8 @@ declare class WrSelect implements ControlValueAccessor, WrSelectContext {
321
397
  private readonly vcr;
322
398
  private readonly scrollStrategies;
323
399
  private readonly destroyRef;
400
+ private readonly platformId;
324
401
  private overlayRef;
325
- private onChange;
326
- protected onTouched: () => void;
327
402
  constructor();
328
403
  isSelected(value: unknown): boolean;
329
404
  selectOption(value: unknown): void;
@@ -340,22 +415,18 @@ declare class WrSelect implements ControlValueAccessor, WrSelectContext {
340
415
  protected onTagBlur(): void;
341
416
  private commitDraft;
342
417
  private tryAddTag;
343
- writeValue(value: unknown): void;
344
- registerOnChange(fn: (value: unknown) => void): void;
345
- registerOnTouched(fn: () => void): void;
346
- setDisabledState(isDisabled: boolean): void;
347
418
  protected onTriggerClick(): void;
348
419
  protected onTriggerKey(event: KeyboardEvent): void;
349
420
  private seedActiveIndex;
350
421
  private moveActive;
351
422
  private firstEnabled;
352
423
  private lastEnabled;
353
- /** Coerce the multi-mode value signal into an array (handles writeValue from non-array). */
424
+ /** Coerce the multi-mode value into an array (tolerates a scalar or null write). */
354
425
  private asArray;
355
426
  private openOverlay;
356
427
  private closeOverlay;
357
428
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<WrSelect, never>;
358
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrSelect, "wr-select", never, { "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "clearLabel": { "alias": "clearLabel"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "rounded": { "alias": "rounded"; "required": false; "isSignal": true; }; "responsive": { "alias": "responsive"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; "displayWith": { "alias": "displayWith"; "required": false; "isSignal": true; }; "loader": { "alias": "loader"; "required": false; "isSignal": true; }; "debounceMs": { "alias": "debounceMs"; "required": false; "isSignal": true; }; "minChars": { "alias": "minChars"; "required": false; "isSignal": true; }; "freeText": { "alias": "freeText"; "required": false; "isSignal": true; }; "noResultsText": { "alias": "noResultsText"; "required": false; "isSignal": true; }; "loadingText": { "alias": "loadingText"; "required": false; "isSignal": true; }; "separators": { "alias": "separators"; "required": false; "isSignal": true; }; "allowDuplicates": { "alias": "allowDuplicates"; "required": false; "isSignal": true; }; "validate": { "alias": "validate"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "maxItems": { "alias": "maxItems"; "required": false; "isSignal": true; }; "maxTagCount": { "alias": "maxTagCount"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
429
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrSelect, "wr-select", never, { "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "clearLabel": { "alias": "clearLabel"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "rounded": { "alias": "rounded"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "responsive": { "alias": "responsive"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; "displayWith": { "alias": "displayWith"; "required": false; "isSignal": true; }; "loader": { "alias": "loader"; "required": false; "isSignal": true; }; "debounceMs": { "alias": "debounceMs"; "required": false; "isSignal": true; }; "minChars": { "alias": "minChars"; "required": false; "isSignal": true; }; "freeText": { "alias": "freeText"; "required": false; "isSignal": true; }; "virtualScroll": { "alias": "virtualScroll"; "required": false; "isSignal": true; }; "rowHeight": { "alias": "rowHeight"; "required": false; "isSignal": true; }; "viewportHeight": { "alias": "viewportHeight"; "required": false; "isSignal": true; }; "overscan": { "alias": "overscan"; "required": false; "isSignal": true; }; "noResultsText": { "alias": "noResultsText"; "required": false; "isSignal": true; }; "loadingText": { "alias": "loadingText"; "required": false; "isSignal": true; }; "separators": { "alias": "separators"; "required": false; "isSignal": true; }; "allowDuplicates": { "alias": "allowDuplicates"; "required": false; "isSignal": true; }; "validate": { "alias": "validate"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "maxItems": { "alias": "maxItems"; "required": false; "isSignal": true; }; "maxTagCount": { "alias": "maxTagCount"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touch": "touch"; }, ["projectedOptions"], ["*"], true, never>;
359
430
  }
360
431
 
361
432
  /**
@@ -419,4 +490,4 @@ declare class WrOptionGroup {
419
490
  }
420
491
 
421
492
  export { WR_SELECT, WrOption, WrOptionGroup, WrSelect };
422
- export type { WrSelectContext, WrSelectMode, WrSelectSearchLoader, WrSelectTagValidator };
493
+ export type { WrSelectContext, WrSelectMode, WrSelectSearchLoader, WrSelectSize, WrSelectTagValidator };
@@ -51,7 +51,7 @@ declare function isGroup(entry: WrSidebarEntry): entry is WrSidebarGroup;
51
51
  * ]" />
52
52
  * ```
53
53
  *
54
- * @see https://ngwr.dev/components/sidebar
54
+ * @see https://ngwr.dev/reference/components/sidebar
55
55
  */
56
56
  declare class WrSidebar {
57
57
  readonly entries: _angular_core.InputSignal<readonly WrSidebarEntry[]>;
@@ -13,7 +13,7 @@ import * as _angular_core from '@angular/core';
13
13
  * <wr-skeleton color="primary" [animated]="false" />
14
14
  * ```
15
15
  *
16
- * @see https://ngwr.dev/components/skeleton
16
+ * @see https://ngwr.dev/reference/components/skeleton
17
17
  */
18
18
  declare class WrSkeleton {
19
19
  /**
@@ -26,7 +26,7 @@ declare class WrSkeleton {
26
26
  *
27
27
  * @default 'light'
28
28
  */
29
- readonly color: _angular_core.InputSignal<"primary" | "secondary" | "success" | "warning" | "danger" | "light" | "medium" | "dark">;
29
+ readonly color: _angular_core.InputSignal<"primary" | "secondary" | "success" | "warning" | "danger" | "info" | "light" | "medium" | "dark">;
30
30
  /**
31
31
  * Whether the shimmer animation runs.
32
32
  *
@@ -1,6 +1,6 @@
1
1
  import * as _angular_core from '@angular/core';
2
2
  import { ElementRef } from '@angular/core';
3
- import { ControlValueAccessor } from '@angular/forms';
3
+ import { FormValueControl } from '@angular/forms/signals';
4
4
 
5
5
  /**
6
6
  * @license
@@ -14,7 +14,7 @@ import { ControlValueAccessor } from '@angular/forms';
14
14
  * - `[number, number]` (`[low, high]`) for range sliders (`range="true"`)
15
15
  *
16
16
  * The component reads `range` at runtime and writes back the matching shape
17
- * through `ControlValueAccessor`.
17
+ * through its `value` model.
18
18
  */
19
19
  type WrSliderValue = number | readonly [number, number];
20
20
 
@@ -22,38 +22,57 @@ type WrSliderValue = number | readonly [number, number];
22
22
  /**
23
23
  * Numeric slider with optional dual-thumb range mode.
24
24
  *
25
- * Implements `ControlValueAccessor` — works with `[(ngModel)]`,
26
- * `formControl`, `formControlName`. The value shape depends on `range`:
27
- * `number` (default) or `[number, number]` when `range="true"`.
25
+ * A signal-forms native control: it implements `FormValueControl<WrSliderValue>`,
26
+ * so `[formField]` binds straight to its `value` model — no
27
+ * `ControlValueAccessor` in between. `[(value)]` works standalone. The value
28
+ * shape depends on `range`: `number` (default) or `[number, number]` when
29
+ * `range="true"`.
28
30
  *
29
31
  * Keyboard: ← / → adjust by `step`; ↑ / ↓ same; Shift+arrow by `step × 10`;
30
32
  * Home / End jump to min / max; PageUp / PageDown by `step × 10`.
31
33
  *
32
34
  * @example
33
35
  * ```html
34
- * <wr-slider [(ngModel)]="volume" min="0" max="100" step="5" />
35
- * <wr-slider [(ngModel)]="range" range min="0" max="1000" step="10" />
36
+ * <!-- signal forms -->
37
+ * <wr-slider [formField]="form.volume" min="0" max="100" step="5" />
38
+ *
39
+ * <!-- standalone two-way binding -->
40
+ * <wr-slider [(value)]="range" range min="0" max="1000" step="10" />
36
41
  * ```
37
42
  *
38
- * @see https://ngwr.dev/components/slider
43
+ * @see https://ngwr.dev/reference/components/slider
39
44
  */
40
- declare class WrSlider implements ControlValueAccessor {
45
+ declare class WrSlider implements FormValueControl<WrSliderValue> {
41
46
  /** Lower bound. @default 0 */
42
- readonly min: _angular_core.InputSignalWithTransform<number, unknown>;
47
+ readonly min: _angular_core.InputSignalWithTransform<WrSliderValue | undefined, unknown>;
43
48
  /** Upper bound. @default 100 */
44
- readonly max: _angular_core.InputSignalWithTransform<number, unknown>;
49
+ readonly max: _angular_core.InputSignalWithTransform<WrSliderValue | undefined, unknown>;
50
+ /** Resolved numeric lower bound for internal arithmetic. */
51
+ private readonly minValue;
52
+ /** Resolved numeric upper bound for internal arithmetic. */
53
+ private readonly maxValue;
45
54
  /** Step size for keyboard and drag. @default 1 */
46
55
  readonly step: _angular_core.InputSignalWithTransform<number, unknown>;
47
56
  /** Render two thumbs and emit `[low, high]`. @default false */
48
57
  readonly range: _angular_core.InputSignalWithTransform<boolean, any>;
49
- /** Disable interaction. @default false */
58
+ /**
59
+ * Disable interaction. Bound automatically from the field's disabled state
60
+ * when used with `[formField]`.
61
+ *
62
+ * @default false
63
+ */
50
64
  readonly disabled: _angular_core.InputSignalWithTransform<boolean, any>;
51
65
  /** Render the current value below the track. @default true */
52
66
  readonly showLabel: _angular_core.InputSignalWithTransform<boolean, any>;
67
+ /**
68
+ * Current value. Bound by `[formField]`, or two-way via `[(value)]`. Shape
69
+ * follows `range`: a plain `number`, or `[low, high]` in range mode.
70
+ */
71
+ readonly value: _angular_core.ModelSignal<WrSliderValue>;
72
+ /** Emitted on blur so a bound field can mark itself touched. */
73
+ readonly touch: _angular_core.OutputEmitterRef<void>;
53
74
  protected readonly low: _angular_core.WritableSignal<number>;
54
75
  protected readonly high: _angular_core.WritableSignal<number>;
55
- private readonly disabledFromCva;
56
- protected readonly effectiveDisabled: _angular_core.Signal<boolean>;
57
76
  protected readonly track: _angular_core.Signal<ElementRef<HTMLElement>>;
58
77
  protected readonly classes: _angular_core.Signal<string>;
59
78
  protected readonly lowPercent: _angular_core.Signal<number>;
@@ -61,12 +80,7 @@ declare class WrSlider implements ControlValueAccessor {
61
80
  protected readonly fillLeft: _angular_core.Signal<number>;
62
81
  protected readonly fillWidth: _angular_core.Signal<number>;
63
82
  protected readonly label: _angular_core.Signal<string>;
64
- private onChange;
65
- private onTouched;
66
- writeValue(v: WrSliderValue | null): void;
67
- registerOnChange(fn: (v: WrSliderValue) => void): void;
68
- registerOnTouched(fn: () => void): void;
69
- setDisabledState(isDisabled: boolean): void;
83
+ constructor();
70
84
  protected onPointerDown(event: PointerEvent, thumb: 'low' | 'high'): void;
71
85
  protected onTrackPointerDown(event: PointerEvent): void;
72
86
  protected onKey(event: KeyboardEvent, thumb: 'low' | 'high'): void;
@@ -79,7 +93,7 @@ declare class WrSlider implements ControlValueAccessor {
79
93
  private percentOf;
80
94
  private emitChange;
81
95
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<WrSlider, never>;
82
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrSlider, "wr-slider", never, { "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; "range": { "alias": "range"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "showLabel": { "alias": "showLabel"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
96
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrSlider, "wr-slider", never, { "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; "range": { "alias": "range"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "showLabel": { "alias": "showLabel"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touch": "touch"; }, never, never, true, never>;
83
97
  }
84
98
 
85
99
  export { WrSlider };
@@ -10,7 +10,7 @@ import * as _angular_core from '@angular/core';
10
10
  * <wr-sparkline [data]="prices" [showArea]="true" color="var(--wr-color-success)" />
11
11
  * ```
12
12
  *
13
- * @see https://ngwr.dev/components/sparkline
13
+ * @see https://ngwr.dev/reference/components/sparkline
14
14
  */
15
15
  declare class WrSparkline {
16
16
  readonly data: _angular_core.InputSignal<readonly number[]>;
@@ -26,7 +26,7 @@ type WrSpeedDialDirection = 'up' | 'down' | 'left' | 'right';
26
26
  * />
27
27
  * ```
28
28
  *
29
- * @see https://ngwr.dev/components/speed-dial
29
+ * @see https://ngwr.dev/reference/components/speed-dial
30
30
  */
31
31
  declare class WrSpeedDial {
32
32
  readonly actions: _angular_core.InputSignal<readonly WrSpeedDialAction[]>;
@@ -38,13 +38,19 @@ declare class WrSpeedDial {
38
38
  readonly icon: _angular_core.InputSignal<string>;
39
39
  /** Disable interaction. @default false */
40
40
  readonly disabled: _angular_core.InputSignalWithTransform<boolean, any>;
41
+ /**
42
+ * Pad the host toward the dial `direction` with `env(safe-area-inset-*)`.
43
+ * Only matters when the consumer pins the dial to that edge of the
44
+ * viewport; otherwise it has no effect. @default false
45
+ */
46
+ readonly safeArea: _angular_core.InputSignalWithTransform<boolean, any>;
41
47
  /** Fires when the user picks one of the actions. */
42
48
  readonly pick: _angular_core.OutputEmitterRef<WrSpeedDialAction>;
43
49
  protected readonly classes: _angular_core.Signal<string>;
44
50
  protected onTrigger(): void;
45
51
  protected onPick(action: WrSpeedDialAction): void;
46
52
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<WrSpeedDial, never>;
47
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrSpeedDial, "wr-speed-dial", never, { "actions": { "alias": "actions"; "required": false; "isSignal": true; }; "direction": { "alias": "direction"; "required": false; "isSignal": true; }; "open": { "alias": "open"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "open": "openChange"; "pick": "pick"; }, never, never, true, never>;
53
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrSpeedDial, "wr-speed-dial", never, { "actions": { "alias": "actions"; "required": false; "isSignal": true; }; "direction": { "alias": "direction"; "required": false; "isSignal": true; }; "open": { "alias": "open"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "safeArea": { "alias": "safeArea"; "required": false; "isSignal": true; }; }, { "open": "openChange"; "pick": "pick"; }, never, never, true, never>;
48
54
  }
49
55
 
50
56
  export { WrSpeedDial };
@@ -23,7 +23,7 @@ type WrSpinnerSize = 'sm' | 'md' | 'lg';
23
23
  * <wr-spinner size="lg" />
24
24
  * ```
25
25
  *
26
- * @see https://ngwr.dev/components/spinner
26
+ * @see https://ngwr.dev/reference/components/spinner
27
27
  */
28
28
  declare class WrSpinner {
29
29
  /**
@@ -18,7 +18,7 @@ import * as _angular_core from '@angular/core';
18
18
  * </wr-splitter>
19
19
  * ```
20
20
  *
21
- * @see https://ngwr.dev/components/splitter
21
+ * @see https://ngwr.dev/reference/components/splitter
22
22
  */
23
23
  declare class WrSplitter {
24
24
  /** Position of the divider as a percentage (0–100). Two-way bindable. @default 50 */
@@ -20,7 +20,7 @@ import * as _angular_core from '@angular/core';
20
20
  declare class WrSpotlightCard {
21
21
  /**
22
22
  * Highlight colour (any CSS colour). When unset, the theme decides:
23
- * a soft dark tint on light surfaces, white-alpha on dark.
23
+ * a dark-ish glow on light surfaces, a light glow on dark.
24
24
  */
25
25
  readonly spotlightColor: _angular_core.InputSignal<string | null>;
26
26
  /** Where the spotlight fades out, as a percentage of the gradient. @default 80 */
@@ -121,7 +121,7 @@ declare class WrSquircle {
121
121
  * </wr-squircle>
122
122
  * ```
123
123
  *
124
- * @see https://ngwr.dev/components/squircle
124
+ * @see https://ngwr.dev/reference/components/squircle
125
125
  */
126
126
  declare class WrSquircleHost {
127
127
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<WrSquircleHost, never>;
@@ -2,17 +2,24 @@ import * as _angular_core from '@angular/core';
2
2
 
3
3
  /**
4
4
  * KPI card — label + big number + optional prefix/suffix + delta. Pair
5
- * with a layout grid for dashboards.
5
+ * with `<wr-statistic-group>` for a responsive dashboard grid.
6
+ *
7
+ * When `value` is numeric the number counts up (eased) from its previous
8
+ * value to the new one on every change — see `animate`. String values and
9
+ * `prefers-reduced-motion` render instantly.
6
10
  *
7
11
  * @example
8
12
  * ```html
9
13
  * <wr-statistic label="Active users" [value]="12345" suffix="users" />
10
14
  * <wr-statistic label="Revenue" [value]="9512" prefix="$" [delta]="12.4" />
15
+ * <wr-statistic label="Churn" [value]="1.8" suffix="%" [precision]="1" />
11
16
  * ```
12
17
  *
13
- * @see https://ngwr.dev/components/statistic
18
+ * @see https://ngwr.dev/reference/components/statistic
14
19
  */
15
20
  declare class WrStatistic {
21
+ private readonly platform;
22
+ private readonly locale;
16
23
  readonly label: _angular_core.InputSignal<string>;
17
24
  /** The number (or string) to display in the main slot. */
18
25
  readonly value: _angular_core.InputSignal<string | number | null>;
@@ -20,18 +27,45 @@ declare class WrStatistic {
20
27
  readonly prefix: _angular_core.InputSignal<string>;
21
28
  /** Suffix glyph / unit (e.g. `'%'`, `'kg'`). */
22
29
  readonly suffix: _angular_core.InputSignal<string>;
30
+ /** Fixed number of decimals applied to numeric values. @default 0 */
31
+ readonly precision: _angular_core.InputSignalWithTransform<number, unknown>;
32
+ /**
33
+ * Count up to a new numeric `value` instead of swapping instantly. Always
34
+ * off for string values or under `prefers-reduced-motion`. @default true
35
+ */
36
+ readonly animate: _angular_core.InputSignalWithTransform<boolean, any>;
37
+ /** Count-up duration (ms). @default 700 */
38
+ readonly duration: _angular_core.InputSignalWithTransform<number, unknown>;
39
+ /**
40
+ * The current value coerced to a finite number, or `null` when `value` is
41
+ * a non-numeric string / empty / nullish (rendered as-is).
42
+ */
43
+ protected readonly numericValue: _angular_core.Signal<number | null>;
44
+ /** Whether the value should count up (browser, numeric, opted-in, motion allowed). */
45
+ protected readonly animated: _angular_core.Signal<boolean>;
46
+ /** Animation start — the previously-rendered numeric value (0 on first paint). */
47
+ protected readonly animateFrom: _angular_core.WritableSignal<number>;
48
+ /** Bookkeeping: the last numeric value seen, fed back as the next `from`. */
49
+ private readonly lastNumeric;
50
+ constructor();
51
+ /**
52
+ * Static (non-animated) display string. Numeric values honour `precision`
53
+ * and locale grouping so they match the count-up output; everything else
54
+ * renders verbatim with an em-dash fallback.
55
+ */
56
+ protected readonly displayValue: _angular_core.Signal<string>;
23
57
  /**
24
58
  * Optional delta vs previous period — shown as `+x.x%` (or `-x.x%`).
25
59
  * Use `deltaSuffix` to change the trailing unit.
26
60
  */
27
- readonly delta: _angular_core.InputSignalWithTransform<number | null, number | null>;
61
+ readonly delta: _angular_core.InputSignalWithTransform<number | null, unknown>;
28
62
  /** Unit appended to the delta value. @default '%' */
29
63
  readonly deltaSuffix: _angular_core.InputSignal<string>;
30
64
  protected readonly hasDelta: _angular_core.Signal<boolean>;
31
65
  protected readonly deltaDirection: _angular_core.Signal<"up" | "down" | "flat">;
32
66
  protected readonly deltaText: _angular_core.Signal<string>;
33
67
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<WrStatistic, never>;
34
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrStatistic, "wr-statistic", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "prefix": { "alias": "prefix"; "required": false; "isSignal": true; }; "suffix": { "alias": "suffix"; "required": false; "isSignal": true; }; "delta": { "alias": "delta"; "required": false; "isSignal": true; }; "deltaSuffix": { "alias": "deltaSuffix"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
68
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrStatistic, "wr-statistic", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "prefix": { "alias": "prefix"; "required": false; "isSignal": true; }; "suffix": { "alias": "suffix"; "required": false; "isSignal": true; }; "precision": { "alias": "precision"; "required": false; "isSignal": true; }; "animate": { "alias": "animate"; "required": false; "isSignal": true; }; "duration": { "alias": "duration"; "required": false; "isSignal": true; }; "delta": { "alias": "delta"; "required": false; "isSignal": true; }; "deltaSuffix": { "alias": "deltaSuffix"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
35
69
  }
36
70
 
37
71
  /**
@@ -50,7 +84,7 @@ declare class WrStatistic {
50
84
  * />
51
85
  * ```
52
86
  *
53
- * @see https://ngwr.dev/components/statistic
87
+ * @see https://ngwr.dev/reference/components/statistic
54
88
  */
55
89
  declare class WrStatisticCountdown {
56
90
  /** Target date / timestamp the countdown is running down to. */
@@ -85,4 +119,39 @@ declare class WrStatisticCountdown {
85
119
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrStatisticCountdown, "wr-statistic-countdown", never, { "target": { "alias": "target"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "format": { "alias": "format"; "required": false; "isSignal": true; }; "endText": { "alias": "endText"; "required": false; "isSignal": true; }; "tickMs": { "alias": "tickMs"; "required": false; "isSignal": true; }; }, { "countdownEnd": "countdownEnd"; }, never, never, true, never>;
86
120
  }
87
121
 
88
- export { WrStatistic, WrStatisticCountdown };
122
+ /**
123
+ * Dashboard grid for `<wr-statistic>` cards. The column count follows the
124
+ * group's OWN width — an intrinsic container-query grid sized by its box, not
125
+ * a viewport media query — so it reflows correctly inside any column, card, or
126
+ * split pane. Columns are never narrower than `min`; `columns` optionally caps
127
+ * how many ever sit side by side on a wide container.
128
+ *
129
+ * @example
130
+ * ```html
131
+ * <wr-statistic-group [columns]="4" min="11rem">
132
+ * <wr-statistic label="Active users" [value]="12345" />
133
+ * <wr-statistic label="Revenue" [value]="9512" prefix="$" [delta]="12.4" />
134
+ * <wr-statistic label="Churn" [value]="1.8" suffix="%" [delta]="-0.4" />
135
+ * <wr-statistic label="Sessions" [value]="48210" />
136
+ * </wr-statistic-group>
137
+ * ```
138
+ *
139
+ * @see https://ngwr.dev/reference/components/statistic
140
+ */
141
+ declare class WrStatisticGroup {
142
+ /**
143
+ * Minimum width of each column before the grid reflows to fewer columns.
144
+ * Any CSS length — smaller packs more cards per row. @default '12rem'
145
+ */
146
+ readonly min: _angular_core.InputSignal<string>;
147
+ /**
148
+ * Cap on how many columns ever sit side by side on a wide container. `0`
149
+ * (default) leaves it uncapped — fit as many `min`-wide columns as the
150
+ * width allows. @default 0
151
+ */
152
+ readonly columns: _angular_core.InputSignalWithTransform<number, unknown>;
153
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<WrStatisticGroup, never>;
154
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrStatisticGroup, "wr-statistic-group", never, { "min": { "alias": "min"; "required": false; "isSignal": true; }; "columns": { "alias": "columns"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
155
+ }
156
+
157
+ export { WrStatistic, WrStatisticCountdown, WrStatisticGroup };
@@ -14,7 +14,7 @@ import { InjectionToken, Signal } from '@angular/core';
14
14
  * The stepper hides every step except the active one via a host class —
15
15
  * each step still mounts once, so component state survives navigation.
16
16
  *
17
- * @see https://ngwr.dev/components/stepper
17
+ * @see https://ngwr.dev/reference/components/stepper
18
18
  */
19
19
  declare class WrStep {
20
20
  /** Header label. */
@@ -71,7 +71,7 @@ declare const WR_STEPPER: InjectionToken<WrStepperContext>;
71
71
  * </wr-stepper>
72
72
  * ```
73
73
  *
74
- * @see https://ngwr.dev/components/stepper
74
+ * @see https://ngwr.dev/reference/components/stepper
75
75
  */
76
76
  declare class WrStepper implements WrStepperContext {
77
77
  /** Index of the currently visible step. */
@@ -31,7 +31,7 @@ import * as ngwr_storage from 'ngwr/storage';
31
31
  * effect(() => console.log('theme is', theme()));
32
32
  * ```
33
33
  *
34
- * @see https://ngwr.dev/services/storage
34
+ * @see https://ngwr.dev/reference/services/storage
35
35
  */
36
36
  declare class WrStorage {
37
37
  private readonly engine;