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,297 @@
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
+ .wr-boxplot-chart {
10
+ --wr-boxplot-chart-font-family: var(--wr-font-family-base);
11
+ --wr-boxplot-chart-color: var(--wr-color-on-surface);
12
+ // The room round the drawing inside the plot. The groups sit in equal slots across
13
+ // the drawing, so nothing overhangs its sides; an outlier on the frame overhangs the
14
+ // top or the bottom by half its dot.
15
+ --wr-boxplot-chart-plot-inset-x: var(--wr-space-sm);
16
+ --wr-boxplot-chart-plot-inset-y: var(--wr-space-sm);
17
+ --wr-boxplot-chart-grid-color: color-mix(in srgb, var(--wr-border-base) 70%, transparent);
18
+ --wr-boxplot-chart-tick-gap: var(--wr-space-xs);
19
+ --wr-boxplot-chart-tick-font-size: var(--wr-text-xs);
20
+ --wr-boxplot-chart-tick-line-height: var(--wr-text-xs-leading);
21
+ --wr-boxplot-chart-tick-color: var(--wr-color-on-surface-muted);
22
+ // The group names under the drawing: what each box IS, so in the text colour rather
23
+ // than the ticks' muted one, as the radar's axis names are.
24
+ --wr-boxplot-chart-label-font-size: var(--wr-text-xs);
25
+ --wr-boxplot-chart-label-line-height: var(--wr-text-xs-leading);
26
+ --wr-boxplot-chart-label-color: var(--wr-color-on-surface);
27
+ --wr-boxplot-chart-label-gap: var(--wr-space-xs);
28
+ --wr-boxplot-chart-title-font-size: var(--wr-text-xs);
29
+ --wr-boxplot-chart-title-font-weight: var(--wr-font-weight-medium);
30
+ --wr-boxplot-chart-title-color: var(--wr-color-on-surface-muted);
31
+ --wr-boxplot-chart-title-gap: var(--wr-space-xs);
32
+ // A box is a share of its slot, up to a width that keeps one group from becoming a
33
+ // slab; the caps are half as wide. A percentage here is the SLOT's: it resolves where
34
+ // the box reads it.
35
+ --wr-boxplot-chart-box-width: min(3rem, 60%);
36
+ --wr-boxplot-chart-cap-width: calc(var(--wr-boxplot-chart-box-width) / 2);
37
+ --wr-boxplot-chart-box-radius: var(--wr-border-radius-sm);
38
+ // How much of the group's colour the box is filled with, at rest and while hovered.
39
+ // See-through, so the gridlines read across it.
40
+ --wr-boxplot-chart-box-tint: 20%;
41
+ --wr-boxplot-chart-box-tint-active: 40%;
42
+ // The box's edge, the whiskers, the caps and the outliers' rings, all in the group's
43
+ // colour.
44
+ --wr-boxplot-chart-line-width: 2px;
45
+ // The median in the text colour and heavier than the box's edge, so it reads by tone
46
+ // and by weight whatever the group's colour is.
47
+ --wr-boxplot-chart-median-color: var(--wr-color-on-surface);
48
+ --wr-boxplot-chart-median-width: 3px;
49
+ // An outlier is a ring, hollow so two that overlap stay two.
50
+ --wr-boxplot-chart-outlier-size: 0.5rem;
51
+ --wr-boxplot-chart-outlier-fill: var(--wr-color-surface);
52
+ // The slot the tooltip is reading, washed top to bottom. See-through, as the box is, so
53
+ // the gridlines read across it: the theme's hover fill is opaque, and the slot is drawn
54
+ // over the gridlines. The waterfall's wash, under the same name.
55
+ --wr-boxplot-chart-active-bg: color-mix(in srgb, var(--wr-color-on-surface) 6%, transparent);
56
+
57
+ $inset-y: var(--wr-boxplot-chart-plot-inset-y);
58
+ $line: var(--wr-boxplot-chart-line-width);
59
+ $color: var(--wr-boxplot-chart-group-color, currentColor);
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-boxplot-chart-font-family);
67
+ color: var(--wr-boxplot-chart-color);
68
+
69
+ // The ticks at inline start, the plot beside them, and the group names under the plot
70
+ // alone. A grid follows `direction`, so the ticks are on the right under RTL with no
71
+ // rule of their own — and the groups follow it too, each slot placed from the inline
72
+ // start, as the bar chart's and the waterfall's columns run in a flex row. The groups
73
+ // are categories with no order of their own, so they read in the page's direction and
74
+ // the first stands beside the axis either way. A chart whose x axis is ordered — a
75
+ // sequence on the line and candlestick charts, a number on the scatter — keeps it
76
+ // physical instead.
77
+ &__body {
78
+ display: grid;
79
+ grid-template-columns: auto minmax(0, 1fr);
80
+ }
81
+
82
+ // The axes' names, set horizontally: the value axis' above the plot at the ticks' side,
83
+ // where a reader looks first, and the groups' centred under their names.
84
+ &__y-title,
85
+ &__x-title {
86
+ font-size: var(--wr-boxplot-chart-title-font-size);
87
+ font-weight: var(--wr-boxplot-chart-title-font-weight);
88
+ color: var(--wr-boxplot-chart-title-color);
89
+ overflow-wrap: anywhere;
90
+ }
91
+
92
+ &__y-title {
93
+ grid-column: 1 / -1;
94
+ grid-row: 1;
95
+ margin-block-end: var(--wr-boxplot-chart-title-gap);
96
+ text-align: start;
97
+ }
98
+
99
+ &__x-title {
100
+ grid-column: 2;
101
+ grid-row: 4;
102
+ margin-block-start: var(--wr-boxplot-chart-title-gap);
103
+ text-align: center;
104
+ }
105
+
106
+ // As wide as the longest label — every label is in flow, in the one cell of a one-cell
107
+ // grid — while its height stays one label. Stretched to the plot's row, each label
108
+ // moves down by its own gridline's share of the drawing, inside the plot's block
109
+ // padding, then up by half itself: the scatter's y axis, for the same reasons.
110
+ &__y-axis {
111
+ grid-column: 1;
112
+ grid-row: 2;
113
+ display: grid;
114
+ grid-template-rows: minmax(0, 1fr);
115
+ padding-inline-end: var(--wr-boxplot-chart-tick-gap);
116
+ font-size: var(--wr-boxplot-chart-tick-font-size);
117
+ line-height: var(--wr-boxplot-chart-tick-line-height);
118
+ color: var(--wr-boxplot-chart-tick-color);
119
+ text-align: end;
120
+ white-space: nowrap;
121
+ font-variant-numeric: tabular-nums;
122
+ }
123
+
124
+ // Shrunk to its text against the plot's side of the column, so its own direction can
125
+ // follow its text (`plaintext`), as the waterfall's ticks do: a box plot has no zero to
126
+ // start from, so a negative tick is ordinary, and its `-` in front of digits has no
127
+ // direction of its own — under RTL it would land on the far side and read `200-`.
128
+ &__y-tick {
129
+ grid-area: 1 / 1;
130
+ align-self: start;
131
+ justify-self: end;
132
+ position: relative;
133
+ unicode-bidi: plaintext;
134
+ top: calc($inset-y + (100% - 2 * $inset-y) * var(--wr-boxplot-chart-y, 0) / 100);
135
+ transform: translateY(-50%);
136
+ }
137
+
138
+ &__plot {
139
+ grid-column: 2;
140
+ grid-row: 2;
141
+ position: relative;
142
+ padding: $inset-y var(--wr-boxplot-chart-plot-inset-x);
143
+ }
144
+
145
+ // What every mark's percentages are of.
146
+ &__drawing {
147
+ position: relative;
148
+ height: 100%;
149
+ }
150
+
151
+ &__grid-line {
152
+ position: absolute;
153
+ inset-inline: 0;
154
+ top: calc(var(--wr-boxplot-chart-y, 0) * 1%);
155
+ border-block-start: 1px solid var(--wr-boxplot-chart-grid-color);
156
+ transform: translateY(-50%);
157
+ }
158
+
159
+ // One slot of the drawing, top to bottom, and the group's hover target. Every mark
160
+ // inside is centred on it, so it needs no rule of its own under RTL.
161
+ &__group {
162
+ position: absolute;
163
+ inset-block: 0;
164
+ inset-inline-start: calc(var(--wr-boxplot-chart-slot-start, 0) * 1%);
165
+ width: calc(var(--wr-boxplot-chart-slot-width, 100) * 1%);
166
+ }
167
+
168
+ &__group--active {
169
+ background: var(--wr-boxplot-chart-active-bg);
170
+ }
171
+
172
+ &__whisker,
173
+ &__cap,
174
+ &__box,
175
+ &__median,
176
+ &__outlier,
177
+ &__extent {
178
+ position: absolute;
179
+ // rtl-ok: centred on its slot against a physical translateX, so the pair stays physical
180
+ left: 50%;
181
+ pointer-events: none;
182
+ }
183
+
184
+ // A whisker is the inline-start border of a box with no width of its own, centred on
185
+ // its slot. Each runs from its end to the box's edge: two segments rather than one line
186
+ // behind the box, so the box can be see-through.
187
+ &__whisker {
188
+ top: calc(var(--wr-boxplot-chart-top, 0) * 1%);
189
+ width: 0;
190
+ height: calc((var(--wr-boxplot-chart-bottom, 0) - var(--wr-boxplot-chart-top, 0)) * 1%);
191
+ border-inline-start: $line solid $color;
192
+ transform: translateX(-50%);
193
+ }
194
+
195
+ // A cap, the median and an outlier sit centred ON their value.
196
+ &__cap,
197
+ &__median {
198
+ top: calc(var(--wr-boxplot-chart-y, 0) * 1%);
199
+ height: 0;
200
+ transform: translate(-50%, -50%);
201
+ }
202
+
203
+ &__cap {
204
+ width: var(--wr-boxplot-chart-cap-width);
205
+ border-block-start: $line solid $color;
206
+ }
207
+
208
+ // The edge is centred on the quartiles, half outside the span between them, so the
209
+ // box is one edge taller than that span — and centred on its MIDDLE rather than hung
210
+ // from its top: a box can be no shorter than its two edges, so one whose quartiles
211
+ // meet grows to that and stays centred on its value, where hung from the top it sat
212
+ // an edge low.
213
+ &__box {
214
+ top: calc((var(--wr-boxplot-chart-top, 0) + var(--wr-boxplot-chart-bottom, 0)) / 2 * 1%);
215
+ width: var(--wr-boxplot-chart-box-width);
216
+ height: calc((var(--wr-boxplot-chart-bottom, 0) - var(--wr-boxplot-chart-top, 0)) * 1% + $line);
217
+ border: $line solid $color;
218
+ border-radius: var(--wr-boxplot-chart-box-radius);
219
+ background: color-mix(in srgb, $color var(--wr-boxplot-chart-box-tint), transparent);
220
+ transform: translate(-50%, -50%);
221
+ }
222
+
223
+ &__group--active &__box {
224
+ background: color-mix(in srgb, $color var(--wr-boxplot-chart-box-tint-active), transparent);
225
+ }
226
+
227
+ &__median {
228
+ width: var(--wr-boxplot-chart-box-width);
229
+ border-block-start: var(--wr-boxplot-chart-median-width) solid var(--wr-boxplot-chart-median-color);
230
+ }
231
+
232
+ &__outlier {
233
+ top: calc(var(--wr-boxplot-chart-y, 0) * 1%);
234
+ width: var(--wr-boxplot-chart-outlier-size);
235
+ height: var(--wr-boxplot-chart-outlier-size);
236
+ border: $line solid $color;
237
+ border-radius: 50%;
238
+ background: var(--wr-boxplot-chart-outlier-fill);
239
+ transform: translate(-50%, -50%);
240
+ }
241
+
242
+ // Paints nothing and is hit by nothing: a box from the topmost mark to the lowest, half
243
+ // an outlier taller at either end, for the tooltip to point at.
244
+ &__extent {
245
+ top: calc(var(--wr-boxplot-chart-top, 0) * 1% - var(--wr-boxplot-chart-outlier-size) / 2);
246
+ width: 0;
247
+ height: calc(
248
+ (var(--wr-boxplot-chart-bottom, 0) - var(--wr-boxplot-chart-top, 0)) * 1% + var(--wr-boxplot-chart-outlier-size)
249
+ );
250
+ }
251
+
252
+ // As wide as the drawing — the plot's inline padding is its margin — so a name's
253
+ // percentages are the drawing's. The names are out of flow, so the strip is given one
254
+ // line's height.
255
+ &__x-axis {
256
+ grid-column: 2;
257
+ grid-row: 3;
258
+ position: relative;
259
+ height: var(--wr-boxplot-chart-label-line-height);
260
+ margin-block-start: var(--wr-boxplot-chart-label-gap);
261
+ margin-inline: var(--wr-boxplot-chart-plot-inset-x);
262
+ font-size: var(--wr-boxplot-chart-label-font-size);
263
+ line-height: var(--wr-boxplot-chart-label-line-height);
264
+ color: var(--wr-boxplot-chart-label-color);
265
+ }
266
+
267
+ // A name is the host's own text, in whatever language it is, so it takes its direction
268
+ // from that text (`plaintext`) and is ellipsised at its own end, not at the page's — the
269
+ // waterfall's labels, for the same reason: two Latin names under RTL read `… America`.
270
+ // Not `dir="auto"`: the box is placed by `inset-inline-start`, which would then resolve
271
+ // against the name's own direction and put it under the wrong slot.
272
+ &__x-label {
273
+ position: absolute;
274
+ top: 0;
275
+ // Under its slot, from the same inline start.
276
+ inset-inline-start: calc(var(--wr-boxplot-chart-slot-start, 0) * 1%);
277
+ width: calc(var(--wr-boxplot-chart-slot-width, 100) * 1%);
278
+ padding-inline: calc(var(--wr-boxplot-chart-label-gap) / 2);
279
+ overflow: hidden;
280
+ text-overflow: ellipsis;
281
+ white-space: nowrap;
282
+ text-align: center;
283
+ unicode-bidi: plaintext;
284
+ }
285
+ }
286
+
287
+ // Forced colors repaints every border in the text colour and every background as the
288
+ // page, which is the right drawing here: the colour of a group says nothing its name
289
+ // does not, the outlines all stay, and the box's tint and the hover wash go. Only the
290
+ // gridlines would come out as heavy as the boxes, so they keep the system's muted
291
+ // colour.
292
+ @media (forced-colors: active) {
293
+ .wr-boxplot-chart__grid-line {
294
+ border-color: GrayText;
295
+ forced-color-adjust: none;
296
+ }
297
+ }
@@ -0,0 +1,268 @@
1
+ @use '../../../theme/styles' as theme;
2
+ @use '../../../popover/styles' as popover-styles; // the `.wr-tooltip` chip the hover tooltip renders into
3
+
4
+ .wr-bullet-chart {
5
+ --wr-bullet-chart-font-family: var(--wr-font-family-base);
6
+ --wr-bullet-chart-color: var(--wr-color-on-surface);
7
+ // The drawing's height, one line of the label's: the label is set at it, so its first
8
+ // line sits level with the drawing whatever the sub-label under it adds.
9
+ --wr-bullet-chart-track-height: 1.5rem;
10
+ // The least the drawing narrows to, so a chart in a shrink-to-fit parent (a flex row of
11
+ // tiles) still draws one rather than collapsing to its label.
12
+ --wr-bullet-chart-track-min-width: 6rem;
13
+ --wr-bullet-chart-track-radius: var(--wr-border-radius-sm);
14
+ // The track is what shows past the last band, and with no `ranges` the whole frame.
15
+ --wr-bullet-chart-track-color: var(--wr-color-fill);
16
+ // The bands step from the first colour, nearest zero, to the second, at the last range
17
+ // limit: steps in LIGHTNESS, which survive greyscale. Both are the theme's neutral fill
18
+ // roles, so each scheme and `prefers-contrast: more` (which deepens the muted ink) moves
19
+ // them on its own. The first is the strong fill pulled halfway to the muted ink, since
20
+ // the fills alone are too close to the surface to read as bands.
21
+ --wr-bullet-chart-range-start: color-mix(in srgb, var(--wr-color-on-surface-muted) 50%, var(--wr-color-fill-strong));
22
+ --wr-bullet-chart-range-end: var(--wr-color-fill-strong);
23
+ // The rule where the last band ends, drawn only where the scale runs on past it — a
24
+ // value or a target above the last limit, or a `max` beyond it. The faintest band and
25
+ // the track are a step of lightness apart that no reader can see, so the end of the
26
+ // last band is a line rather than a shade.
27
+ --wr-bullet-chart-range-edge-color: var(--wr-color-on-surface-muted);
28
+ // The value and the target are drawn in the text colour, as in Few's own design, and
29
+ // told apart by shape. Measured in Chromium against the strongest band, the text colour
30
+ // holds 6.6:1 in light and 5.0:1 in dark (6.4 and 4.7 under `prefers-contrast: more`),
31
+ // where the primary blue reads 1.8:1 and 1.3:1 — under the 3:1 WCAG 1.4.11 asks of a
32
+ // mark a reader needs.
33
+ --wr-bullet-chart-value-color: var(--wr-color-on-surface);
34
+ --wr-bullet-chart-bar-thickness: calc(100% / 3);
35
+ --wr-bullet-chart-target-color: var(--wr-color-on-surface);
36
+ --wr-bullet-chart-target-thickness: 3px;
37
+ --wr-bullet-chart-target-length: 75%;
38
+ // A ring in the surface colour round the marker, so it stays a line of its own where it
39
+ // crosses the bar, which is the same colour.
40
+ --wr-bullet-chart-target-ring: var(--wr-color-surface);
41
+ --wr-bullet-chart-target-ring-width: 1px;
42
+ // By default as wide as the longer of the two labels, up to the max width, which only
43
+ // this default reads. Give several bullets stacked in a column the same length here and
44
+ // their drawings line up: the labels fill the column and sit against the drawing at any
45
+ // width, a wider one than the max included.
46
+ --wr-bullet-chart-label-max-width: 12rem;
47
+ --wr-bullet-chart-label-width: fit-content(var(--wr-bullet-chart-label-max-width));
48
+ --wr-bullet-chart-label-gap: var(--wr-space-md);
49
+ --wr-bullet-chart-label-font-size: var(--wr-text-sm);
50
+ --wr-bullet-chart-label-font-weight: var(--wr-font-weight-semibold);
51
+ --wr-bullet-chart-label-color: var(--wr-color-on-surface);
52
+ --wr-bullet-chart-sub-label-font-size: var(--wr-text-xs);
53
+ --wr-bullet-chart-sub-label-line-height: var(--wr-text-xs-leading);
54
+ --wr-bullet-chart-sub-label-color: var(--wr-color-on-surface-muted);
55
+ --wr-bullet-chart-scale-gap: var(--wr-space-xs);
56
+ --wr-bullet-chart-tick-length: var(--wr-space-xs);
57
+ --wr-bullet-chart-tick-color: var(--wr-color-on-surface-muted);
58
+ --wr-bullet-chart-tick-font-size: var(--wr-text-xs);
59
+ --wr-bullet-chart-tick-line-height: var(--wr-text-xs-leading);
60
+
61
+ // The drawing above its scale, and with a label, the label column at inline start of
62
+ // both. A grid follows `direction`, so under RTL the labels are on the right.
63
+ display: grid;
64
+ grid-template-areas:
65
+ 'track'
66
+ 'scale';
67
+ grid-template-columns: minmax(var(--wr-bullet-chart-track-min-width), 1fr);
68
+ font-family: var(--wr-bullet-chart-font-family);
69
+ color: var(--wr-bullet-chart-color);
70
+
71
+ &--labelled {
72
+ grid-template-areas:
73
+ 'labels track'
74
+ 'labels scale';
75
+ grid-template-columns: var(--wr-bullet-chart-label-width) minmax(var(--wr-bullet-chart-track-min-width), 1fr);
76
+ column-gap: var(--wr-bullet-chart-label-gap);
77
+ }
78
+
79
+ // Beside the drawing and the scale both, from the top: the label's line is the drawing's
80
+ // height, so a single line sits level with it and the sub-label hangs beside the scale.
81
+ // End-aligned, against the drawing, as Few sets them.
82
+ &__labels {
83
+ grid-area: labels;
84
+ align-self: start;
85
+ display: flex;
86
+ flex-direction: column;
87
+ min-width: 0;
88
+ text-align: end;
89
+ }
90
+
91
+ &__label,
92
+ &__sub-label {
93
+ overflow: hidden;
94
+ text-overflow: ellipsis;
95
+ white-space: nowrap;
96
+ }
97
+
98
+ &__label {
99
+ font-size: var(--wr-bullet-chart-label-font-size);
100
+ font-weight: var(--wr-bullet-chart-label-font-weight);
101
+ line-height: var(--wr-bullet-chart-track-height);
102
+ color: var(--wr-bullet-chart-label-color);
103
+ }
104
+
105
+ &__sub-label {
106
+ font-size: var(--wr-bullet-chart-sub-label-font-size);
107
+ line-height: var(--wr-bullet-chart-sub-label-line-height);
108
+ color: var(--wr-bullet-chart-sub-label-color);
109
+ }
110
+
111
+ // The positioned box every mark is placed in by the shares the component writes, as
112
+ // percentages of its width; nothing in it is in flow.
113
+ &__track {
114
+ grid-area: track;
115
+ align-self: start;
116
+ position: relative;
117
+ block-size: var(--wr-bullet-chart-track-height);
118
+ }
119
+
120
+ &__ranges {
121
+ position: absolute;
122
+ inset: 0;
123
+ overflow: hidden;
124
+ border-radius: var(--wr-bullet-chart-track-radius);
125
+ background: var(--wr-bullet-chart-track-color);
126
+ }
127
+
128
+ &__range {
129
+ position: absolute;
130
+ inset-block: 0;
131
+ inset-inline-start: calc(var(--wr-bullet-chart-start, 0) * 100%);
132
+ inline-size: calc(var(--wr-bullet-chart-size, 0) * 100%);
133
+ background: color-mix(
134
+ in srgb,
135
+ var(--wr-bullet-chart-range-end) var(--wr-bullet-chart-range-mix, 0%),
136
+ var(--wr-bullet-chart-range-start)
137
+ );
138
+
139
+ // The end of the last band, as a rule just past it. A last band that reaches the end
140
+ // of the scale puts the rule outside the track, where the layer above clips it, so it
141
+ // shows only where the scale runs on past the last limit.
142
+ &:last-child::after {
143
+ content: '';
144
+ position: absolute;
145
+ inset-block: 0;
146
+ inset-inline-start: 100%;
147
+ border-inline-start: 1px solid var(--wr-bullet-chart-range-edge-color);
148
+ }
149
+ }
150
+
151
+ // A third of the line high and centred on it, from zero to the value; a zero value is
152
+ // still a sliver, since it is a reading.
153
+ &__bar {
154
+ position: absolute;
155
+ inset-block: calc(50% - var(--wr-bullet-chart-bar-thickness) / 2);
156
+ inset-inline-start: calc(var(--wr-bullet-chart-start, 0) * 100%);
157
+ inline-size: calc(var(--wr-bullet-chart-size, 0) * 100%);
158
+ min-inline-size: 1px;
159
+ background: var(--wr-bullet-chart-value-color);
160
+ transition:
161
+ inset-inline-start var(--wr-duration-slow) var(--wr-ease-out),
162
+ inline-size var(--wr-duration-slow) var(--wr-ease-out);
163
+ }
164
+
165
+ // Across the line on its value, held inside the drawing at either end so no part of it
166
+ // is cut off or reaches past the chart's box.
167
+ &__target {
168
+ position: absolute;
169
+ inset-block: calc(50% - var(--wr-bullet-chart-target-length) / 2);
170
+ inset-inline-start: clamp(
171
+ 0px,
172
+ calc(var(--wr-bullet-chart-at, 0) * 100% - var(--wr-bullet-chart-target-thickness) / 2),
173
+ calc(100% - var(--wr-bullet-chart-target-thickness))
174
+ );
175
+ inline-size: var(--wr-bullet-chart-target-thickness);
176
+ background: var(--wr-bullet-chart-target-color);
177
+ outline: var(--wr-bullet-chart-target-ring-width) solid var(--wr-bullet-chart-target-ring);
178
+ transition: inset-inline-start var(--wr-duration-slow) var(--wr-ease-out);
179
+ }
180
+
181
+ // As wide as the drawing, so a tick's share is of the drawing too. Every tick is out of
182
+ // flow, so the strip is given the height of a mark and a line of text.
183
+ &__scale {
184
+ grid-area: scale;
185
+ position: relative;
186
+ block-size: calc(var(--wr-bullet-chart-tick-length) + var(--wr-bullet-chart-tick-line-height));
187
+ margin-block-start: var(--wr-bullet-chart-scale-gap);
188
+ font-size: var(--wr-bullet-chart-tick-font-size);
189
+ line-height: var(--wr-bullet-chart-tick-line-height);
190
+ color: var(--wr-bullet-chart-tick-color);
191
+ font-variant-numeric: tabular-nums;
192
+ }
193
+
194
+ // A box of no width on the tick's value, its mark and label centred on it — so it is
195
+ // centred in either direction with no transform — and aligned inwards at either end of
196
+ // the scale, so the first and last labels stay over the drawing.
197
+ &__tick {
198
+ position: absolute;
199
+ inset-block-start: 0;
200
+ inset-inline-start: calc(var(--wr-bullet-chart-at, 0) * 100%);
201
+ inline-size: 0;
202
+ display: flex;
203
+ flex-direction: column;
204
+ align-items: center;
205
+
206
+ &::before {
207
+ content: '';
208
+ block-size: var(--wr-bullet-chart-tick-length);
209
+ border-inline-start: 1px solid var(--wr-bullet-chart-tick-color);
210
+ }
211
+
212
+ &--start {
213
+ align-items: flex-start;
214
+ }
215
+
216
+ &--end {
217
+ align-items: flex-end;
218
+ }
219
+ }
220
+
221
+ // Its direction follows its own text (`plaintext`), as the waterfall's and the box
222
+ // plot's ticks do: a negative tick is a `-` in front of digits, neither of which has a
223
+ // direction of its own, and under RTL the sign would land on the far side — `20-`. It is
224
+ // shrunk to its text in the zero-width column above, so it keeps its place either way.
225
+ &__tick-label {
226
+ white-space: nowrap;
227
+ unicode-bidi: plaintext;
228
+ }
229
+ }
230
+
231
+ // The bar and the marker are empty boxes painted by `background`, which forced colors
232
+ // resets to `Canvas` — they would vanish into the page. They keep their paint and
233
+ // take the system's text colour; the bands lose their greys to the page colour, so each
234
+ // one's start is drawn as a rule in the system's muted colour, as is the last one's end,
235
+ // and the track gets an edge.
236
+ @media (forced-colors: active) {
237
+ .wr-bullet-chart {
238
+ --wr-bullet-chart-track-color: Canvas;
239
+ --wr-bullet-chart-range-edge-color: GrayText;
240
+ --wr-bullet-chart-value-color: CanvasText;
241
+ --wr-bullet-chart-target-color: CanvasText;
242
+ --wr-bullet-chart-target-ring: Canvas;
243
+ }
244
+
245
+ .wr-bullet-chart__ranges {
246
+ outline: 1px solid CanvasText;
247
+ }
248
+
249
+ .wr-bullet-chart__range {
250
+ forced-color-adjust: none;
251
+ background: Canvas;
252
+ border-inline-start: 1px solid GrayText;
253
+ }
254
+
255
+ .wr-bullet-chart__bar,
256
+ .wr-bullet-chart__target {
257
+ forced-color-adjust: none;
258
+ }
259
+ }
260
+
261
+ // The bar grows to its value and the marker slides to its target; with reduced motion
262
+ // both land there at once.
263
+ @media (prefers-reduced-motion: reduce) {
264
+ .wr-bullet-chart__bar,
265
+ .wr-bullet-chart__target {
266
+ transition: none;
267
+ }
268
+ }
@@ -1,14 +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. With `dataTable`, the
5
+ // figures render as a `<wr-chart-table>` beside the grid, which its own sheet clips out of
6
+ // sight.
7
+ @use '../../core/styles' as core-styles; // WrChartTable
8
+
4
9
  .wr-calendar-heatmap {
5
10
  --wr-calendar-heatmap-font-family: var(--wr-font-family-base);
6
11
  --wr-calendar-heatmap-grid-gap: var(--wr-space-sm);
7
12
  --wr-calendar-heatmap-weekday-font-size: var(--wr-text-xs);
8
13
  --wr-calendar-heatmap-weekday-line-height: var(--wr-leading-none);
9
14
  --wr-calendar-heatmap-month-font-size: var(--wr-text-xs);
15
+ // The weekday and month names, muted as an axis' labels are on every chart.
16
+ --wr-calendar-heatmap-label-color: var(--wr-color-on-surface-muted);
10
17
 
11
18
  display: inline-block;
19
+ // The containing block of the out-of-flow `dataTable` copy, as on every chart that
20
+ // renders one: in a scroller it would otherwise keep its place in the scrolled content.
21
+ position: relative;
12
22
  // A year is 53 columns of a FIXED cell size, so the grid has no reflow in it:
13
23
  // its intrinsic width is ~731px whatever the container, and without a cap it
14
24
  // escaped the card it sits in and gave the whole document a 397px horizontal
@@ -25,7 +35,13 @@
25
35
  // legible.
26
36
  overflow-y: hidden;
27
37
  font-family: var(--wr-calendar-heatmap-font-family);
28
- color: var(--wr-color-on-surface-muted);
38
+ color: var(--wr-calendar-heatmap-label-color);
39
+
40
+ // The host is a tab stop while it scrolls (see the component), so the keyboard can move
41
+ // it. Outset: an element's own `overflow` does not clip its outline.
42
+ &:focus-visible {
43
+ @include theme.focus-ring;
44
+ }
29
45
 
30
46
  &__grid {
31
47
  display: grid;
@@ -42,7 +58,7 @@
42
58
  grid-template-rows: repeat(7, var(--wr-calendar-heatmap-cell-size));
43
59
  gap: var(--wr-calendar-heatmap-cell-gap);
44
60
  font-size: var(--wr-calendar-heatmap-weekday-font-size);
45
- color: var(--wr-color-on-surface-muted);
61
+ color: var(--wr-calendar-heatmap-label-color);
46
62
  align-items: center;
47
63
  }
48
64
 
@@ -65,7 +81,7 @@
65
81
  &__months {
66
82
  grid-area: months;
67
83
  font-size: var(--wr-calendar-heatmap-month-font-size);
68
- color: var(--wr-color-on-surface-muted);
84
+ color: var(--wr-calendar-heatmap-label-color);
69
85
  }
70
86
 
71
87
  &__month {
@@ -98,5 +114,11 @@
98
114
  &:hover {
99
115
  transform: scale(1.4);
100
116
  }
117
+
118
+ // The hovered square still grows, so the pointer's place stays marked; it just lands
119
+ // there at once rather than tweening on every square the pointer crosses.
120
+ @media (prefers-reduced-motion: reduce) {
121
+ transition: none;
122
+ }
101
123
  }
102
124
  }