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
@@ -1,28 +1,41 @@
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
  * Multi-line text input.
7
7
  *
8
- * Implements `ControlValueAccessor`. Optional `autosize` grows the
9
- * textarea with its content, capped at `maxRows` if provided.
8
+ * A signal-forms native control: it implements `FormValueControl<string>`, so
9
+ * `[formField]` binds straight to its `value` model — no
10
+ * `ControlValueAccessor` in between. `[(value)]` works standalone.
11
+ *
12
+ * Optional `autosize` grows the textarea with its content, capped at
13
+ * `maxRows` if provided.
10
14
  *
11
15
  * @example
12
16
  * ```html
13
- * <wr-textarea placeholder="Notes" [(ngModel)]="text" />
14
- * <wr-textarea autosize [maxRows]="6" [(ngModel)]="text" />
17
+ * <!-- signal forms -->
18
+ * <wr-textarea placeholder="Notes" [formField]="form.notes" />
19
+ *
20
+ * <!-- standalone two-way binding -->
21
+ * <wr-textarea autosize [maxRows]="6" [(value)]="text" />
15
22
  * ```
16
23
  *
17
- * @see https://ngwr.dev/components/textarea
24
+ * @see https://ngwr.dev/reference/components/textarea
18
25
  */
19
- declare class WrTextarea implements ControlValueAccessor {
26
+ type WrTextareaSize = 'sm' | 'md' | 'lg';
27
+ type WrTextareaResize = 'none' | 'vertical' | 'horizontal' | 'both';
28
+ declare class WrTextarea implements FormValueControl<string> {
20
29
  /** Native placeholder text. @default '' */
21
30
  readonly placeholder: _angular_core.InputSignal<string>;
31
+ /** Control size — shares the `--wr-control-*` contract. @default 'md' */
32
+ readonly size: _angular_core.InputSignal<WrTextareaSize>;
22
33
  /** Visible row count. @default 3 */
23
34
  readonly rows: _angular_core.InputSignalWithTransform<number, unknown>;
24
- /** Allow user resize via the native handle. @default true */
35
+ /** Allow user resize via the corner grip. @default true */
25
36
  readonly resizable: _angular_core.InputSignalWithTransform<boolean, any>;
37
+ /** Resize direction of the corner grip (the grip icon adapts). @default 'vertical' */
38
+ readonly resize: _angular_core.InputSignal<WrTextareaResize>;
26
39
  /** Read-only state. @default false */
27
40
  readonly readonly: _angular_core.InputSignalWithTransform<boolean, any>;
28
41
  /** Grow the textarea to fit its content. @default false */
@@ -30,31 +43,43 @@ declare class WrTextarea implements ControlValueAccessor {
30
43
  /** Cap autosize at this many rows. Ignored when `autosize` is false. */
31
44
  readonly maxRows: _angular_core.InputSignal<number | null>;
32
45
  /**
33
- * Disable the textarea. Also set by Angular forms via `setDisabledState`.
46
+ * Disable the textarea. Bound automatically from the field's disabled state
47
+ * when used with `[formField]`.
34
48
  *
35
49
  * @default false
36
50
  */
37
51
  readonly disabled: _angular_core.InputSignalWithTransform<boolean, any>;
38
- protected readonly value: _angular_core.WritableSignal<string>;
39
- protected readonly disabledFromCva: _angular_core.WritableSignal<boolean>;
52
+ /** The edited text. Bound by `[formField]`, or two-way via `[(value)]`. */
53
+ readonly value: _angular_core.ModelSignal<string>;
54
+ /** Emitted on blur so a bound field can mark itself touched. */
55
+ readonly touch: _angular_core.OutputEmitterRef<void>;
40
56
  protected readonly focused: _angular_core.WritableSignal<boolean>;
41
- protected readonly effectiveDisabled: _angular_core.Signal<boolean>;
42
57
  protected readonly native: _angular_core.Signal<ElementRef<HTMLTextAreaElement>>;
58
+ /** Resize direction, gated by `resizable` (false → 'none'). */
59
+ protected readonly effectiveResize: _angular_core.Signal<WrTextareaResize>;
43
60
  protected readonly classes: _angular_core.Signal<string>;
61
+ /** Show the corner grip (hidden when direction is 'none' / autosize / disabled). */
62
+ protected readonly showHandle: _angular_core.Signal<boolean>;
44
63
  private readonly platformId;
45
64
  private readonly isBrowser;
46
- private onChange;
47
- private onTouched;
65
+ private readonly hostEl;
66
+ private resizing;
67
+ private resizeStartY;
68
+ private resizeStartX;
69
+ private resizeStartHeight;
70
+ private resizeStartWidth;
71
+ private resizeMinHeight;
72
+ private resizeMaxWidth;
48
73
  constructor();
49
- writeValue(value: string | null): void;
50
- registerOnChange(fn: (value: string) => void): void;
51
- registerOnTouched(fn: () => void): void;
52
- setDisabledState(isDisabled: boolean): void;
53
74
  protected onInput(event: Event): void;
54
75
  protected onBlur(): void;
55
- private resize;
76
+ protected startResize(event: PointerEvent): void;
77
+ protected onResize(event: PointerEvent): void;
78
+ protected endResize(event: PointerEvent): void;
79
+ private autofit;
56
80
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<WrTextarea, never>;
57
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrTextarea, "wr-textarea", never, { "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "rows": { "alias": "rows"; "required": false; "isSignal": true; }; "resizable": { "alias": "resizable"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "autosize": { "alias": "autosize"; "required": false; "isSignal": true; }; "maxRows": { "alias": "maxRows"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
81
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrTextarea, "wr-textarea", never, { "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "rows": { "alias": "rows"; "required": false; "isSignal": true; }; "resizable": { "alias": "resizable"; "required": false; "isSignal": true; }; "resize": { "alias": "resize"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "autosize": { "alias": "autosize"; "required": false; "isSignal": true; }; "maxRows": { "alias": "maxRows"; "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>;
58
82
  }
59
83
 
60
84
  export { WrTextarea };
85
+ export type { WrTextareaResize, WrTextareaSize };
@@ -13,6 +13,11 @@ import { InjectionToken, Signal, EnvironmentProviders } from '@angular/core';
13
13
  * Kept in sync manually with the SCSS `$base-colors` map in
14
14
  * `theme/styles/_colors.scss`. Both sources must stay aligned —
15
15
  * adding a color requires updating both this array and the SCSS map.
16
+ * Nothing enforces that, and it has already drifted once: `info` landed
17
+ * in the map without landing here, so v8.0.0 shipped every
18
+ * `--wr-color-info*` token — plus an `--info` modifier from each of the
19
+ * five stylesheets that iterate the map — while this type refused the
20
+ * value. Order matches the map so the two read as one list.
16
21
  *
17
22
  * @example
18
23
  * ```ts
@@ -22,7 +27,7 @@ import { InjectionToken, Signal, EnvironmentProviders } from '@angular/core';
22
27
  * WR_COLORS.forEach(color => console.log(color));
23
28
  * ```
24
29
  */
25
- declare const WR_COLORS: readonly ["primary", "secondary", "success", "warning", "danger", "light", "medium", "dark"];
30
+ declare const WR_COLORS: readonly ["primary", "secondary", "success", "warning", "danger", "info", "light", "medium", "dark"];
26
31
  /**
27
32
  * A color variant name.
28
33
  *
@@ -81,7 +86,7 @@ declare const WR_THEME_CONFIG: InjectionToken<WrThemeConfig>;
81
86
  * theme.resolved(); // 'dark'
82
87
  * ```
83
88
  *
84
- * @see https://ngwr.dev/services/theme
89
+ * @see https://ngwr.dev/reference/services/theme
85
90
  */
86
91
  declare class WrTheme {
87
92
  private readonly doc;
@@ -23,12 +23,15 @@ declare class WrTilt {
23
23
  private readonly zone;
24
24
  private readonly destroyRef;
25
25
  private readonly platform;
26
+ private readonly isBrowser;
27
+ private glareEl;
26
28
  constructor();
27
29
  /** @internal */
28
30
  protected onMove(event: PointerEvent): void;
29
31
  /** @internal */
30
32
  protected onLeave(): void;
31
33
  private installGlare;
34
+ private removeGlare;
32
35
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<WrTilt, never>;
33
36
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<WrTilt, "[wrTilt]", never, { "maxTilt": { "alias": "maxTilt"; "required": false; "isSignal": true; }; "perspective": { "alias": "perspective"; "required": false; "isSignal": true; }; "scale": { "alias": "scale"; "required": false; "isSignal": true; }; "glare": { "alias": "glare"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
34
37
  }
@@ -11,7 +11,7 @@ import * as _angular_core from '@angular/core';
11
11
  * </wr-timeline>
12
12
  * ```
13
13
  *
14
- * @see https://ngwr.dev/components/timeline
14
+ * @see https://ngwr.dev/reference/components/timeline
15
15
  */
16
16
  declare class WrTimeline {
17
17
  readonly orientation: _angular_core.InputSignal<"vertical" | "horizontal">;
@@ -137,7 +137,7 @@ declare class WrToastRef {
137
137
  * toast.show({ message: 'Permalink copied', position: 'bottom', showCopy: true });
138
138
  * ```
139
139
  *
140
- * @see https://ngwr.dev/components/toast
140
+ * @see https://ngwr.dev/reference/components/toast
141
141
  */
142
142
  declare class WrToast {
143
143
  private readonly overlay;
@@ -147,7 +147,11 @@ declare class WrToast {
147
147
  private currentPosition;
148
148
  private currentMode;
149
149
  private nextId;
150
+ /** Currently rendered toasts (capped at `config.maxStack`). */
150
151
  private active;
152
+ /** Overflow waiting for a free slot — promoted FIFO as actives dismiss, so
153
+ * nothing is ever silently dropped. */
154
+ private queue;
151
155
  /** Open a toast. Returns a handle you can `dismiss()` early. */
152
156
  show(options: WrToastOptions): WrToastRef;
153
157
  /** Dismiss a single toast by id. */
@@ -161,7 +165,9 @@ declare class WrToast {
161
165
  private startTimer;
162
166
  private pauseTimer;
163
167
  private ensureHost;
164
- private enforceMaxStack;
168
+ /** Fill any free stack slots from the queue (FIFO), starting each promoted
169
+ * toast's auto-dismiss timer only as it becomes visible. */
170
+ private promoteFromQueue;
165
171
  private pushToHost;
166
172
  private disposeHost;
167
173
  static ɵfac: i0.ɵɵFactoryDeclaration<WrToast, never>;
@@ -20,7 +20,7 @@ import * as i0 from '@angular/core';
20
20
  * </wr-toolbar>
21
21
  * ```
22
22
  *
23
- * @see https://ngwr.dev/components/toolbar
23
+ * @see https://ngwr.dev/reference/components/toolbar
24
24
  */
25
25
  declare class WrToolbar {
26
26
  /**
@@ -1,7 +1,7 @@
1
1
  import * as ngwr_i18n from 'ngwr/i18n';
2
2
  import * as _angular_core from '@angular/core';
3
3
  import { TemplateRef } from '@angular/core';
4
- import { ControlValueAccessor } from '@angular/forms';
4
+ import { FormValueControl } from '@angular/forms/signals';
5
5
 
6
6
  /**
7
7
  * @license
@@ -23,6 +23,12 @@ interface FlatNode<TId> {
23
23
  readonly node: WrTreeNode<TId>;
24
24
  readonly depth: number;
25
25
  readonly hasChildren: boolean;
26
+ /** Absolute position in the flattened visible list. */
27
+ readonly index: number;
28
+ /** 1-based position within its sibling group (ARIA `aria-posinset`). */
29
+ readonly posinset: number;
30
+ /** Sibling count at this level (ARIA `aria-setsize`). */
31
+ readonly setsize: number;
26
32
  }
27
33
  interface SelectedChip<TId> {
28
34
  readonly id: TId;
@@ -38,9 +44,11 @@ interface SelectedChip<TId> {
38
44
  * - `'inline'` (default) — renders the tree list in-place. Use as a display
39
45
  * widget or form-less hierarchical picker.
40
46
  * - `'overlay'` — renders a `<wr-select>`-style trigger button (with chips
41
- * in multi mode) that opens a popover containing the tree. Acts as a
42
- * `ControlValueAccessor` — bind via `[(ngModel)]`, `[formControl]`, or
43
- * `formControlName`. Replaces the standalone `<wr-tree-select>`.
47
+ * in multi mode) that opens a popover containing the tree. A signal-forms
48
+ * native control: it implements `FormValueControl<unknown>`, so `[formField]`
49
+ * binds straight to its `value` model — no `ControlValueAccessor` in between.
50
+ * `[(value)]` and classic `[(ngModel)]` / reactive forms all keep working via
51
+ * Angular's bridge. Replaces the standalone `<wr-tree-select>`.
44
52
  *
45
53
  * Value type in `overlay` mode: `TId | null` in single mode,
46
54
  * `readonly TId[]` in multi mode.
@@ -50,19 +58,22 @@ interface SelectedChip<TId> {
50
58
  * <!-- Inline tree (display widget) -->
51
59
  * <wr-tree [nodes]="folders" [(selected)]="picked" [(expanded)]="open" />
52
60
  *
53
- * <!-- Form-bound combobox -->
61
+ * <!-- Form-bound combobox (signal forms) -->
54
62
  * <wr-tree
55
63
  * openOn="overlay"
56
64
  * [nodes]="folders"
57
65
  * selectionMode="single"
58
- * [(ngModel)]="picked"
66
+ * [formField]="form.folder"
59
67
  * placeholder="Pick a folder"
60
68
  * />
69
+ *
70
+ * <!-- standalone two-way binding -->
71
+ * <wr-tree openOn="overlay" [nodes]="folders" [(value)]="picked" placeholder="Pick a folder" />
61
72
  * ```
62
73
  *
63
- * @see https://ngwr.dev/components/tree
74
+ * @see https://ngwr.dev/reference/components/tree
64
75
  */
65
- declare class WrTree<TId = string> implements ControlValueAccessor {
76
+ declare class WrTree<TId = string> implements FormValueControl<unknown> {
66
77
  /** Tree data. */
67
78
  readonly nodes: _angular_core.InputSignal<readonly WrTreeNode<TId>[]>;
68
79
  /** Selected node ids (two-way bindable). */
@@ -71,7 +82,12 @@ declare class WrTree<TId = string> implements ControlValueAccessor {
71
82
  readonly expanded: _angular_core.ModelSignal<readonly TId[]>;
72
83
  /** Selection behavior. @default 'single' */
73
84
  readonly selectionMode: _angular_core.InputSignal<WrTreeSelectionMode>;
74
- /** Disable the whole tree. @default false */
85
+ /**
86
+ * Disable the whole tree. Bound automatically from the field's disabled
87
+ * state when used with `[formField]`.
88
+ *
89
+ * @default false
90
+ */
75
91
  readonly disabled: _angular_core.InputSignalWithTransform<boolean, any>;
76
92
  /** Render shape. @default 'inline' */
77
93
  readonly openOn: _angular_core.InputSignal<"inline" | "overlay">;
@@ -87,11 +103,45 @@ declare class WrTree<TId = string> implements ControlValueAccessor {
87
103
  readonly maxTagCount: _angular_core.InputSignalWithTransform<number, unknown>;
88
104
  /** Auto-expand every node that has children on first open of the overlay. @default false */
89
105
  readonly defaultExpandAll: _angular_core.InputSignalWithTransform<boolean, any>;
106
+ /**
107
+ * Window the visible-node list so a large tree keeps only ~one viewport of
108
+ * rows in the DOM. Opt-in and OFF by default — a tree without it renders
109
+ * byte-identically to today. Works in both `inline` and `overlay` shapes;
110
+ * while on, keyboard navigation switches to the `aria-activedescendant`
111
+ * pattern so Arrow / Home / End / Enter keep working across un-rendered rows.
112
+ * @default false
113
+ */
114
+ readonly virtualScroll: _angular_core.InputSignalWithTransform<boolean, any>;
115
+ /**
116
+ * Uniform row height in px used to map scroll offset to node index. `0`
117
+ * (default) measures the first rendered row once and reuses it, so it adapts
118
+ * to the active density / touch target automatically. Read only when
119
+ * `virtualScroll` is on. @default 0
120
+ */
121
+ readonly rowHeight: _angular_core.InputSignalWithTransform<number, unknown>;
122
+ /**
123
+ * Height of the scroll viewport when `virtualScroll` is on — a number (px) or
124
+ * any CSS length (`'60vh'`). A numeric px value lets the server prerender the
125
+ * exact first window. @default 288
126
+ */
127
+ readonly viewportHeight: _angular_core.InputSignal<string | number>;
128
+ /** Extra rows kept rendered above and below the viewport as scroll headroom. @default 6 */
129
+ readonly overscan: _angular_core.InputSignalWithTransform<number, unknown>;
130
+ /**
131
+ * Form value — the current selection as seen by a bound field. Bound by
132
+ * `[formField]`, or two-way via `[(value)]`. Shape follows `selectionMode`:
133
+ * `TId | null` in single mode, `readonly TId[]` in multi mode. Meaningful in
134
+ * `overlay` mode; inline mode drives selection via `[(selected)]` instead.
135
+ */
136
+ readonly value: _angular_core.ModelSignal<unknown>;
137
+ /** Emitted on blur so a bound field can mark itself touched. */
138
+ readonly touch: _angular_core.OutputEmitterRef<void>;
90
139
  private readonly host;
91
140
  private readonly overlay;
92
141
  private readonly vcr;
93
142
  private readonly scrollStrategies;
94
143
  private readonly destroyRef;
144
+ private readonly platformId;
95
145
  /** Currently focused row's index in the flattened visible list. */
96
146
  protected readonly focusedIndex: _angular_core.WritableSignal<number>;
97
147
  /** Resolved ARIA labels — pick up live locale changes via re-render. */
@@ -116,23 +166,54 @@ declare class WrTree<TId = string> implements ControlValueAccessor {
116
166
  protected readonly open: _angular_core.WritableSignal<boolean>;
117
167
  /** Trigger / panel id for `aria-controls`. */
118
168
  protected readonly panelId: string;
119
- private readonly disabledFromCva;
120
- protected readonly isDisabled: _angular_core.Signal<boolean>;
121
169
  protected readonly classes: _angular_core.Signal<string>;
122
170
  protected readonly panelTpl: _angular_core.Signal<TemplateRef<any> | undefined>;
123
171
  private overlayRef;
124
- private onChange;
125
- /** @internal exposed so the trigger can fire on blur. */
126
- protected onTouched: () => void;
172
+ private static readonly FALLBACK_ROW_PX;
173
+ private static readonly FALLBACK_VIEWPORT_PX;
174
+ /** Live vertical scroll offset (px); 0 on the server / before first scroll. */
175
+ private readonly scrollTop;
176
+ /** Measured viewport clientHeight (px); 0 until the browser observer fires. */
177
+ private readonly viewportPx;
178
+ /** Measured first-row height (px) when `rowHeight` is auto; 0 until measured. */
179
+ private readonly measuredRowPx;
180
+ /** Virtualization active (opt-in and there is anything to window). */
181
+ protected readonly virtualized: _angular_core.Signal<boolean>;
182
+ /** Effective uniform row height (px). */
183
+ protected readonly effRowH: _angular_core.Signal<number>;
184
+ /** Deterministic viewport px for SSR + first paint (numeric height, else fallback). */
185
+ private readonly fallbackViewportPx;
186
+ /** `viewportHeight` as a CSS length for the inline max-height (bare number → px). */
187
+ protected readonly resolvedViewportHeight: _angular_core.Signal<string>;
188
+ /** Rendered window [start,end) + spacer pads (px). Pure math from `scrollTop`. */
189
+ protected readonly virtualWindow: _angular_core.Signal<{
190
+ start: number;
191
+ end: number;
192
+ padTop: number;
193
+ padBottom: number;
194
+ }>;
195
+ /** Nodes placed in the list. SAME array instance as `flat()` when off → byte-identical DOM. */
196
+ protected readonly windowRows: _angular_core.Signal<readonly FlatNode<TId>[]>;
197
+ /** Stable id for a row at flat index `i` — the `aria-activedescendant` target. */
198
+ protected rowId(i: number): string;
199
+ /**
200
+ * Active-descendant id when virtualized (focus stays on the list container),
201
+ * else `null`. Returns `null` while the focused row is outside the rendered
202
+ * window (e.g. mouse-wheeled away) so `aria-activedescendant` never dangles at
203
+ * a removed element — the next arrow key scrolls it back and re-establishes it.
204
+ */
205
+ protected readonly activeRowId: _angular_core.Signal<string | null>;
206
+ /** The scrollable `<ul>` — inside the overlay panel in overlay mode, else in the host. */
207
+ private get listElement();
208
+ /** Scroll flat index `i` just into view (sets the `scrollTop` signal synchronously). */
209
+ private ensureVisible;
127
210
  constructor();
128
- writeValue(value: unknown): void;
129
- registerOnChange(fn: (value: TId | readonly TId[] | null) => void): void;
130
- registerOnTouched(fn: () => void): void;
131
- setDisabledState(isDisabled: boolean): void;
132
211
  protected onRowClick(flat: FlatNode<TId>, event: MouseEvent): void;
133
212
  protected onToggleClick(node: WrTreeNode<TId>, event: MouseEvent): void;
134
213
  protected onKeydown(event: KeyboardEvent): void;
135
214
  protected onTriggerClick(): void;
215
+ /** Trigger blur — mark the bound field touched. */
216
+ protected onBlur(): void;
136
217
  protected removeChip(id: TId, event: Event): void;
137
218
  protected clearSelection(event: Event): void;
138
219
  private toggleExpanded;
@@ -143,7 +224,7 @@ declare class WrTree<TId = string> implements ControlValueAccessor {
143
224
  private openOverlay;
144
225
  private closeOverlay;
145
226
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<WrTree<any>, never>;
146
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrTree<any>, "wr-tree", never, { "nodes": { "alias": "nodes"; "required": false; "isSignal": true; }; "selected": { "alias": "selected"; "required": false; "isSignal": true; }; "expanded": { "alias": "expanded"; "required": false; "isSignal": true; }; "selectionMode": { "alias": "selectionMode"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "openOn": { "alias": "openOn"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "maxTagCount": { "alias": "maxTagCount"; "required": false; "isSignal": true; }; "defaultExpandAll": { "alias": "defaultExpandAll"; "required": false; "isSignal": true; }; }, { "selected": "selectedChange"; "expanded": "expandedChange"; }, never, never, true, never>;
227
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrTree<any>, "wr-tree", never, { "nodes": { "alias": "nodes"; "required": false; "isSignal": true; }; "selected": { "alias": "selected"; "required": false; "isSignal": true; }; "expanded": { "alias": "expanded"; "required": false; "isSignal": true; }; "selectionMode": { "alias": "selectionMode"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "openOn": { "alias": "openOn"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "maxTagCount": { "alias": "maxTagCount"; "required": false; "isSignal": true; }; "defaultExpandAll": { "alias": "defaultExpandAll"; "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; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "selected": "selectedChange"; "expanded": "expandedChange"; "value": "valueChange"; "touch": "touch"; }, never, never, true, never>;
147
228
  }
148
229
 
149
230
  export { WrTree };
@@ -31,7 +31,7 @@ type WrTypographyTone = 'dark' | 'medium' | 'primary' | 'success' | 'warning' |
31
31
  * <code wrTypography variant="code">inject(WrTheme)</code>
32
32
  * ```
33
33
  *
34
- * @see https://ngwr.dev/typography/overview
34
+ * @see https://ngwr.dev/guides/typography/overview
35
35
  */
36
36
  declare class WrTypography {
37
37
  /** Visual variant. @default 'body' */
@@ -30,7 +30,7 @@ import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';
30
30
  * Anything Angular already ships (`required`, `email`, `min`, `max`,
31
31
  * `pattern`, …) is deliberately NOT duplicated here.
32
32
  *
33
- * @see https://ngwr.dev/validators
33
+ * @see https://ngwr.dev/reference/validators
34
34
  */
35
35
  declare const WrValidators: {
36
36
  /** No whitespace anywhere in the value. */
@@ -39,10 +39,12 @@ declare const WrValidators: {
39
39
  hexColor: (control: AbstractControl) => ValidationErrors | null;
40
40
  /**
41
41
  * Valid URL. Accepts any scheme by default; pass `{ protocols: ['https'] }`
42
- * to restrict.
42
+ * to restrict. A scheme is required by default; pass `{ requireProtocol: false }`
43
+ * to also accept bare domains (e.g. `ngwr.dev`), assuming `https`.
43
44
  */
44
45
  url: (options?: {
45
46
  readonly protocols?: readonly string[];
47
+ readonly requireProtocol?: boolean;
46
48
  }) => ValidatorFn;
47
49
  /** Credit card number — Luhn check + 13-19 digit length. Spaces and dashes are stripped first. */
48
50
  cardNumber: (control: AbstractControl) => ValidationErrors | null;
@@ -16,7 +16,7 @@ import { InjectionToken } from '@angular/core';
16
16
  * Distinct from `Version` exported by `@angular/core`, which reports the
17
17
  * loaded Angular runtime version (e.g. `'21.2.13'`), not ngwr's.
18
18
  */
19
- declare const NGWR_VERSION = "7.3.0";
19
+ declare const NGWR_VERSION = "9.0.0";
20
20
 
21
21
  /**
22
22
  * @license
@@ -18,7 +18,7 @@ import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';
18
18
  * </wr-virtual-scroll>
19
19
  * ```
20
20
  *
21
- * @see https://ngwr.dev/components/virtual-scroll
21
+ * @see https://ngwr.dev/reference/components/virtual-scroll
22
22
  */
23
23
  declare class WrVirtualScroll<T = unknown> {
24
24
  /** Items to render. */
@@ -418,7 +418,7 @@ declare class WrWindowManager {
418
418
  * <wr-window-taskbar position="top" />
419
419
  * ```
420
420
  *
421
- * @see https://ngwr.dev/components/window
421
+ * @see https://ngwr.dev/reference/components/window
422
422
  */
423
423
  declare class WrWindowTaskbar {
424
424
  /** Edge the taskbar pins itself to. @default 'bottom' */
@@ -3,7 +3,7 @@
3
3
  .wr-typography {
4
4
  // Inherit the host element's native display (block for h1/p, inline for span).
5
5
  margin: 0;
6
- color: var(--wr-color-dark);
6
+ color: var(--wr-color-on-surface);
7
7
  font-family: var(--wr-font-family-base);
8
8
 
9
9
  &--display {
@@ -56,7 +56,7 @@
56
56
  font-size: var(--wr-text-xl);
57
57
  font-weight: var(--wr-font-weight-regular);
58
58
  line-height: var(--wr-leading-relaxed);
59
- color: var(--wr-color-medium);
59
+ color: var(--wr-color-on-surface-muted);
60
60
  }
61
61
 
62
62
  &--body {
@@ -73,7 +73,7 @@
73
73
  &--caption {
74
74
  font-size: var(--wr-text-xs);
75
75
  line-height: var(--wr-leading-normal);
76
- color: var(--wr-color-medium);
76
+ color: var(--wr-color-on-surface-muted);
77
77
  }
78
78
 
79
79
  &--overline {
@@ -81,12 +81,12 @@
81
81
  font-weight: var(--wr-font-weight-semibold);
82
82
  text-transform: uppercase;
83
83
  letter-spacing: var(--wr-tracking-widest);
84
- color: var(--wr-color-medium);
84
+ color: var(--wr-color-on-surface-muted);
85
85
  }
86
86
 
87
87
  &--code {
88
88
  padding: 0.0625rem 0.375rem;
89
- background: rgba(var(--wr-color-light-rgb), 0.6);
89
+ background: rgba(var(--wr-color-outline-rgb), 0.6);
90
90
  border-radius: var(--wr-border-radius-sm);
91
91
  font-size: 0.875em;
92
92
  }
@@ -99,7 +99,7 @@
99
99
  padding: 0;
100
100
  font-size: var(--wr-text-base);
101
101
  line-height: var(--wr-leading-normal);
102
- color: var(--wr-color-medium);
102
+ color: var(--wr-color-on-surface-muted);
103
103
 
104
104
  > li + li,
105
105
  > li > ul,
@@ -133,19 +133,19 @@
133
133
 
134
134
  dl#{&}--list dt {
135
135
  margin-bottom: 0.25rem;
136
- color: var(--wr-color-medium);
136
+ color: var(--wr-color-on-surface-muted);
137
137
  }
138
138
 
139
139
  dl#{&}--list dd {
140
140
  font-size: var(--wr-text-lg);
141
141
  font-weight: var(--wr-font-weight-medium);
142
- color: var(--wr-color-dark);
142
+ color: var(--wr-color-on-surface);
143
143
  }
144
144
 
145
145
  dl#{&}--list dd + dt {
146
146
  margin-top: 0.75rem;
147
147
  padding-top: 0.75rem;
148
- border-top: 1px solid var(--wr-color-light);
148
+ border-top: 1px solid var(--wr-color-outline);
149
149
  }
150
150
  }
151
151
 
@@ -165,10 +165,10 @@
165
165
 
166
166
  // Tones
167
167
  &--tone-dark {
168
- color: var(--wr-color-dark);
168
+ color: var(--wr-color-on-surface);
169
169
  }
170
170
  &--tone-medium {
171
- color: var(--wr-color-medium);
171
+ color: var(--wr-color-on-surface-muted);
172
172
  }
173
173
  &--tone-primary {
174
174
  color: var(--wr-color-primary);
@@ -20,7 +20,7 @@
20
20
  height: 0.5rem;
21
21
  }
22
22
  &::-webkit-scrollbar-thumb {
23
- background: rgba(var(--wr-color-dark-rgb), 0.2);
23
+ background: rgba(var(--wr-color-on-surface-rgb), 0.2);
24
24
  border-radius: 999px;
25
25
  }
26
26
  }
@@ -3,7 +3,7 @@
3
3
  // `--wr-waves-line-color` unless `[lineColor]` overrides it.
4
4
 
5
5
  .wr-waves {
6
- --wr-waves-line-color: rgba(var(--wr-color-dark-rgb), 0.12);
6
+ --wr-waves-line-color: rgba(var(--wr-color-on-surface-rgb), 0.12);
7
7
 
8
8
  position: absolute;
9
9
  inset: 0;