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,307 @@
1
+ @use '../../../theme/styles' as theme;
2
+ @use '../../../popover/styles' as popover-styles; // the `.wr-tooltip` chip the hover tooltip renders into
3
+
4
+ // Styles for the entry points this component's own markup renders. With `dataTable`,
5
+ // the figures render as a `<wr-chart-table>` beside the plot, which its own sheet clips
6
+ // out of sight.
7
+ @use '../../core/styles' as core-styles; // WrChartTable
8
+
9
+ // The lengths inside a candle, each against the candle's own height as every percentage
10
+ // inside it is: the upper wick's share and the lower wick's, as the component writes
11
+ // them, and the body's own height between them.
12
+ $-upper: calc(var(--wr-candlestick-chart-upper, 0) * 1%);
13
+ $-lower: calc(var(--wr-candlestick-chart-lower, 0) * 1%);
14
+ $-body: calc(100% - $-upper - $-lower);
15
+
16
+ // The body's height: its own, or `$min` where that is taller.
17
+ @function _body-height($min) {
18
+ @return max($min, $-body);
19
+ }
20
+
21
+ // The wick at the `$near` end of a body `$min` tall, the other wick's share being `$far`;
22
+ // for the upper one, that is also where the body starts. A body grown past its own height
23
+ // takes the same from both wicks where both have it, so its middle stays on its true
24
+ // middle; it is held inside the candle where one has not, so it never passes the high
25
+ // or the low; and where the whole candle is shorter than the body it is centred on the
26
+ // candle and neither wick is left. Measured from its own end, so the lower wick is the
27
+ // upper one's mirror, and each stops at the grown edge rather than crossing a hollow
28
+ // body's inside.
29
+ @function _wick($min, $near, $far) {
30
+ // What the body leaves of the candle for the two wicks: below zero where it is taller.
31
+ $room: calc(100% - _body-height($min));
32
+ @return clamp(min(calc($room / 2), 0px), calc(($room + $near - $far) / 2), $room);
33
+ }
34
+
35
+ .wr-candlestick-chart {
36
+ --wr-candlestick-chart-font-family: var(--wr-font-family-base);
37
+ --wr-candlestick-chart-color: var(--wr-color-on-surface);
38
+ // A rising candle and a falling one, named as the waterfall's change up and change
39
+ // down are. The two intents sit within 1.004:1 of each other in luminance, so they are
40
+ // never the only thing that tells the candles apart: a rising body is hollow and a
41
+ // falling one filled, whatever these say. Both measure over 4:1 against the surface in
42
+ // either scheme, past the 3:1 WCAG 1.4.11 asks of a mark a reader needs.
43
+ --wr-candlestick-chart-increase-color: var(--wr-color-success);
44
+ --wr-candlestick-chart-decrease-color: var(--wr-color-danger);
45
+ // The room above and below the drawing inside the plot, which the y labels read to
46
+ // meet their gridlines.
47
+ --wr-candlestick-chart-plot-inset-y: var(--wr-space-sm);
48
+ --wr-candlestick-chart-grid-color: color-mix(in srgb, var(--wr-border-base) 70%, transparent);
49
+ --wr-candlestick-chart-tick-gap: var(--wr-space-xs);
50
+ --wr-candlestick-chart-tick-font-size: var(--wr-text-xs);
51
+ --wr-candlestick-chart-tick-line-height: var(--wr-text-xs-leading);
52
+ --wr-candlestick-chart-tick-color: var(--wr-color-on-surface-muted);
53
+ // A body is 70% of its slot, never under 1px and never over this; the gap between two
54
+ // candles is the rest of the slot, so it closes as the candles crowd.
55
+ --wr-candlestick-chart-body-max-width: 1.5rem;
56
+ --wr-candlestick-chart-body-border-width: 1px;
57
+ --wr-candlestick-chart-wick-width: 1px;
58
+ // The band behind the candle being read, under the gridlines, so they read across it.
59
+ --wr-candlestick-chart-cursor-bg: var(--wr-color-hover);
60
+
61
+ display: block;
62
+ // The containing block of the out-of-flow `dataTable` copy, as on the line chart: a
63
+ // static host lets that 1px box resolve against an ancestor outside the chart and keep
64
+ // its place in an unpositioned scroller's content. No z-index, so no stacking context.
65
+ position: relative;
66
+ font-family: var(--wr-candlestick-chart-font-family);
67
+ color: var(--wr-candlestick-chart-color);
68
+
69
+ // The y labels at inline start, the plot beside them, and the period labels under the
70
+ // plot alone. A grid follows `direction`, so the gutter is on the right under RTL with
71
+ // no rule of its own; the drawing itself does not mirror — time runs left to right in
72
+ // a price chart in every language, as in every SVG chart here. The HTML layouts (bar,
73
+ // bullet, treemap) are the ones that mirror.
74
+ &__body {
75
+ display: grid;
76
+ grid-template-columns: auto minmax(0, 1fr);
77
+ }
78
+
79
+ // As wide as the longest label: every label is in flow, in the one cell of a one-cell
80
+ // grid, so the column sizes to the widest while its height stays one label. Stretched
81
+ // to the plot's row, each label moves down from the top by its own gridline's share of
82
+ // the drawing, inside the plot's block padding, then up by half itself.
83
+ &__y-axis {
84
+ grid-column: 1;
85
+ grid-row: 1;
86
+ display: grid;
87
+ grid-template-rows: minmax(0, 1fr);
88
+ padding-inline-end: var(--wr-candlestick-chart-tick-gap);
89
+ font-size: var(--wr-candlestick-chart-tick-font-size);
90
+ line-height: var(--wr-candlestick-chart-tick-line-height);
91
+ color: var(--wr-candlestick-chart-tick-color);
92
+ text-align: end;
93
+ white-space: nowrap;
94
+ font-variant-numeric: tabular-nums;
95
+ }
96
+
97
+ // Shrunk to its text against the plot's side of the column, so its own direction can
98
+ // follow its text (`plaintext`), as the waterfall's and the box plot's ticks do: a
99
+ // price below zero is a `-` in front of digits, neither of which has a direction of its
100
+ // own, and under RTL the sign would land on the far side — `50-`.
101
+ &__y-tick {
102
+ $inset: var(--wr-candlestick-chart-plot-inset-y);
103
+
104
+ grid-area: 1 / 1;
105
+ align-self: start;
106
+ justify-self: end;
107
+ position: relative;
108
+ unicode-bidi: plaintext;
109
+ top: calc($inset + (100% - 2 * $inset) * var(--wr-candlestick-chart-y, 0) / 100);
110
+ transform: translateY(-50%);
111
+ }
112
+
113
+ &__plot {
114
+ grid-column: 2;
115
+ grid-row: 1;
116
+ position: relative;
117
+ padding-block: var(--wr-candlestick-chart-plot-inset-y);
118
+ }
119
+
120
+ // Edge to edge across the plot: the first and the last candle sit half a slot in, so
121
+ // no inline padding is needed to keep them off the frame.
122
+ &__drawing {
123
+ position: relative;
124
+ height: 100%;
125
+ }
126
+
127
+ &__grid-line {
128
+ position: absolute;
129
+ inset-inline: 0;
130
+ border-block-start: 1px solid var(--wr-candlestick-chart-grid-color);
131
+ }
132
+
133
+ // One slot wide, the full height of the drawing.
134
+ &__cursor {
135
+ position: absolute;
136
+ inset-block: 0;
137
+ width: calc(var(--wr-candlestick-chart-slot, 100) * 1%);
138
+ background: var(--wr-candlestick-chart-cursor-bg);
139
+ pointer-events: none;
140
+ }
141
+
142
+ // A body is drawn at least tall enough to show what tells a rising one from a falling
143
+ // one: its two edges and a 2px inside while hollow, or two dashes and the gap between
144
+ // them while dense. Shorter — a candle that barely moved — it would draw as a solid
145
+ // line in either direction, and leave colour the only channel. Both directions grow
146
+ // alike, so a small rise never looks larger than a fall of the same size, and a body
147
+ // grows into its own wicks, so the high and the low stay where they are (see the
148
+ // functions at the top).
149
+ $dash: 2px;
150
+ $body-min: calc(2 * var(--wr-candlestick-chart-body-border-width) + 2px);
151
+ $dense-body-min: 2 * $dash + 1px;
152
+
153
+ // From the high to the low, as wide as the body and centred on its slot. The colour is
154
+ // the candle's `color`, which the body and both wicks paint with.
155
+ &__candle {
156
+ position: absolute;
157
+ width: clamp(1px, calc(var(--wr-candlestick-chart-slot, 100) * 0.7%), var(--wr-candlestick-chart-body-max-width));
158
+ // rtl-ok: centred against a physical translateX, and the drawing's x does not flip with `direction`
159
+ transform: translateX(-50%);
160
+ pointer-events: none;
161
+
162
+ &--increase {
163
+ color: var(--wr-candlestick-chart-input-increase-color, var(--wr-candlestick-chart-increase-color));
164
+ }
165
+
166
+ &--decrease {
167
+ color: var(--wr-candlestick-chart-input-decrease-color, var(--wr-candlestick-chart-decrease-color));
168
+ }
169
+
170
+ // The wicks: above the body and below it, never through it, so a hollow body is
171
+ // empty. Each is a share of the candle's own height, written by the component.
172
+ &::before,
173
+ &::after {
174
+ content: '';
175
+ position: absolute;
176
+ // rtl-ok: centred against a physical translateX, and the drawing's x does not flip with `direction`
177
+ left: 50%;
178
+ width: var(--wr-candlestick-chart-wick-width);
179
+ // rtl-ok: the pair to `left: 50%` above
180
+ transform: translateX(-50%);
181
+ background: currentColor;
182
+ }
183
+
184
+ &::before {
185
+ top: 0;
186
+ height: max(0px, _wick($body-min, $-upper, $-lower));
187
+ }
188
+
189
+ &::after {
190
+ bottom: 0;
191
+ height: max(0px, _wick($body-min, $-lower, $-upper));
192
+ }
193
+ }
194
+
195
+ // Between the wicks, grown to the least height above when it is shorter — a candle
196
+ // that opened and closed on one price (a doji) included.
197
+ &__candle-body {
198
+ position: absolute;
199
+ inset-inline: 0;
200
+ top: _wick($body-min, $-upper, $-lower);
201
+ height: _body-height($body-min);
202
+ border: var(--wr-candlestick-chart-body-border-width) solid currentColor;
203
+ }
204
+
205
+ &__candle--decrease &__candle-body {
206
+ background: currentColor;
207
+ }
208
+
209
+ // A body under 4px wide has no inside to leave hollow — its two edges and at most a
210
+ // pixel between them read as one bar — so a rising body is DOTTED instead, solid
211
+ // pixels with gaps between them down its length, and a falling one stays solid. A
212
+ // pattern is a channel that survives greyscale, where a lighter tint of the colour
213
+ // would fall under 3:1 against the surface.
214
+ &--dense &__candle::before {
215
+ height: max(0px, _wick($dense-body-min, $-upper, $-lower));
216
+ }
217
+
218
+ &--dense &__candle::after {
219
+ height: max(0px, _wick($dense-body-min, $-lower, $-upper));
220
+ }
221
+
222
+ &--dense &__candle-body {
223
+ top: _wick($dense-body-min, $-upper, $-lower);
224
+ height: _body-height($dense-body-min);
225
+ border-width: 0;
226
+ }
227
+
228
+ &--dense &__candle--increase &__candle-body {
229
+ background: repeating-linear-gradient(to bottom, currentColor 0 $dash, transparent $dash 2 * $dash);
230
+ }
231
+
232
+ &__x-axis {
233
+ grid-column: 2;
234
+ grid-row: 2;
235
+ position: relative;
236
+ margin-block-start: var(--wr-candlestick-chart-tick-gap);
237
+ font-size: var(--wr-candlestick-chart-tick-font-size);
238
+ line-height: var(--wr-candlestick-chart-tick-line-height);
239
+ color: var(--wr-candlestick-chart-tick-color);
240
+ font-variant-numeric: tabular-nums;
241
+ // The labels are absolutely positioned under their candles, so the strip has no
242
+ // content of its own to give it a height.
243
+ height: 1.25em;
244
+ // A `translateX` percentage means the LABEL's own width, so the room left beside it
245
+ // has to arrive in another unit — `cqw` is this strip's. Every label is out of flow,
246
+ // so the containment costs the layout nothing.
247
+ container-type: inline-size;
248
+ // A label held to its room is cut there, never past the strip.
249
+ overflow: hidden;
250
+ }
251
+
252
+ // Every label, a line each, laid out and never seen: the component measures it to
253
+ // decide how many labels fit. A line breaks only where the component put a break, and
254
+ // spaces collapse as a printed label's do, so the copy is exactly as wide as the widest
255
+ // label.
256
+ &__x-probe {
257
+ position: absolute;
258
+ width: max-content;
259
+ visibility: hidden;
260
+ white-space: pre-line;
261
+ }
262
+
263
+ &__x-label {
264
+ $x: var(--wr-candlestick-chart-x, 50);
265
+ $slot: var(--wr-candlestick-chart-x-slot, 100);
266
+
267
+ position: absolute;
268
+ // rtl-ok: the drawing's own x, which does not flip with `direction`
269
+ left: calc(100% * $x / 100);
270
+ // Centred under its candle. The component prints only the labels that fit there,
271
+ // measured as wide as the widest, so this clamp is the net under its estimate before
272
+ // a browser has measured: a label still too wide for its place near an end moves
273
+ // inwards, never past either end of the strip.
274
+ // rtl-ok: the drawing's own x, which does not flip with `direction`
275
+ transform: translateX(clamp(calc(-100cqw * $x / 100), -50%, calc(100cqw * (100 - $x) / 100 - 100%)));
276
+ // Its own room — every n-th slot, half the way to the next printed label on each
277
+ // side — so a label longer than the measure allowed for is ellipsised rather than
278
+ // run into its neighbour.
279
+ max-width: calc(100% * $slot / 100);
280
+ overflow: hidden;
281
+ text-overflow: ellipsis;
282
+ white-space: nowrap;
283
+ }
284
+ }
285
+
286
+ // The candles keep their colours under forced colors, as every chart's marks do, and so
287
+ // keep both channels: a mark painted with `background` would otherwise be reset to
288
+ // `Canvas` and vanish into the page, taking the filled body with it. The grid and the
289
+ // band are drawn in theme colours that mean nothing on a forced palette, so they take
290
+ // the system's own: the band an outline in the selection colour, since a background is
291
+ // reset.
292
+ @media (forced-colors: active) {
293
+ .wr-candlestick-chart {
294
+ --wr-candlestick-chart-grid-color: GrayText;
295
+ }
296
+
297
+ .wr-candlestick-chart__candle {
298
+ forced-color-adjust: none;
299
+ }
300
+
301
+ .wr-candlestick-chart__cursor {
302
+ forced-color-adjust: none;
303
+ background: transparent;
304
+ outline: 2px solid Highlight;
305
+ outline-offset: -2px;
306
+ }
307
+ }
@@ -0,0 +1,143 @@
1
+ @use '../../../theme/styles' as theme;
2
+
3
+ // The hooks, and the placement a chart decides for itself, at zero specificity: a chart
4
+ // that draws its legend with this list puts it on its own `__legend` element and sets
5
+ // its margin, gap and alignment there, so `:where()` lets the chart's own rule win
6
+ // whatever order the two sheets arrive in, and a chart re-points a hook from any
7
+ // selector at all.
8
+ :where(.wr-chart-legend) {
9
+ --wr-chart-legend-gap-y: var(--wr-space-sm);
10
+ --wr-chart-legend-gap-x: var(--wr-space-lg);
11
+ --wr-chart-legend-item-gap: var(--wr-space-sm);
12
+ --wr-chart-legend-font-size: var(--wr-text-xs);
13
+ --wr-chart-legend-color: var(--wr-color-on-surface);
14
+ --wr-chart-legend-label-font-weight: inherit;
15
+ --wr-chart-legend-value-color: var(--wr-color-on-surface-muted);
16
+ --wr-chart-legend-dot-size: 0.625rem;
17
+ --wr-chart-legend-marker-size: 0.75rem;
18
+ // A hidden series is struck through as well as muted, so its state is not carried by
19
+ // colour alone, and its key fades: the key is `aria-hidden`, the label says it.
20
+ --wr-chart-legend-hidden-color: var(--wr-color-on-surface-muted);
21
+ --wr-chart-legend-hidden-swatch-opacity: 0.35;
22
+ // 24px, WCAG 2.5.8's minimum target, for the rows of a `toggleable` legend.
23
+ --wr-chart-legend-toggle-min-height: 1.5rem;
24
+ --wr-chart-legend-toggle-padding-x: var(--wr-space-xs);
25
+ --wr-chart-legend-toggle-radius: var(--wr-border-radius-sm);
26
+ --wr-chart-legend-toggle-hover-bg: var(--wr-color-hover);
27
+
28
+ margin: 0;
29
+ gap: var(--wr-chart-legend-gap-y) var(--wr-chart-legend-gap-x);
30
+ }
31
+
32
+ // The structure every placement shares, at the class's own specificity: an app's own
33
+ // `ul { padding-inline-start: … }` must not indent a standalone legend, and a
34
+ // zero-specificity reset would lose to it.
35
+ .wr-chart-legend {
36
+ list-style: none;
37
+ padding: 0;
38
+ display: flex;
39
+ flex-wrap: wrap;
40
+ }
41
+
42
+ .wr-chart-legend__item {
43
+ display: inline-flex;
44
+ align-items: center;
45
+ gap: var(--wr-chart-legend-item-gap);
46
+ font-size: var(--wr-chart-legend-font-size);
47
+ color: var(--wr-chart-legend-color);
48
+ }
49
+
50
+ .wr-chart-legend__swatch {
51
+ flex: 0 0 auto;
52
+ // The key to colours the chart keeps under forced colors — its SVG fills and strokes
53
+ // stay — so a dot's inline `background`, which forced colors resets to `Canvas`,
54
+ // would leave the legend pointing at nothing.
55
+ forced-color-adjust: none;
56
+ }
57
+
58
+ .wr-chart-legend__swatch--dot {
59
+ width: var(--wr-chart-legend-dot-size);
60
+ height: var(--wr-chart-legend-dot-size);
61
+ border-radius: 50%;
62
+ }
63
+
64
+ // A short line rather than a dot, because it carries the series' dash pattern and a
65
+ // 10px circle cannot show one. Its box is the stroke; a marker on it overhangs.
66
+ .wr-chart-legend__swatch--line {
67
+ width: 1rem;
68
+ height: 0.125rem;
69
+ overflow: visible;
70
+ }
71
+
72
+ // Sized for the circle. Every shape has the circle's area, so a triangle's point and a
73
+ // diamond's tips reach past the box, and an SVG clips at its own viewport by default.
74
+ .wr-chart-legend__swatch--marker {
75
+ width: var(--wr-chart-legend-marker-size);
76
+ height: var(--wr-chart-legend-marker-size);
77
+ overflow: visible;
78
+ }
79
+
80
+ .wr-chart-legend__label {
81
+ font-weight: var(--wr-chart-legend-label-font-weight);
82
+ }
83
+
84
+ .wr-chart-legend__value {
85
+ color: var(--wr-chart-legend-value-color);
86
+ font-variant-numeric: tabular-nums;
87
+ // A value has no strong character of its own, so on an RTL page the minus of `-350` —
88
+ // a meter group keeps a negative segment's value on purpose — landed after the
89
+ // digits. Plaintext takes the direction from the text, as the tooltip's value does:
90
+ // the sign stays first, and a value written in Arabic still reads right to left.
91
+ unicode-bidi: plaintext;
92
+ }
93
+
94
+ // A whole row is the button: the key, the name and the value are one target, and the
95
+ // name is the button's name. Its focus ring is the shared one in `_focus.scss`.
96
+ .wr-chart-legend__toggle {
97
+ display: inline-flex;
98
+ align-items: center;
99
+ gap: var(--wr-chart-legend-item-gap);
100
+ min-height: var(--wr-chart-legend-toggle-min-height);
101
+ margin: 0;
102
+ padding: 0 var(--wr-chart-legend-toggle-padding-x);
103
+ border: 0;
104
+ border-radius: var(--wr-chart-legend-toggle-radius);
105
+ background: transparent;
106
+ color: inherit;
107
+ font: inherit;
108
+ text-align: start;
109
+ cursor: pointer;
110
+ transition: background-color var(--wr-transition-short);
111
+
112
+ &:hover {
113
+ background: var(--wr-chart-legend-toggle-hover-bg);
114
+ }
115
+ }
116
+
117
+ // The word a hidden row of a legend that does not toggle carries for a screen reader.
118
+ .wr-chart-legend__sr-only {
119
+ position: absolute;
120
+ width: 1px;
121
+ height: 1px;
122
+ padding: 0;
123
+ margin: -1px;
124
+ overflow: hidden;
125
+ clip: rect(0, 0, 0, 0);
126
+ white-space: nowrap;
127
+ border: 0;
128
+ }
129
+
130
+ .wr-chart-legend__item--hidden {
131
+ .wr-chart-legend__label,
132
+ .wr-chart-legend__value {
133
+ color: var(--wr-chart-legend-hidden-color);
134
+ }
135
+
136
+ .wr-chart-legend__label {
137
+ text-decoration: line-through;
138
+ }
139
+
140
+ .wr-chart-legend__swatch {
141
+ opacity: var(--wr-chart-legend-hidden-swatch-opacity);
142
+ }
143
+ }
@@ -0,0 +1,30 @@
1
+ // Public Sass entry for the charts' shared parts. Nothing an app imports draws from
2
+ // here directly: a chart that renders `<wr-chart-table>` loads this sheet from its
3
+ // own `_index.scss`, the way every component loads the styles of what it renders.
4
+ //
5
+ // No theme load, and on purpose: these rules read no token, and an entry point that
6
+ // cannot leave a `var(--wr-*)` unresolved has no reason to drag the token layer in.
7
+
8
+ // A chart's data table, read in full by assistive technology and drawn nowhere.
9
+ //
10
+ // The clip pattern on the HOST rather than on the `<table>`: a table grows to fit its
11
+ // cells whatever its width says, and `overflow` does not clip a table box in every
12
+ // engine, so clipping the table itself can leave it painting. The host is an ordinary
13
+ // box that collapses to 1px, sits out of flow — so it takes no room beside the chart
14
+ // and adds no scroll — and clips everything inside it.
15
+ //
16
+ // Not `display: none`, `visibility: hidden` or `hidden`, each of which removes it
17
+ // from the accessibility tree too, and not `clip-path` alone, which leaves the box
18
+ // its full size for the layout and the scroll width.
19
+ .wr-chart-table {
20
+ position: absolute;
21
+ width: 1px;
22
+ height: 1px;
23
+ padding: 0;
24
+ margin: -1px;
25
+ overflow: hidden;
26
+ clip: rect(0, 0, 0, 0);
27
+ clip-path: inset(50%);
28
+ white-space: nowrap;
29
+ border: 0;
30
+ }
@@ -1,16 +1,24 @@
1
1
  @use '../../../theme/styles' as theme;
2
2
  @use '../../../popover/styles'; // the `.wr-tooltip` chip the hover tooltip renders into
3
3
 
4
+ // Styles for the entry points this component's own markup renders. The legend is a
5
+ // `ul[wr-chart-legend]`, so `@use 'ngwr/charts/donut-chart'` alone draws it styled.
6
+ @use '../../chart-legend/styles' as chart-legend-styles; // WrChartLegend
7
+
4
8
  .wr-donut-chart {
5
9
  --wr-donut-chart-gap: var(--wr-space-lg);
6
10
  --wr-donut-chart-font-family: var(--wr-font-family-base);
11
+ --wr-donut-chart-color: var(--wr-color-on-surface);
12
+ // The gap between two slices: each is stroked in the surface the chart sits on, so the
13
+ // gap is a shape that tells two slices apart without hue.
14
+ --wr-donut-chart-slice-gap-color: var(--wr-color-surface);
7
15
 
8
16
  display: inline-flex;
9
17
  flex-direction: column;
10
18
  align-items: center;
11
19
  gap: var(--wr-donut-chart-gap);
12
20
  font-family: var(--wr-donut-chart-font-family);
13
- color: var(--wr-color-on-surface);
21
+ color: var(--wr-donut-chart-color);
14
22
 
15
23
  &__surface {
16
24
  position: relative;
@@ -23,6 +31,10 @@
23
31
  height: auto;
24
32
  }
25
33
 
34
+ &__slice {
35
+ stroke: var(--wr-donut-chart-slice-gap-color);
36
+ }
37
+
26
38
  &__center {
27
39
  position: absolute;
28
40
  inset: 0;
@@ -51,15 +63,19 @@
51
63
  font-weight: var(--wr-donut-chart-center-value-font-weight);
52
64
  line-height: var(--wr-donut-chart-center-value-line-height);
53
65
  font-variant-numeric: tabular-nums;
66
+ // A `-` in front of digits has no direction of its own, so under RTL it would land
67
+ // on the digits' far side. Centred, so taking the text's own direction moves nothing.
68
+ unicode-bidi: plaintext;
54
69
  }
55
70
 
56
71
  &__center-label {
57
72
  --wr-donut-chart-center-label-margin-top: var(--wr-space-xs);
58
73
  --wr-donut-chart-center-label-font-size: var(--wr-text-xs);
74
+ --wr-donut-chart-center-label-color: var(--wr-color-on-surface-muted);
59
75
 
60
76
  margin-top: var(--wr-donut-chart-center-label-margin-top);
61
77
  font-size: var(--wr-donut-chart-center-label-font-size);
62
- color: var(--wr-color-on-surface-muted);
78
+ color: var(--wr-donut-chart-center-label-color);
63
79
  }
64
80
 
65
81
  &__legend {
@@ -78,11 +94,17 @@
78
94
  &__legend-item {
79
95
  --wr-donut-chart-legend-item-gap: var(--wr-space-sm);
80
96
  --wr-donut-chart-legend-item-font-size: var(--wr-text-xs);
97
+ // A toggleable row's button lays out the key, the name and the value itself, from the
98
+ // shared legend's own hook, so that hook follows this one.
99
+ --wr-chart-legend-item-gap: var(--wr-donut-chart-legend-item-gap);
81
100
 
82
101
  display: inline-flex;
83
102
  align-items: center;
84
103
  gap: var(--wr-donut-chart-legend-item-gap);
85
104
  font-size: var(--wr-donut-chart-legend-item-font-size);
105
+ // The chart's own colour, as before the shared legend, which paints its rows
106
+ // `--wr-chart-legend-color`.
107
+ color: inherit;
86
108
  }
87
109
 
88
110
  &__swatch {
@@ -101,7 +123,21 @@
101
123
  }
102
124
 
103
125
  &__legend-value {
104
- color: var(--wr-color-on-surface-muted);
126
+ --wr-donut-chart-legend-value-color: var(--wr-color-on-surface-muted);
127
+
128
+ color: var(--wr-donut-chart-legend-value-color);
105
129
  font-variant-numeric: tabular-nums;
130
+ // A value has no strong character of its own: the sign of `-10` stays before its
131
+ // digits on an RTL page.
132
+ unicode-bidi: plaintext;
133
+ }
134
+ }
135
+
136
+ // The SVG keeps its fills under forced colors, so the slices keep their colours and the
137
+ // legend still keys them; the gap between them is drawn in the surface, which means
138
+ // nothing on a forced palette, so it takes the page's own colour and still parts them.
139
+ @media (forced-colors: active) {
140
+ .wr-donut-chart__slice {
141
+ stroke: Canvas;
106
142
  }
107
143
  }