ngwr 15.0.1 → 15.2.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 (420) hide show
  1. package/anchor/styles/_index.scss +13 -2
  2. package/bits/aurora/styles/_rules.scss +11 -0
  3. package/bits/dot-grid/dot-grid.scss +1 -0
  4. package/bits/dot-grid/styles/_index.scss +8 -0
  5. package/bits/dot-grid/styles/_rules.scss +54 -0
  6. package/bits/iridescence/iridescence.scss +1 -0
  7. package/bits/iridescence/styles/_index.scss +8 -0
  8. package/bits/iridescence/styles/_rules.scss +72 -0
  9. package/bits/marquee/styles/_rules.scss +7 -3
  10. package/bits/ripple-grid/ripple-grid.scss +1 -0
  11. package/bits/ripple-grid/styles/_index.scss +8 -0
  12. package/bits/ripple-grid/styles/_rules.scss +63 -0
  13. package/bits/spotlight-card/styles/_rules.scss +7 -4
  14. package/bits/star-border/styles/_rules.scss +5 -2
  15. package/bits/threads/styles/_index.scss +8 -0
  16. package/bits/threads/styles/_rules.scss +76 -0
  17. package/bits/threads/threads.scss +1 -0
  18. package/bits/waves/styles/_rules.scss +8 -1
  19. package/charts/bar-chart/styles/_index.scss +607 -7
  20. package/charts/boxplot-chart/styles/_index.scss +297 -0
  21. package/charts/bullet-chart/styles/_index.scss +268 -0
  22. package/charts/calendar-heatmap/styles/_index.scss +25 -3
  23. package/charts/candlestick-chart/styles/_index.scss +307 -0
  24. package/charts/chart-legend/styles/_index.scss +143 -0
  25. package/charts/core/styles/_index.scss +30 -0
  26. package/charts/donut-chart/styles/_index.scss +39 -3
  27. package/charts/funnel-chart/styles/_index.scss +237 -0
  28. package/charts/gauge/styles/_index.scss +4 -2
  29. package/charts/heatmap-chart/styles/_index.scss +329 -0
  30. package/charts/line-chart/styles/_index.scss +141 -8
  31. package/charts/meter-group/styles/_index.scss +44 -13
  32. package/charts/radar-chart/styles/_index.scss +206 -0
  33. package/charts/scatter-chart/styles/_index.scss +245 -0
  34. package/charts/sparkline/styles/_index.scss +10 -1
  35. package/charts/treemap-chart/styles/_index.scss +215 -0
  36. package/charts/waterfall-chart/styles/_index.scss +321 -0
  37. package/collapse/styles/_index.scss +6 -1
  38. package/fesm2022/ngwr-affix.mjs +3 -3
  39. package/fesm2022/ngwr-alert.mjs +3 -3
  40. package/fesm2022/ngwr-anchor.mjs +3 -3
  41. package/fesm2022/ngwr-avatar.mjs +3 -3
  42. package/fesm2022/ngwr-back-top.mjs +3 -3
  43. package/fesm2022/ngwr-badge.mjs +6 -6
  44. package/fesm2022/ngwr-bits-aurora.mjs +30 -38
  45. package/fesm2022/ngwr-bits-aurora.mjs.map +1 -1
  46. package/fesm2022/ngwr-bits-blur-text.mjs +3 -3
  47. package/fesm2022/ngwr-bits-border-glow-testing.mjs.map +1 -1
  48. package/fesm2022/ngwr-bits-border-glow.mjs +11 -5
  49. package/fesm2022/ngwr-bits-border-glow.mjs.map +1 -1
  50. package/fesm2022/ngwr-bits-circular-text.mjs +3 -3
  51. package/fesm2022/ngwr-bits-click-spark.mjs +3 -3
  52. package/fesm2022/ngwr-bits-confetti.mjs +3 -3
  53. package/fesm2022/ngwr-bits-decrypt-text.mjs +3 -3
  54. package/fesm2022/ngwr-bits-dot-grid-testing.mjs +40 -0
  55. package/fesm2022/ngwr-bits-dot-grid-testing.mjs.map +1 -0
  56. package/fesm2022/ngwr-bits-dot-grid.mjs +482 -0
  57. package/fesm2022/ngwr-bits-dot-grid.mjs.map +1 -0
  58. package/fesm2022/ngwr-bits-falling-text.mjs +3 -3
  59. package/fesm2022/ngwr-bits-fuzzy-text.mjs +3 -3
  60. package/fesm2022/ngwr-bits-glitch-text.mjs +3 -3
  61. package/fesm2022/ngwr-bits-gradient-text.mjs +3 -3
  62. package/fesm2022/ngwr-bits-iridescence-testing.mjs +31 -0
  63. package/fesm2022/ngwr-bits-iridescence-testing.mjs.map +1 -0
  64. package/fesm2022/ngwr-bits-iridescence.mjs +591 -0
  65. package/fesm2022/ngwr-bits-iridescence.mjs.map +1 -0
  66. package/fesm2022/ngwr-bits-marquee-testing.mjs +1 -1
  67. package/fesm2022/ngwr-bits-marquee-testing.mjs.map +1 -1
  68. package/fesm2022/ngwr-bits-marquee.mjs +7 -7
  69. package/fesm2022/ngwr-bits-marquee.mjs.map +1 -1
  70. package/fesm2022/ngwr-bits-ripple-grid-testing.mjs +40 -0
  71. package/fesm2022/ngwr-bits-ripple-grid-testing.mjs.map +1 -0
  72. package/fesm2022/ngwr-bits-ripple-grid.mjs +805 -0
  73. package/fesm2022/ngwr-bits-ripple-grid.mjs.map +1 -0
  74. package/fesm2022/ngwr-bits-rotating-text.mjs +3 -3
  75. package/fesm2022/ngwr-bits-shiny-text.mjs +6 -6
  76. package/fesm2022/ngwr-bits-splash-cursor.mjs +3 -3
  77. package/fesm2022/ngwr-bits-split-text.mjs +3 -3
  78. package/fesm2022/ngwr-bits-spotlight-card-testing.mjs +1 -1
  79. package/fesm2022/ngwr-bits-spotlight-card-testing.mjs.map +1 -1
  80. package/fesm2022/ngwr-bits-spotlight-card.mjs +10 -10
  81. package/fesm2022/ngwr-bits-spotlight-card.mjs.map +1 -1
  82. package/fesm2022/ngwr-bits-star-border-testing.mjs +1 -1
  83. package/fesm2022/ngwr-bits-star-border-testing.mjs.map +1 -1
  84. package/fesm2022/ngwr-bits-star-border.mjs +7 -7
  85. package/fesm2022/ngwr-bits-star-border.mjs.map +1 -1
  86. package/fesm2022/ngwr-bits-threads-testing.mjs +41 -0
  87. package/fesm2022/ngwr-bits-threads-testing.mjs.map +1 -0
  88. package/fesm2022/ngwr-bits-threads.mjs +482 -0
  89. package/fesm2022/ngwr-bits-threads.mjs.map +1 -0
  90. package/fesm2022/ngwr-bits-tilt-card.mjs +6 -6
  91. package/fesm2022/ngwr-bits-typewriter.mjs +3 -3
  92. package/fesm2022/ngwr-bits-waves-testing.mjs.map +1 -1
  93. package/fesm2022/ngwr-bits-waves.mjs +60 -41
  94. package/fesm2022/ngwr-bits-waves.mjs.map +1 -1
  95. package/fesm2022/ngwr-breadcrumbs.mjs +8 -8
  96. package/fesm2022/ngwr-breadcrumbs.mjs.map +1 -1
  97. package/fesm2022/ngwr-burger.mjs +3 -3
  98. package/fesm2022/ngwr-button.mjs +6 -6
  99. package/fesm2022/ngwr-calendar.mjs +3 -3
  100. package/fesm2022/ngwr-card.mjs +9 -9
  101. package/fesm2022/ngwr-carousel.mjs +6 -6
  102. package/fesm2022/ngwr-cascader.mjs +5 -5
  103. package/fesm2022/ngwr-cascader.mjs.map +1 -1
  104. package/fesm2022/ngwr-charts-bar-chart-testing.mjs +127 -3
  105. package/fesm2022/ngwr-charts-bar-chart-testing.mjs.map +1 -1
  106. package/fesm2022/ngwr-charts-bar-chart.mjs +683 -49
  107. package/fesm2022/ngwr-charts-bar-chart.mjs.map +1 -1
  108. package/fesm2022/ngwr-charts-boxplot-chart-testing.mjs +161 -0
  109. package/fesm2022/ngwr-charts-boxplot-chart-testing.mjs.map +1 -0
  110. package/fesm2022/ngwr-charts-boxplot-chart.mjs +517 -0
  111. package/fesm2022/ngwr-charts-boxplot-chart.mjs.map +1 -0
  112. package/fesm2022/ngwr-charts-bullet-chart-testing.mjs +68 -0
  113. package/fesm2022/ngwr-charts-bullet-chart-testing.mjs.map +1 -0
  114. package/fesm2022/ngwr-charts-bullet-chart.mjs +459 -0
  115. package/fesm2022/ngwr-charts-bullet-chart.mjs.map +1 -0
  116. package/fesm2022/ngwr-charts-calendar-heatmap-testing.mjs +27 -0
  117. package/fesm2022/ngwr-charts-calendar-heatmap-testing.mjs.map +1 -1
  118. package/fesm2022/ngwr-charts-calendar-heatmap.mjs +96 -17
  119. package/fesm2022/ngwr-charts-calendar-heatmap.mjs.map +1 -1
  120. package/fesm2022/ngwr-charts-candlestick-chart-testing.mjs +107 -0
  121. package/fesm2022/ngwr-charts-candlestick-chart-testing.mjs.map +1 -0
  122. package/fesm2022/ngwr-charts-candlestick-chart.mjs +508 -0
  123. package/fesm2022/ngwr-charts-candlestick-chart.mjs.map +1 -0
  124. package/fesm2022/ngwr-charts-chart-legend-testing.mjs +126 -0
  125. package/fesm2022/ngwr-charts-chart-legend-testing.mjs.map +1 -0
  126. package/fesm2022/ngwr-charts-chart-legend.mjs +251 -0
  127. package/fesm2022/ngwr-charts-chart-legend.mjs.map +1 -0
  128. package/fesm2022/ngwr-charts-core.mjs +383 -0
  129. package/fesm2022/ngwr-charts-core.mjs.map +1 -0
  130. package/fesm2022/ngwr-charts-donut-chart-testing.mjs +10 -1
  131. package/fesm2022/ngwr-charts-donut-chart-testing.mjs.map +1 -1
  132. package/fesm2022/ngwr-charts-donut-chart.mjs +187 -31
  133. package/fesm2022/ngwr-charts-donut-chart.mjs.map +1 -1
  134. package/fesm2022/ngwr-charts-funnel-chart-testing.mjs +100 -0
  135. package/fesm2022/ngwr-charts-funnel-chart-testing.mjs.map +1 -0
  136. package/fesm2022/ngwr-charts-funnel-chart.mjs +415 -0
  137. package/fesm2022/ngwr-charts-funnel-chart.mjs.map +1 -0
  138. package/fesm2022/ngwr-charts-gauge-testing.mjs +9 -3
  139. package/fesm2022/ngwr-charts-gauge-testing.mjs.map +1 -1
  140. package/fesm2022/ngwr-charts-gauge.mjs +9 -15
  141. package/fesm2022/ngwr-charts-gauge.mjs.map +1 -1
  142. package/fesm2022/ngwr-charts-heatmap-chart-testing.mjs +120 -0
  143. package/fesm2022/ngwr-charts-heatmap-chart-testing.mjs.map +1 -0
  144. package/fesm2022/ngwr-charts-heatmap-chart.mjs +519 -0
  145. package/fesm2022/ngwr-charts-heatmap-chart.mjs.map +1 -0
  146. package/fesm2022/ngwr-charts-line-chart-testing.mjs +43 -1
  147. package/fesm2022/ngwr-charts-line-chart-testing.mjs.map +1 -1
  148. package/fesm2022/ngwr-charts-line-chart.mjs +436 -122
  149. package/fesm2022/ngwr-charts-line-chart.mjs.map +1 -1
  150. package/fesm2022/ngwr-charts-meter-group-testing.mjs +14 -2
  151. package/fesm2022/ngwr-charts-meter-group-testing.mjs.map +1 -1
  152. package/fesm2022/ngwr-charts-meter-group.mjs +101 -32
  153. package/fesm2022/ngwr-charts-meter-group.mjs.map +1 -1
  154. package/fesm2022/ngwr-charts-radar-chart-testing.mjs +98 -0
  155. package/fesm2022/ngwr-charts-radar-chart-testing.mjs.map +1 -0
  156. package/fesm2022/ngwr-charts-radar-chart.mjs +720 -0
  157. package/fesm2022/ngwr-charts-radar-chart.mjs.map +1 -0
  158. package/fesm2022/ngwr-charts-scatter-chart-testing.mjs +132 -0
  159. package/fesm2022/ngwr-charts-scatter-chart-testing.mjs.map +1 -0
  160. package/fesm2022/ngwr-charts-scatter-chart.mjs +545 -0
  161. package/fesm2022/ngwr-charts-scatter-chart.mjs.map +1 -0
  162. package/fesm2022/ngwr-charts-sparkline-testing.mjs.map +1 -1
  163. package/fesm2022/ngwr-charts-sparkline.mjs +14 -16
  164. package/fesm2022/ngwr-charts-sparkline.mjs.map +1 -1
  165. package/fesm2022/ngwr-charts-treemap-chart-testing.mjs +103 -0
  166. package/fesm2022/ngwr-charts-treemap-chart-testing.mjs.map +1 -0
  167. package/fesm2022/ngwr-charts-treemap-chart.mjs +535 -0
  168. package/fesm2022/ngwr-charts-treemap-chart.mjs.map +1 -0
  169. package/fesm2022/ngwr-charts-waterfall-chart-testing.mjs +131 -0
  170. package/fesm2022/ngwr-charts-waterfall-chart-testing.mjs.map +1 -0
  171. package/fesm2022/ngwr-charts-waterfall-chart.mjs +462 -0
  172. package/fesm2022/ngwr-charts-waterfall-chart.mjs.map +1 -0
  173. package/fesm2022/ngwr-checkbox.mjs +6 -6
  174. package/fesm2022/ngwr-clipboard.mjs +3 -3
  175. package/fesm2022/ngwr-collapse.mjs +9 -9
  176. package/fesm2022/ngwr-color-picker.mjs +6 -6
  177. package/fesm2022/ngwr-command-palette.mjs +3 -3
  178. package/fesm2022/ngwr-compare.mjs +3 -3
  179. package/fesm2022/ngwr-context-menu.mjs +12 -12
  180. package/fesm2022/ngwr-cookie.mjs +3 -3
  181. package/fesm2022/ngwr-counter.mjs +6 -6
  182. package/fesm2022/ngwr-date-picker.mjs +21 -21
  183. package/fesm2022/ngwr-date.mjs +6 -6
  184. package/fesm2022/ngwr-density.mjs +6 -6
  185. package/fesm2022/ngwr-descriptions.mjs +6 -6
  186. package/fesm2022/ngwr-dialog.mjs +15 -15
  187. package/fesm2022/ngwr-directives.mjs +12 -12
  188. package/fesm2022/ngwr-divider.mjs +3 -3
  189. package/fesm2022/ngwr-drawer.mjs +18 -18
  190. package/fesm2022/ngwr-dropdown.mjs +9 -9
  191. package/fesm2022/ngwr-editor.mjs +3 -3
  192. package/fesm2022/ngwr-empty.mjs +3 -3
  193. package/fesm2022/ngwr-event-calendar.mjs +6 -6
  194. package/fesm2022/ngwr-file-upload.mjs +3 -3
  195. package/fesm2022/ngwr-form.mjs +9 -9
  196. package/fesm2022/ngwr-graph.mjs +6 -6
  197. package/fesm2022/ngwr-hotkey.mjs +6 -6
  198. package/fesm2022/ngwr-i18n-ar.mjs +90 -4
  199. package/fesm2022/ngwr-i18n-ar.mjs.map +1 -1
  200. package/fesm2022/ngwr-i18n-cs.mjs +90 -4
  201. package/fesm2022/ngwr-i18n-cs.mjs.map +1 -1
  202. package/fesm2022/ngwr-i18n-de.mjs +90 -4
  203. package/fesm2022/ngwr-i18n-de.mjs.map +1 -1
  204. package/fesm2022/ngwr-i18n-en.mjs +90 -4
  205. package/fesm2022/ngwr-i18n-en.mjs.map +1 -1
  206. package/fesm2022/ngwr-i18n-es.mjs +90 -4
  207. package/fesm2022/ngwr-i18n-es.mjs.map +1 -1
  208. package/fesm2022/ngwr-i18n-fr.mjs +90 -4
  209. package/fesm2022/ngwr-i18n-fr.mjs.map +1 -1
  210. package/fesm2022/ngwr-i18n-he.mjs +90 -4
  211. package/fesm2022/ngwr-i18n-he.mjs.map +1 -1
  212. package/fesm2022/ngwr-i18n-hi.mjs +90 -4
  213. package/fesm2022/ngwr-i18n-hi.mjs.map +1 -1
  214. package/fesm2022/ngwr-i18n-id.mjs +90 -4
  215. package/fesm2022/ngwr-i18n-id.mjs.map +1 -1
  216. package/fesm2022/ngwr-i18n-it.mjs +90 -4
  217. package/fesm2022/ngwr-i18n-it.mjs.map +1 -1
  218. package/fesm2022/ngwr-i18n-ja.mjs +90 -4
  219. package/fesm2022/ngwr-i18n-ja.mjs.map +1 -1
  220. package/fesm2022/ngwr-i18n-ko.mjs +90 -4
  221. package/fesm2022/ngwr-i18n-ko.mjs.map +1 -1
  222. package/fesm2022/ngwr-i18n-nl.mjs +90 -4
  223. package/fesm2022/ngwr-i18n-nl.mjs.map +1 -1
  224. package/fesm2022/ngwr-i18n-pl.mjs +90 -4
  225. package/fesm2022/ngwr-i18n-pl.mjs.map +1 -1
  226. package/fesm2022/ngwr-i18n-pt.mjs +90 -4
  227. package/fesm2022/ngwr-i18n-pt.mjs.map +1 -1
  228. package/fesm2022/ngwr-i18n-ru.mjs +90 -4
  229. package/fesm2022/ngwr-i18n-ru.mjs.map +1 -1
  230. package/fesm2022/ngwr-i18n-sv.mjs +90 -4
  231. package/fesm2022/ngwr-i18n-sv.mjs.map +1 -1
  232. package/fesm2022/ngwr-i18n-tr.mjs +90 -4
  233. package/fesm2022/ngwr-i18n-tr.mjs.map +1 -1
  234. package/fesm2022/ngwr-i18n-uk.mjs +90 -4
  235. package/fesm2022/ngwr-i18n-uk.mjs.map +1 -1
  236. package/fesm2022/ngwr-i18n-vi.mjs +90 -4
  237. package/fesm2022/ngwr-i18n-vi.mjs.map +1 -1
  238. package/fesm2022/ngwr-i18n-zh-tw.mjs +90 -4
  239. package/fesm2022/ngwr-i18n-zh-tw.mjs.map +1 -1
  240. package/fesm2022/ngwr-i18n-zh.mjs +90 -4
  241. package/fesm2022/ngwr-i18n-zh.mjs.map +1 -1
  242. package/fesm2022/ngwr-i18n.mjs +9 -9
  243. package/fesm2022/ngwr-icon.mjs +6 -6
  244. package/fesm2022/ngwr-image-cropper.mjs +3 -3
  245. package/fesm2022/ngwr-input-number.mjs +3 -3
  246. package/fesm2022/ngwr-input-otp.mjs +3 -3
  247. package/fesm2022/ngwr-input.mjs +15 -15
  248. package/fesm2022/ngwr-keyboard.mjs +3 -3
  249. package/fesm2022/ngwr-knob.mjs +3 -3
  250. package/fesm2022/ngwr-layout.mjs +15 -15
  251. package/fesm2022/ngwr-lightbox.mjs +5 -5
  252. package/fesm2022/ngwr-lightbox.mjs.map +1 -1
  253. package/fesm2022/ngwr-list.mjs +8 -8
  254. package/fesm2022/ngwr-list.mjs.map +1 -1
  255. package/fesm2022/ngwr-loading-bar.mjs +6 -6
  256. package/fesm2022/ngwr-mention.mjs +6 -6
  257. package/fesm2022/ngwr-meta.mjs +6 -6
  258. package/fesm2022/ngwr-overlay.mjs +6 -6
  259. package/fesm2022/ngwr-page-header.mjs +3 -3
  260. package/fesm2022/ngwr-pagination.mjs +3 -3
  261. package/fesm2022/ngwr-pipes.mjs +21 -21
  262. package/fesm2022/ngwr-platform.mjs +6 -6
  263. package/fesm2022/ngwr-popconfirm.mjs +6 -6
  264. package/fesm2022/ngwr-popover.mjs +43 -20
  265. package/fesm2022/ngwr-popover.mjs.map +1 -1
  266. package/fesm2022/ngwr-progress.mjs +3 -3
  267. package/fesm2022/ngwr-pull-to-refresh.mjs +3 -3
  268. package/fesm2022/ngwr-qr.mjs +4 -3
  269. package/fesm2022/ngwr-qr.mjs.map +1 -1
  270. package/fesm2022/ngwr-radio.mjs +6 -6
  271. package/fesm2022/ngwr-rating.mjs +3 -3
  272. package/fesm2022/ngwr-result.mjs +12 -12
  273. package/fesm2022/ngwr-schema-form.mjs +3 -3
  274. package/fesm2022/ngwr-scroll.mjs +3 -3
  275. package/fesm2022/ngwr-segmented.mjs +3 -3
  276. package/fesm2022/ngwr-select.mjs +12 -12
  277. package/fesm2022/ngwr-sidebar.mjs +3 -3
  278. package/fesm2022/ngwr-skeleton.mjs +3 -3
  279. package/fesm2022/ngwr-slider.mjs +3 -3
  280. package/fesm2022/ngwr-sortable-list.mjs +11 -11
  281. package/fesm2022/ngwr-sortable-list.mjs.map +1 -1
  282. package/fesm2022/ngwr-speed-dial.mjs +3 -3
  283. package/fesm2022/ngwr-spinner.mjs +3 -3
  284. package/fesm2022/ngwr-splitter.mjs +3 -3
  285. package/fesm2022/ngwr-statistic.mjs +9 -9
  286. package/fesm2022/ngwr-stepper.mjs +6 -6
  287. package/fesm2022/ngwr-storage.mjs +3 -3
  288. package/fesm2022/ngwr-switch.mjs +3 -3
  289. package/fesm2022/ngwr-table.mjs +18 -18
  290. package/fesm2022/ngwr-tabs-router.mjs +3 -3
  291. package/fesm2022/ngwr-tabs.mjs +6 -6
  292. package/fesm2022/ngwr-textarea.mjs +3 -3
  293. package/fesm2022/ngwr-theme.mjs +3 -3
  294. package/fesm2022/ngwr-timeline.mjs +6 -6
  295. package/fesm2022/ngwr-toast-testing.mjs +2 -1
  296. package/fesm2022/ngwr-toast-testing.mjs.map +1 -1
  297. package/fesm2022/ngwr-toast.mjs +34 -15
  298. package/fesm2022/ngwr-toast.mjs.map +1 -1
  299. package/fesm2022/ngwr-toolbar.mjs +3 -3
  300. package/fesm2022/ngwr-tour.mjs +6 -6
  301. package/fesm2022/ngwr-transfer.mjs +3 -3
  302. package/fesm2022/ngwr-tree.mjs +3 -3
  303. package/fesm2022/ngwr-typography.mjs +3 -3
  304. package/fesm2022/ngwr-utils.mjs +31 -1
  305. package/fesm2022/ngwr-utils.mjs.map +1 -1
  306. package/fesm2022/ngwr-version.mjs +1 -1
  307. package/fesm2022/ngwr-version.mjs.map +1 -1
  308. package/fesm2022/ngwr-virtual-scroll.mjs +3 -3
  309. package/fesm2022/ngwr-window-testing.mjs +61 -5
  310. package/fesm2022/ngwr-window-testing.mjs.map +1 -1
  311. package/fesm2022/ngwr-window.mjs +1538 -895
  312. package/fesm2022/ngwr-window.mjs.map +1 -1
  313. package/fesm2022/ngwr.mjs.map +1 -1
  314. package/i18n/ar.json +84 -4
  315. package/i18n/cs.json +84 -4
  316. package/i18n/de.json +84 -4
  317. package/i18n/en.json +84 -4
  318. package/i18n/es.json +84 -4
  319. package/i18n/fr.json +84 -4
  320. package/i18n/he.json +84 -4
  321. package/i18n/hi.json +84 -4
  322. package/i18n/id.json +84 -4
  323. package/i18n/it.json +84 -4
  324. package/i18n/ja.json +84 -4
  325. package/i18n/ko.json +84 -4
  326. package/i18n/nl.json +84 -4
  327. package/i18n/pl.json +84 -4
  328. package/i18n/pt.json +84 -4
  329. package/i18n/ru.json +84 -4
  330. package/i18n/sv.json +84 -4
  331. package/i18n/tr.json +84 -4
  332. package/i18n/uk.json +84 -4
  333. package/i18n/vi.json +84 -4
  334. package/i18n/zh-TW.json +84 -4
  335. package/i18n/zh.json +84 -4
  336. package/llms-full.txt +266 -9
  337. package/llms.txt +30 -7
  338. package/mcp/api.js +69 -1
  339. package/mcp/catalog.js +10 -1
  340. package/mcp/server.js +15 -1
  341. package/mcp/tools.js +122 -26
  342. package/package.json +132 -1
  343. package/popover/styles/_index.scss +75 -7
  344. package/schematics/component-style/index.js +3 -0
  345. package/schematics/migrations/v15/index.js +3 -26
  346. package/schematics/ng-add/index.js +2 -2
  347. package/schematics/use/symbol-map.json +14 -0
  348. package/schematics/utility/global-styles.js +19 -4
  349. package/schematics/utility/v15-moves.js +55 -0
  350. package/skills/ngwr/SKILL.md +8 -2
  351. package/skills/ngwr/references/catalog.md +28 -0
  352. package/skills/ngwr/references/setup.md +5 -4
  353. package/theme/styles/_focus.scss +8 -0
  354. package/toast/styles/_index.scss +103 -12
  355. package/types/ngwr-bits-aurora.d.ts +11 -0
  356. package/types/ngwr-bits-border-glow-testing.d.ts +5 -6
  357. package/types/ngwr-bits-border-glow.d.ts +5 -1
  358. package/types/ngwr-bits-dot-grid-testing.d.ts +92 -0
  359. package/types/ngwr-bits-dot-grid.d.ts +158 -0
  360. package/types/ngwr-bits-iridescence-testing.d.ts +85 -0
  361. package/types/ngwr-bits-iridescence.d.ts +244 -0
  362. package/types/ngwr-bits-ripple-grid-testing.d.ts +96 -0
  363. package/types/ngwr-bits-ripple-grid.d.ts +294 -0
  364. package/types/ngwr-bits-splash-cursor.d.ts +0 -1
  365. package/types/ngwr-bits-spotlight-card-testing.d.ts +3 -1
  366. package/types/ngwr-bits-star-border-testing.d.ts +7 -7
  367. package/types/ngwr-bits-threads-testing.d.ts +97 -0
  368. package/types/ngwr-bits-threads.d.ts +216 -0
  369. package/types/ngwr-bits-waves-testing.d.ts +1 -1
  370. package/types/ngwr-bits-waves.d.ts +20 -3
  371. package/types/ngwr-charts-bar-chart-testing.d.ts +193 -14
  372. package/types/ngwr-charts-bar-chart.d.ts +546 -38
  373. package/types/ngwr-charts-boxplot-chart-testing.d.ts +165 -0
  374. package/types/ngwr-charts-boxplot-chart.d.ts +308 -0
  375. package/types/ngwr-charts-bullet-chart-testing.d.ts +99 -0
  376. package/types/ngwr-charts-bullet-chart.d.ts +262 -0
  377. package/types/ngwr-charts-calendar-heatmap-testing.d.ts +32 -1
  378. package/types/ngwr-charts-calendar-heatmap.d.ts +55 -6
  379. package/types/ngwr-charts-candlestick-chart-testing.d.ts +135 -0
  380. package/types/ngwr-charts-candlestick-chart.d.ts +361 -0
  381. package/types/ngwr-charts-chart-legend-testing.d.ts +84 -0
  382. package/types/ngwr-charts-chart-legend.d.ts +178 -0
  383. package/types/ngwr-charts-core.d.ts +391 -0
  384. package/types/ngwr-charts-donut-chart-testing.d.ts +28 -5
  385. package/types/ngwr-charts-donut-chart.d.ts +124 -12
  386. package/types/ngwr-charts-funnel-chart-testing.d.ts +130 -0
  387. package/types/ngwr-charts-funnel-chart.d.ts +296 -0
  388. package/types/ngwr-charts-gauge-testing.d.ts +5 -0
  389. package/types/ngwr-charts-gauge.d.ts +6 -4
  390. package/types/ngwr-charts-heatmap-chart-testing.d.ts +148 -0
  391. package/types/ngwr-charts-heatmap-chart.d.ts +359 -0
  392. package/types/ngwr-charts-line-chart-testing.d.ts +72 -11
  393. package/types/ngwr-charts-line-chart.d.ts +291 -67
  394. package/types/ngwr-charts-meter-group-testing.d.ts +16 -2
  395. package/types/ngwr-charts-meter-group.d.ts +71 -11
  396. package/types/ngwr-charts-radar-chart-testing.d.ts +162 -0
  397. package/types/ngwr-charts-radar-chart.d.ts +461 -0
  398. package/types/ngwr-charts-scatter-chart-testing.d.ts +147 -0
  399. package/types/ngwr-charts-scatter-chart.d.ts +396 -0
  400. package/types/ngwr-charts-sparkline-testing.d.ts +4 -1
  401. package/types/ngwr-charts-sparkline.d.ts +8 -6
  402. package/types/ngwr-charts-treemap-chart-testing.d.ts +131 -0
  403. package/types/ngwr-charts-treemap-chart.d.ts +295 -0
  404. package/types/ngwr-charts-waterfall-chart-testing.d.ts +149 -0
  405. package/types/ngwr-charts-waterfall-chart.d.ts +338 -0
  406. package/types/ngwr-color-picker.d.ts +0 -21
  407. package/types/ngwr-dropdown.d.ts +0 -52
  408. package/types/ngwr-editor.d.ts +2 -84
  409. package/types/ngwr-i18n.d.ts +0 -15
  410. package/types/ngwr-mention.d.ts +0 -13
  411. package/types/ngwr-popconfirm.d.ts +0 -33
  412. package/types/ngwr-popover.d.ts +29 -53
  413. package/types/ngwr-toast-testing.d.ts +6 -1
  414. package/types/ngwr-tour.d.ts +0 -2
  415. package/types/ngwr-utils.d.ts +49 -7
  416. package/types/ngwr-version.d.ts +1 -1
  417. package/types/ngwr-window-testing.d.ts +65 -7
  418. package/types/ngwr-window.d.ts +831 -207
  419. package/types/ngwr.d.ts +1 -0
  420. package/window/styles/_index.scss +528 -82
@@ -0,0 +1,130 @@
1
+ import { BaseHarnessFilters, ComponentHarness, HarnessPredicate } from "@angular/cdk/testing";
2
+ /** Narrows which `<wr-funnel-chart>` a harness query matches. */
3
+ interface WrFunnelChartHarnessFilters extends BaseHarnessFilters {
4
+ /** Match the chart's accessible name. */
5
+ readonly ariaLabel?: string | RegExp;
6
+ /** Match a chart with a stage of this label. */
7
+ readonly stageLabel?: string | RegExp;
8
+ }
9
+ /** One stage, as the chart draws and announces it. */
10
+ interface WrFunnelChartHarnessStage {
11
+ /** The label printed beside the bar — the full text, ellipsised on screen or not. */
12
+ readonly label: string;
13
+ /**
14
+ * The value printed beside the bar, or `null` when none is: `showValues` is off, or the
15
+ * stage's value is missing.
16
+ */
17
+ readonly value: string | null;
18
+ /**
19
+ * The share of the first stage printed under the value — "40% of first" — or `null` when
20
+ * none is: the first stage, a stage with no such share, or a `conversion` that leaves it
21
+ * off the drawing.
22
+ */
23
+ readonly fromFirst: string | null;
24
+ /** What the stage announces: its label, its value and both conversions in one string. */
25
+ readonly name: string | null;
26
+ /**
27
+ * The bar's width as a percentage of the track, as the component wrote it, or `null` for
28
+ * a missing stage, which draws no bar. A stage of zero or below is `0`: its hairline is
29
+ * the stylesheet's floor, not a width.
30
+ */
31
+ readonly widthPercent: number | null;
32
+ }
33
+ /**
34
+ * One row of the chart's data table (`dataTable`): the stage it reads, as its row header,
35
+ * and its value and both conversions, in the order of the table's columns.
36
+ */
37
+ interface WrFunnelChartTableRow {
38
+ /** The row header — the stage's label. */
39
+ readonly header: string;
40
+ /** The value, the share of the previous stage and the share of the first; `''` for a figure the stage does not have. */
41
+ readonly cells: readonly string[];
42
+ }
43
+ /**
44
+ * Test harness for `<wr-funnel-chart>`.
45
+ *
46
+ * **The bars are read as PERCENTAGES of the track, not as pixels.** Each bar's width is
47
+ * written inline as a share of the full width — the largest stage, or `max` — which is
48
+ * the one number that survives a test with no layout, and the component's whole job. It is
49
+ * read off the `style` ATTRIBUTE rather than through `getCssValue()`, which is
50
+ * `getComputedStyle()`: in a browser that answers the laid-out pixels and in jsdom the
51
+ * declaration, with nothing to say which, and with no inline width at all it would fall
52
+ * back to the stylesheet's and read as a stage of zero. The hairline a stage of zero keeps
53
+ * is the stylesheet's floor, so no method reports it.
54
+ *
55
+ * **Two questions are not one.** A stage's printed text and its accessible name are read
56
+ * separately ({@link WrFunnelChartHarnessStage.value} and {@link WrFunnelChartHarnessStage.name}): the
57
+ * row is an `img`, so the name is what a screen reader gets, and asserting only what is
58
+ * drawn would pass on a stage that announces nothing. The shares printed between the bars
59
+ * are `aria-hidden` for the same reason — {@link getGapLabels} reads what is drawn, the
60
+ * names carry the same figures.
61
+ *
62
+ * **The bands' shapes are not read.** Each is a `clip-path` polygon from one bar's width
63
+ * to the next, and asserting its corners would restate the bar widths this harness already
64
+ * reads; {@link getBandCount} counts them, since where one is missing is the decision
65
+ * worth catching — there is none next to a missing stage.
66
+ *
67
+ * **No hover method.** The tooltip repeats the stage's name, and the chip renders into
68
+ * the overlay container with nothing tying it to this chart, so a query for it would
69
+ * answer with whichever chart's chip is open. The same figures are in the names and in the
70
+ * data table, which {@link getTableRows} reads.
71
+ *
72
+ * @example
73
+ * ```ts
74
+ * const chart = await loader.getHarness(WrFunnelChartHarness);
75
+ *
76
+ * expect(await chart.getLabels()).toEqual(['Visited', 'Signed up', 'Paid']);
77
+ * expect((await chart.getStages())[1].widthPercent).toBe(40);
78
+ * expect(await chart.getGapLabels()).toEqual(['40%', '15%']);
79
+ * ```
80
+ *
81
+ * @see https://ngwr.dev/guides/testing
82
+ */
83
+ export declare class WrFunnelChartHarness extends ComponentHarness {
84
+ static hostSelector: string;
85
+ /** Build a predicate that narrows the query — pass to `getHarness` / `getAllHarnesses`. */
86
+ static with(options?: WrFunnelChartHarnessFilters): HarnessPredicate<WrFunnelChartHarness>;
87
+ /** The chart's accessible name, on the `group` that holds the stages. */
88
+ getAccessibleName(): Promise<string | null>;
89
+ /** Every stage, from the top of the funnel down: what it prints, what it announces and how wide its bar is. */
90
+ getStages(): Promise<WrFunnelChartHarnessStage[]>;
91
+ /** How many stages the chart drew — one per stage given, a missing one included. */
92
+ getStageCount(): Promise<number>;
93
+ /** The labels beside the bars, in order — the full text, ellipsised on screen or not. */
94
+ getLabels(): Promise<string[]>;
95
+ /**
96
+ * The share of the stage above printed in each gap between two bars, from the top down —
97
+ * one entry per gap, so one fewer than there are stages. `null` where none is printed:
98
+ * a stage with no such share, or a `conversion` that leaves it off the drawing.
99
+ */
100
+ getGapLabels(): Promise<(string | null)[]>;
101
+ /**
102
+ * How many bands join two bars: one per gap whose two stages both have a value. A missing
103
+ * stage breaks the funnel on either side of it, since a band across it would draw a drop
104
+ * the data never gave.
105
+ */
106
+ getBandCount(): Promise<number>;
107
+ /** Whether any value is printed beside a bar (`showValues`). */
108
+ hasValues(): Promise<boolean>;
109
+ /** Whether the hidden data table is rendered (`dataTable`). */
110
+ hasDataTable(): Promise<boolean>;
111
+ /**
112
+ * The data table's column headings: the value, the share of the previous stage and the
113
+ * share of the first, in that order.
114
+ *
115
+ * Throws when the chart renders no table (`dataTable` off) rather than answering with
116
+ * no columns.
117
+ */
118
+ getTableColumns(): Promise<string[]>;
119
+ /**
120
+ * The data table's rows, one per stage: its label and its three figures, as a screen
121
+ * reader walks them. A stage above a fixed `max` is drawn full width and tabulated as
122
+ * itself, and a figure the stage does not have is `''`.
123
+ *
124
+ * Throws when the chart renders no table (`dataTable` off), for the reason
125
+ * {@link getTableColumns} gives.
126
+ */
127
+ getTableRows(): Promise<WrFunnelChartTableRow[]>;
128
+ private assertDataTable;
129
+ }
130
+ export type { WrFunnelChartHarnessFilters, WrFunnelChartHarnessStage, WrFunnelChartTableRow };
@@ -0,0 +1,296 @@
1
+ import * as i0 from "@angular/core";
2
+ import { WrChartTableData } from "ngwr/charts/core";
3
+ /**
4
+ * @license
5
+ *
6
+ * Use of this source code is governed by an MIT-style license that can be
7
+ * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
8
+ */
9
+ /** One stage of a `<wr-funnel-chart>`: a name, how many reached it, and optionally its own colour. */
10
+ interface WrFunnelStage {
11
+ /** The stage's name, beside its bar, in the tooltip and as its row header in the data table. */
12
+ readonly label: string;
13
+ /**
14
+ * How many reached the stage. A value that is not a finite number is MISSING: the stage
15
+ * draws no bar and no figure, and no conversion is worked out to or from it. Zero and a
16
+ * negative value draw a hairline, and a negative value is printed as given but gets no
17
+ * conversion, since a share of a negative count means nothing.
18
+ */
19
+ readonly value: number;
20
+ /** Any CSS colour, `var(--wr-…)` included. Left out, the stage takes the chart's `color`. */
21
+ readonly color?: string;
22
+ }
23
+ /**
24
+ * Which conversions a `<wr-funnel-chart>` prints on its drawing: `previous` puts each
25
+ * stage's share of the stage before it between the two bars, `first` puts its share of
26
+ * the first stage under its value, `both` does both and `none` neither. The tooltip, the
27
+ * accessible names and the data table carry both whatever this says.
28
+ */
29
+ type WrFunnelConversion = 'both' | 'previous' | 'first' | 'none';
30
+ /**
31
+ * Funnel chart: how many reached each stage of a sequence — visited, signed up, paid —
32
+ * and how many of them went on to the next. SVG-free and dependency-free: every part is
33
+ * HTML laid out by the stylesheet.
34
+ *
35
+ * @example
36
+ * ```html
37
+ * <wr-funnel-chart
38
+ * [stages]="[
39
+ * { label: 'Visited', value: 12000 },
40
+ * { label: 'Signed up', value: 4800 },
41
+ * { label: 'Activated', value: 2900 },
42
+ * { label: 'Paid', value: 720 }
43
+ * ]"
44
+ * />
45
+ * ```
46
+ *
47
+ * **The bars are honest about the values.** Each stage is a bar centred on the funnel's
48
+ * axis, its width proportional to its value — the largest stage, or `max`, is the full
49
+ * width. The funnel shape between two bars is a band from one bar's width to the next,
50
+ * so it narrows by exactly the drop and carries no value of its own. That is why this is
51
+ * bars and not a trapezoid per stage: a trapezoid's area depends on its neighbour, so a
52
+ * stage would look larger or smaller for what follows it.
53
+ *
54
+ * **What the data does not promise, the drawing does not assume.** A stage larger than
55
+ * the one before it is drawn WIDER and its conversion is above 100%, rather than clamped
56
+ * into a shape a funnel is expected to have. Zero and a negative value draw a hairline,
57
+ * never a negative width; a negative value is printed as given and gets no conversion. A
58
+ * value that is not a finite number is missing: no bar, no figure, no band to or from it,
59
+ * and no conversion that would need it.
60
+ *
61
+ * **The conversions.** Each stage after the first has two: its share of the stage before
62
+ * it, printed between the two bars, and its share of the first stage, printed under its
63
+ * value (`conversion` chooses which are printed). Both are percentages in `LOCALE_ID`,
64
+ * with one fraction digit and two significant digits below 1%, so a real conversion of
65
+ * 0.04% is not printed as `0%`; `percentFormat` replaces that.
66
+ *
67
+ * **What a screen reader gets.** The chart is a named `role="group"` of one `role="img"`
68
+ * per stage, as the bar chart's columns are, each named with its label, its value and both
69
+ * conversions — "Signed up: 4,800, 40% of previous, 40% of first". The whole sentence is a
70
+ * catalog template, one per shape — `funnelChart.stageName` with no conversion,
71
+ * `stageNameOne` with one and `stageNameBoth` with both — so a locale sets its own
72
+ * punctuation and order round the figures. The bands and the percentages between the bars
73
+ * are `aria-hidden`, since every figure they show is in a name already. `dataTable` adds
74
+ * the same figures as a table a reader can walk cell by cell. No part of the chart is a
75
+ * tab stop.
76
+ *
77
+ * Under RTL the labels and the figures swap sides; the bars and the bands are centred,
78
+ * so they read the same in both directions. A label takes its direction from its own
79
+ * text, so a Latin one is ellipsised at its end on an RTL page, and a figure from its
80
+ * own, so a sign stays in front of its digits.
81
+ *
82
+ * @see https://ngwr.dev/charts/funnel-chart
83
+ */
84
+ export declare class WrFunnelChart {
85
+ /**
86
+ * The stages, from the top of the funnel down. Nothing is sorted: a stage is drawn where
87
+ * it is given, so a stage larger than the one before it shows as one.
88
+ */
89
+ readonly stages: import("@angular/core").InputSignal<readonly WrFunnelStage[]>;
90
+ /**
91
+ * Accessible name of the chart, and the data table's caption. Each stage names itself,
92
+ * so this says what the funnel is about. Falls back to `funnelChart.label`, then
93
+ * `'Funnel chart'`.
94
+ */
95
+ readonly ariaLabel: import("@angular/core").InputSignal<string | null>;
96
+ protected readonly resolvedAriaLabel: import("@angular/core").Signal<string>;
97
+ /**
98
+ * The colour of a stage with no `color` of its own. One colour by default, because the
99
+ * stages are one quantity measured along a sequence, not categories: every stage is
100
+ * named in text beside its bar, so colour tells nothing apart here.
101
+ * @default 'var(--wr-color-primary)'
102
+ */
103
+ readonly color: import("@angular/core").InputSignal<string>;
104
+ /**
105
+ * The value of a full-width bar. `0` makes it the largest stage shown; a value above
106
+ * `0` fixes it, so two funnels side by side share one scale. A stage above a fixed
107
+ * `max` is drawn full width, and its figure, the tooltip and the data table still give
108
+ * its own value. @default 0
109
+ */
110
+ readonly max: import("@angular/core").InputSignalWithTransform<number, unknown>;
111
+ /**
112
+ * Which conversions are printed on the drawing: each stage's share of the stage before
113
+ * it, between the two bars (`previous`), its share of the first stage, under its value
114
+ * (`first`), `both` or `none`. The tooltip, every stage's accessible name and the data
115
+ * table carry both whatever this says. @default 'both'
116
+ */
117
+ readonly conversion: import("@angular/core").InputSignal<WrFunnelConversion>;
118
+ /** Print each stage's value beside its bar. @default true */
119
+ readonly showValues: import("@angular/core").InputSignalWithTransform<boolean, any>;
120
+ /**
121
+ * What the values count — visitors, orders — as the heading of the data table's value
122
+ * column. Falls back to `funnelChart.value` ("Value").
123
+ */
124
+ readonly valueLabel: import("@angular/core").InputSignal<string | null>;
125
+ /**
126
+ * Show a tooltip with the stage's label, value and both conversions on hover. Pointer
127
+ * only — each stage's accessible name already carries the same figures. @default true
128
+ */
129
+ readonly tooltip: import("@angular/core").InputSignalWithTransform<boolean, any>;
130
+ /**
131
+ * Writes every value the chart shows: beside the bars, in the tooltip, in the accessible
132
+ * names and in the data table. `null` uses `Intl.NumberFormat` in `LOCALE_ID`.
133
+ */
134
+ readonly valueFormat: import("@angular/core").InputSignal<((value: number) => string) | null>;
135
+ /**
136
+ * Writes every conversion the chart shows, given as a RATIO — `0.25` for a quarter, `1.2`
137
+ * for a stage that grew by a fifth — the number `Intl.NumberFormat`'s `percent` style
138
+ * takes, so one of those can be passed as it is. `null` uses that style in `LOCALE_ID`,
139
+ * with up to one fraction digit, and two significant digits below 1% so a small real
140
+ * conversion is not printed as `0%`.
141
+ */
142
+ readonly percentFormat: import("@angular/core").InputSignal<((ratio: number) => string) | null>;
143
+ /**
144
+ * Render the chart's figures as a table that only assistive technology reaches: a row
145
+ * per stage, headed by its label, with its value and both conversions, each written as
146
+ * the tooltip writes it. A figure the stage does not have is an empty cell.
147
+ *
148
+ * Each stage's accessible name already carries its figures; the table is for a reader
149
+ * who wants to move through them cell by cell, with the column headings read out. It is
150
+ * rendered beside the stages, clipped to nothing: it takes no room, draws nothing and
151
+ * holds no tab stop. @default false
152
+ */
153
+ readonly dataTable: import("@angular/core").InputSignalWithTransform<boolean, any>;
154
+ /** The figures in full, never compact, in `LOCALE_ID` unless `valueFormat` is given. */
155
+ private readonly numbers;
156
+ private readonly locale;
157
+ private readonly percents;
158
+ /** Below 1%, by significant digits, which keep 0.0004 from printing as `0%`. */
159
+ private readonly smallPercents;
160
+ private readonly stageName;
161
+ private readonly valueName;
162
+ private readonly fromPreviousName;
163
+ private readonly fromFirstName;
164
+ private readonly ofPrevious;
165
+ private readonly ofFirst;
166
+ /**
167
+ * A stage's accessible name, one sentence per shape, so a locale places the colon, the
168
+ * commas and the order itself: with no conversion (the first stage, or none that means
169
+ * anything), with one, and with both. Each conversion arrives already worded — "40% of
170
+ * previous" — from the two templates above.
171
+ */
172
+ private readonly stageNameText;
173
+ private readonly stageNameOneText;
174
+ private readonly stageNameBothText;
175
+ private readonly stageEls;
176
+ /** Whether the shares of the previous stage are printed between the bars. */
177
+ protected readonly showPrevious: import("@angular/core").Signal<boolean>;
178
+ /** Whether the shares of the first stage are printed under the values. */
179
+ protected readonly showFirst: import("@angular/core").Signal<boolean>;
180
+ /**
181
+ * Every stage, resolved. The full width is a fixed `max`, else the largest value given,
182
+ * else 1 — so a funnel of zeros draws hairlines rather than dividing by nothing.
183
+ */
184
+ private readonly resolved;
185
+ /**
186
+ * The stages as drawn and announced: every figure written once, here, so the drawing,
187
+ * the names, the tooltip and the table cannot disagree.
188
+ *
189
+ * `band` is the shape between a stage and the one above it: a `clip-path` polygon on
190
+ * the track's width, from the upper bar's width at its top edge to this bar's at its
191
+ * bottom, both centred. There is none next to a missing stage, since joining across one
192
+ * would draw a drop the data never gave.
193
+ */
194
+ protected readonly rows: import("@angular/core").Signal<{
195
+ label: string;
196
+ value: number | null;
197
+ color: string;
198
+ /** The bar's inline width, a percentage of the track. */
199
+ width: string;
200
+ valueText: string;
201
+ previousText: string;
202
+ firstText: string;
203
+ /** The share of the first stage as it is printed under the value: "40% of first". */
204
+ ofFirstText: string;
205
+ /** What the stage announces: its label, its value and both conversions. */
206
+ name: string;
207
+ band: string | null;
208
+ /** The paint of the stage above, where the band starts. */
209
+ bandFrom: string;
210
+ }[]>;
211
+ /**
212
+ * The figures for `dataTable`: the chart's name as the caption, a row per stage, and its
213
+ * value and both conversions as the columns, each cell written as the tooltip writes it.
214
+ */
215
+ protected readonly tableData: import("@angular/core").Signal<WrChartTableData>;
216
+ /**
217
+ * One tooltip for the whole chart, for the stage under the pointer: its label and value
218
+ * as the heading, and a row for each conversion it has. It points at the top edge of the
219
+ * BAR, so the chip sits over the band and the percentage it repeats; a stage of zero
220
+ * keeps its hairline to point at. A missing stage opens none — it has no figure to show.
221
+ */
222
+ protected readonly tip: import("ngwr/popover").WrChartTooltip;
223
+ /**
224
+ * The stage the open tooltip is about, which the active row's wash marks: the hovered
225
+ * stage, unless it is missing. A missing stage opens no tooltip, and `tip.active()` is
226
+ * the hovered index whatever the resolver returned, so without this the wash would mark
227
+ * a row with nothing to show.
228
+ */
229
+ protected readonly activeStage: import("@angular/core").Signal<number | null>;
230
+ /**
231
+ * The accessible name of a stage with a value: the sentence for the conversions it has,
232
+ * each already worded. A missing stage is named by its label alone.
233
+ */
234
+ private nameOf;
235
+ /** A conversion as the chart prints it: through `percentFormat`, or as a percentage in `LOCALE_ID`. */
236
+ private percent;
237
+ static ɵfac: i0.ɵɵFactoryDeclaration<WrFunnelChart, never>;
238
+ static ɵcmp: i0.ɵɵComponentDeclaration<WrFunnelChart, "wr-funnel-chart", never, {
239
+ "stages": {
240
+ "alias": "stages";
241
+ "required": false;
242
+ "isSignal": true;
243
+ };
244
+ "ariaLabel": {
245
+ "alias": "ariaLabel";
246
+ "required": false;
247
+ "isSignal": true;
248
+ };
249
+ "color": {
250
+ "alias": "color";
251
+ "required": false;
252
+ "isSignal": true;
253
+ };
254
+ "max": {
255
+ "alias": "max";
256
+ "required": false;
257
+ "isSignal": true;
258
+ };
259
+ "conversion": {
260
+ "alias": "conversion";
261
+ "required": false;
262
+ "isSignal": true;
263
+ };
264
+ "showValues": {
265
+ "alias": "showValues";
266
+ "required": false;
267
+ "isSignal": true;
268
+ };
269
+ "valueLabel": {
270
+ "alias": "valueLabel";
271
+ "required": false;
272
+ "isSignal": true;
273
+ };
274
+ "tooltip": {
275
+ "alias": "tooltip";
276
+ "required": false;
277
+ "isSignal": true;
278
+ };
279
+ "valueFormat": {
280
+ "alias": "valueFormat";
281
+ "required": false;
282
+ "isSignal": true;
283
+ };
284
+ "percentFormat": {
285
+ "alias": "percentFormat";
286
+ "required": false;
287
+ "isSignal": true;
288
+ };
289
+ "dataTable": {
290
+ "alias": "dataTable";
291
+ "required": false;
292
+ "isSignal": true;
293
+ };
294
+ }, {}, never, never, true, never>;
295
+ }
296
+ export type { WrFunnelConversion, WrFunnelStage };
@@ -35,6 +35,11 @@ export declare class WrGaugeHarness extends ComponentHarness {
35
35
  getMin(): Promise<number>;
36
36
  /** The top of the range, from `aria-valuemax`. */
37
37
  getMax(): Promise<number>;
38
+ /**
39
+ * A finite number off one of the meter's attributes, or a sentence saying which one
40
+ * it lacks. `Number(null)` is `0`, so a lost binding read as a range starting at zero.
41
+ */
42
+ private numberAttribute;
38
43
  /**
39
44
  * The spoken form of the value — the number with its suffix.
40
45
  *
@@ -23,10 +23,12 @@ export declare class WrGauge {
23
23
  readonly value: import("@angular/core").InputSignalWithTransform<number, unknown>;
24
24
  /**
25
25
  * Low end of the scale — where the arc starts. Values below it clamp here.
26
+ * @default 0
26
27
  */
27
28
  readonly min: import("@angular/core").InputSignalWithTransform<number, unknown>;
28
29
  /**
29
30
  * High end of the scale — where the arc completes. Values above it clamp here.
31
+ * @default 100
30
32
  */
31
33
  readonly max: import("@angular/core").InputSignalWithTransform<number, unknown>;
32
34
  /** Diameter in CSS pixels. @default 160 */
@@ -35,12 +37,14 @@ export declare class WrGauge {
35
37
  readonly strokeWidth: import("@angular/core").InputSignalWithTransform<number, unknown>;
36
38
  /**
37
39
  * Colour of the unfilled arc behind the value. Any CSS colour; the default is
38
- * the outline token at 60%, which reads as a hairline in both themes.
40
+ * `--wr-border-base` at 60%, which reads as a hairline in both themes.
41
+ * @default color-mix(in srgb, var(--wr-border-base) 60%, transparent)
39
42
  */
40
43
  readonly trackColor: import("@angular/core").InputSignal<string>;
41
44
  /**
42
45
  * Colour of the filled arc. Any CSS colour — pass an intent token to tie it to
43
46
  * a threshold, e.g. `var(--wr-color-danger)` once the value crosses one.
47
+ * @default 'var(--wr-color-primary)'
44
48
  */
45
49
  readonly valueColor: import("@angular/core").InputSignal<string>;
46
50
  /** Show the value text in the center. @default true */
@@ -61,10 +65,8 @@ export declare class WrGauge {
61
65
  * number.
62
66
  */
63
67
  readonly valueFormat: import("@angular/core").InputSignal<((value: number) => string) | null>;
64
- private readonly locale;
68
+ /** The reading as the centre, the tooltip and `aria-valuetext` write it: never compact. */
65
69
  private readonly numbers;
66
- /** Below one, by significant digits, which keep 0.0004 from rounding to `0`. */
67
- private readonly smallNumbers;
68
70
  private readonly surface;
69
71
  protected readonly cx = 50;
70
72
  protected readonly cy = 50;
@@ -0,0 +1,148 @@
1
+ import { BaseHarnessFilters, ComponentHarness, HarnessPredicate } from "@angular/cdk/testing";
2
+ /** Narrows which `<wr-heatmap-chart>` a harness query matches. */
3
+ interface WrHeatmapChartHarnessFilters extends BaseHarnessFilters {
4
+ /** Match the matrix's accessible name. */
5
+ readonly ariaLabel?: string | RegExp;
6
+ /** Match a chart with a row of this name. */
7
+ readonly rowLabel?: string | RegExp;
8
+ /** Match a chart with a column of this name. */
9
+ readonly columnLabel?: string | RegExp;
10
+ }
11
+ /** One cell as {@link WrHeatmapChartHarness.getCells} reads it, row by row. */
12
+ interface WrHeatmapChartCell {
13
+ /** Its row's position, from 0, in the order of the row names. */
14
+ readonly row: number;
15
+ /** Its column's position, from 0, in the order of the column names. */
16
+ readonly column: number;
17
+ /** Its value, or `null` for an empty cell: no data, which is not zero. */
18
+ readonly value: number | null;
19
+ /**
20
+ * Its level as a place on the scale, as the component wrote it, from 0 (the lowest level)
21
+ * to 1 (the colour itself); `null` for an empty cell, which is hatched instead.
22
+ */
23
+ readonly level: number | null;
24
+ /** Whether it is drawn as empty — hatched and outlined. */
25
+ readonly empty: boolean;
26
+ /** The value printed in it with `showValues`, `''` when it prints none. */
27
+ readonly text: string;
28
+ }
29
+ /**
30
+ * One row of the chart's data table (`dataTable`): the row's name, as its row header,
31
+ * and one cell per column, in the order of the table's columns.
32
+ */
33
+ interface WrHeatmapChartTableRow {
34
+ /** The row header — the row's name. */
35
+ readonly header: string;
36
+ /** Each column's value, written as the tooltip writes it; an empty cell is `noDataLabel`. */
37
+ readonly cells: readonly string[];
38
+ }
39
+ /**
40
+ * Test harness for `<wr-heatmap-chart>`.
41
+ *
42
+ * **A cell's colour is not read.** Its paint is a `color-mix()` the stylesheet works out
43
+ * from the level the component writes on it, and jsdom has no cascade to resolve one — a
44
+ * computed read would answer the same for a cell on the right level and one on the wrong
45
+ * one. What {@link getCells} reads instead is what the component WROTE: the value and the
46
+ * position on `data-*`, the level off the `style` attribute, and whether the cell
47
+ * is drawn empty. Those are what break when the data wiring does.
48
+ *
49
+ * **Whether a printed value fits is not read either.** The stylesheet hides a value wider
50
+ * than its cell by wrapping it out of sight, which takes a layout jsdom does not have;
51
+ * {@link getCells} gives the text the component printed, fitting or not.
52
+ *
53
+ * **Which column names are drawn is not read.** Where the names are wider than their
54
+ * columns the chart draws every n-th one and keeps the rest out of sight, decided by
55
+ * measuring the layout after render — jsdom has none, so every name is drawn there, and a
56
+ * method asking would answer "all of them" for a chart that thins and for one that is
57
+ * broken alike. {@link getColumnLabels} gives every name, drawn or not, as a screen reader
58
+ * reads them.
59
+ *
60
+ * **There is no hover method.** The tooltip renders into the overlay container, tied to
61
+ * nothing a harness could scope it by — the chip is `aria-hidden` and publishes no id —
62
+ * and the numbers it shows are on the cells and in the data table, which
63
+ * {@link getTableRows} reads, and which is where a screen reader finds them too.
64
+ *
65
+ * @example
66
+ * ```ts
67
+ * const chart = await loader.getHarness(WrHeatmapChartHarness);
68
+ *
69
+ * expect(await chart.getRowLabels()).toEqual(['Mon', 'Tue']);
70
+ * expect((await chart.getCell(1, 0)).empty).toBe(true);
71
+ * expect(await chart.getScaleRange()).toEqual({ min: '0', max: '41' });
72
+ * ```
73
+ *
74
+ * @see https://ngwr.dev/guides/testing
75
+ */
76
+ export declare class WrHeatmapChartHarness extends ComponentHarness {
77
+ static hostSelector: string;
78
+ /** Build a predicate that narrows the query — pass to `getHarness` / `getAllHarnesses`. */
79
+ static with(options?: WrHeatmapChartHarnessFilters): HarnessPredicate<WrHeatmapChartHarness>;
80
+ /**
81
+ * The matrix's accessible name — the only name it has. Read off the cells, which carry
82
+ * the `img` role, rather than off the host: a name on a wrapper round the row and column
83
+ * names would take those names out of the accessibility tree.
84
+ */
85
+ getAccessibleName(): Promise<string | null>;
86
+ /** The rows' names, top to bottom, as drawn — the full text, ellipsised or not, positions included for unnamed rows. */
87
+ getRowLabels(): Promise<string[]>;
88
+ /** The columns' names, from inline start — the full text of every one, ellipsised, out of sight or neither. */
89
+ getColumnLabels(): Promise<string[]>;
90
+ /** How many cells were drawn: one per row and column, empty ones included. */
91
+ getCellCount(): Promise<number>;
92
+ /**
93
+ * Every cell, row by row: its position, its value, the level it was drawn on and the text
94
+ * it prints. Read from `data-row`, `data-column` and `data-value`, which the component
95
+ * writes for exactly this, and the level off the `style` ATTRIBUTE — never through
96
+ * `getCssValue()`, which would resolve whatever the stylesheet says at exactly the
97
+ * moment the binding is what broke.
98
+ */
99
+ getCells(): Promise<WrHeatmapChartCell[]>;
100
+ /**
101
+ * The cell at a row and a column, both from 0. Throws for a position the matrix does not
102
+ * have rather than answering with an empty cell, which is a real thing a cell can be.
103
+ */
104
+ getCell(row: number, column: number): Promise<WrHeatmapChartCell>;
105
+ /** Whether the legend is rendered (`showLegend`, and a scale or an empty cell to key). */
106
+ hasLegend(): Promise<boolean>;
107
+ /**
108
+ * The legend's two ends, the scale's minimum and maximum, compact from a thousand as the
109
+ * cells print a value. A scale with no span is keyed by one figure, which is both ends.
110
+ * Throws when the legend draws no scale — `showLegend` off, or no value and no bound to
111
+ * scale — rather than answering with two empty strings.
112
+ */
113
+ getScaleRange(): Promise<{
114
+ min: string;
115
+ max: string;
116
+ }>;
117
+ /**
118
+ * How many levels the legend keys — `levels`, as drawn, or 1 for a scale with no span.
119
+ * Throws when it draws no scale, as {@link getScaleRange} does.
120
+ */
121
+ getLevelCount(): Promise<number>;
122
+ /**
123
+ * The name the legend keys the hatching with (`noDataLabel`), or `null` while it keys
124
+ * none: no cell is empty, or the legend is off.
125
+ */
126
+ getNoDataLabel(): Promise<string | null>;
127
+ /** Whether the hidden data table is rendered (`dataTable`). */
128
+ hasDataTable(): Promise<boolean>;
129
+ /**
130
+ * The data table's column headings: one per column, in order.
131
+ *
132
+ * Throws when the chart renders no table (`dataTable` off) rather than answering with no
133
+ * columns, which is also what a matrix with no columns answers.
134
+ */
135
+ getTableColumns(): Promise<string[]>;
136
+ /**
137
+ * The data table's rows, one per row: its name and each column's value, as a screen
138
+ * reader walks them. A value outside a given `min` or `max` is drawn on the end level and
139
+ * tabulated as itself; an empty cell is `noDataLabel`.
140
+ *
141
+ * Throws when the chart renders no table (`dataTable` off), for the reason
142
+ * {@link getTableColumns} gives.
143
+ */
144
+ getTableRows(): Promise<WrHeatmapChartTableRow[]>;
145
+ private assertScale;
146
+ private assertDataTable;
147
+ }
148
+ export type { WrHeatmapChartCell, WrHeatmapChartHarnessFilters, WrHeatmapChartTableRow };