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
package/README.md CHANGED
@@ -10,7 +10,7 @@
10
10
  zoneless-ready, responsive, modular SCSS, fully tree-shakable. Built on top of
11
11
  `@angular/cdk` for overlay, portal, and a11y primitives.
12
12
 
13
- > **Status:** active development. v8 is the current major line (Angular 22 peer).
13
+ > **Status:** active development. v9 is the current major line (Angular 22 peer).
14
14
  > Public API is stable across patch releases and still evolving between majors.
15
15
  > [Open an issue](https://github.com/thekhegay/ngwr/issues/new)
16
16
  > if something breaks or feels wrong.
@@ -26,11 +26,25 @@ zoneless-ready, responsive, modular SCSS, fully tree-shakable. Built on top of
26
26
  | `rxjs` | `^7.0.0` |
27
27
  | `date-fns` _(optional)_ | `^3.0.0 \|\| ^4.0.0` |
28
28
  | `luxon` _(optional)_ | `^3.0.0` |
29
+ | `lucide` _(optional)_ | `>= 1.0.0` |
29
30
 
30
- Node ≥ 24.16.0 (or 26+). pnpm ≥ 11.8. TypeScript ≥ 6.0.
31
+ Node ≥ 24.16.0 (or 26+) and TypeScript `~6.0.x` (Angular 22 requires
32
+ `typescript >=6.0 <6.1`). Contributing to this repo additionally needs
33
+ pnpm ≥ 11.10.
31
34
 
32
35
  ## Install
33
36
 
37
+ The schematic does the whole Install + Styles section for you — it installs
38
+ ngwr and its peers, appends `@use 'ngwr';` to your global stylesheet, and
39
+ prints a provider snippet tailored to your answers (date adapter, density,
40
+ theme) to paste into bootstrap:
41
+
42
+ ```shell
43
+ ng add ngwr
44
+ ```
45
+
46
+ Or wire it up by hand:
47
+
34
48
  ```shell
35
49
  pnpm add ngwr @angular/cdk
36
50
  # or
@@ -63,9 +77,14 @@ Opt-in utilities (not part of `@use 'ngwr'`):
63
77
  ```scss
64
78
  @use 'ngwr/reset'; // box-sizing, body margin, sane defaults
65
79
  @use 'ngwr/grid'; // .grid, .container, .col-*
80
+ @use 'ngwr/animations'; // .wr-animate-fade-in, .wr-animate-slide-up, …
81
+ @use 'ngwr/typography-utilities'; // .wr-text-*, .wr-font-* utility classes
66
82
  @use 'ngwr/breakpoints' as bp; // SCSS mixins only, no CSS output
67
83
  ```
68
84
 
85
+ `ngwr/typography-utilities` is the utility-class sheet — not `ngwr/typography`,
86
+ which is the larger `wrTypography` component entry.
87
+
69
88
  ## Quick start
70
89
 
71
90
  ```ts
@@ -109,32 +128,58 @@ export class AppComponent {
109
128
  }
110
129
  ```
111
130
 
131
+ Every value control is Signal Forms-native, so `[formField]` binds straight
132
+ through — no `ControlValueAccessor` anywhere in the chain:
133
+
134
+ ```ts
135
+ // profile-form.ts
136
+ import { Component, signal } from '@angular/core';
137
+ import { FormField, form } from '@angular/forms/signals';
138
+ import { WrCheckbox } from 'ngwr/checkbox';
139
+ import { WrInput } from 'ngwr/input';
140
+
141
+ @Component({
142
+ selector: 'app-profile-form',
143
+ imports: [FormField, WrCheckbox, WrInput],
144
+ template: `
145
+ <input wrInput [formField]="profile.name" placeholder="Your name" />
146
+ <wr-checkbox [formField]="profile.agree">I agree</wr-checkbox>
147
+ `,
148
+ })
149
+ export class ProfileForm {
150
+ readonly model = signal({ name: '', agree: false });
151
+ readonly profile = form(this.model); // FieldTree — profile.name, profile.agree
152
+ }
153
+ ```
154
+
112
155
  ## Catalog
113
156
 
114
157
  > Browse the full catalog with live demos at [**ngwr.dev**](https://ngwr.dev).
115
158
  > Each entry below is a tree-shakable subpath — `import { … } from 'ngwr/<name>'`.
159
+ > A few share a package: `form-field` ships from `ngwr/form`, `button-group` from
160
+ > `ngwr/button`, and `qr` is the subpath behind the `qrcode` docs page.
116
161
 
117
162
  ### Components
118
163
 
119
- **Form** — [calendar](https://ngwr.dev/components/calendar), [cascader](https://ngwr.dev/components/cascader), [checkbox](https://ngwr.dev/components/checkbox), [color-picker](https://ngwr.dev/components/color-picker), [date-picker](https://ngwr.dev/components/date-picker), [file-upload](https://ngwr.dev/components/file-upload), [form](https://ngwr.dev/components/form), [form-field](https://ngwr.dev/components/form-field), [input](https://ngwr.dev/components/input), [input-number](https://ngwr.dev/components/input-number), [input-otp](https://ngwr.dev/components/input-otp), [knob](https://ngwr.dev/components/knob), [mention](https://ngwr.dev/components/mention), [radio](https://ngwr.dev/components/radio), [rating](https://ngwr.dev/components/rating), [segmented](https://ngwr.dev/components/segmented), [select](https://ngwr.dev/components/select), [slider](https://ngwr.dev/components/slider), [switch](https://ngwr.dev/components/switch), [textarea](https://ngwr.dev/components/textarea).
164
+ **Form** — [calendar](https://ngwr.dev/reference/components/calendar), [cascader](https://ngwr.dev/reference/components/cascader), [checkbox](https://ngwr.dev/reference/components/checkbox), [color-picker](https://ngwr.dev/reference/components/color-picker), [date-picker](https://ngwr.dev/reference/components/date-picker), [file-upload](https://ngwr.dev/reference/components/file-upload), [form](https://ngwr.dev/reference/components/form), [form-field](https://ngwr.dev/reference/components/form-field), [input](https://ngwr.dev/reference/components/input), [input-number](https://ngwr.dev/reference/components/input-number), [input-otp](https://ngwr.dev/reference/components/input-otp), [knob](https://ngwr.dev/reference/components/knob), [mention](https://ngwr.dev/reference/components/mention), [radio](https://ngwr.dev/reference/components/radio), [rating](https://ngwr.dev/reference/components/rating), [segmented](https://ngwr.dev/reference/components/segmented), [select](https://ngwr.dev/reference/components/select), [slider](https://ngwr.dev/reference/components/slider), [switch](https://ngwr.dev/reference/components/switch), [textarea](https://ngwr.dev/reference/components/textarea).
120
165
 
121
- **Buttons** — [button](https://ngwr.dev/components/button), [button-group](https://ngwr.dev/components/button-group), [speed-dial](https://ngwr.dev/components/speed-dial).
166
+ **Buttons** — [button](https://ngwr.dev/reference/components/button), [button-group](https://ngwr.dev/reference/components/button-group), [speed-dial](https://ngwr.dev/reference/components/speed-dial).
122
167
 
123
- **Data** — [drag-drop](https://ngwr.dev/components/drag-drop), [pagination](https://ngwr.dev/components/pagination), [table](https://ngwr.dev/components/table), [tree](https://ngwr.dev/components/tree), [virtual-scroll](https://ngwr.dev/components/virtual-scroll).
168
+ **Data** — [drag-drop](https://ngwr.dev/reference/components/drag-drop), [pagination](https://ngwr.dev/reference/components/pagination), [pull-to-refresh](https://ngwr.dev/reference/components/pull-to-refresh), [table](https://ngwr.dev/reference/components/table), [tree](https://ngwr.dev/reference/components/tree), [virtual-scroll](https://ngwr.dev/reference/components/virtual-scroll).
124
169
 
125
- **Feedback** — [alert](https://ngwr.dev/components/alert), [empty](https://ngwr.dev/components/empty), [progress](https://ngwr.dev/components/progress), [result](https://ngwr.dev/components/result), [skeleton](https://ngwr.dev/components/skeleton), [spinner](https://ngwr.dev/components/spinner).
170
+ **Feedback** — [alert](https://ngwr.dev/reference/components/alert), [empty](https://ngwr.dev/reference/components/empty), [progress](https://ngwr.dev/reference/components/progress), [result](https://ngwr.dev/reference/components/result), [skeleton](https://ngwr.dev/reference/components/skeleton), [spinner](https://ngwr.dev/reference/components/spinner).
126
171
 
127
- **Display** — [avatar](https://ngwr.dev/components/avatar), [badge](https://ngwr.dev/components/badge) (incl. `wr-tag`), [compare](https://ngwr.dev/components/compare), [counter](https://ngwr.dev/components/counter), [descriptions](https://ngwr.dev/components/descriptions), [divider](https://ngwr.dev/components/divider), [image-cropper](https://ngwr.dev/components/image-cropper), [keyboard](https://ngwr.dev/components/keyboard), [lightbox](https://ngwr.dev/components/lightbox), [qrcode](https://ngwr.dev/components/qrcode), [statistic](https://ngwr.dev/components/statistic), [timeline](https://ngwr.dev/components/timeline).
172
+ **Display** — [avatar](https://ngwr.dev/reference/components/avatar), [badge](https://ngwr.dev/reference/components/badge) (incl. `wr-tag`), [compare](https://ngwr.dev/reference/components/compare), [counter](https://ngwr.dev/reference/components/counter), [descriptions](https://ngwr.dev/reference/components/descriptions), [divider](https://ngwr.dev/reference/components/divider), [image-cropper](https://ngwr.dev/reference/components/image-cropper), [keyboard](https://ngwr.dev/reference/components/keyboard), [lightbox](https://ngwr.dev/reference/components/lightbox), [qr](https://ngwr.dev/reference/components/qrcode), [statistic](https://ngwr.dev/reference/components/statistic), [timeline](https://ngwr.dev/reference/components/timeline).
128
173
 
129
- **Layout** — [card](https://ngwr.dev/components/card), [carousel](https://ngwr.dev/components/carousel), [collapse](https://ngwr.dev/components/collapse), [layout](https://ngwr.dev/components/layout), [list](https://ngwr.dev/components/list), [page-header](https://ngwr.dev/components/page-header), [splitter](https://ngwr.dev/components/splitter), [toolbar](https://ngwr.dev/components/toolbar).
174
+ **Layout** — [card](https://ngwr.dev/reference/components/card), [carousel](https://ngwr.dev/reference/components/carousel), [collapse](https://ngwr.dev/reference/components/collapse), [layout](https://ngwr.dev/reference/components/layout), [list](https://ngwr.dev/reference/components/list), [page-header](https://ngwr.dev/reference/components/page-header), [splitter](https://ngwr.dev/reference/components/splitter), [toolbar](https://ngwr.dev/reference/components/toolbar).
130
175
 
131
- **Navigation** — [anchor](https://ngwr.dev/components/anchor), [back-top](https://ngwr.dev/components/back-top), [breadcrumbs](https://ngwr.dev/components/breadcrumbs), [burger](https://ngwr.dev/components/burger), [dropdown](https://ngwr.dev/components/dropdown), [sidebar](https://ngwr.dev/components/sidebar), [stepper](https://ngwr.dev/components/stepper), [tabs](https://ngwr.dev/components/tabs).
176
+ **Navigation** — [anchor](https://ngwr.dev/reference/components/anchor), [back-top](https://ngwr.dev/reference/components/back-top), [breadcrumbs](https://ngwr.dev/reference/components/breadcrumbs), [burger](https://ngwr.dev/reference/components/burger), [dropdown](https://ngwr.dev/reference/components/dropdown), [sidebar](https://ngwr.dev/reference/components/sidebar), [stepper](https://ngwr.dev/reference/components/stepper), [tabs](https://ngwr.dev/reference/components/tabs).
132
177
 
133
- **Overlays** — [command-palette](https://ngwr.dev/components/command-palette), [context-menu](https://ngwr.dev/components/context-menu), [dialog](https://ngwr.dev/components/dialog), [drawer](https://ngwr.dev/components/drawer), [popconfirm](https://ngwr.dev/components/popconfirm), [popover](https://ngwr.dev/components/popover), [toast](https://ngwr.dev/components/toast), [window](https://ngwr.dev/components/window).
178
+ **Overlays** — [action-sheet](https://ngwr.dev/reference/components/action-sheet), [command-palette](https://ngwr.dev/reference/components/command-palette), [context-menu](https://ngwr.dev/reference/components/context-menu), [dialog](https://ngwr.dev/reference/components/dialog), [drawer](https://ngwr.dev/reference/components/drawer), [popconfirm](https://ngwr.dev/reference/components/popconfirm), [popover](https://ngwr.dev/reference/components/popover), [toast](https://ngwr.dev/reference/components/toast), [window](https://ngwr.dev/reference/components/window).
134
179
 
135
- **Charts** — [bar-chart](https://ngwr.dev/components/bar-chart), [calendar-heatmap](https://ngwr.dev/components/calendar-heatmap), [donut-chart](https://ngwr.dev/components/donut-chart), [gauge](https://ngwr.dev/components/gauge), [line-chart](https://ngwr.dev/components/line-chart), [meter-group](https://ngwr.dev/components/meter-group), [sparkline](https://ngwr.dev/components/sparkline).
180
+ **Charts** — [bar-chart](https://ngwr.dev/reference/components/bar-chart), [calendar-heatmap](https://ngwr.dev/reference/components/calendar-heatmap), [donut-chart](https://ngwr.dev/reference/components/donut-chart), [gauge](https://ngwr.dev/reference/components/gauge), [line-chart](https://ngwr.dev/reference/components/line-chart), [meter-group](https://ngwr.dev/reference/components/meter-group), [sparkline](https://ngwr.dev/reference/components/sparkline).
136
181
 
137
- Plus [icon](https://ngwr.dev/components/icon), the experimental [squircle](https://ngwr.dev/components/squircle), and the [typography](https://ngwr.dev/typography) directive.
182
+ Plus [icon](https://ngwr.dev/reference/components/icon), the experimental [squircle](https://ngwr.dev/reference/components/squircle), and the [typography](https://ngwr.dev/reference/directives/typography) directive.
138
183
 
139
184
  ### Animations
140
185
 
@@ -146,42 +191,44 @@ Card packages bundle their related directives: `ngwr/spotlight-card` exports `Wr
146
191
 
147
192
  ### Directives — `ngwr/directives`
148
193
 
149
- [autofocus](https://ngwr.dev/directives/autofocus), [autosize](https://ngwr.dev/directives/autosize), [click-outside](https://ngwr.dev/directives/click-outside), [copy-to-clipboard](https://ngwr.dev/directives/copy-to-clipboard). [affix](https://ngwr.dev/directives/affix) ships as its own entry (`ngwr/affix`).
194
+ [autofocus](https://ngwr.dev/reference/directives/autofocus), [autosize](https://ngwr.dev/reference/directives/autosize), [click-outside](https://ngwr.dev/reference/directives/click-outside), [copy-to-clipboard](https://ngwr.dev/reference/directives/copy-to-clipboard). [affix](https://ngwr.dev/reference/directives/affix) ships as its own entry (`ngwr/affix`).
150
195
 
151
196
  ### Pipes — `ngwr/pipes`
152
197
 
153
- [wrBytes](https://ngwr.dev/pipes/wr-bytes), [wrDate](https://ngwr.dev/pipes/wr-date), [wrMark](https://ngwr.dev/pipes/wr-mark), [wrNumber](https://ngwr.dev/pipes/wr-number), [wrPlural](https://ngwr.dev/pipes/wr-plural), [wrRange](https://ngwr.dev/pipes/range), [wrTruncate](https://ngwr.dev/pipes/wr-truncate).
198
+ [wrBytes](https://ngwr.dev/reference/pipes/wr-bytes), [wrDate](https://ngwr.dev/reference/pipes/wr-date), [wrMark](https://ngwr.dev/reference/pipes/wr-mark), [wrNumber](https://ngwr.dev/reference/pipes/wr-number), [wrPlural](https://ngwr.dev/reference/pipes/wr-plural), [wrRange](https://ngwr.dev/reference/pipes/range), [wrTruncate](https://ngwr.dev/reference/pipes/wr-truncate).
154
199
 
155
200
  ### Services
156
201
 
157
- [clipboard](https://ngwr.dev/services/clipboard), [cookie](https://ngwr.dev/services/cookie), [density](https://ngwr.dev/services/density), [hotkey](https://ngwr.dev/services/hotkey), [loading-bar](https://ngwr.dev/services/loading-bar), [media](https://ngwr.dev/services/media), [meta](https://ngwr.dev/services/meta), [platform](https://ngwr.dev/services/platform), [scroll](https://ngwr.dev/services/scroll), [storage](https://ngwr.dev/services/storage), [theme](https://ngwr.dev/services/theme), [translate](https://ngwr.dev/translate) (i18n).
202
+ [clipboard](https://ngwr.dev/reference/services/clipboard), [cookie](https://ngwr.dev/reference/services/cookie), [density](https://ngwr.dev/reference/services/density), [hotkey](https://ngwr.dev/reference/services/hotkey), [loading-bar](https://ngwr.dev/reference/services/loading-bar), [media](https://ngwr.dev/reference/services/media), [meta](https://ngwr.dev/reference/services/meta), [platform](https://ngwr.dev/reference/services/platform), [scroll](https://ngwr.dev/reference/services/scroll), [storage](https://ngwr.dev/reference/services/storage), [theme](https://ngwr.dev/reference/services/theme), [i18n](https://ngwr.dev/reference/services/i18n).
158
203
 
159
204
  ### Validators — `ngwr/validators`
160
205
 
161
- Bundled `ValidatorFn`s composing cleanly with Angular's built-in `Validators`: `cardNumber` (Luhn), `cvc`, `hexColor`, `iban` (mod-97), `match` (sibling control), `maxDate`, `minDate`, `noWhitespace`, `oneOf`, `url`. See [docs](https://ngwr.dev/validators).
206
+ Bundled `ValidatorFn`s composing cleanly with Angular's built-in `Validators`: `cardNumber` (Luhn), `cvc`, `hexColor`, `iban` (mod-97), `match` (sibling control), `maxDate`, `minDate`, `noWhitespace`, `oneOf`, `url`. See [docs](https://ngwr.dev/reference/validators).
162
207
 
163
208
  ### Utils — `ngwr/utils`
164
209
 
165
- Math (`clamp`, `round`), coercion (`numAttr`), css helpers (`resolveCssSize`, `getRootFontSize`), ids (`randomId`), type guards (`isDefined`, `isNonEmptyArray`, `isObservable`), keyboard helpers (`KEYS`, `hasModifier`, `isPrintableKey`), functional primitives (`noop`, `badgeLog`, `debounce`, `throttle`), focus management (`getFocusableElements`, `trapFocus`). See [docs](https://ngwr.dev/utils) for the full list. Shared shapes (`Maybe`, `SafeAny`, `WrColor`, …) are documented under [Interfaces](https://ngwr.dev/interfaces).
210
+ Math (`clamp`, `round`), coercion (`numAttr`), css helpers (`resolveCssSize`, `getRootFontSize`), ids (`randomId`), type guards (`isDefined`, `isNonEmptyArray`, `isObservable`), keyboard helpers (`KEYS`, `hasModifier`, `isPrintableKey`), functional primitives (`noop`, `badgeLog`, `debounce`, `throttle`), focus management (`getFocusableElements`, `trapFocus`). See [docs](https://ngwr.dev/reference/utils) for the full list. Shared shapes (`Maybe`, `SafeAny`, `WrColor`, …) are documented under [Interfaces](https://ngwr.dev/reference/interfaces).
166
211
 
167
212
  ### Core
168
213
 
169
- - [Color](https://ngwr.dev/getting-started/color) — design tokens and palette.
170
- - [Grid](https://ngwr.dev/getting-started/grid) — opt-in 12-column layout.
171
- - [Overlay](https://ngwr.dev/getting-started/overlay) — isolated CDK overlay container, `provideWrOverlay()`.
172
- - [Mobile & responsive](https://ngwr.dev/getting-started/mobile) — responsive overlays, touch targets & density, swipe gestures, safe-area insets, container-query layouts.
173
- - [Typography](https://ngwr.dev/typography) — `wrTypography` directive: headings, paragraphs, lists, links, code.
174
- - [Icons](https://ngwr.dev/icons) — `ngwr/icon` registry + thin adapters for Lucide, Feather, Tabler, Phosphor, Heroicons, Iconoir, Radix, Bootstrap.
214
+ - [Color](https://ngwr.dev/guides/tokens/colors) — design tokens and palette.
215
+ - [Grid](https://ngwr.dev/guides/grid) — opt-in 12-column layout.
216
+ - [Overlay](https://ngwr.dev/guides/overlay) — isolated CDK overlay container, `provideWrOverlay()`.
217
+ - [Mobile & responsive](https://ngwr.dev/guides/mobile) — responsive overlays, touch targets & density, swipe gestures, safe-area insets, container-query layouts.
218
+ - [Typography](https://ngwr.dev/guides/typography) — `wrTypography` directive: headings, paragraphs, lists, links, code.
219
+ - [Icons](https://ngwr.dev/icons) — `ngwr/icon` registry. Use `svgIcon()` for any set that ships raw SVG files (Tabler, Phosphor, Heroicons, Iconoir, Radix, Bootstrap, or your designer's own), plus thin adapters for Lucide (`ngwr/icon/adapters/lucide`) and Feather (`ngwr/icon/adapters/feather`), whose packages don't ship SVGs.
175
220
  - **Date adapters** — `ngwr/date-adapter-fns`, `ngwr/date-adapter-luxon`. Wire one with `provideWrDateAdapter(...)` to power calendar + every mode of date-picker.
176
221
 
177
222
  ## Highlights
178
223
 
179
224
  - **Standalone & signals-first.** Every component is standalone and uses `input()` / `model()` / `output()` / `signal()` / `computed()`. Zoneless-ready.
225
+ - **Signal Forms native.** Every value control implements `FormValueControl` / `FormCheckboxControl`, so `[formField]` binds straight through — there is no `ControlValueAccessor` in the library at all. `[(ngModel)]` and reactive forms keep working through Angular's bridge, and every control also works standalone via `[(value)]` / `[(checked)]`.
180
226
  - **CDK-powered.** Overlays, portals, and a11y come from `@angular/cdk`. We add `provideWrOverlay()` so NGWR overlays never collide with other CDK consumers (Material, NG-ZORRO, etc.).
181
- - **Mobile & responsive.** Overlays collapse to bottom-sheets on small screens (`provideWrResponsiveOverlays()`), touch targets grow to ≥44px on coarse pointers, a `touch` density preset enlarges every control, and drawer / lightbox / toast / carousel respond to swipe gestures. Fixed surfaces respect `env(safe-area-inset-*)`, and layout components (`descriptions`, `stepper`, `page-header`, `toolbar`, `pagination`, `table`, `tabs`) reflow to their container via container queries. [Guide](https://ngwr.dev/getting-started/mobile).
182
- - **Tree-shakable.** 127 separate ng-packagr entry points — import only what you use. Per-component FESM bundles are small: a median of ~3 KB gzipped, the heaviest (`ngwr/window`) ~15 KB. The whole catalog gzips to ~320 KB — but real apps pull a handful of entries. The only runtime dependency is `tslib`.
227
+ - **Mobile & responsive.** Overlays collapse to bottom-sheets on small screens (`provideWrResponsiveOverlays()`), touch targets grow to ≥44px on coarse pointers, a `touch` density preset enlarges every control, and drawer / lightbox / toast / carousel respond to swipe gestures. Fixed surfaces respect `env(safe-area-inset-*)`, and layout components (`descriptions`, `stepper`, `page-header`, `toolbar`, `pagination`, `table`) reflow to their container via container queries. [Guide](https://ngwr.dev/guides/mobile).
228
+ - **Table, batteries included.** `wr-table` covers column pinning / resizing / drag-reorder, row selection, expandable rows, grouping, summary rows, CSV export (`exportCsv()`, dependency-free RFC 4180) and a virtualized body — all opt-in inputs on the one component. Excel (`.xlsx`) export is deliberately not shipped: it would mean a third-party dependency.
229
+ - **Tree-shakable.** 127 separate ng-packagr entry points — import only what you use. Per-component FESM bundles are small: a median of ~3 KB gzipped, the heaviest (`ngwr/table`) ~18 KB. The whole catalog gzips to ~490 KB — but real apps pull a handful of entries. The only runtime dependency is `tslib`.
183
230
  - **Modular SCSS.** Component styles are scoped through CSS custom properties. Theme tokens live in `ngwr/theme`; utilities (`grid`, `reset`) and the breakpoints SCSS API are opt-in.
184
- - **Tree-shaken icons.** `provideWrIcons([plus, trash])` registers only the icons you actually import. Dev-mode validation warns about unregistered icons.
231
+ - **Tree-shaken icons.** `provideWrIcons(lucideIcons({ plus: Plus }))` registers only the icons you actually import. Dev-mode validation warns about unregistered icons.
185
232
  - **Reactbits ports, dependency-free.** All animation ports are reimplemented with vanilla DOM + Web Animations API / `IntersectionObserver` / `requestAnimationFrame` / raw WebGL — no GSAP, no `motion/react`, no `matter-js`, no `ogl`.
186
233
  - **Motion respects the OS.** Every animation component short-circuits to its final state under `prefers-reduced-motion`.
187
234
 
@@ -192,9 +239,9 @@ Conventional commits are enforced on PR titles. Common types: `feat`, `fix`, `pe
192
239
  ```shell
193
240
  pnpm install
194
241
  pnpm dev # ng serve --o (showcase)
195
- pnpm build:lib # ng build lib
196
- pnpm build:showcase # ng build showcase
197
- pnpm lint # ng lint
242
+ pnpm build:lib # ng build lib + ai assets + dist assets + schematics
243
+ pnpm build:showcase # showcase build + sitemap
244
+ pnpm lint # ng lint + eslint scripts + stylelint + colour parity
198
245
  ```
199
246
 
200
247
  ## Authors
@@ -0,0 +1,93 @@
1
+ .wr-action-sheet {
2
+ display: flex;
3
+ flex-direction: column;
4
+ gap: 0.5rem;
5
+ padding: 0.25rem 0.25rem 0.5rem;
6
+ font-family: var(--wr-font-family-base);
7
+
8
+ &__header {
9
+ padding: 0.5rem 1rem 0.75rem;
10
+ text-align: center;
11
+ }
12
+
13
+ &__title {
14
+ font-size: var(--wr-text-sm);
15
+ font-weight: var(--wr-font-weight-semibold);
16
+ color: var(--wr-color-on-surface);
17
+ }
18
+
19
+ &__message {
20
+ margin-top: 0.25rem;
21
+ font-size: var(--wr-text-xs);
22
+ color: var(--wr-color-on-surface-muted);
23
+ }
24
+
25
+ &__group {
26
+ display: flex;
27
+ flex-direction: column;
28
+ border-radius: var(--wr-border-radius-lg);
29
+ overflow: hidden;
30
+ background: var(--wr-color-surface);
31
+
32
+ &--cancel {
33
+ margin-top: 0.25rem;
34
+ }
35
+ }
36
+
37
+ &__action {
38
+ display: flex;
39
+ align-items: center;
40
+ justify-content: center;
41
+ gap: 0.5rem;
42
+ min-height: 3rem;
43
+ padding: 0.75rem 1rem;
44
+ border: 0;
45
+ background: transparent;
46
+ color: var(--wr-color-primary);
47
+ font-family: inherit;
48
+ font-size: var(--wr-text-base);
49
+ font-weight: var(--wr-font-weight-medium);
50
+ cursor: pointer;
51
+ transition: background var(--wr-duration-base) var(--wr-ease-out);
52
+
53
+ & + & {
54
+ border-top: 1px solid var(--wr-color-outline);
55
+ }
56
+
57
+ &:hover:not(:disabled),
58
+ &:active:not(:disabled) {
59
+ background: var(--wr-color-hover);
60
+ }
61
+
62
+ &:disabled {
63
+ color: var(--wr-color-on-surface-muted);
64
+ cursor: not-allowed;
65
+ }
66
+
67
+ &--destructive {
68
+ color: var(--wr-color-danger);
69
+ }
70
+
71
+ &--cancel {
72
+ font-weight: var(--wr-font-weight-semibold);
73
+ color: var(--wr-color-on-surface);
74
+ }
75
+ }
76
+
77
+ &__icon {
78
+ flex: 0 0 auto;
79
+ --wr-icon-size: 1.125rem;
80
+ }
81
+
82
+ &__sr-only {
83
+ position: absolute;
84
+ width: 1px;
85
+ height: 1px;
86
+ padding: 0;
87
+ margin: -1px;
88
+ overflow: hidden;
89
+ clip: rect(0, 0, 0, 0);
90
+ white-space: nowrap;
91
+ border: 0;
92
+ }
93
+ }
@@ -20,7 +20,7 @@ $alert-colors: (
20
20
  --wr-alert-bg: var(--wr-color-info-soft);
21
21
  --wr-alert-border: var(--wr-color-info-soft-border);
22
22
  --wr-alert-title: var(--wr-color-info);
23
- --wr-alert-message: var(--wr-color-dark);
23
+ --wr-alert-message: var(--wr-color-on-surface);
24
24
  --wr-alert-close: var(--wr-color-info);
25
25
 
26
26
  background: var(--wr-alert-bg);
@@ -109,22 +109,22 @@ $alert-colors: (
109
109
  &--neutral {
110
110
  --wr-alert-bg: var(--wr-color-medium-soft);
111
111
  --wr-alert-border: var(--wr-color-medium-soft-border);
112
- --wr-alert-title: var(--wr-color-dark);
113
- --wr-alert-message: var(--wr-color-medium);
114
- --wr-alert-close: var(--wr-color-medium);
112
+ --wr-alert-title: var(--wr-color-on-surface);
113
+ --wr-alert-message: var(--wr-color-on-surface-muted);
114
+ --wr-alert-close: var(--wr-color-on-surface-muted);
115
115
 
116
116
  .wr-alert__icon {
117
- color: var(--wr-color-medium);
117
+ color: var(--wr-color-on-surface-muted);
118
118
  }
119
119
  }
120
120
 
121
121
  // Offline — inverse chip. Auto-flips via the theme tokens: dark bg +
122
122
  // light text in light theme; light bg + dark text in dark theme.
123
123
  &--offline {
124
- --wr-alert-bg: var(--wr-color-dark);
125
- --wr-alert-border: var(--wr-color-dark);
126
- --wr-alert-title: var(--wr-color-white);
127
- --wr-alert-message: var(--wr-color-white);
128
- --wr-alert-close: var(--wr-color-white);
124
+ --wr-alert-bg: var(--wr-color-on-surface);
125
+ --wr-alert-border: var(--wr-color-on-surface);
126
+ --wr-alert-title: var(--wr-color-surface);
127
+ --wr-alert-message: var(--wr-color-surface);
128
+ --wr-alert-close: var(--wr-color-surface);
129
129
  }
130
130
  }
@@ -3,7 +3,7 @@
3
3
  .wr-anchor {
4
4
  display: block;
5
5
  font-family: var(--wr-font-family-base);
6
- border-left: 1.5px solid var(--wr-color-light);
6
+ border-left: 1.5px solid var(--wr-color-outline);
7
7
  padding-left: 0.875rem;
8
8
 
9
9
  &__list {
@@ -25,7 +25,7 @@
25
25
  display: block;
26
26
  padding: 0.25rem 0.5rem;
27
27
  border-radius: var(--wr-border-radius-sm);
28
- color: var(--wr-color-medium);
28
+ color: var(--wr-color-on-surface-muted);
29
29
  font-size: var(--wr-text-sm);
30
30
  line-height: var(--wr-leading-snug);
31
31
  transition:
@@ -44,7 +44,7 @@
44
44
  }
45
45
 
46
46
  &:hover {
47
- color: var(--wr-color-dark);
47
+ color: var(--wr-color-on-surface);
48
48
  }
49
49
 
50
50
  &--active {
@@ -29,7 +29,7 @@
29
29
  border: 0;
30
30
  border-radius: 50%;
31
31
  background: var(--wr-color-primary);
32
- color: var(--wr-color-primary-contrast, var(--wr-color-white));
32
+ color: var(--wr-color-primary-contrast, var(--wr-color-surface));
33
33
  cursor: pointer;
34
34
  box-shadow: var(--wr-shadow-float);
35
35
  transition:
@@ -11,9 +11,9 @@
11
11
  white-space: nowrap;
12
12
 
13
13
  // Defaults — color and style modifiers override
14
- --wr-tag-color: var(--wr-color-dark);
15
- --wr-tag-bg: var(--wr-color-white);
16
- --wr-tag-border: var(--wr-color-light);
14
+ --wr-tag-color: var(--wr-color-on-surface);
15
+ --wr-tag-bg: var(--wr-color-surface);
16
+ --wr-tag-border: var(--wr-color-outline);
17
17
  --wr-tag-radius: var(--wr-border-radius-sm);
18
18
  --wr-tag-padding-y: 0.125rem;
19
19
  --wr-tag-padding-x: 0.5rem;
@@ -3,13 +3,13 @@
3
3
  .wr-bar-chart {
4
4
  display: block;
5
5
  font-family: var(--wr-font-family-base);
6
- color: var(--wr-color-dark);
6
+ color: var(--wr-color-on-surface);
7
7
 
8
8
  &__plot {
9
9
  display: flex;
10
10
  align-items: flex-end;
11
11
  gap: 0.5rem;
12
- border-bottom: 1px solid var(--wr-color-light);
12
+ border-bottom: 1px solid var(--wr-color-outline);
13
13
  }
14
14
 
15
15
  &__column {
@@ -25,7 +25,7 @@
25
25
 
26
26
  &__value {
27
27
  font-size: var(--wr-text-xs);
28
- color: var(--wr-color-medium);
28
+ color: var(--wr-color-on-surface-muted);
29
29
  font-variant-numeric: tabular-nums;
30
30
  line-height: 1;
31
31
  }
@@ -47,7 +47,7 @@
47
47
  flex: 1 1 0;
48
48
  text-align: center;
49
49
  font-size: var(--wr-text-xs);
50
- color: var(--wr-color-medium);
50
+ color: var(--wr-color-on-surface-muted);
51
51
  overflow: hidden;
52
52
  text-overflow: ellipsis;
53
53
  white-space: nowrap;
@@ -35,7 +35,7 @@
35
35
  position: relative;
36
36
  display: grid;
37
37
  border-radius: var(--wr-border-glow-radius);
38
- background: var(--wr-border-glow-bg, var(--wr-color-white, #fff));
38
+ background: var(--wr-border-glow-bg, var(--wr-color-surface, #fff));
39
39
  overflow: visible;
40
40
  isolation: isolate;
41
41
  transform: translate3d(0, 0, 0.01px); // create a new layer to keep blends tidy
@@ -43,7 +43,7 @@
43
43
  // CSS borders + `border-radius` leave 1px subpixel notches at the corners
44
44
  // where the mask layers meet the curve, but inset shadows hug the radius
45
45
  // pixel-perfect.
46
- box-shadow: inset 0 0 0 1px var(--wr-border-glow-outline, var(--wr-color-light, rgb(255 255 255 / 15%)));
46
+ box-shadow: inset 0 0 0 1px var(--wr-border-glow-outline, var(--wr-color-outline, rgb(255 255 255 / 15%)));
47
47
 
48
48
  &::before,
49
49
  &::after,
@@ -72,7 +72,7 @@
72
72
  &::before {
73
73
  border: 1px solid transparent;
74
74
  background:
75
- linear-gradient(var(--wr-border-glow-bg, var(--wr-color-white, #fff)) 0 100%) padding-box,
75
+ linear-gradient(var(--wr-border-glow-bg, var(--wr-color-surface, #fff)) 0 100%) padding-box,
76
76
  linear-gradient(rgb(255 255 255 / 0%) 0 100%) border-box,
77
77
  var(--wr-border-glow-gradient-one, radial-gradient(at 80% 55%, hsl(268deg 100% 76%) 0px, transparent 50%))
78
78
  border-box,
@@ -7,10 +7,10 @@
7
7
  .wr-breadcrumbs {
8
8
  --wr-breadcrumbs-separator: '/';
9
9
  --wr-breadcrumbs-gap: 0.5rem;
10
- --wr-breadcrumbs-color: rgba(var(--wr-color-dark-rgb), 0.6);
11
- --wr-breadcrumbs-current-color: var(--wr-color-dark);
10
+ --wr-breadcrumbs-color: rgba(var(--wr-color-on-surface-rgb), 0.6);
11
+ --wr-breadcrumbs-current-color: var(--wr-color-on-surface);
12
12
  --wr-breadcrumbs-link-color: var(--wr-color-primary);
13
- --wr-breadcrumbs-separator-color: rgba(var(--wr-color-dark-rgb), 0.3);
13
+ --wr-breadcrumbs-separator-color: rgba(var(--wr-color-on-surface-rgb), 0.3);
14
14
 
15
15
  display: block;
16
16
  font-family: var(--wr-font-family-base);
@@ -5,7 +5,7 @@
5
5
  // open state below rewrites the dasharray/offset so the strokes slide
6
6
  // into a close mark.
7
7
  --wr-burger-size: 2.5rem;
8
- --wr-burger-color: var(--wr-color-dark);
8
+ --wr-burger-color: var(--wr-color-on-surface);
9
9
  --wr-burger-color-opened: var(--wr-color-primary);
10
10
  --wr-burger-stroke-width: 6px;
11
11
  --wr-burger-duration: 0.5s;
@@ -17,9 +17,9 @@
17
17
  white-space: nowrap;
18
18
 
19
19
  // Defaults — modifiers override
20
- --wr-btn-color: var(--wr-color-dark);
21
- --wr-btn-bg: var(--wr-color-white);
22
- --wr-btn-border: var(--wr-color-light);
20
+ --wr-btn-color: var(--wr-color-on-surface);
21
+ --wr-btn-bg: var(--wr-color-surface);
22
+ --wr-btn-border: var(--wr-color-outline);
23
23
  --wr-btn-radius: var(--wr-control-radius-md);
24
24
  --wr-btn-gap: 0.375rem;
25
25
  --wr-btn-padding-y: var(--wr-control-padding-y-md);
@@ -45,7 +45,7 @@
45
45
  }
46
46
 
47
47
  &:active {
48
- --wr-btn-bg: rgba(var(--wr-color-light-rgb), 0.6);
48
+ --wr-btn-bg: rgba(var(--wr-color-outline-rgb), 0.6);
49
49
  }
50
50
 
51
51
  &[disabled],
@@ -2,10 +2,10 @@
2
2
 
3
3
  .wr-calendar {
4
4
  --wr-calendar-width: 17rem;
5
- --wr-calendar-bg: var(--wr-color-white);
6
- --wr-calendar-border: var(--wr-color-light);
7
- --wr-calendar-color: var(--wr-color-dark);
8
- --wr-calendar-muted: var(--wr-color-medium);
5
+ --wr-calendar-bg: var(--wr-color-surface);
6
+ --wr-calendar-border: var(--wr-color-outline);
7
+ --wr-calendar-color: var(--wr-color-on-surface);
8
+ --wr-calendar-muted: var(--wr-color-on-surface-muted);
9
9
  --wr-calendar-radius: var(--wr-border-radius-base);
10
10
  --wr-calendar-day-radius: var(--wr-border-radius-sm);
11
11
  --wr-calendar-cell-size: 2rem;
@@ -3,7 +3,7 @@
3
3
  .wr-calendar-heatmap {
4
4
  display: inline-block;
5
5
  font-family: var(--wr-font-family-base);
6
- color: var(--wr-color-medium);
6
+ color: var(--wr-color-on-surface-muted);
7
7
 
8
8
  &__grid {
9
9
  display: grid;
@@ -20,7 +20,7 @@
20
20
  grid-template-rows: repeat(7, var(--wr-heatmap-cell-size));
21
21
  gap: var(--wr-heatmap-cell-gap);
22
22
  font-size: var(--wr-text-xs);
23
- color: var(--wr-color-medium);
23
+ color: var(--wr-color-on-surface-muted);
24
24
  align-items: center;
25
25
  }
26
26
 
@@ -43,7 +43,7 @@
43
43
  &__months {
44
44
  grid-area: months;
45
45
  font-size: var(--wr-text-xs);
46
- color: var(--wr-color-medium);
46
+ color: var(--wr-color-on-surface-muted);
47
47
  }
48
48
 
49
49
  &__month {
@@ -1,9 +1,9 @@
1
1
  @use '../../theme/styles' as theme;
2
2
 
3
3
  .wr-card {
4
- --wr-card-bg: var(--wr-color-white);
5
- --wr-card-color: var(--wr-color-dark);
6
- --wr-card-border: var(--wr-color-light);
4
+ --wr-card-bg: var(--wr-color-surface);
5
+ --wr-card-color: var(--wr-color-on-surface);
6
+ --wr-card-border: var(--wr-color-outline);
7
7
  --wr-card-radius: var(--wr-border-radius-base);
8
8
  --wr-card-padding-y: 1rem;
9
9
  --wr-card-padding-x: 1.25rem;
@@ -75,14 +75,14 @@
75
75
  align-items: center;
76
76
  justify-content: center;
77
77
  @include theme.smooth-br(var(--wr-card-radius));
78
- background: rgba(var(--wr-color-white-rgb), 0.5);
78
+ background: rgba(var(--wr-color-surface-rgb), 0.5);
79
79
  pointer-events: none;
80
80
  }
81
81
 
82
82
  &__spinner {
83
83
  width: 1.5rem;
84
84
  height: 1.5rem;
85
- border: 2px solid rgb(var(--wr-color-medium-rgb) / 30%);
85
+ border: 2px solid rgb(var(--wr-color-on-surface-muted-rgb) / 30%);
86
86
  border-top-color: var(--wr-color-primary);
87
87
  border-radius: 50%;
88
88
  animation: wr-card-spin 0.7s linear infinite;
@@ -50,8 +50,8 @@
50
50
  justify-content: center;
51
51
  border: 0;
52
52
  border-radius: 50%;
53
- background: rgba(var(--wr-color-white-rgb), 0.85);
54
- color: var(--wr-color-dark);
53
+ background: rgba(var(--wr-color-surface-rgb), 0.85);
54
+ color: var(--wr-color-on-surface);
55
55
  cursor: pointer;
56
56
  box-shadow: var(--wr-shadow-sm);
57
57
  backdrop-filter: blur(4px);
@@ -60,7 +60,7 @@
60
60
  transform var(--wr-transition-base);
61
61
 
62
62
  &:hover {
63
- background: var(--wr-color-white);
63
+ background: var(--wr-color-surface);
64
64
  transform: translateY(-50%) scale(1.05);
65
65
  }
66
66
 
@@ -87,7 +87,7 @@
87
87
  height: 0.5rem;
88
88
  border: 0;
89
89
  border-radius: 50%;
90
- background: rgba(var(--wr-color-white-rgb), 0.55);
90
+ background: rgba(var(--wr-color-surface-rgb), 0.55);
91
91
  box-shadow: 0 0 0 1px rgba(var(--wr-color-black-rgb), 0.15);
92
92
  cursor: pointer;
93
93
  transition:
@@ -98,7 +98,7 @@
98
98
  &--active {
99
99
  width: 1.25rem;
100
100
  border-radius: var(--wr-border-radius-pill);
101
- background: var(--wr-color-white);
101
+ background: var(--wr-color-surface);
102
102
  }
103
103
  }
104
104
  }