ngwr 8.0.0 → 9.0.1

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 (431) hide show
  1. package/README.md +76 -29
  2. package/action-sheet/styles/_index.scss +93 -0
  3. package/alert/styles/_index.scss +10 -10
  4. package/anchor/styles/_index.scss +3 -3
  5. package/back-top/styles/_index.scss +1 -1
  6. package/badge/styles/_tag.scss +3 -3
  7. package/bar-chart/styles/_index.scss +4 -4
  8. package/border-glow/styles/_index.scss +3 -3
  9. package/breadcrumbs/styles/_index.scss +3 -3
  10. package/burger/styles/_index.scss +1 -1
  11. package/button/styles/_index.scss +4 -4
  12. package/calendar/styles/_index.scss +4 -4
  13. package/calendar-heatmap/styles/_index.scss +3 -3
  14. package/card/styles/_index.scss +5 -5
  15. package/carousel/styles/_index.scss +5 -5
  16. package/cascader/styles/_index.scss +15 -15
  17. package/checkbox/styles/_index.scss +20 -5
  18. package/collapse/styles/_index.scss +6 -6
  19. package/color-picker/styles/_index.scss +15 -9
  20. package/command-palette/styles/_index.scss +19 -16
  21. package/compare/styles/_index.scss +3 -3
  22. package/context-menu/styles/_index.scss +16 -6
  23. package/counter/styles/_index.scss +12 -1
  24. package/date-picker/styles/_index.scss +8 -8
  25. package/descriptions/styles/_index.scss +9 -9
  26. package/dialog/styles/_index.scss +7 -6
  27. package/divider/styles/_index.scss +2 -2
  28. package/donut-chart/styles/_index.scss +3 -3
  29. package/drag-drop/styles/_index.scss +11 -6
  30. package/drawer/styles/_index.scss +15 -6
  31. package/dropdown/styles/_index.scss +5 -5
  32. package/empty/styles/_index.scss +4 -4
  33. package/fesm2022/ngwr-action-sheet.mjs +81 -0
  34. package/fesm2022/ngwr-action-sheet.mjs.map +1 -0
  35. package/fesm2022/ngwr-affix.mjs +3 -3
  36. package/fesm2022/ngwr-alert.mjs +4 -4
  37. package/fesm2022/ngwr-alert.mjs.map +1 -1
  38. package/fesm2022/ngwr-anchor.mjs +4 -4
  39. package/fesm2022/ngwr-anchor.mjs.map +1 -1
  40. package/fesm2022/ngwr-aurora.mjs +5 -4
  41. package/fesm2022/ngwr-aurora.mjs.map +1 -1
  42. package/fesm2022/ngwr-avatar.mjs +4 -4
  43. package/fesm2022/ngwr-avatar.mjs.map +1 -1
  44. package/fesm2022/ngwr-back-top.mjs +4 -4
  45. package/fesm2022/ngwr-back-top.mjs.map +1 -1
  46. package/fesm2022/ngwr-badge.mjs +8 -8
  47. package/fesm2022/ngwr-badge.mjs.map +1 -1
  48. package/fesm2022/ngwr-bar-chart.mjs +4 -4
  49. package/fesm2022/ngwr-bar-chart.mjs.map +1 -1
  50. package/fesm2022/ngwr-blur-text.mjs +3 -3
  51. package/fesm2022/ngwr-border-glow.mjs +4 -4
  52. package/fesm2022/ngwr-border-glow.mjs.map +1 -1
  53. package/fesm2022/ngwr-breadcrumbs.mjs +8 -8
  54. package/fesm2022/ngwr-breadcrumbs.mjs.map +1 -1
  55. package/fesm2022/ngwr-burger.mjs +4 -4
  56. package/fesm2022/ngwr-burger.mjs.map +1 -1
  57. package/fesm2022/ngwr-button.mjs +8 -8
  58. package/fesm2022/ngwr-button.mjs.map +1 -1
  59. package/fesm2022/ngwr-calendar-heatmap.mjs +4 -4
  60. package/fesm2022/ngwr-calendar-heatmap.mjs.map +1 -1
  61. package/fesm2022/ngwr-calendar.mjs +4 -4
  62. package/fesm2022/ngwr-calendar.mjs.map +1 -1
  63. package/fesm2022/ngwr-card.mjs +11 -11
  64. package/fesm2022/ngwr-card.mjs.map +1 -1
  65. package/fesm2022/ngwr-carousel.mjs +7 -7
  66. package/fesm2022/ngwr-carousel.mjs.map +1 -1
  67. package/fesm2022/ngwr-cascader.mjs +52 -60
  68. package/fesm2022/ngwr-cascader.mjs.map +1 -1
  69. package/fesm2022/ngwr-checkbox.mjs +74 -106
  70. package/fesm2022/ngwr-checkbox.mjs.map +1 -1
  71. package/fesm2022/ngwr-circular-text.mjs +5 -4
  72. package/fesm2022/ngwr-circular-text.mjs.map +1 -1
  73. package/fesm2022/ngwr-click-spark.mjs +5 -4
  74. package/fesm2022/ngwr-click-spark.mjs.map +1 -1
  75. package/fesm2022/ngwr-clipboard.mjs +4 -4
  76. package/fesm2022/ngwr-clipboard.mjs.map +1 -1
  77. package/fesm2022/ngwr-collapse.mjs +12 -12
  78. package/fesm2022/ngwr-collapse.mjs.map +1 -1
  79. package/fesm2022/ngwr-color-picker.mjs +58 -66
  80. package/fesm2022/ngwr-color-picker.mjs.map +1 -1
  81. package/fesm2022/ngwr-command-palette.mjs +4 -4
  82. package/fesm2022/ngwr-command-palette.mjs.map +1 -1
  83. package/fesm2022/ngwr-compare.mjs +4 -4
  84. package/fesm2022/ngwr-compare.mjs.map +1 -1
  85. package/fesm2022/ngwr-confetti.mjs +3 -3
  86. package/fesm2022/ngwr-context-menu.mjs +86 -15
  87. package/fesm2022/ngwr-context-menu.mjs.map +1 -1
  88. package/fesm2022/ngwr-cookie.mjs +19 -6
  89. package/fesm2022/ngwr-cookie.mjs.map +1 -1
  90. package/fesm2022/ngwr-counter.mjs +26 -12
  91. package/fesm2022/ngwr-counter.mjs.map +1 -1
  92. package/fesm2022/ngwr-date-adapter-fns.mjs +3 -3
  93. package/fesm2022/ngwr-date-adapter-luxon.mjs +3 -3
  94. package/fesm2022/ngwr-date-adapter.mjs +10 -5
  95. package/fesm2022/ngwr-date-adapter.mjs.map +1 -1
  96. package/fesm2022/ngwr-date-picker.mjs +128 -123
  97. package/fesm2022/ngwr-date-picker.mjs.map +1 -1
  98. package/fesm2022/ngwr-decrypt-text.mjs +3 -3
  99. package/fesm2022/ngwr-density.mjs +7 -7
  100. package/fesm2022/ngwr-density.mjs.map +1 -1
  101. package/fesm2022/ngwr-descriptions.mjs +7 -7
  102. package/fesm2022/ngwr-descriptions.mjs.map +1 -1
  103. package/fesm2022/ngwr-dialog.mjs +16 -16
  104. package/fesm2022/ngwr-dialog.mjs.map +1 -1
  105. package/fesm2022/ngwr-directives.mjs +21 -15
  106. package/fesm2022/ngwr-directives.mjs.map +1 -1
  107. package/fesm2022/ngwr-divider.mjs +4 -4
  108. package/fesm2022/ngwr-divider.mjs.map +1 -1
  109. package/fesm2022/ngwr-donut-chart.mjs +4 -4
  110. package/fesm2022/ngwr-donut-chart.mjs.map +1 -1
  111. package/fesm2022/ngwr-drag-drop.mjs +10 -9
  112. package/fesm2022/ngwr-drag-drop.mjs.map +1 -1
  113. package/fesm2022/ngwr-drawer.mjs +19 -18
  114. package/fesm2022/ngwr-drawer.mjs.map +1 -1
  115. package/fesm2022/ngwr-dropdown.mjs +13 -12
  116. package/fesm2022/ngwr-dropdown.mjs.map +1 -1
  117. package/fesm2022/ngwr-empty.mjs +4 -4
  118. package/fesm2022/ngwr-empty.mjs.map +1 -1
  119. package/fesm2022/ngwr-falling-text.mjs +5 -4
  120. package/fesm2022/ngwr-falling-text.mjs.map +1 -1
  121. package/fesm2022/ngwr-file-upload.mjs +58 -60
  122. package/fesm2022/ngwr-file-upload.mjs.map +1 -1
  123. package/fesm2022/ngwr-form.mjs +11 -11
  124. package/fesm2022/ngwr-form.mjs.map +1 -1
  125. package/fesm2022/ngwr-fuzzy-text.mjs +5 -4
  126. package/fesm2022/ngwr-fuzzy-text.mjs.map +1 -1
  127. package/fesm2022/ngwr-gauge.mjs +4 -4
  128. package/fesm2022/ngwr-gauge.mjs.map +1 -1
  129. package/fesm2022/ngwr-glitch-text.mjs +4 -4
  130. package/fesm2022/ngwr-glitch-text.mjs.map +1 -1
  131. package/fesm2022/ngwr-gradient-text.mjs +4 -4
  132. package/fesm2022/ngwr-gradient-text.mjs.map +1 -1
  133. package/fesm2022/ngwr-hotkey.mjs +7 -7
  134. package/fesm2022/ngwr-hotkey.mjs.map +1 -1
  135. package/fesm2022/ngwr-i18n.mjs +10 -10
  136. package/fesm2022/ngwr-i18n.mjs.map +1 -1
  137. package/fesm2022/ngwr-icon-adapters-lucide.mjs +6 -7
  138. package/fesm2022/ngwr-icon-adapters-lucide.mjs.map +1 -1
  139. package/fesm2022/ngwr-icon.mjs +4 -4
  140. package/fesm2022/ngwr-icon.mjs.map +1 -1
  141. package/fesm2022/ngwr-image-cropper.mjs +6 -5
  142. package/fesm2022/ngwr-image-cropper.mjs.map +1 -1
  143. package/fesm2022/ngwr-input-number.mjs +56 -73
  144. package/fesm2022/ngwr-input-number.mjs.map +1 -1
  145. package/fesm2022/ngwr-input-otp.mjs +46 -52
  146. package/fesm2022/ngwr-input-otp.mjs.map +1 -1
  147. package/fesm2022/ngwr-input.mjs +17 -17
  148. package/fesm2022/ngwr-input.mjs.map +1 -1
  149. package/fesm2022/ngwr-keyboard.mjs +4 -4
  150. package/fesm2022/ngwr-keyboard.mjs.map +1 -1
  151. package/fesm2022/ngwr-knob.mjs +47 -58
  152. package/fesm2022/ngwr-knob.mjs.map +1 -1
  153. package/fesm2022/ngwr-layout.mjs +16 -16
  154. package/fesm2022/ngwr-layout.mjs.map +1 -1
  155. package/fesm2022/ngwr-lightbox.mjs +7 -6
  156. package/fesm2022/ngwr-lightbox.mjs.map +1 -1
  157. package/fesm2022/ngwr-line-chart.mjs +4 -4
  158. package/fesm2022/ngwr-line-chart.mjs.map +1 -1
  159. package/fesm2022/ngwr-list.mjs +8 -8
  160. package/fesm2022/ngwr-list.mjs.map +1 -1
  161. package/fesm2022/ngwr-loading-bar.mjs +7 -7
  162. package/fesm2022/ngwr-loading-bar.mjs.map +1 -1
  163. package/fesm2022/ngwr-marquee.mjs +6 -5
  164. package/fesm2022/ngwr-marquee.mjs.map +1 -1
  165. package/fesm2022/ngwr-media.mjs +4 -4
  166. package/fesm2022/ngwr-media.mjs.map +1 -1
  167. package/fesm2022/ngwr-mention.mjs +15 -9
  168. package/fesm2022/ngwr-mention.mjs.map +1 -1
  169. package/fesm2022/ngwr-meta.mjs +7 -7
  170. package/fesm2022/ngwr-meta.mjs.map +1 -1
  171. package/fesm2022/ngwr-meter-group.mjs +4 -4
  172. package/fesm2022/ngwr-meter-group.mjs.map +1 -1
  173. package/fesm2022/ngwr-overlay.mjs +9 -4
  174. package/fesm2022/ngwr-overlay.mjs.map +1 -1
  175. package/fesm2022/ngwr-page-header.mjs +4 -4
  176. package/fesm2022/ngwr-page-header.mjs.map +1 -1
  177. package/fesm2022/ngwr-pagination.mjs +4 -4
  178. package/fesm2022/ngwr-pagination.mjs.map +1 -1
  179. package/fesm2022/ngwr-pipes.mjs +21 -21
  180. package/fesm2022/ngwr-platform.mjs +169 -5
  181. package/fesm2022/ngwr-platform.mjs.map +1 -1
  182. package/fesm2022/ngwr-popconfirm.mjs +7 -7
  183. package/fesm2022/ngwr-popconfirm.mjs.map +1 -1
  184. package/fesm2022/ngwr-popover.mjs +7 -7
  185. package/fesm2022/ngwr-popover.mjs.map +1 -1
  186. package/fesm2022/ngwr-progress.mjs +4 -4
  187. package/fesm2022/ngwr-progress.mjs.map +1 -1
  188. package/fesm2022/ngwr-pull-to-refresh.mjs +172 -0
  189. package/fesm2022/ngwr-pull-to-refresh.mjs.map +1 -0
  190. package/fesm2022/ngwr-qr.mjs +5 -5
  191. package/fesm2022/ngwr-qr.mjs.map +1 -1
  192. package/fesm2022/ngwr-radio.mjs +27 -52
  193. package/fesm2022/ngwr-radio.mjs.map +1 -1
  194. package/fesm2022/ngwr-rating.mjs +35 -48
  195. package/fesm2022/ngwr-rating.mjs.map +1 -1
  196. package/fesm2022/ngwr-result.mjs +13 -13
  197. package/fesm2022/ngwr-result.mjs.map +1 -1
  198. package/fesm2022/ngwr-rotating-text.mjs +15 -4
  199. package/fesm2022/ngwr-rotating-text.mjs.map +1 -1
  200. package/fesm2022/ngwr-scroll.mjs +4 -4
  201. package/fesm2022/ngwr-scroll.mjs.map +1 -1
  202. package/fesm2022/ngwr-segmented.mjs +3 -3
  203. package/fesm2022/ngwr-segmented.mjs.map +1 -1
  204. package/fesm2022/ngwr-select.mjs +289 -85
  205. package/fesm2022/ngwr-select.mjs.map +1 -1
  206. package/fesm2022/ngwr-shiny-text.mjs +7 -7
  207. package/fesm2022/ngwr-shiny-text.mjs.map +1 -1
  208. package/fesm2022/ngwr-sidebar.mjs +4 -4
  209. package/fesm2022/ngwr-sidebar.mjs.map +1 -1
  210. package/fesm2022/ngwr-skeleton.mjs +4 -4
  211. package/fesm2022/ngwr-skeleton.mjs.map +1 -1
  212. package/fesm2022/ngwr-slider.mjs +79 -73
  213. package/fesm2022/ngwr-slider.mjs.map +1 -1
  214. package/fesm2022/ngwr-sparkline.mjs +4 -4
  215. package/fesm2022/ngwr-sparkline.mjs.map +1 -1
  216. package/fesm2022/ngwr-speed-dial.mjs +13 -5
  217. package/fesm2022/ngwr-speed-dial.mjs.map +1 -1
  218. package/fesm2022/ngwr-spinner.mjs +4 -4
  219. package/fesm2022/ngwr-spinner.mjs.map +1 -1
  220. package/fesm2022/ngwr-splash-cursor.mjs +4 -4
  221. package/fesm2022/ngwr-splash-cursor.mjs.map +1 -1
  222. package/fesm2022/ngwr-split-text.mjs +3 -3
  223. package/fesm2022/ngwr-splitter.mjs +4 -4
  224. package/fesm2022/ngwr-splitter.mjs.map +1 -1
  225. package/fesm2022/ngwr-spotlight-card.mjs +7 -7
  226. package/fesm2022/ngwr-spotlight-card.mjs.map +1 -1
  227. package/fesm2022/ngwr-squircle.mjs +7 -7
  228. package/fesm2022/ngwr-squircle.mjs.map +1 -1
  229. package/fesm2022/ngwr-star-border.mjs +4 -4
  230. package/fesm2022/ngwr-star-border.mjs.map +1 -1
  231. package/fesm2022/ngwr-statistic.mjs +65 -10
  232. package/fesm2022/ngwr-statistic.mjs.map +1 -1
  233. package/fesm2022/ngwr-stepper.mjs +8 -8
  234. package/fesm2022/ngwr-stepper.mjs.map +1 -1
  235. package/fesm2022/ngwr-storage.mjs +4 -4
  236. package/fesm2022/ngwr-storage.mjs.map +1 -1
  237. package/fesm2022/ngwr-switch.mjs +16 -48
  238. package/fesm2022/ngwr-switch.mjs.map +1 -1
  239. package/fesm2022/ngwr-table.mjs +824 -20
  240. package/fesm2022/ngwr-table.mjs.map +1 -1
  241. package/fesm2022/ngwr-tabs.mjs +9 -8
  242. package/fesm2022/ngwr-tabs.mjs.map +1 -1
  243. package/fesm2022/ngwr-textarea.mjs +18 -50
  244. package/fesm2022/ngwr-textarea.mjs.map +1 -1
  245. package/fesm2022/ngwr-theme.mjs +20 -5
  246. package/fesm2022/ngwr-theme.mjs.map +1 -1
  247. package/fesm2022/ngwr-tilt-card.mjs +27 -11
  248. package/fesm2022/ngwr-tilt-card.mjs.map +1 -1
  249. package/fesm2022/ngwr-timeline.mjs +7 -7
  250. package/fesm2022/ngwr-timeline.mjs.map +1 -1
  251. package/fesm2022/ngwr-toast.mjs +10 -10
  252. package/fesm2022/ngwr-toast.mjs.map +1 -1
  253. package/fesm2022/ngwr-toolbar.mjs +4 -4
  254. package/fesm2022/ngwr-toolbar.mjs.map +1 -1
  255. package/fesm2022/ngwr-tree.mjs +280 -84
  256. package/fesm2022/ngwr-tree.mjs.map +1 -1
  257. package/fesm2022/ngwr-typewriter.mjs +10 -5
  258. package/fesm2022/ngwr-typewriter.mjs.map +1 -1
  259. package/fesm2022/ngwr-typography.mjs +4 -4
  260. package/fesm2022/ngwr-typography.mjs.map +1 -1
  261. package/fesm2022/ngwr-validators.mjs +1 -1
  262. package/fesm2022/ngwr-validators.mjs.map +1 -1
  263. package/fesm2022/ngwr-version.mjs +1 -1
  264. package/fesm2022/ngwr-version.mjs.map +1 -1
  265. package/fesm2022/ngwr-virtual-scroll.mjs +9 -7
  266. package/fesm2022/ngwr-virtual-scroll.mjs.map +1 -1
  267. package/fesm2022/ngwr-waves.mjs +6 -5
  268. package/fesm2022/ngwr-waves.mjs.map +1 -1
  269. package/fesm2022/ngwr-window.mjs +16 -15
  270. package/fesm2022/ngwr-window.mjs.map +1 -1
  271. package/file-upload/styles/_index.scss +11 -11
  272. package/form/styles/_index.scss +4 -4
  273. package/gauge/styles/_index.scss +2 -2
  274. package/glitch-text/styles/_index.scss +1 -1
  275. package/gradient-text/styles/_index.scss +1 -1
  276. package/image-cropper/styles/_index.scss +5 -4
  277. package/input/styles/_index.scss +9 -9
  278. package/input-number/styles/_index.scss +1 -1
  279. package/input-otp/styles/_index.scss +5 -5
  280. package/keyboard/styles/_index.scss +5 -5
  281. package/knob/styles/_index.scss +6 -2
  282. package/layout/styles/_index.scss +12 -12
  283. package/lightbox/styles/_index.scss +10 -8
  284. package/line-chart/styles/_index.scss +5 -5
  285. package/list/styles/_index.scss +3 -3
  286. package/llms-full.txt +31 -5
  287. package/llms.txt +48 -32
  288. package/marquee/styles/_index.scss +1 -1
  289. package/mention/styles/_index.scss +4 -4
  290. package/meter-group/styles/_index.scss +4 -4
  291. package/overlay/styles/_index.scss +8 -0
  292. package/package.json +21 -9
  293. package/page-header/styles/_index.scss +4 -4
  294. package/pagination/styles/_index.scss +3 -3
  295. package/popconfirm/styles/_index.scss +3 -3
  296. package/popover/styles/_index.scss +5 -5
  297. package/progress/styles/_index.scss +1 -1
  298. package/pull-to-refresh/styles/_index.scss +38 -0
  299. package/radio/styles/_index.scss +4 -4
  300. package/rating/styles/_index.scss +1 -1
  301. package/result/styles/_index.scss +3 -3
  302. package/schematics/migrations/v9/index.js +71 -0
  303. package/schematics/migrations.json +5 -0
  304. package/schematics/ng-add/schema.json +1 -1
  305. package/schematics/use/symbol-map.json +13 -0
  306. package/segmented/styles/_index.scss +4 -4
  307. package/select/styles/_index.scss +53 -18
  308. package/shiny-text/styles/_index.scss +4 -4
  309. package/sidebar/styles/_index.scss +12 -12
  310. package/slider/styles/_index.scss +5 -5
  311. package/speed-dial/styles/_index.scss +22 -6
  312. package/splash-cursor/styles/_index.scss +1 -0
  313. package/splitter/styles/_index.scss +7 -4
  314. package/spotlight-card/styles/_index.scss +7 -7
  315. package/star-border/styles/_index.scss +3 -3
  316. package/statistic/styles/_index.scss +51 -4
  317. package/stepper/styles/_index.scss +6 -6
  318. package/styles/_typography.scss +4 -1
  319. package/styles.scss +2 -0
  320. package/switch/styles/_index.scss +4 -4
  321. package/table/styles/_index.scss +447 -17
  322. package/tabs/styles/_index.scss +3 -3
  323. package/textarea/styles/_index.scss +7 -7
  324. package/theme/styles/_colors.scss +27 -3
  325. package/tilt-card/styles/_index.scss +4 -4
  326. package/timeline/styles/_index.scss +7 -6
  327. package/toast/styles/_index.scss +11 -11
  328. package/toolbar/styles/_index.scss +4 -4
  329. package/tree/styles/_index.scss +45 -15
  330. package/types/ngwr-action-sheet.d.ts +75 -0
  331. package/types/ngwr-alert.d.ts +1 -1
  332. package/types/ngwr-anchor.d.ts +1 -1
  333. package/types/ngwr-avatar.d.ts +1 -1
  334. package/types/ngwr-back-top.d.ts +1 -1
  335. package/types/ngwr-badge.d.ts +4 -4
  336. package/types/ngwr-bar-chart.d.ts +1 -1
  337. package/types/ngwr-breadcrumbs.d.ts +1 -1
  338. package/types/ngwr-burger.d.ts +1 -1
  339. package/types/ngwr-button.d.ts +3 -3
  340. package/types/ngwr-calendar-heatmap.d.ts +1 -1
  341. package/types/ngwr-calendar.d.ts +1 -1
  342. package/types/ngwr-card.d.ts +1 -1
  343. package/types/ngwr-carousel.d.ts +1 -1
  344. package/types/ngwr-cascader.d.ts +27 -16
  345. package/types/ngwr-checkbox.d.ts +63 -43
  346. package/types/ngwr-clipboard.d.ts +1 -1
  347. package/types/ngwr-collapse.d.ts +3 -3
  348. package/types/ngwr-color-picker.d.ts +24 -19
  349. package/types/ngwr-command-palette.d.ts +1 -1
  350. package/types/ngwr-compare.d.ts +1 -1
  351. package/types/ngwr-context-menu.d.ts +25 -1
  352. package/types/ngwr-cookie.d.ts +7 -1
  353. package/types/ngwr-counter.d.ts +9 -2
  354. package/types/ngwr-date-picker.d.ts +36 -23
  355. package/types/ngwr-density.d.ts +1 -1
  356. package/types/ngwr-descriptions.d.ts +1 -1
  357. package/types/ngwr-dialog.d.ts +1 -1
  358. package/types/ngwr-directives.d.ts +1 -0
  359. package/types/ngwr-divider.d.ts +2 -2
  360. package/types/ngwr-donut-chart.d.ts +1 -1
  361. package/types/ngwr-drag-drop.d.ts +1 -1
  362. package/types/ngwr-drawer.d.ts +1 -1
  363. package/types/ngwr-dropdown.d.ts +1 -1
  364. package/types/ngwr-empty.d.ts +1 -1
  365. package/types/ngwr-file-upload.d.ts +28 -17
  366. package/types/ngwr-form.d.ts +2 -2
  367. package/types/ngwr-gauge.d.ts +1 -1
  368. package/types/ngwr-hotkey.d.ts +1 -1
  369. package/types/ngwr-i18n.d.ts +1 -1
  370. package/types/ngwr-icon-adapters-lucide.d.ts +5 -3
  371. package/types/ngwr-icon.d.ts +1 -1
  372. package/types/ngwr-image-cropper.d.ts +1 -1
  373. package/types/ngwr-input-number.d.ts +25 -19
  374. package/types/ngwr-input-otp.d.ts +23 -17
  375. package/types/ngwr-input.d.ts +2 -2
  376. package/types/ngwr-keyboard.d.ts +1 -1
  377. package/types/ngwr-knob.d.ts +24 -19
  378. package/types/ngwr-layout.d.ts +1 -1
  379. package/types/ngwr-lightbox.d.ts +1 -1
  380. package/types/ngwr-line-chart.d.ts +1 -1
  381. package/types/ngwr-list.d.ts +1 -1
  382. package/types/ngwr-loading-bar.d.ts +1 -1
  383. package/types/ngwr-marquee.d.ts +1 -1
  384. package/types/ngwr-media.d.ts +1 -1
  385. package/types/ngwr-mention.d.ts +1 -1
  386. package/types/ngwr-meta.d.ts +1 -1
  387. package/types/ngwr-meter-group.d.ts +1 -1
  388. package/types/ngwr-page-header.d.ts +1 -1
  389. package/types/ngwr-pagination.d.ts +1 -1
  390. package/types/ngwr-platform.d.ts +93 -2
  391. package/types/ngwr-popconfirm.d.ts +3 -3
  392. package/types/ngwr-progress.d.ts +2 -2
  393. package/types/ngwr-pull-to-refresh.d.ts +69 -0
  394. package/types/ngwr-qr.d.ts +1 -1
  395. package/types/ngwr-radio.d.ts +25 -22
  396. package/types/ngwr-rating.d.ts +28 -20
  397. package/types/ngwr-result.d.ts +1 -1
  398. package/types/ngwr-rotating-text.d.ts +1 -0
  399. package/types/ngwr-scroll.d.ts +1 -1
  400. package/types/ngwr-segmented.d.ts +1 -1
  401. package/types/ngwr-select.d.ts +93 -26
  402. package/types/ngwr-sidebar.d.ts +1 -1
  403. package/types/ngwr-skeleton.d.ts +2 -2
  404. package/types/ngwr-slider.d.ts +35 -21
  405. package/types/ngwr-sparkline.d.ts +1 -1
  406. package/types/ngwr-speed-dial.d.ts +8 -2
  407. package/types/ngwr-spinner.d.ts +1 -1
  408. package/types/ngwr-splitter.d.ts +1 -1
  409. package/types/ngwr-squircle.d.ts +1 -1
  410. package/types/ngwr-statistic.d.ts +40 -5
  411. package/types/ngwr-stepper.d.ts +2 -2
  412. package/types/ngwr-storage.d.ts +1 -1
  413. package/types/ngwr-switch.d.ts +20 -16
  414. package/types/ngwr-table.d.ts +417 -6
  415. package/types/ngwr-tabs.d.ts +1 -1
  416. package/types/ngwr-textarea.d.ts +21 -18
  417. package/types/ngwr-theme.d.ts +7 -2
  418. package/types/ngwr-tilt-card.d.ts +3 -0
  419. package/types/ngwr-timeline.d.ts +1 -1
  420. package/types/ngwr-toast.d.ts +1 -1
  421. package/types/ngwr-toolbar.d.ts +1 -1
  422. package/types/ngwr-tree.d.ts +100 -19
  423. package/types/ngwr-typography.d.ts +1 -1
  424. package/types/ngwr-validators.d.ts +1 -1
  425. package/types/ngwr-version.d.ts +1 -1
  426. package/types/ngwr-virtual-scroll.d.ts +1 -1
  427. package/types/ngwr-window.d.ts +1 -1
  428. package/typography/styles/_index.scss +11 -11
  429. package/virtual-scroll/styles/_index.scss +1 -1
  430. package/waves/styles/_index.scss +1 -1
  431. package/window/styles/_index.scss +18 -18
@@ -28,7 +28,7 @@ type WrDrawerPosition = 'left' | 'right' | 'top' | 'bottom';
28
28
  * </wr-drawer>
29
29
  * ```
30
30
  *
31
- * @see https://ngwr.dev/components/drawer
31
+ * @see https://ngwr.dev/reference/components/drawer
32
32
  */
33
33
  declare class WrDrawer {
34
34
  /** Two-way bindable open state. */
@@ -17,7 +17,7 @@ import { BooleanInput } from '@angular/cdk/coercion';
17
17
  * </wr-dropdown-menu>
18
18
  * ```
19
19
  *
20
- * @see https://ngwr.dev/components/dropdown
20
+ * @see https://ngwr.dev/reference/components/dropdown
21
21
  */
22
22
  declare class WrDropdownMenu {
23
23
  /** The internal template the directive portals into the overlay. @internal */
@@ -23,7 +23,7 @@ import * as _angular_core from '@angular/core';
23
23
  * </wr-empty>
24
24
  * ```
25
25
  *
26
- * @see https://ngwr.dev/components/empty
26
+ * @see https://ngwr.dev/reference/components/empty
27
27
  */
28
28
  declare class WrEmpty {
29
29
  /** Icon name shown above the title. @default 'folder' */
@@ -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
@@ -22,18 +22,24 @@ declare function formatBytes(bytes: number): string;
22
22
  * Drag-and-drop file upload zone. Click to browse, drag-and-drop to add,
23
23
  * with an optional file list + remove buttons.
24
24
  *
25
- * Implements `ControlValueAccessor` — value is `File | File[] | null`
26
- * (single or array, governed by `multiple`).
25
+ * A signal-forms native control: it implements
26
+ * `FormValueControl<File | readonly File[] | null>`, so `[formField]` binds
27
+ * straight to its `value` model — no `ControlValueAccessor` in between.
28
+ * `[(value)]` works standalone. The value shape follows `multiple`: a single
29
+ * `File` (or `null`), or a `File[]` array.
27
30
  *
28
31
  * @example
29
32
  * ```html
30
- * <wr-file-upload [(ngModel)]="files" [multiple]="true" accept="image/*" />
31
- * <wr-file-upload [(ngModel)]="avatar" accept=".png,.jpg" [maxSize]="2 * 1024 * 1024" />
33
+ * <!-- signal forms -->
34
+ * <wr-file-upload [formField]="form.files" [multiple]="true" accept="image/*" />
35
+ *
36
+ * <!-- standalone two-way binding -->
37
+ * <wr-file-upload [(value)]="avatar" accept=".png,.jpg" [maxSize]="2 * 1024 * 1024" />
32
38
  * ```
33
39
  *
34
- * @see https://ngwr.dev/components/file-upload
40
+ * @see https://ngwr.dev/reference/components/file-upload
35
41
  */
36
- declare class WrFileUpload implements ControlValueAccessor {
42
+ declare class WrFileUpload implements FormValueControl<File | readonly File[] | null> {
37
43
  /** Allow multiple files. Single mode replaces on each add. @default false */
38
44
  readonly multiple: _angular_core.InputSignalWithTransform<boolean, any>;
39
45
  /** `accept` attribute — comma-separated MIME types or extensions. @default '' */
@@ -44,7 +50,12 @@ declare class WrFileUpload implements ControlValueAccessor {
44
50
  readonly maxFiles: _angular_core.InputSignalWithTransform<number, unknown>;
45
51
  /** Render the picked-files list below the zone. @default true */
46
52
  readonly showList: _angular_core.InputSignalWithTransform<boolean, any>;
47
- /** Disable interaction. @default false */
53
+ /**
54
+ * Disable interaction. Bound automatically from the field's disabled state
55
+ * when used with `[formField]`.
56
+ *
57
+ * @default false
58
+ */
48
59
  readonly disabled: _angular_core.InputSignalWithTransform<boolean, any>;
49
60
  /** Primary call-to-action label. Falls back to `fileUpload.browse`. */
50
61
  readonly pickLabel: _angular_core.InputSignal<string | null>;
@@ -60,21 +71,21 @@ declare class WrFileUpload implements ControlValueAccessor {
60
71
  protected readonly resolvedRemove: _angular_core.Signal<string>;
61
72
  /** Optional helper text shown below the labels (e.g. accepted formats). */
62
73
  readonly helperText: _angular_core.InputSignal<string>;
74
+ /**
75
+ * Selected file(s). Bound by `[formField]`, or two-way via `[(value)]`. Shape
76
+ * follows `multiple`: a single `File` (or `null`), or a `File[]` array.
77
+ */
78
+ readonly value: _angular_core.ModelSignal<File | readonly File[] | null>;
63
79
  /** Emitted when files are rejected for type / size / count reasons. */
64
80
  readonly rejected: _angular_core.OutputEmitterRef<readonly WrFileUploadRejection[]>;
81
+ /** Emitted on commit so a bound field can mark itself touched. */
82
+ readonly touch: _angular_core.OutputEmitterRef<void>;
65
83
  protected readonly picker: _angular_core.Signal<ElementRef<HTMLInputElement>>;
66
84
  protected readonly files: _angular_core.WritableSignal<readonly File[]>;
67
85
  protected readonly dragging: _angular_core.WritableSignal<boolean>;
68
- private readonly disabledFromCva;
69
- protected readonly effectiveDisabled: _angular_core.Signal<boolean>;
70
86
  protected readonly classes: _angular_core.Signal<string>;
71
87
  protected readonly formatBytes: typeof formatBytes;
72
- private onChange;
73
- private onTouched;
74
- writeValue(value: File | readonly File[] | null): void;
75
- registerOnChange(fn: (value: File | readonly File[] | null) => void): void;
76
- registerOnTouched(fn: () => void): void;
77
- setDisabledState(isDisabled: boolean): void;
88
+ constructor();
78
89
  protected openPicker(): void;
79
90
  protected onZoneKey(event: KeyboardEvent): void;
80
91
  protected onPickerChange(event: Event): void;
@@ -87,7 +98,7 @@ declare class WrFileUpload implements ControlValueAccessor {
87
98
  private reject;
88
99
  private emit;
89
100
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<WrFileUpload, never>;
90
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrFileUpload, "wr-file-upload", never, { "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "accept": { "alias": "accept"; "required": false; "isSignal": true; }; "maxSize": { "alias": "maxSize"; "required": false; "isSignal": true; }; "maxFiles": { "alias": "maxFiles"; "required": false; "isSignal": true; }; "showList": { "alias": "showList"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "pickLabel": { "alias": "pickLabel"; "required": false; "isSignal": true; }; "dropLabel": { "alias": "dropLabel"; "required": false; "isSignal": true; }; "dropZoneLabel": { "alias": "dropZoneLabel"; "required": false; "isSignal": true; }; "removeFileLabel": { "alias": "removeFileLabel"; "required": false; "isSignal": true; }; "helperText": { "alias": "helperText"; "required": false; "isSignal": true; }; }, { "rejected": "rejected"; }, never, never, true, never>;
101
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrFileUpload, "wr-file-upload", never, { "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "accept": { "alias": "accept"; "required": false; "isSignal": true; }; "maxSize": { "alias": "maxSize"; "required": false; "isSignal": true; }; "maxFiles": { "alias": "maxFiles"; "required": false; "isSignal": true; }; "showList": { "alias": "showList"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "pickLabel": { "alias": "pickLabel"; "required": false; "isSignal": true; }; "dropLabel": { "alias": "dropLabel"; "required": false; "isSignal": true; }; "dropZoneLabel": { "alias": "dropZoneLabel"; "required": false; "isSignal": true; }; "removeFileLabel": { "alias": "removeFileLabel"; "required": false; "isSignal": true; }; "helperText": { "alias": "helperText"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "rejected": "rejected"; "touch": "touch"; }, never, never, true, never>;
91
102
  }
92
103
 
93
104
  export { WrFileUpload };
@@ -17,7 +17,7 @@ import { NgControl } from '@angular/forms';
17
17
  * </wr-form-item>
18
18
  * ```
19
19
  *
20
- * @see https://ngwr.dev/components/form
20
+ * @see https://ngwr.dev/reference/components/form
21
21
  */
22
22
  declare class WrFormItem {
23
23
  /**
@@ -50,7 +50,7 @@ declare class WrFormItem {
50
50
  * </wr-form-field>
51
51
  * ```
52
52
  *
53
- * @see https://ngwr.dev/components/form-field
53
+ * @see https://ngwr.dev/reference/components/form-field
54
54
  */
55
55
  declare class WrFormField {
56
56
  /** Label text shown above the control. */
@@ -10,7 +10,7 @@ import * as _angular_core from '@angular/core';
10
10
  * <wr-gauge [value]="9.5" [min]="0" [max]="10" suffix="/10" valueColor="var(--wr-color-warning)" />
11
11
  * ```
12
12
  *
13
- * @see https://ngwr.dev/components/gauge
13
+ * @see https://ngwr.dev/reference/components/gauge
14
14
  */
15
15
  declare class WrGauge {
16
16
  readonly value: _angular_core.InputSignal<number>;
@@ -62,7 +62,7 @@ interface WrHotkeyOptions {
62
62
  * handle.unbind();
63
63
  * ```
64
64
  *
65
- * @see https://ngwr.dev/services/hotkey
65
+ * @see https://ngwr.dev/reference/services/hotkey
66
66
  */
67
67
  declare class WrHotkey {
68
68
  private readonly doc;
@@ -70,7 +70,7 @@ declare const WR_I18N_CONFIG: InjectionToken<WrI18nConfigResolved>;
70
70
  * effect(() => console.log(i18n.translate('hi')())); // re-runs on locale change
71
71
  * ```
72
72
  *
73
- * @see https://ngwr.dev/services/i18n
73
+ * @see https://ngwr.dev/reference/services/i18n
74
74
  */
75
75
  declare class WrI18n {
76
76
  private readonly config;
@@ -29,8 +29,10 @@ type LucideIconNode = readonly (readonly [string, Record<string, string | number
29
29
  declare function lucide(name: string, children: LucideIconNode): WrIconDef;
30
30
  /**
31
31
  * Wrap a bag of Lucide icons in one shot. Keys become the registered
32
- * names (camelCase → kebab-case), values are the upstream IconNode
33
- * tuples. The shape mirrors how you'd write `provideWrIcons` anyway.
32
+ * names **verbatim** — exactly what you pass to `<wr-icon name>` — matching
33
+ * the singular `lucide()` helper and the other adapters. Kebab-case by
34
+ * convention, so quote multi-word keys (`'chevron-down'`). Values are the
35
+ * upstream IconNode tuples.
34
36
  *
35
37
  * Tree-shaking: every `Plus`, `Trash`, … import lives in *your* file
36
38
  * — ngwr ships only this wrapper, not the icon data. Unused icons in
@@ -43,7 +45,7 @@ declare function lucide(name: string, children: LucideIconNode): WrIconDef;
43
45
  *
44
46
  * bootstrapApplication(AppComponent, {
45
47
  * providers: [
46
- * provideWrIcons(lucideIcons({ plus: Plus, trash: Trash, chevronDown: ChevronDown })),
48
+ * provideWrIcons(lucideIcons({ plus: Plus, trash: Trash, 'chevron-down': ChevronDown })),
47
49
  * ],
48
50
  * });
49
51
  * ```
@@ -12,7 +12,7 @@ import { Provider } from '@angular/core';
12
12
  * <wr-icon name="home" />
13
13
  * ```
14
14
  *
15
- * @see https://ngwr.dev/components/icon
15
+ * @see https://ngwr.dev/reference/components/icon
16
16
  */
17
17
  declare class WrIcon {
18
18
  readonly name: i0.InputSignal<string>;
@@ -42,7 +42,7 @@ interface RectPx {
42
42
  * />
43
43
  * ```
44
44
  *
45
- * @see https://ngwr.dev/components/image-cropper
45
+ * @see https://ngwr.dev/reference/components/image-cropper
46
46
  */
47
47
  declare class WrImageCropper {
48
48
  /** Image source — URL string, `File`, or `Blob`. */
@@ -1,10 +1,13 @@
1
1
  import * as _angular_core from '@angular/core';
2
- import { ControlValueAccessor } from '@angular/forms';
2
+ import { FormValueControl } from '@angular/forms/signals';
3
3
 
4
4
  /**
5
5
  * Numeric input with locale-aware formatting + ▲▼ stepper buttons.
6
6
  *
7
- * Implements `ControlValueAccessor` — value type is `number | null`.
7
+ * A signal-forms native control: it implements `FormValueControl<number | null>`,
8
+ * so `[formField]` binds straight to its `value` model — no
9
+ * `ControlValueAccessor` in between. `[(value)]` works standalone.
10
+ *
8
11
  * Parses leniently while typing (allows partial input like `"1."` or `"-"`),
9
12
  * re-formats with grouping + fixed decimals on blur.
10
13
  *
@@ -13,17 +16,22 @@ import { ControlValueAccessor } from '@angular/forms';
13
16
  *
14
17
  * @example
15
18
  * ```html
16
- * <wr-input-number [(ngModel)]="qty" [min]="0" [max]="100" />
17
- * <wr-input-number [(ngModel)]="price" [decimals]="2" suffix="USD" />
19
+ * <!-- signal forms -->
20
+ * <wr-input-number [formField]="form.qty" [min]="0" [max]="100" />
21
+ *
22
+ * <!-- standalone two-way binding -->
23
+ * <wr-input-number [(value)]="price" [decimals]="2" suffix="USD" />
18
24
  * ```
19
25
  *
20
- * @see https://ngwr.dev/components/input-number
26
+ * @see https://ngwr.dev/reference/components/input-number
21
27
  */
22
- declare class WrInputNumber implements ControlValueAccessor {
28
+ declare class WrInputNumber implements FormValueControl<number | null> {
23
29
  /** Minimum allowed value. @default -Infinity */
24
- readonly min: _angular_core.InputSignalWithTransform<number, unknown>;
30
+ readonly min: _angular_core.InputSignalWithTransform<number | undefined, unknown>;
25
31
  /** Maximum allowed value. @default Infinity */
26
- readonly max: _angular_core.InputSignalWithTransform<number, unknown>;
32
+ readonly max: _angular_core.InputSignalWithTransform<number | undefined, unknown>;
33
+ private readonly minValue;
34
+ private readonly maxValue;
27
35
  /** Step used by stepper buttons + arrow keys. @default 1 */
28
36
  readonly step: _angular_core.InputSignalWithTransform<number, unknown>;
29
37
  /** Fixed number of decimals shown on blur. `null` keeps the entered precision. @default null */
@@ -40,25 +48,23 @@ declare class WrInputNumber implements ControlValueAccessor {
40
48
  readonly disabled: _angular_core.InputSignalWithTransform<boolean, any>;
41
49
  /** Read-only — values cannot be changed (steppers + typing disabled). @default false */
42
50
  readonly readonly: _angular_core.InputSignalWithTransform<boolean, any>;
51
+ /** Numeric value (`null` when empty). Bound by `[formField]`, or two-way via `[(value)]`. */
52
+ readonly value: _angular_core.ModelSignal<number | null>;
53
+ /** Emitted on blur so a bound field can mark itself touched. */
54
+ readonly touch: _angular_core.OutputEmitterRef<void>;
43
55
  private readonly locale;
44
56
  private readonly separators;
45
- /** Current numeric value mirrored from the CVA. */
46
- protected readonly value: _angular_core.WritableSignal<number | null>;
47
57
  /** Text currently in the input (may be partial / invalid mid-type). */
48
58
  protected readonly text: _angular_core.WritableSignal<string>;
49
- private readonly disabledFromCva;
50
- protected readonly effectiveDisabled: _angular_core.Signal<boolean>;
59
+ /** Whether the input is focused. While true, the input handlers own `text`. */
60
+ protected readonly focused: _angular_core.WritableSignal<boolean>;
51
61
  protected readonly interactive: _angular_core.Signal<boolean>;
52
62
  protected readonly atMin: _angular_core.Signal<boolean>;
53
63
  protected readonly atMax: _angular_core.Signal<boolean>;
54
64
  protected readonly classes: _angular_core.Signal<string>;
55
- private onChange;
56
- private onTouched;
57
- writeValue(value: number | null): void;
58
- registerOnChange(fn: (value: number | null) => void): void;
59
- registerOnTouched(fn: () => void): void;
60
- setDisabledState(isDisabled: boolean): void;
65
+ constructor();
61
66
  protected onInput(event: Event): void;
67
+ protected onFocus(): void;
62
68
  protected onBlur(): void;
63
69
  protected onKeydown(event: KeyboardEvent): void;
64
70
  protected stepBy(direction: 1 | -1): void;
@@ -71,7 +77,7 @@ declare class WrInputNumber implements ControlValueAccessor {
71
77
  /** Format a value using `Intl.NumberFormat` for the active locale. */
72
78
  private format;
73
79
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<WrInputNumber, never>;
74
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrInputNumber, "wr-input-number", never, { "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; "decimals": { "alias": "decimals"; "required": false; "isSignal": true; }; "showSteppers": { "alias": "showSteppers"; "required": false; "isSignal": true; }; "prefix": { "alias": "prefix"; "required": false; "isSignal": true; }; "suffix": { "alias": "suffix"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
80
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrInputNumber, "wr-input-number", never, { "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; "decimals": { "alias": "decimals"; "required": false; "isSignal": true; }; "showSteppers": { "alias": "showSteppers"; "required": false; "isSignal": true; }; "prefix": { "alias": "prefix"; "required": false; "isSignal": true; }; "suffix": { "alias": "suffix"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touch": "touch"; }, never, never, true, never>;
75
81
  }
76
82
 
77
83
  export { WrInputNumber };
@@ -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
@@ -24,18 +24,23 @@ type WrInputOtpSize = 'sm' | 'md' | 'lg';
24
24
  * auto-advances focus on typing, handles paste of a full code, and supports
25
25
  * masking like a password field.
26
26
  *
27
- * Implements `ControlValueAccessor` — emits the joined string through
28
- * `[(ngModel)]` / `formControl`. Emits `completed` once all cells are
29
- * filled (useful for auto-submission).
27
+ * A signal-forms native control: it implements `FormValueControl<string>`, so
28
+ * `[formField]` binds straight to its `value` model — no
29
+ * `ControlValueAccessor` in between. `[(value)]` works standalone. Emits
30
+ * `completed` once all cells are filled (useful for auto-submission).
30
31
  *
31
32
  * @example
32
33
  * ```html
33
- * <wr-input-otp [(ngModel)]="code" length="6" (completed)="verify($event)" />
34
+ * <!-- signal forms -->
35
+ * <wr-input-otp [formField]="form.code" length="6" (completed)="verify($event)" />
36
+ *
37
+ * <!-- standalone two-way binding -->
38
+ * <wr-input-otp [(value)]="code" length="6" (completed)="verify($event)" />
34
39
  * ```
35
40
  *
36
- * @see https://ngwr.dev/components/input-otp
41
+ * @see https://ngwr.dev/reference/components/input-otp
37
42
  */
38
- declare class WrInputOtp implements ControlValueAccessor {
43
+ declare class WrInputOtp implements FormValueControl<string> {
39
44
  /** Number of cells to render. Clamped to `[1, 20]`. @default 6 */
40
45
  readonly length: _angular_core.InputSignalWithTransform<number, unknown>;
41
46
  /** Character set per cell. @default 'numeric' */
@@ -44,26 +49,27 @@ declare class WrInputOtp implements ControlValueAccessor {
44
49
  readonly size: _angular_core.InputSignal<WrInputOtpSize>;
45
50
  /** Mask the typed characters like a password. @default false */
46
51
  readonly mask: _angular_core.InputSignalWithTransform<boolean, any>;
47
- /** Disable interaction. @default false */
52
+ /**
53
+ * Disable interaction. Bound automatically from the field's disabled state
54
+ * when used with `[formField]`.
55
+ *
56
+ * @default false
57
+ */
48
58
  readonly disabled: _angular_core.InputSignalWithTransform<boolean, any>;
49
59
  /** Character shown in empty cells. @default '•' */
50
60
  readonly placeholder: _angular_core.InputSignal<string>;
61
+ /** The entered code. Bound by `[formField]`, or two-way via `[(value)]`. */
62
+ readonly value: _angular_core.ModelSignal<string>;
51
63
  /** Fires once when every cell holds a character. */
52
64
  readonly completed: _angular_core.OutputEmitterRef<string>;
65
+ /** Emitted on blur so a bound field can mark itself touched. */
66
+ readonly touch: _angular_core.OutputEmitterRef<void>;
53
67
  protected readonly cells: _angular_core.WritableSignal<readonly string[]>;
54
- private readonly disabledFromCva;
55
- protected readonly effectiveDisabled: _angular_core.Signal<boolean>;
56
68
  protected readonly classes: _angular_core.Signal<string>;
57
69
  protected readonly cellType: _angular_core.Signal<"text" | "password">;
58
70
  protected readonly cellInputMode: _angular_core.Signal<"numeric" | "text">;
59
71
  protected readonly cellRefs: _angular_core.Signal<readonly ElementRef<HTMLInputElement>[]>;
60
72
  constructor();
61
- private onChange;
62
- private onTouched;
63
- writeValue(v: string | null): void;
64
- registerOnChange(fn: (value: string) => void): void;
65
- registerOnTouched(fn: () => void): void;
66
- setDisabledState(isDisabled: boolean): void;
67
73
  protected onInput(event: Event, index: number): void;
68
74
  protected onKeyDown(event: KeyboardEvent, index: number): void;
69
75
  protected onPaste(event: ClipboardEvent): void;
@@ -75,7 +81,7 @@ declare class WrInputOtp implements ControlValueAccessor {
75
81
  /** Drop a character that doesn't match the configured mode. */
76
82
  private sanitiseChar;
77
83
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<WrInputOtp, never>;
78
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrInputOtp, "wr-input-otp", never, { "length": { "alias": "length"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "mask": { "alias": "mask"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; }, { "completed": "completed"; }, never, never, true, never>;
84
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrInputOtp, "wr-input-otp", never, { "length": { "alias": "length"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "mask": { "alias": "mask"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "completed": "completed"; "touch": "touch"; }, never, never, true, never>;
79
85
  }
80
86
 
81
87
  export { WrInputOtp };
@@ -39,7 +39,7 @@ type WrInputSize = 'sm' | 'md' | 'lg';
39
39
  * For prefix / suffix / password-toggle layouts, wrap the input in
40
40
  * `<wr-input-group>`.
41
41
  *
42
- * @see https://ngwr.dev/components/input
42
+ * @see https://ngwr.dev/reference/components/input
43
43
  */
44
44
  declare class WrInput {
45
45
  /**
@@ -108,7 +108,7 @@ declare class WrInputSuffix {
108
108
  * </wr-input-group>
109
109
  * ```
110
110
  *
111
- * @see https://ngwr.dev/components/input
111
+ * @see https://ngwr.dev/reference/components/input
112
112
  */
113
113
  declare class WrInputGroup {
114
114
  /** Pill-shaped corners. @default false */
@@ -20,7 +20,7 @@ type WrKbdSize = 'sm' | 'md' | 'lg';
20
20
  * <wr-kbd size="lg">Esc</wr-kbd>
21
21
  * ```
22
22
  *
23
- * @see https://ngwr.dev/components/keyboard
23
+ * @see https://ngwr.dev/reference/components/keyboard
24
24
  */
25
25
  declare class WrKbd {
26
26
  /** Visual size variant. @default 'md' */
@@ -1,23 +1,32 @@
1
1
  import * as _angular_core from '@angular/core';
2
- import { ControlValueAccessor } from '@angular/forms';
2
+ import { FormValueControl } from '@angular/forms/signals';
3
3
 
4
4
  /**
5
- * Radial dial input. CVA-backed `number | null` value clamped to
6
- * `[min, max]`. Drag the indicator around the dial or use ←→ / ↑↓ to step.
5
+ * Radial dial input. A signal-forms native control: it implements
6
+ * `FormValueControl<number>`, so `[formField]` binds straight to its `value`
7
+ * model — no `ControlValueAccessor` in between. `[(value)]` works standalone.
8
+ *
9
+ * The value is clamped to `[min, max]`. Drag the indicator around the dial or
10
+ * use ←→ / ↑↓ to step.
7
11
  *
8
12
  * @example
9
13
  * ```html
10
- * <wr-knob [(ngModel)]="value" [min]="0" [max]="100" />
11
- * <wr-knob [(ngModel)]="vol" suffix="%" valueColor="var(--wr-color-success)" />
14
+ * <!-- signal forms -->
15
+ * <wr-knob [formField]="form.volume" [min]="0" [max]="100" />
16
+ *
17
+ * <!-- standalone two-way binding -->
18
+ * <wr-knob [(value)]="vol" suffix="%" valueColor="var(--wr-color-success)" />
12
19
  * ```
13
20
  *
14
- * @see https://ngwr.dev/components/knob
21
+ * @see https://ngwr.dev/reference/components/knob
15
22
  */
16
- declare class WrKnob implements ControlValueAccessor {
23
+ declare class WrKnob implements FormValueControl<number> {
17
24
  /** Minimum allowed value. @default 0 */
18
- readonly min: _angular_core.InputSignalWithTransform<number, unknown>;
25
+ readonly min: _angular_core.InputSignalWithTransform<number | undefined, unknown>;
19
26
  /** Maximum allowed value. @default 100 */
20
- readonly max: _angular_core.InputSignalWithTransform<number, unknown>;
27
+ readonly max: _angular_core.InputSignalWithTransform<number | undefined, unknown>;
28
+ private readonly minValue;
29
+ private readonly maxValue;
21
30
  /** Step granularity. @default 1 */
22
31
  readonly step: _angular_core.InputSignalWithTransform<number, unknown>;
23
32
  /** Dial diameter in CSS pixels. @default 120 */
@@ -36,10 +45,11 @@ declare class WrKnob implements ControlValueAccessor {
36
45
  readonly readonly: _angular_core.InputSignalWithTransform<boolean, any>;
37
46
  /** Disable interaction. @default false */
38
47
  readonly disabled: _angular_core.InputSignalWithTransform<boolean, any>;
39
- protected readonly value: _angular_core.WritableSignal<number>;
40
- private readonly disabledFromCva;
48
+ /** Bound by `[formField]`, or two-way via `[(value)]`. */
49
+ readonly value: _angular_core.ModelSignal<number>;
50
+ /** Emitted on blur so a bound field can mark itself touched. */
51
+ readonly touch: _angular_core.OutputEmitterRef<void>;
41
52
  private dragging;
42
- protected readonly effectiveDisabled: _angular_core.Signal<boolean>;
43
53
  protected readonly interactive: _angular_core.Signal<boolean>;
44
54
  protected readonly classes: _angular_core.Signal<string>;
45
55
  protected readonly cx = 50;
@@ -57,12 +67,7 @@ declare class WrKnob implements ControlValueAccessor {
57
67
  y: number;
58
68
  }>;
59
69
  private readonly host;
60
- private onChange;
61
- private onTouched;
62
- writeValue(value: number | null): void;
63
- registerOnChange(fn: (value: number | null) => void): void;
64
- registerOnTouched(fn: () => void): void;
65
- setDisabledState(isDisabled: boolean): void;
70
+ constructor();
66
71
  protected onPointerDown(event: PointerEvent): void;
67
72
  protected onPointerMove(event: PointerEvent): void;
68
73
  protected onPointerUp(event: PointerEvent): void;
@@ -71,7 +76,7 @@ declare class WrKnob implements ControlValueAccessor {
71
76
  private commit;
72
77
  private arcPath;
73
78
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<WrKnob, never>;
74
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrKnob, "wr-knob", never, { "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "strokeWidth": { "alias": "strokeWidth"; "required": false; "isSignal": true; }; "trackColor": { "alias": "trackColor"; "required": false; "isSignal": true; }; "valueColor": { "alias": "valueColor"; "required": false; "isSignal": true; }; "showValue": { "alias": "showValue"; "required": false; "isSignal": true; }; "suffix": { "alias": "suffix"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
79
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrKnob, "wr-knob", never, { "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "strokeWidth": { "alias": "strokeWidth"; "required": false; "isSignal": true; }; "trackColor": { "alias": "trackColor"; "required": false; "isSignal": true; }; "valueColor": { "alias": "valueColor"; "required": false; "isSignal": true; }; "showValue": { "alias": "showValue"; "required": false; "isSignal": true; }; "suffix": { "alias": "suffix"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touch": "touch"; }, never, never, true, never>;
75
80
  }
76
81
 
77
82
  export { WrKnob };
@@ -50,7 +50,7 @@ declare class WrLayoutSider {
50
50
  * </wr-layout>
51
51
  * ```
52
52
  *
53
- * @see https://ngwr.dev/components/layout
53
+ * @see https://ngwr.dev/reference/components/layout
54
54
  */
55
55
  declare class WrLayout {
56
56
  protected readonly siders: i0.Signal<readonly WrLayoutSider[]>;
@@ -16,7 +16,7 @@ import { TemplateRef } from '@angular/core';
16
16
  * />
17
17
  * ```
18
18
  *
19
- * @see https://ngwr.dev/components/lightbox
19
+ * @see https://ngwr.dev/reference/components/lightbox
20
20
  */
21
21
  declare class WrLightbox {
22
22
  /** Image source. */
@@ -21,7 +21,7 @@ interface WrLineSeries {
21
21
  * />
22
22
  * ```
23
23
  *
24
- * @see https://ngwr.dev/components/line-chart
24
+ * @see https://ngwr.dev/reference/components/line-chart
25
25
  */
26
26
  declare class WrLineChart {
27
27
  readonly series: _angular_core.InputSignal<readonly WrLineSeries[]>;
@@ -20,7 +20,7 @@ import * as _angular_core from '@angular/core';
20
20
  * </wr-list>
21
21
  * ```
22
22
  *
23
- * @see https://ngwr.dev/components/list
23
+ * @see https://ngwr.dev/reference/components/list
24
24
  */
25
25
  declare class WrList {
26
26
  /** Wrap the list in a card-style border + radius. @default false */
@@ -26,7 +26,7 @@ type WrLoadingState = 'idle' | 'running' | 'completing';
26
26
  * return next(req).pipe(finalize(() => bar.complete()));
27
27
  * ```
28
28
  *
29
- * @see https://ngwr.dev/services/loading-bar
29
+ * @see https://ngwr.dev/reference/services/loading-bar
30
30
  */
31
31
  declare class WrLoadingBar {
32
32
  private readonly router;
@@ -57,7 +57,7 @@ declare class WrMarquee {
57
57
  /** Pause the loop on hover. @default false */
58
58
  readonly pauseOnHover: _angular_core.InputSignalWithTransform<boolean, any>;
59
59
  /** Custom speed (px/s) when hovered. Overrides `pauseOnHover`. */
60
- readonly hoverSpeed: _angular_core.InputSignalWithTransform<number | undefined, number | undefined>;
60
+ readonly hoverSpeed: _angular_core.InputSignalWithTransform<number | undefined, unknown>;
61
61
  /** Apply edge fade-out gradients. @default false */
62
62
  readonly fadeOut: _angular_core.InputSignalWithTransform<boolean, any>;
63
63
  /** CSS colour for the fade-out gradient. Defaults to the page background. */
@@ -26,7 +26,7 @@ declare const WR_BREAKPOINTS: InjectionToken<Readonly<Record<ngwr_media.WrBreakp
26
26
  * protected readonly isWide = this.media.matches('(min-width: 1200px)');
27
27
  * ```
28
28
  *
29
- * @see https://ngwr.dev/services/media
29
+ * @see https://ngwr.dev/reference/services/media
30
30
  */
31
31
  declare class WrMedia {
32
32
  private readonly breakpoints;
@@ -38,7 +38,7 @@ interface WrMentionCommit<T extends WrMentionItem = WrMentionItem> {
38
38
  * ></textarea>
39
39
  * ```
40
40
  *
41
- * @see https://ngwr.dev/components/mention
41
+ * @see https://ngwr.dev/reference/components/mention
42
42
  */
43
43
  declare class WrMention<T extends WrMentionItem = WrMentionItem> {
44
44
  /** Items to filter against the typed query. */
@@ -66,7 +66,7 @@ interface WrMetaHandle {
66
66
  * <div [wrMeta]="{ title: 'Pricing' }">
67
67
  * ```
68
68
  *
69
- * @see https://ngwr.dev/services/meta
69
+ * @see https://ngwr.dev/reference/services/meta
70
70
  */
71
71
  declare class WrMeta {
72
72
  private readonly title;
@@ -32,7 +32,7 @@ interface WrMeterSegment {
32
32
  * />
33
33
  * ```
34
34
  *
35
- * @see https://ngwr.dev/components/meter-group
35
+ * @see https://ngwr.dev/reference/components/meter-group
36
36
  */
37
37
  declare class WrMeterGroup {
38
38
  readonly segments: _angular_core.InputSignal<readonly WrMeterSegment[]>;
@@ -21,7 +21,7 @@ import * as _angular_core from '@angular/core';
21
21
  * </wr-page-header>
22
22
  * ```
23
23
  *
24
- * @see https://ngwr.dev/components/page-header
24
+ * @see https://ngwr.dev/reference/components/page-header
25
25
  */
26
26
  declare class WrPageHeader {
27
27
  /** Primary title shown as an h1. */