ngwr 11.2.0 → 12.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (394) hide show
  1. package/README.md +7 -7
  2. package/burger/styles/_index.scss +1 -1
  3. package/button/styles/_index.scss +2 -2
  4. package/calendar/styles/_index.scss +32 -12
  5. package/calendar-heatmap/styles/_index.scss +20 -0
  6. package/carousel/styles/_index.scss +23 -1
  7. package/cascader/styles/_index.scss +15 -3
  8. package/checkbox/styles/_index.scss +2 -2
  9. package/collapse/styles/_index.scss +2 -2
  10. package/color-picker/styles/_index.scss +3 -3
  11. package/compare/styles/_index.scss +18 -2
  12. package/context-menu/styles/_index.scss +21 -2
  13. package/date-picker/styles/_index.scss +5 -5
  14. package/descriptions/styles/_index.scss +1 -1
  15. package/drag-drop/styles/_index.scss +28 -1
  16. package/drawer/styles/_index.scss +37 -0
  17. package/dropdown/styles/_index.scss +2 -2
  18. package/event-calendar/styles/_index.scss +67 -10
  19. package/fesm2022/ngwr-action-sheet.mjs +3 -3
  20. package/fesm2022/ngwr-affix.mjs +3 -3
  21. package/fesm2022/ngwr-alert.mjs +3 -3
  22. package/fesm2022/ngwr-anchor.mjs +3 -3
  23. package/fesm2022/ngwr-aurora.mjs +3 -3
  24. package/fesm2022/ngwr-avatar.mjs +3 -3
  25. package/fesm2022/ngwr-back-top.mjs +3 -3
  26. package/fesm2022/ngwr-badge.mjs +6 -6
  27. package/fesm2022/ngwr-bar-chart-testing.mjs +20 -2
  28. package/fesm2022/ngwr-bar-chart-testing.mjs.map +1 -1
  29. package/fesm2022/ngwr-bar-chart.mjs +3 -3
  30. package/fesm2022/ngwr-blur-text.mjs +3 -3
  31. package/fesm2022/ngwr-blur-text.mjs.map +1 -1
  32. package/fesm2022/ngwr-border-glow.mjs +4 -4
  33. package/fesm2022/ngwr-border-glow.mjs.map +1 -1
  34. package/fesm2022/ngwr-breadcrumbs.mjs +29 -17
  35. package/fesm2022/ngwr-breadcrumbs.mjs.map +1 -1
  36. package/fesm2022/ngwr-burger.mjs +3 -3
  37. package/fesm2022/ngwr-button.mjs +6 -6
  38. package/fesm2022/ngwr-calendar-heatmap.mjs +17 -5
  39. package/fesm2022/ngwr-calendar-heatmap.mjs.map +1 -1
  40. package/fesm2022/ngwr-calendar-testing.mjs +1 -1
  41. package/fesm2022/ngwr-calendar-testing.mjs.map +1 -1
  42. package/fesm2022/ngwr-calendar.mjs +187 -9
  43. package/fesm2022/ngwr-calendar.mjs.map +1 -1
  44. package/fesm2022/ngwr-card.mjs +10 -10
  45. package/fesm2022/ngwr-card.mjs.map +1 -1
  46. package/fesm2022/ngwr-carousel.mjs +124 -24
  47. package/fesm2022/ngwr-carousel.mjs.map +1 -1
  48. package/fesm2022/ngwr-cascader.mjs +48 -5
  49. package/fesm2022/ngwr-cascader.mjs.map +1 -1
  50. package/fesm2022/ngwr-checkbox.mjs +6 -6
  51. package/fesm2022/ngwr-circular-text.mjs +4 -4
  52. package/fesm2022/ngwr-circular-text.mjs.map +1 -1
  53. package/fesm2022/ngwr-click-spark.mjs +27 -7
  54. package/fesm2022/ngwr-click-spark.mjs.map +1 -1
  55. package/fesm2022/ngwr-clipboard.mjs +3 -3
  56. package/fesm2022/ngwr-collapse.mjs +9 -9
  57. package/fesm2022/ngwr-color-picker-testing.mjs +26 -6
  58. package/fesm2022/ngwr-color-picker-testing.mjs.map +1 -1
  59. package/fesm2022/ngwr-color-picker.mjs +98 -8
  60. package/fesm2022/ngwr-color-picker.mjs.map +1 -1
  61. package/fesm2022/ngwr-command-palette.mjs +14 -5
  62. package/fesm2022/ngwr-command-palette.mjs.map +1 -1
  63. package/fesm2022/ngwr-compare.mjs +3 -3
  64. package/fesm2022/ngwr-confetti.mjs +31 -6
  65. package/fesm2022/ngwr-confetti.mjs.map +1 -1
  66. package/fesm2022/ngwr-config.mjs +9 -0
  67. package/fesm2022/ngwr-config.mjs.map +1 -1
  68. package/fesm2022/ngwr-context-menu-testing.mjs +30 -11
  69. package/fesm2022/ngwr-context-menu-testing.mjs.map +1 -1
  70. package/fesm2022/ngwr-context-menu.mjs +333 -43
  71. package/fesm2022/ngwr-context-menu.mjs.map +1 -1
  72. package/fesm2022/ngwr-cookie.mjs +3 -3
  73. package/fesm2022/ngwr-counter.mjs +25 -9
  74. package/fesm2022/ngwr-counter.mjs.map +1 -1
  75. package/fesm2022/{ngwr-date-adapter-fns.mjs → ngwr-date-adapters-fns.mjs} +37 -10
  76. package/fesm2022/ngwr-date-adapters-fns.mjs.map +1 -0
  77. package/fesm2022/{ngwr-date-adapter-luxon.mjs → ngwr-date-adapters-luxon.mjs} +5 -5
  78. package/fesm2022/ngwr-date-adapters-luxon.mjs.map +1 -0
  79. package/fesm2022/ngwr-date-picker-testing.mjs +11 -6
  80. package/fesm2022/ngwr-date-picker-testing.mjs.map +1 -1
  81. package/fesm2022/ngwr-date-picker.mjs +119 -37
  82. package/fesm2022/ngwr-date-picker.mjs.map +1 -1
  83. package/fesm2022/{ngwr-date-adapter.mjs → ngwr-date.mjs} +36 -10
  84. package/fesm2022/ngwr-date.mjs.map +1 -0
  85. package/fesm2022/ngwr-decrypt-text.mjs +3 -3
  86. package/fesm2022/ngwr-density.mjs +6 -6
  87. package/fesm2022/ngwr-descriptions.mjs +6 -6
  88. package/fesm2022/ngwr-dialog.mjs +73 -18
  89. package/fesm2022/ngwr-dialog.mjs.map +1 -1
  90. package/fesm2022/ngwr-directives.mjs +12 -12
  91. package/fesm2022/ngwr-divider.mjs +52 -5
  92. package/fesm2022/ngwr-divider.mjs.map +1 -1
  93. package/fesm2022/ngwr-donut-chart-testing.mjs +8 -4
  94. package/fesm2022/ngwr-donut-chart-testing.mjs.map +1 -1
  95. package/fesm2022/ngwr-donut-chart.mjs +7 -7
  96. package/fesm2022/ngwr-donut-chart.mjs.map +1 -1
  97. package/fesm2022/ngwr-drag-drop.mjs +160 -11
  98. package/fesm2022/ngwr-drag-drop.mjs.map +1 -1
  99. package/fesm2022/ngwr-drawer.mjs +121 -58
  100. package/fesm2022/ngwr-drawer.mjs.map +1 -1
  101. package/fesm2022/ngwr-dropdown.mjs +26 -10
  102. package/fesm2022/ngwr-dropdown.mjs.map +1 -1
  103. package/fesm2022/ngwr-empty.mjs +3 -3
  104. package/fesm2022/ngwr-event-calendar.mjs +28 -15
  105. package/fesm2022/ngwr-event-calendar.mjs.map +1 -1
  106. package/fesm2022/ngwr-falling-text-testing.mjs +5 -3
  107. package/fesm2022/ngwr-falling-text-testing.mjs.map +1 -1
  108. package/fesm2022/ngwr-falling-text.mjs +75 -46
  109. package/fesm2022/ngwr-falling-text.mjs.map +1 -1
  110. package/fesm2022/ngwr-file-upload.mjs +3 -3
  111. package/fesm2022/ngwr-form.mjs +32 -15
  112. package/fesm2022/ngwr-form.mjs.map +1 -1
  113. package/fesm2022/ngwr-fuzzy-text.mjs +21 -11
  114. package/fesm2022/ngwr-fuzzy-text.mjs.map +1 -1
  115. package/fesm2022/ngwr-gauge.mjs +3 -3
  116. package/fesm2022/ngwr-glitch-text-testing.mjs +51 -17
  117. package/fesm2022/ngwr-glitch-text-testing.mjs.map +1 -1
  118. package/fesm2022/ngwr-glitch-text.mjs +7 -7
  119. package/fesm2022/ngwr-glitch-text.mjs.map +1 -1
  120. package/fesm2022/ngwr-gradient-text-testing.mjs +46 -11
  121. package/fesm2022/ngwr-gradient-text-testing.mjs.map +1 -1
  122. package/fesm2022/ngwr-gradient-text.mjs +4 -4
  123. package/fesm2022/ngwr-gradient-text.mjs.map +1 -1
  124. package/fesm2022/ngwr-hotkey.mjs +24 -9
  125. package/fesm2022/ngwr-hotkey.mjs.map +1 -1
  126. package/fesm2022/ngwr-i18n-en.mjs +73 -1
  127. package/fesm2022/ngwr-i18n-en.mjs.map +1 -1
  128. package/fesm2022/ngwr-i18n-ru.mjs +55 -1
  129. package/fesm2022/ngwr-i18n-ru.mjs.map +1 -1
  130. package/fesm2022/ngwr-i18n.mjs +26 -15
  131. package/fesm2022/ngwr-i18n.mjs.map +1 -1
  132. package/fesm2022/ngwr-icon.mjs +6 -6
  133. package/fesm2022/ngwr-image-cropper-testing.mjs +53 -9
  134. package/fesm2022/ngwr-image-cropper-testing.mjs.map +1 -1
  135. package/fesm2022/ngwr-image-cropper.mjs +150 -12
  136. package/fesm2022/ngwr-image-cropper.mjs.map +1 -1
  137. package/fesm2022/ngwr-input-number-testing.mjs +15 -10
  138. package/fesm2022/ngwr-input-number-testing.mjs.map +1 -1
  139. package/fesm2022/ngwr-input-number.mjs +17 -10
  140. package/fesm2022/ngwr-input-number.mjs.map +1 -1
  141. package/fesm2022/ngwr-input-otp-testing.mjs +12 -6
  142. package/fesm2022/ngwr-input-otp-testing.mjs.map +1 -1
  143. package/fesm2022/ngwr-input-otp.mjs +24 -5
  144. package/fesm2022/ngwr-input-otp.mjs.map +1 -1
  145. package/fesm2022/ngwr-input.mjs +15 -15
  146. package/fesm2022/ngwr-keyboard.mjs +3 -3
  147. package/fesm2022/ngwr-knob.mjs +3 -3
  148. package/fesm2022/ngwr-layout.mjs +15 -15
  149. package/fesm2022/ngwr-lightbox.mjs +4 -4
  150. package/fesm2022/ngwr-lightbox.mjs.map +1 -1
  151. package/fesm2022/ngwr-line-chart.mjs +73 -26
  152. package/fesm2022/ngwr-line-chart.mjs.map +1 -1
  153. package/fesm2022/ngwr-list.mjs +7 -7
  154. package/fesm2022/ngwr-list.mjs.map +1 -1
  155. package/fesm2022/ngwr-loading-bar.mjs +7 -7
  156. package/fesm2022/ngwr-loading-bar.mjs.map +1 -1
  157. package/fesm2022/ngwr-markdown.mjs +66 -8
  158. package/fesm2022/ngwr-markdown.mjs.map +1 -1
  159. package/fesm2022/ngwr-marquee.mjs +4 -4
  160. package/fesm2022/ngwr-marquee.mjs.map +1 -1
  161. package/fesm2022/ngwr-media.mjs +3 -3
  162. package/fesm2022/ngwr-mention.mjs +108 -13
  163. package/fesm2022/ngwr-mention.mjs.map +1 -1
  164. package/fesm2022/ngwr-meta.mjs +6 -6
  165. package/fesm2022/ngwr-meter-group-testing.mjs +26 -6
  166. package/fesm2022/ngwr-meter-group-testing.mjs.map +1 -1
  167. package/fesm2022/ngwr-meter-group.mjs +3 -3
  168. package/fesm2022/ngwr-overlay.mjs +6 -6
  169. package/fesm2022/ngwr-page-header.mjs +3 -3
  170. package/fesm2022/ngwr-pagination-testing.mjs +6 -6
  171. package/fesm2022/ngwr-pagination-testing.mjs.map +1 -1
  172. package/fesm2022/ngwr-pagination.mjs +17 -13
  173. package/fesm2022/ngwr-pagination.mjs.map +1 -1
  174. package/fesm2022/ngwr-pipes.mjs +39 -26
  175. package/fesm2022/ngwr-pipes.mjs.map +1 -1
  176. package/fesm2022/ngwr-platform.mjs +9 -9
  177. package/fesm2022/ngwr-popconfirm.mjs +6 -6
  178. package/fesm2022/ngwr-popover-testing.mjs +7 -2
  179. package/fesm2022/ngwr-popover-testing.mjs.map +1 -1
  180. package/fesm2022/ngwr-popover.mjs +155 -33
  181. package/fesm2022/ngwr-popover.mjs.map +1 -1
  182. package/fesm2022/ngwr-progress.mjs +3 -3
  183. package/fesm2022/ngwr-pull-to-refresh.mjs +3 -3
  184. package/fesm2022/ngwr-qr.mjs +42 -5
  185. package/fesm2022/ngwr-qr.mjs.map +1 -1
  186. package/fesm2022/ngwr-radio.mjs +6 -6
  187. package/fesm2022/ngwr-rating.mjs +3 -3
  188. package/fesm2022/ngwr-result.mjs +21 -30
  189. package/fesm2022/ngwr-result.mjs.map +1 -1
  190. package/fesm2022/ngwr-rotating-text.mjs +3 -3
  191. package/fesm2022/ngwr-scroll.mjs +3 -3
  192. package/fesm2022/ngwr-segmented-testing.mjs +14 -1
  193. package/fesm2022/ngwr-segmented-testing.mjs.map +1 -1
  194. package/fesm2022/ngwr-segmented.mjs +29 -6
  195. package/fesm2022/ngwr-segmented.mjs.map +1 -1
  196. package/fesm2022/ngwr-select.mjs +159 -34
  197. package/fesm2022/ngwr-select.mjs.map +1 -1
  198. package/fesm2022/ngwr-shiny-text.mjs +11 -9
  199. package/fesm2022/ngwr-shiny-text.mjs.map +1 -1
  200. package/fesm2022/ngwr-sidebar.mjs +31 -16
  201. package/fesm2022/ngwr-sidebar.mjs.map +1 -1
  202. package/fesm2022/ngwr-skeleton.mjs +3 -3
  203. package/fesm2022/ngwr-slider.mjs +100 -9
  204. package/fesm2022/ngwr-slider.mjs.map +1 -1
  205. package/fesm2022/ngwr-sparkline.mjs +3 -3
  206. package/fesm2022/ngwr-speed-dial-testing.mjs +15 -13
  207. package/fesm2022/ngwr-speed-dial-testing.mjs.map +1 -1
  208. package/fesm2022/ngwr-speed-dial.mjs +27 -12
  209. package/fesm2022/ngwr-speed-dial.mjs.map +1 -1
  210. package/fesm2022/ngwr-spinner.mjs +3 -3
  211. package/fesm2022/ngwr-splash-cursor.mjs +3 -3
  212. package/fesm2022/ngwr-split-text.mjs +17 -5
  213. package/fesm2022/ngwr-split-text.mjs.map +1 -1
  214. package/fesm2022/ngwr-splitter.mjs +3 -3
  215. package/fesm2022/ngwr-spotlight-card.mjs +7 -7
  216. package/fesm2022/ngwr-spotlight-card.mjs.map +1 -1
  217. package/fesm2022/ngwr-squircle.mjs +6 -6
  218. package/fesm2022/ngwr-star-border.mjs +4 -4
  219. package/fesm2022/ngwr-star-border.mjs.map +1 -1
  220. package/fesm2022/ngwr-statistic.mjs +9 -9
  221. package/fesm2022/ngwr-stepper-testing.mjs +8 -8
  222. package/fesm2022/ngwr-stepper-testing.mjs.map +1 -1
  223. package/fesm2022/ngwr-stepper.mjs +33 -8
  224. package/fesm2022/ngwr-stepper.mjs.map +1 -1
  225. package/fesm2022/ngwr-storage.mjs +17 -5
  226. package/fesm2022/ngwr-storage.mjs.map +1 -1
  227. package/fesm2022/ngwr-switch.mjs +3 -3
  228. package/fesm2022/ngwr-table.mjs +99 -39
  229. package/fesm2022/ngwr-table.mjs.map +1 -1
  230. package/fesm2022/ngwr-tabs-testing.mjs +11 -10
  231. package/fesm2022/ngwr-tabs-testing.mjs.map +1 -1
  232. package/fesm2022/ngwr-tabs.mjs +36 -10
  233. package/fesm2022/ngwr-tabs.mjs.map +1 -1
  234. package/fesm2022/ngwr-textarea.mjs +3 -3
  235. package/fesm2022/ngwr-theme.mjs +181 -4
  236. package/fesm2022/ngwr-theme.mjs.map +1 -1
  237. package/fesm2022/ngwr-tilt-card.mjs +7 -7
  238. package/fesm2022/ngwr-tilt-card.mjs.map +1 -1
  239. package/fesm2022/ngwr-timeline.mjs +6 -6
  240. package/fesm2022/ngwr-toast.mjs +9 -9
  241. package/fesm2022/ngwr-toolbar.mjs +3 -3
  242. package/fesm2022/ngwr-tour.mjs +34 -10
  243. package/fesm2022/ngwr-tour.mjs.map +1 -1
  244. package/fesm2022/ngwr-transfer.mjs +3 -3
  245. package/fesm2022/ngwr-tree.mjs +28 -10
  246. package/fesm2022/ngwr-tree.mjs.map +1 -1
  247. package/fesm2022/ngwr-typewriter-testing.mjs +15 -1
  248. package/fesm2022/ngwr-typewriter-testing.mjs.map +1 -1
  249. package/fesm2022/ngwr-typewriter.mjs +13 -5
  250. package/fesm2022/ngwr-typewriter.mjs.map +1 -1
  251. package/fesm2022/ngwr-typography.mjs +3 -3
  252. package/fesm2022/ngwr-utils.mjs +5 -2
  253. package/fesm2022/ngwr-utils.mjs.map +1 -1
  254. package/fesm2022/ngwr-version.mjs +1 -1
  255. package/fesm2022/ngwr-version.mjs.map +1 -1
  256. package/fesm2022/ngwr-virtual-scroll.mjs +4 -4
  257. package/fesm2022/ngwr-virtual-scroll.mjs.map +1 -1
  258. package/fesm2022/ngwr-waves.mjs +4 -4
  259. package/fesm2022/ngwr-waves.mjs.map +1 -1
  260. package/fesm2022/ngwr-window.mjs +94 -24
  261. package/fesm2022/ngwr-window.mjs.map +1 -1
  262. package/file-upload/styles/_index.scss +2 -2
  263. package/glitch-text/styles/_index.scss +27 -12
  264. package/i18n/en.json +56 -6
  265. package/i18n/ru.json +56 -6
  266. package/image-cropper/styles/_index.scss +19 -0
  267. package/input/styles/_index.scss +2 -2
  268. package/input-number/styles/_index.scss +2 -2
  269. package/input-otp/styles/_index.scss +9 -2
  270. package/knob/styles/_index.scss +1 -1
  271. package/lightbox/styles/_index.scss +16 -2
  272. package/line-chart/styles/_index.scss +28 -14
  273. package/list/styles/_index.scss +1 -1
  274. package/llms-full.txt +18 -23
  275. package/llms.txt +22 -6
  276. package/markdown/styles/_index.scss +3 -3
  277. package/mcp/api.js +6 -4
  278. package/mcp/catalog.js +40 -3
  279. package/mcp/providers.js +16 -3
  280. package/mcp/tools.js +21 -1
  281. package/meter-group/styles/_index.scss +1 -1
  282. package/overlay/styles/_index.scss +33 -1
  283. package/package.json +17 -12
  284. package/pagination/styles/_index.scss +23 -1
  285. package/popover/styles/_index.scss +16 -7
  286. package/progress/styles/_index.scss +1 -1
  287. package/radio/styles/_index.scss +2 -2
  288. package/rating/styles/_index.scss +1 -1
  289. package/schematics/collection.json +1 -1
  290. package/schematics/migrations/v12/index.js +65 -0
  291. package/schematics/migrations/v7/index.js +12 -1
  292. package/schematics/migrations/v8/index.js +10 -1
  293. package/schematics/migrations.json +5 -0
  294. package/schematics/ng-add/index.js +8 -3
  295. package/schematics/provider/index.js +80 -13
  296. package/schematics/use/index.js +9 -129
  297. package/schematics/use/rule.js +206 -0
  298. package/schematics/use/symbol-map.json +4 -4
  299. package/segmented/styles/_index.scss +14 -3
  300. package/select/styles/_index.scss +14 -2
  301. package/sidebar/styles/_index.scss +12 -10
  302. package/skills/ngwr/SKILL.md +7 -5
  303. package/skills/ngwr/references/catalog.md +9 -9
  304. package/skills/ngwr/references/setup.md +10 -5
  305. package/slider/styles/_index.scss +1 -1
  306. package/speed-dial/styles/_index.scss +1 -1
  307. package/stepper/styles/_index.scss +12 -3
  308. package/switch/styles/_index.scss +2 -2
  309. package/table/styles/_index.scss +61 -12
  310. package/tabs/styles/_index.scss +1 -1
  311. package/textarea/styles/_index.scss +1 -1
  312. package/theme/styles/_colors.scss +142 -56
  313. package/theme/styles/_dark.scss +46 -3
  314. package/theme/styles/_focus.scss +28 -5
  315. package/theme/styles/_mixins.scss +1 -1
  316. package/theme/styles/_variables.scss +67 -0
  317. package/transfer/styles/_index.scss +26 -3
  318. package/tree/styles/_index.scss +29 -6
  319. package/types/ngwr-bar-chart-testing.d.ts +9 -1
  320. package/types/ngwr-blur-text.d.ts +8 -4
  321. package/types/ngwr-breadcrumbs.d.ts +17 -10
  322. package/types/ngwr-calendar-testing.d.ts +1 -1
  323. package/types/ngwr-calendar.d.ts +66 -0
  324. package/types/ngwr-carousel.d.ts +85 -6
  325. package/types/ngwr-cascader.d.ts +17 -0
  326. package/types/ngwr-click-spark.d.ts +4 -0
  327. package/types/ngwr-color-picker-testing.d.ts +8 -0
  328. package/types/ngwr-color-picker.d.ts +21 -1
  329. package/types/ngwr-confetti.d.ts +8 -0
  330. package/types/ngwr-config.d.ts +10 -1
  331. package/types/ngwr-context-menu-testing.d.ts +24 -11
  332. package/types/ngwr-context-menu.d.ts +56 -0
  333. package/types/ngwr-counter.d.ts +1 -0
  334. package/types/{ngwr-date-adapter-fns.d.ts → ngwr-date-adapters-fns.d.ts} +33 -6
  335. package/types/{ngwr-date-adapter-luxon.d.ts → ngwr-date-adapters-luxon.d.ts} +1 -1
  336. package/types/ngwr-date-picker-testing.d.ts +11 -6
  337. package/types/ngwr-date-picker.d.ts +8 -4
  338. package/types/{ngwr-date-adapter.d.ts → ngwr-date.d.ts} +24 -5
  339. package/types/ngwr-dialog.d.ts +38 -1
  340. package/types/ngwr-divider.d.ts +25 -0
  341. package/types/ngwr-donut-chart-testing.d.ts +7 -3
  342. package/types/ngwr-donut-chart.d.ts +3 -3
  343. package/types/ngwr-drag-drop.d.ts +56 -2
  344. package/types/ngwr-drawer.d.ts +56 -5
  345. package/types/ngwr-event-calendar.d.ts +8 -2
  346. package/types/ngwr-falling-text-testing.d.ts +5 -3
  347. package/types/ngwr-falling-text.d.ts +1 -1
  348. package/types/ngwr-form.d.ts +12 -2
  349. package/types/ngwr-glitch-text-testing.d.ts +37 -8
  350. package/types/ngwr-gradient-text-testing.d.ts +16 -3
  351. package/types/ngwr-i18n.d.ts +13 -4
  352. package/types/ngwr-image-cropper-testing.d.ts +49 -10
  353. package/types/ngwr-image-cropper.d.ts +70 -5
  354. package/types/ngwr-input-number-testing.d.ts +15 -10
  355. package/types/ngwr-input-number.d.ts +11 -4
  356. package/types/ngwr-input-otp-testing.d.ts +12 -6
  357. package/types/ngwr-input-otp.d.ts +15 -1
  358. package/types/ngwr-line-chart.d.ts +20 -3
  359. package/types/ngwr-markdown.d.ts +11 -0
  360. package/types/ngwr-mention.d.ts +32 -0
  361. package/types/ngwr-meter-group-testing.d.ts +12 -2
  362. package/types/ngwr-overlay.d.ts +1 -0
  363. package/types/ngwr-pagination-testing.d.ts +4 -4
  364. package/types/ngwr-pipes.d.ts +1 -1
  365. package/types/ngwr-popover-testing.d.ts +7 -2
  366. package/types/ngwr-popover.d.ts +1 -0
  367. package/types/ngwr-result.d.ts +6 -0
  368. package/types/ngwr-segmented-testing.d.ts +9 -0
  369. package/types/ngwr-segmented.d.ts +21 -1
  370. package/types/ngwr-select.d.ts +68 -6
  371. package/types/ngwr-shiny-text.d.ts +4 -2
  372. package/types/ngwr-sidebar.d.ts +14 -5
  373. package/types/ngwr-slider.d.ts +69 -1
  374. package/types/ngwr-speed-dial-testing.d.ts +15 -11
  375. package/types/ngwr-speed-dial.d.ts +22 -3
  376. package/types/ngwr-split-text.d.ts +9 -0
  377. package/types/ngwr-stepper-testing.d.ts +5 -5
  378. package/types/ngwr-stepper.d.ts +8 -0
  379. package/types/ngwr-storage.d.ts +1 -0
  380. package/types/ngwr-table.d.ts +104 -11
  381. package/types/ngwr-tabs-testing.d.ts +11 -10
  382. package/types/ngwr-tabs.d.ts +2 -0
  383. package/types/ngwr-theme.d.ts +82 -1
  384. package/types/ngwr-tour.d.ts +22 -4
  385. package/types/ngwr-tree.d.ts +5 -4
  386. package/types/ngwr-typewriter-testing.d.ts +10 -0
  387. package/types/ngwr-utils.d.ts +5 -2
  388. package/types/ngwr-version.d.ts +1 -1
  389. package/types/ngwr-window.d.ts +39 -11
  390. package/typography/styles/_index.scss +1 -1
  391. package/window/styles/_index.scss +72 -26
  392. package/fesm2022/ngwr-date-adapter-fns.mjs.map +0 -1
  393. package/fesm2022/ngwr-date-adapter-luxon.mjs.map +0 -1
  394. package/fesm2022/ngwr-date-adapter.mjs.map +0 -1
@@ -1,7 +1,7 @@
1
1
  @use '../../theme/styles' as theme;
2
2
 
3
3
  .wr-segmented {
4
- --wr-segmented-bg: rgba(var(--wr-color-outline-rgb), 0.4);
4
+ --wr-segmented-bg: var(--wr-color-fill);
5
5
  --wr-segmented-color: var(--wr-color-on-surface);
6
6
  --wr-segmented-selected-bg: var(--wr-color-surface);
7
7
  --wr-segmented-selected-color: var(--wr-color-on-surface);
@@ -87,6 +87,17 @@
87
87
  border: 0;
88
88
  // Height = line-height + 2×option-py + 2×track-padding (md → 30px); all scale per size.
89
89
  padding: var(--wr-segmented-option-py) 0.75rem;
90
+ // The track divides into `1fr` columns, so an option's width has nothing to
91
+ // do with its own text: on a crowded track the label outgrows the option and
92
+ // paints across the inline padding — which is FINE, the padding is a gutter
93
+ // for a label that fits rather than a wall for one that doesn't, and giving
94
+ // the text that room is the only reason six labels still read at 375px. What
95
+ // is not fine is what happened past that: at 320px "Bottom" ran 4.2px beyond
96
+ // its own option and overlapped the next segment's word by 8.4px, two labels
97
+ // printed on top of each other. Clip at the option instead. Note the clip
98
+ // box is the PADDING box, so the gutter stays available; and an `outline`
99
+ // is not clipped by its own element, so the focus ring is untouched.
100
+ overflow: hidden;
90
101
  @include theme.smooth-br(var(--wr-segmented-thumb-radius));
91
102
  color: var(--wr-segmented-color);
92
103
  font: inherit;
@@ -107,7 +118,7 @@
107
118
 
108
119
  &:disabled {
109
120
  cursor: not-allowed;
110
- opacity: 0.5;
121
+ opacity: var(--wr-disabled-opacity);
111
122
  }
112
123
  }
113
124
 
@@ -121,6 +132,6 @@
121
132
 
122
133
  &--disabled {
123
134
  pointer-events: none;
124
- opacity: 0.6;
135
+ opacity: var(--wr-disabled-opacity);
125
136
  }
126
137
  }
@@ -41,7 +41,7 @@
41
41
 
42
42
  &--disabled {
43
43
  --wr-select-color: var(--wr-color-on-surface-muted);
44
- --wr-select-bg: rgba(var(--wr-color-outline-rgb), 0.35);
44
+ --wr-select-bg: var(--wr-color-fill);
45
45
  }
46
46
 
47
47
  &__trigger {
@@ -184,6 +184,18 @@
184
184
  color: var(--wr-color-text-muted);
185
185
  }
186
186
 
187
+ // At `maxItems` the input goes READONLY rather than disabled — it is the
188
+ // only tab stop in the control, and Backspace here is the way back under the
189
+ // cap. Nothing painted that, so the field kept the I-beam it inherits from
190
+ // the trigger and went on inviting text it would refuse. The cursor is the
191
+ // whole cue on purpose: the field still takes focus and still answers
192
+ // Backspace, so `not-allowed` would say something false about a control that
193
+ // is working. Listed before `:disabled`, which matches a readonly-OR-disabled
194
+ // input too and has to win the tie on source order.
195
+ &:read-only {
196
+ cursor: default;
197
+ }
198
+
187
199
  &:disabled {
188
200
  cursor: not-allowed;
189
201
  }
@@ -360,7 +372,7 @@
360
372
  &--disabled {
361
373
  color: var(--wr-color-on-surface-muted);
362
374
  cursor: not-allowed;
363
- opacity: 0.6;
375
+ opacity: var(--wr-disabled-opacity);
364
376
 
365
377
  &:hover {
366
378
  background: transparent;
@@ -63,7 +63,7 @@
63
63
  &--disabled {
64
64
  color: var(--wr-color-on-surface-muted);
65
65
  pointer-events: none;
66
- opacity: 0.6;
66
+ opacity: var(--wr-disabled-opacity);
67
67
  }
68
68
  }
69
69
 
@@ -88,7 +88,7 @@
88
88
  transition: background var(--wr-transition-base);
89
89
 
90
90
  &:hover {
91
- background: rgba(var(--wr-color-outline-rgb), 0.5);
91
+ background: var(--wr-color-fill-strong);
92
92
 
93
93
  .wr-sidebar__icon {
94
94
  color: var(--wr-color-primary);
@@ -128,15 +128,17 @@
128
128
 
129
129
  &__group--collapsed &__chevron {
130
130
  // Disclosure affordance, and it IS reading-order: the collapsed chevron
131
- // should point at the trailing edge. `rotate` has no logical form, so under
132
- // RTL the chevron-down still swings to point right — into the sidebar's
133
- // content rather than away from it. Flipping it needs a `[dir]` rule (or a
134
- // direction-aware sign from sidebar.ts), which is beyond a property-level
135
- // rewrite; same call as the segmented thumb and the button seam.
136
- // rtl-ok: transform rotation has no logical equivalent — see above
131
+ // should point at the trailing edge — physically right in LTR, physically
132
+ // left under RTL, where the group header's own label sits to its right.
133
+ // `rotate` has no logical form, so the RTL sign is set by the rule below.
134
+ // rtl-ok: transform rotation has no logical equivalent — the RTL sign is the rule below
137
135
  transform: rotate(-90deg);
138
136
  }
139
137
 
138
+ [dir='rtl'] &__group--collapsed &__chevron {
139
+ transform: rotate(90deg);
140
+ }
141
+
140
142
  // Child items (inside an expanded group)
141
143
  &__list {
142
144
  list-style: none;
@@ -215,7 +217,7 @@
215
217
  &--disabled {
216
218
  color: var(--wr-color-on-surface-muted);
217
219
  pointer-events: none;
218
- opacity: 0.6;
220
+ opacity: var(--wr-disabled-opacity);
219
221
  }
220
222
  }
221
223
 
@@ -223,7 +225,7 @@
223
225
  flex: 0 0 auto;
224
226
  padding: 0.0625rem 0.375rem;
225
227
  border-radius: var(--wr-border-radius-pill);
226
- background: rgba(var(--wr-color-outline-rgb), 0.6);
228
+ background: var(--wr-color-fill-strong);
227
229
  color: var(--wr-color-on-surface-muted);
228
230
  font-size: var(--wr-text-xs);
229
231
  font-weight: var(--wr-font-weight-semibold);
@@ -5,7 +5,7 @@ description: Build Angular UIs with the ngwr component library (standalone, sign
5
5
 
6
6
  # ngwr
7
7
 
8
- An Angular 22 UI library: 202 tree-shakable entry points, 115 of them shipping a selector.
8
+ An Angular 22 UI library: 202 tree-shakable entry points, 110 of them shipping a selector.
9
9
  Standalone, signals-first, zoneless, `ViewEncapsulation.None`. One runtime
10
10
  dependency (`tslib`).
11
11
 
@@ -74,7 +74,9 @@ ng g ngwr:provider overlay # splices a provider into b
74
74
  ```
75
75
 
76
76
  `--path` is a NAMED option on `ngwr:use`; only the symbol is positional, and
77
- passing the path bare fails with `Unknown argument`.
77
+ passing the path bare fails with `Unknown argument`. It takes declarables only:
78
+ a service such as `WrDialog` is refused, since the import line would compile and
79
+ the `imports` entry would not — `inject()` it instead.
78
80
 
79
81
  ### Providers a component cannot work without
80
82
 
@@ -87,12 +89,12 @@ cause.
87
89
  - `provideWrIcons(lucideIcons({ … })) // from 'ngwr/icon' + 'ngwr/icon/adapters/lucide'`
88
90
  — icons resolve by name from a registry you populate
89
91
  — needed by: `WrIcon`
90
- - `provideWrDateAdapter(wrDateFnsAdapter) // from 'ngwr/date-adapter-fns'`
92
+ - `provideWrDateFnsAdapter() // from 'ngwr/date/adapters/fns'`
91
93
  — every date mode goes through an adapter; there is no built-in default
92
94
  — needed by: `WrDatePicker`, `WrCalendar`, `WrEventCalendar`
93
- - `provideWrI18n() + provideWrI18nStaticLoader({ en: wrEn }) // from 'ngwr/i18n'`
95
+ - `provideWrI18n() + provideWrI18nStaticLoader({ en: wrEn }) // from 'ngwr/i18n' + 'ngwr/i18n/en'`
94
96
  — the pipe and directive read from a catalog you provide
95
- — needed by: `WrT`, `WrI18n`
97
+ — needed by: `WrTPipe`, `WrTDirective`, `WrI18n`
96
98
 
97
99
  ## Testing
98
100
 
@@ -42,7 +42,7 @@ root barrel for components.
42
42
  | `ngwr/collapse` | `import { WrCollapse } from 'ngwr/collapse'` | `wr-accordion` `wr-collapse-group` `wr-collapse` |
43
43
  | `ngwr/collapse/testing` | `import { WrCollapseGroupHarness } from 'ngwr/collapse/testing'` | — |
44
44
  | `ngwr/color-picker` | `import { WrColorPicker } from 'ngwr/color-picker'` | `[wrColorPickerTrigger]` `wr-color-picker` |
45
- | `ngwr/color-picker/testing` | `import { WrColorPickerHarness } from 'ngwr/color-picker/testing'` | `.wr-color-picker__tabs` |
45
+ | `ngwr/color-picker/testing` | `import { WrColorPickerHarness } from 'ngwr/color-picker/testing'` | — |
46
46
  | `ngwr/command-palette` | `import { WrCommandPalette } from 'ngwr/command-palette'` | `wr-command-palette` |
47
47
  | `ngwr/command-palette/testing` | `import { WrCommandPaletteGroupHarness } from 'ngwr/command-palette/testing'` | — |
48
48
  | `ngwr/compare` | `import { WrCompare } from 'ngwr/compare'` | `wr-compare` |
@@ -52,11 +52,11 @@ root barrel for components.
52
52
  | `ngwr/context-menu/testing` | `import { WrContextMenuHarness } from 'ngwr/context-menu/testing'` | — |
53
53
  | `ngwr/cookie` | `import { WrCookie } from 'ngwr/cookie'` | — |
54
54
  | `ngwr/counter` | `import { WrCounter } from 'ngwr/counter'` | `wr-count-up` `wr-counter` |
55
- | `ngwr/date-adapter` | `import { WrDateAdapter } from 'ngwr/date-adapter'` | — |
56
- | `ngwr/date-adapter-fns` | `import { WrDateFnsAdapter } from 'ngwr/date-adapter-fns'` | — |
57
- | `ngwr/date-adapter-luxon` | `import { WrLuxonAdapter } from 'ngwr/date-adapter-luxon'` | — |
55
+ | `ngwr/date` | `import { WrDateAdapter } from 'ngwr/date'` | — |
58
56
  | `ngwr/date-picker` | `import { WrDatePicker } from 'ngwr/date-picker'` | `wr-date-picker` `wr-date-range-picker` |
59
57
  | `ngwr/date-picker/testing` | `import { WrDatePickerDayHarness } from 'ngwr/date-picker/testing'` | — |
58
+ | `ngwr/date/adapters/fns` | `import { WrDateFnsAdapter } from 'ngwr/date/adapters/fns'` | — |
59
+ | `ngwr/date/adapters/luxon` | `import { WrLuxonAdapter } from 'ngwr/date/adapters/luxon'` | — |
60
60
  | `ngwr/decrypt-text` | `import { WrDecryptText } from 'ngwr/decrypt-text'` | `wr-decrypt-text` |
61
61
  | `ngwr/decrypt-text/testing` | `import { WrDecryptTextHarness } from 'ngwr/decrypt-text/testing'` | — |
62
62
  | `ngwr/density` | `import { WrDensity } from 'ngwr/density'` | `[wrDensity]` |
@@ -74,7 +74,7 @@ root barrel for components.
74
74
  | `ngwr/dropdown/testing` | `import { WrDropdownHarness } from 'ngwr/dropdown/testing'` | — |
75
75
  | `ngwr/empty` | `import { WrEmpty } from 'ngwr/empty'` | `wr-empty` |
76
76
  | `ngwr/event-calendar` | `import { WrEventCalendar } from 'ngwr/event-calendar'` | `ng-template[wrCalendarEvent]` `wr-event-calendar` |
77
- | `ngwr/event-calendar/testing` | `import { WrEventCalendarChipHarness } from 'ngwr/event-calendar/testing'` | `.wr-event-calendar__view` |
77
+ | `ngwr/event-calendar/testing` | `import { WrEventCalendarChipHarness } from 'ngwr/event-calendar/testing'` | — |
78
78
  | `ngwr/falling-text` | `import { WrFallingText } from 'ngwr/falling-text'` | `wr-falling-text` |
79
79
  | `ngwr/falling-text/testing` | `import { WrFallingTextHarness } from 'ngwr/falling-text/testing'` | — |
80
80
  | `ngwr/file-upload` | `import { WrFileUpload } from 'ngwr/file-upload'` | `wr-file-upload` |
@@ -127,7 +127,7 @@ root barrel for components.
127
127
  | `ngwr/overlay` | `import { WrOutsideClick } from 'ngwr/overlay'` | — |
128
128
  | `ngwr/page-header` | `import { WrPageHeader } from 'ngwr/page-header'` | `wr-page-header` |
129
129
  | `ngwr/pagination` | `import { WrPagination } from 'ngwr/pagination'` | `wr-pagination` |
130
- | `ngwr/pagination/testing` | `import { WrPaginationHarness } from 'ngwr/pagination/testing'` | `.wr-pagination__page` `.wr-pagination__nav > wr-btn:not(.wr-pagination__page)` `.wr-pagination__size` `.wr-pagination__page[aria-current="page"]` |
130
+ | `ngwr/pagination/testing` | `import { WrPaginationHarness } from 'ngwr/pagination/testing'` | — |
131
131
  | `ngwr/pipes` | `import { WrBytes } from 'ngwr/pipes'` | — |
132
132
  | `ngwr/platform` | `import { WrPlatform } from 'ngwr/platform'` | — |
133
133
  | `ngwr/popconfirm` | `import { WrPopconfirm } from 'ngwr/popconfirm'` | `wr-popconfirm` `[wrPopconfirm]` |
@@ -187,11 +187,11 @@ root barrel for components.
187
187
  | `ngwr/tilt-card` | `import { WrTiltCard } from 'ngwr/tilt-card'` | `wr-tilt-card` `[wrTilt]` |
188
188
  | `ngwr/tilt-card/testing` | `import { WrTiltHarness } from 'ngwr/tilt-card/testing'` | — |
189
189
  | `ngwr/timeline` | `import { WrTimeline } from 'ngwr/timeline'` | `wr-timeline-item` `wr-timeline` |
190
- | `ngwr/toast` | `import { WrToast } from 'ngwr/toast'` | `wr-toast-host` `wr-toast` |
190
+ | `ngwr/toast` | `import { WrToast } from 'ngwr/toast'` | — |
191
191
  | `ngwr/toast/testing` | `import { WrToastHarness } from 'ngwr/toast/testing'` | — |
192
192
  | `ngwr/toolbar` | `import { WrToolbar } from 'ngwr/toolbar'` | `wr-toolbar` |
193
193
  | `ngwr/tour` | `import { WrTour } from 'ngwr/tour'` | `wr-tour-popup` |
194
- | `ngwr/tour/testing` | `import { WrTourHarness } from 'ngwr/tour/testing'` | `.wr-tour-popup__action--next` `.wr-tour-popup__action--skip` `.wr-tour-popup__action--back` |
194
+ | `ngwr/tour/testing` | `import { WrTourHarness } from 'ngwr/tour/testing'` | — |
195
195
  | `ngwr/transfer` | `import { WrTransfer } from 'ngwr/transfer'` | `wr-transfer` |
196
196
  | `ngwr/transfer/testing` | `import { WrTransferHarness } from 'ngwr/transfer/testing'` | — |
197
197
  | `ngwr/tree` | `import { WrTree } from 'ngwr/tree'` | `wr-tree` |
@@ -205,7 +205,7 @@ root barrel for components.
205
205
  | `ngwr/virtual-scroll` | `import { WrVirtualScroll } from 'ngwr/virtual-scroll'` | `wr-virtual-scroll` |
206
206
  | `ngwr/waves` | `import { WrWaves } from 'ngwr/waves'` | `wr-waves` |
207
207
  | `ngwr/waves/testing` | `import { WrWavesHarness } from 'ngwr/waves/testing'` | — |
208
- | `ngwr/window` | `import { WrWindowManager } from 'ngwr/window'` | `wr-window-container` `wr-window-taskbar` `wr-window` |
208
+ | `ngwr/window` | `import { WrWindowManager } from 'ngwr/window'` | `wr-window-taskbar` |
209
209
  | `ngwr/window/testing` | `import { WrWindowHarness } from 'ngwr/window/testing'` | — |
210
210
 
211
211
  Descriptions and every public export per entry point:
@@ -52,20 +52,25 @@ Overlays render into an ngwr-owned container; without it they never appear. Need
52
52
 
53
53
  Icons resolve by name from a registry you populate. Needed by `WrIcon`.
54
54
 
55
- ### `provideWrDateAdapter(wrDateFnsAdapter) // from 'ngwr/date-adapter-fns'`
55
+ ### `provideWrDateFnsAdapter() // from 'ngwr/date/adapters/fns'`
56
56
 
57
57
  Every date mode goes through an adapter; there is no built-in default. Needed by `WrDatePicker`, `WrCalendar`, `WrEventCalendar`.
58
58
 
59
- ### `provideWrI18n() + provideWrI18nStaticLoader({ en: wrEn }) // from 'ngwr/i18n'`
59
+ ### `provideWrI18n() + provideWrI18nStaticLoader({ en: wrEn }) // from 'ngwr/i18n' + 'ngwr/i18n/en'`
60
60
 
61
- The pipe and directive read from a catalog you provide. Needed by `WrT`, `WrI18n`.
61
+ The pipe and directive read from a catalog you provide. Needed by `WrTPipe`, `WrTDirective`, `WrI18n`.
62
62
 
63
63
  ## Optional, app-wide
64
64
 
65
65
  - `provideWrConfig({ button: { size: 'sm' } })` — component defaults. A bound
66
66
  value always wins, including a bound `false` over a configured `true`.
67
- - `provideWrDensity('sm' | 'md' | 'lg' | 'touch')` — one control size for the
68
- whole app; `touch` enlarges every hit area at once.
67
+ - `provideWrDensity({ defaultDensity: 'sm' })` — one control size for the whole
68
+ app; `'sm' | 'md' | 'lg' | 'touch'`. It scales the paddings of the nine
69
+ stylesheets that read the multipliers — button, input, textarea, select,
70
+ cascader, tree, list, table, badge/tag — so `touch` grows those together. A
71
+ control with fixed geometry (checkbox, switch, radio, slider, rating,
72
+ segmented) does not move; its ≥44px target comes from the `touch-target` mixin
73
+ under `@media (pointer: coarse)` instead.
69
74
  - `provideWrResponsiveOverlays()` — overlays present as bottom sheets under the
70
75
  breakpoint (640px by default). Per-component opt-out with `[responsive]="false"`.
71
76
  - `provideWrFormErrors({ … })` — one place for validation copy; `<wr-form-field>`
@@ -89,6 +89,6 @@
89
89
  --wr-slider-thumb-border: var(--wr-color-on-surface-muted);
90
90
  --wr-slider-fill: var(--wr-color-on-surface-muted);
91
91
  pointer-events: none;
92
- opacity: 0.6;
92
+ opacity: var(--wr-disabled-opacity);
93
93
  }
94
94
  }
@@ -48,7 +48,7 @@
48
48
 
49
49
  &:disabled {
50
50
  cursor: not-allowed;
51
- opacity: 0.6;
51
+ opacity: var(--wr-disabled-opacity);
52
52
  }
53
53
  }
54
54
 
@@ -41,7 +41,7 @@
41
41
  min-width: 0;
42
42
 
43
43
  &--disabled {
44
- opacity: 0.5;
44
+ opacity: var(--wr-disabled-opacity);
45
45
  }
46
46
  }
47
47
 
@@ -156,7 +156,14 @@
156
156
  min-width: 0;
157
157
  min-height: 1.25rem;
158
158
  height: auto;
159
- margin: 0.25rem 0 0.25rem calc(var(--wr-stepper-indicator-size) / 2);
159
+ // Logical, not `margin: … 0 … calc(…)`: `width` above is definite, so the
160
+ // `align-self: stretch` below is inapplicable and the thread is placed at
161
+ // the cross START — where the INLINE-start margin alone offsets it. A
162
+ // physical `margin-left` is therefore the TRAILING side under `dir="rtl"`,
163
+ // and the line paints flush against the row's right edge, half an indicator
164
+ // (14px) clear of every circle it is supposed to join.
165
+ margin-block: 0.25rem;
166
+ margin-inline: calc(var(--wr-stepper-indicator-size) / 2) 0;
160
167
  align-self: stretch;
161
168
  flex: 0 0 auto;
162
169
  }
@@ -191,7 +198,9 @@
191
198
  min-width: 0;
192
199
  min-height: 1.25rem;
193
200
  height: auto;
194
- margin: 0.25rem 0 0.25rem calc(var(--wr-stepper-indicator-size) / 2);
201
+ // Logical for the same reason as the `--vertical` rule above.
202
+ margin-block: 0.25rem;
203
+ margin-inline: calc(var(--wr-stepper-indicator-size) / 2) 0;
195
204
  align-self: stretch;
196
205
  flex: 0 0 auto;
197
206
  }
@@ -38,7 +38,7 @@
38
38
  white-space: nowrap;
39
39
 
40
40
  &:focus-visible + .wr-switch__track {
41
- box-shadow: 0 0 0 3px rgba(var(--wr-color-primary-rgb), 0.25);
41
+ @include theme.focus-ring;
42
42
  }
43
43
  }
44
44
 
@@ -98,6 +98,6 @@
98
98
  &--disabled {
99
99
  --wr-switch-color: var(--wr-color-on-surface-muted);
100
100
  pointer-events: none;
101
- opacity: 0.6;
101
+ opacity: var(--wr-disabled-opacity);
102
102
  }
103
103
  }
@@ -3,8 +3,8 @@
3
3
  .wr-table {
4
4
  --wr-table-bg: var(--wr-color-surface);
5
5
  --wr-table-border: var(--wr-color-outline);
6
- --wr-table-head-bg: rgba(var(--wr-color-outline-rgb), 0.25);
7
- --wr-table-row-hover: rgba(var(--wr-color-outline-rgb), 0.15);
6
+ --wr-table-head-bg: var(--wr-color-fill);
7
+ --wr-table-row-hover: var(--wr-color-fill-subtle);
8
8
  // Head casing. The library renders column titles as the author wrote them —
9
9
  // forcing `uppercase` mutates their content, and a header written "ID" or
10
10
  // "created at" is the consumer's decision to make, not ours. Both halves stay
@@ -188,6 +188,15 @@
188
188
  transform: rotate(90deg);
189
189
  }
190
190
 
191
+ // The glyph is a chevron-RIGHT, so a closed row points into its own content
192
+ // under `dir="rtl"` instead of at the direction the children will indent.
193
+ // Turn it around with the tree, the way the cascader's branch arrow does.
194
+ // Scoped to the CLOSED state deliberately: `scaleX(-1)` composed over the open
195
+ // state's `rotate(90deg)` resolves to "up", not "down".
196
+ [dir='rtl'] &__tree-toggle:not(.wr-table__tree-toggle--open) &__tree-icon {
197
+ transform: scaleX(-1);
198
+ }
199
+
191
200
  // Card mode stacks label / value with `justify-content: space-between`, so an
192
201
  // extra inline child would strand the chevron mid-row. Fold the lead into the
193
202
  // value side instead.
@@ -255,9 +264,14 @@
255
264
  transform: rotate(90deg);
256
265
  }
257
266
 
267
+ // Same chevron-right, same mirror — closed state only. See `__tree-icon` above.
268
+ [dir='rtl'] &__expand-btn:not(.wr-table__expand-btn--open) &__expand-icon {
269
+ transform: scaleX(-1);
270
+ }
271
+
258
272
  &__detail-row > &__detail {
259
273
  padding: 0.875rem 1rem;
260
- background: rgba(var(--wr-color-outline-rgb), 0.08);
274
+ background: var(--wr-color-fill-subtle);
261
275
  border-bottom: 1px solid var(--wr-table-border);
262
276
  }
263
277
 
@@ -322,21 +336,36 @@
322
336
  }
323
337
 
324
338
  // Separating shadow on the inner edge of each pinned group. `box-shadow` has
325
- // no logical form — its offset is always physical — and the cell it belongs to
326
- // is anchored by `[style.left.px]` / `[style.right.px]` in table.html, written
327
- // from `leftPin()` / `rightPin()`. The shadow leans the way the offset pins.
339
+ // no logical form — its offset is always physical — while the cell it belongs
340
+ // to is anchored by `[style.inset-inline-start.px]` / `[style.inset-inline-end.px]`
341
+ // in table.html, written from `leftPin()` / `rightPin()`. The shadow leans the
342
+ // way the offset pins, so the sign has to be set per direction by hand.
328
343
  &__th--pin-edge-left,
329
344
  &__td--pin-edge-left {
330
- // rtl-ok: physical offset matching the physical `left` pin set by the component
345
+ // rtl-ok: `box-shadow` has no logical form; the RTL sign is set explicitly below
331
346
  box-shadow: 0.375rem 0 0.375rem -0.25rem rgba(0, 0, 0, 0.18);
332
347
  }
333
348
 
334
349
  &__th--pin-edge-right,
335
350
  &__td--pin-edge-right {
336
- // rtl-ok: physical offset matching the physical `right` pin set by the component
351
+ // rtl-ok: `box-shadow` has no logical form; the RTL sign is set explicitly below
352
+ box-shadow: -0.375rem 0 0.375rem -0.25rem rgba(0, 0, 0, 0.18);
353
+ }
354
+
355
+ // Under `dir="rtl"` the start-pinned group sits at the physical right and the
356
+ // end-pinned group at the physical left, so both shadows point the other way.
357
+ [dir='rtl'] &__th--pin-edge-left,
358
+ [dir='rtl'] &__td--pin-edge-left {
359
+ // rtl-ok: this IS the RTL sign for the rule above
337
360
  box-shadow: -0.375rem 0 0.375rem -0.25rem rgba(0, 0, 0, 0.18);
338
361
  }
339
362
 
363
+ [dir='rtl'] &__th--pin-edge-right,
364
+ [dir='rtl'] &__td--pin-edge-right {
365
+ // rtl-ok: this IS the RTL sign for the rule above
366
+ box-shadow: 0.375rem 0 0.375rem -0.25rem rgba(0, 0, 0, 0.18);
367
+ }
368
+
340
369
  &__th-inner {
341
370
  display: inline-flex;
342
371
  align-items: center;
@@ -393,10 +422,15 @@
393
422
  backdrop-filter: blur(2px);
394
423
  // Above the pinned sticky cells (th z-index 2), so loading veils them too.
395
424
  z-index: 3;
425
+ // A positioned box over the whole table swallowed every click while leaving
426
+ // the keyboard untouched — sort headers, row checkboxes and the pager all
427
+ // stayed operable by Tab + Enter. The veil is a marker (the host carries
428
+ // `aria-busy`), not a shield, so it stops eating the pointer too.
429
+ pointer-events: none;
396
430
  }
397
431
 
398
432
  // --- Row grouping ---------------------------------------------------------
399
- --wr-table-group-bg: rgba(var(--wr-color-outline-rgb), 0.18);
433
+ --wr-table-group-bg: var(--wr-color-fill-subtle);
400
434
 
401
435
  &__group-cell {
402
436
  // NOTE: never add `overflow` here — the inner box below is `position: sticky`
@@ -451,6 +485,14 @@
451
485
  transform: none; // collapsed — chevron points right
452
486
  }
453
487
 
488
+ // …which is the wrong way round under `dir="rtl"`, where the label the arrow
489
+ // discloses sits to its left. Mirror the collapsed state only — the expanded
490
+ // one already points down, and `scaleX(-1)` over its `rotate(90deg)` would
491
+ // point it up. See `__tree-icon` above.
492
+ [dir='rtl'] &__group-row--collapsed &__group-icon {
493
+ transform: scaleX(-1);
494
+ }
495
+
454
496
  &__group-label {
455
497
  // Cap intrinsic width: in the default (auto) layout a colspan cell's
456
498
  // min-content is spread across columns, so an ellipsizing shrinkable label
@@ -465,7 +507,14 @@
465
507
  flex: 0 0 auto;
466
508
  padding: 0 0.375rem;
467
509
  border-radius: var(--wr-border-radius-pill);
468
- background: rgba(var(--wr-color-outline-rgb), 0.5);
510
+ // `-subtle`, not `-strong`: this chip is the SECOND tint in the stack — it
511
+ // sits on the group row, which already paints `--wr-table-group-bg`
512
+ // (`-fill-subtle`) over the table's own surface. At `-strong` the pair
513
+ // composited to #dee5ed, and `--wr-color-on-surface-muted` is calibrated
514
+ // against the plain surface (5.35:1) and the lightest one the library
515
+ // paints (4.63:1) — on that composite it fell to 4.21:1, under AA. The same
516
+ // double-tint trap the event-calendar header comment records.
517
+ background: var(--wr-color-fill-subtle);
469
518
  color: var(--wr-color-on-surface-muted);
470
519
  font-size: var(--wr-text-xs);
471
520
  font-weight: 500;
@@ -784,7 +833,7 @@
784
833
  cursor: pointer;
785
834
 
786
835
  &:hover {
787
- background: rgba(var(--wr-color-outline-rgb), 0.35);
836
+ background: var(--wr-color-fill);
788
837
  }
789
838
  }
790
839
 
@@ -853,7 +902,7 @@
853
902
  // the same defaults that block sets. `--wr-density-*` and `--wr-color-*` are
854
903
  // root-level and resolve as-is.
855
904
  padding: calc(0.625rem * var(--wr-density-y, 1)) calc(0.875rem * var(--wr-density-x, 1));
856
- background: var(--wr-table-head-bg, rgba(var(--wr-color-outline-rgb), 0.25));
905
+ background: var(--wr-table-head-bg, var(--wr-color-fill));
857
906
  color: var(--wr-color-on-surface-muted);
858
907
  font-family: var(--wr-font-family-base);
859
908
  font-weight: 600;
@@ -113,7 +113,7 @@
113
113
 
114
114
  &--disabled,
115
115
  &:disabled {
116
- opacity: 0.5;
116
+ opacity: var(--wr-disabled-opacity);
117
117
  cursor: not-allowed;
118
118
  }
119
119
  }
@@ -33,7 +33,7 @@
33
33
 
34
34
  &--disabled {
35
35
  --wr-textarea-color: var(--wr-color-on-surface-muted);
36
- --wr-textarea-bg: rgba(var(--wr-color-outline-rgb), 0.35);
36
+ --wr-textarea-bg: var(--wr-color-fill);
37
37
  cursor: not-allowed;
38
38
  }
39
39