ngwr 10.2.1 → 11.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 (425) hide show
  1. package/README.md +39 -19
  2. package/anchor/styles/_index.scss +4 -4
  3. package/back-top/styles/_index.scss +6 -1
  4. package/blur-text/styles/_index.scss +13 -0
  5. package/button/styles/_index.scss +11 -6
  6. package/carousel/styles/_index.scss +13 -2
  7. package/cascader/styles/_index.scss +2 -2
  8. package/circular-text/styles/_index.scss +2 -0
  9. package/collapse/styles/_index.scss +1 -1
  10. package/color-picker/styles/_index.scss +6 -1
  11. package/compare/styles/_index.scss +1 -2
  12. package/context-menu/styles/_index.scss +6 -1
  13. package/descriptions/styles/_index.scss +2 -2
  14. package/dialog/styles/_index.scss +7 -0
  15. package/drawer/styles/_index.scss +20 -1
  16. package/dropdown/styles/_index.scss +19 -5
  17. package/empty/styles/_index.scss +10 -0
  18. package/fesm2022/ngwr-action-sheet.mjs +13 -3
  19. package/fesm2022/ngwr-action-sheet.mjs.map +1 -1
  20. package/fesm2022/ngwr-affix.mjs +40 -13
  21. package/fesm2022/ngwr-affix.mjs.map +1 -1
  22. package/fesm2022/ngwr-anchor.mjs +18 -6
  23. package/fesm2022/ngwr-anchor.mjs.map +1 -1
  24. package/fesm2022/ngwr-aurora.mjs +2 -2
  25. package/fesm2022/ngwr-aurora.mjs.map +1 -1
  26. package/fesm2022/ngwr-avatar.mjs +31 -7
  27. package/fesm2022/ngwr-avatar.mjs.map +1 -1
  28. package/fesm2022/ngwr-back-top.mjs +6 -2
  29. package/fesm2022/ngwr-back-top.mjs.map +1 -1
  30. package/fesm2022/ngwr-badge.mjs +1 -1
  31. package/fesm2022/ngwr-badge.mjs.map +1 -1
  32. package/fesm2022/ngwr-bar-chart.mjs +30 -9
  33. package/fesm2022/ngwr-bar-chart.mjs.map +1 -1
  34. package/fesm2022/ngwr-blur-text.mjs +2 -2
  35. package/fesm2022/ngwr-blur-text.mjs.map +1 -1
  36. package/fesm2022/ngwr-border-glow.mjs +2 -2
  37. package/fesm2022/ngwr-border-glow.mjs.map +1 -1
  38. package/fesm2022/ngwr-breadcrumbs.mjs +2 -2
  39. package/fesm2022/ngwr-breadcrumbs.mjs.map +1 -1
  40. package/fesm2022/ngwr-burger.mjs +9 -4
  41. package/fesm2022/ngwr-burger.mjs.map +1 -1
  42. package/fesm2022/ngwr-button-testing.mjs +96 -0
  43. package/fesm2022/ngwr-button-testing.mjs.map +1 -0
  44. package/fesm2022/ngwr-button.mjs +31 -14
  45. package/fesm2022/ngwr-button.mjs.map +1 -1
  46. package/fesm2022/ngwr-calendar-heatmap.mjs +40 -8
  47. package/fesm2022/ngwr-calendar-heatmap.mjs.map +1 -1
  48. package/fesm2022/ngwr-calendar.mjs +20 -1
  49. package/fesm2022/ngwr-calendar.mjs.map +1 -1
  50. package/fesm2022/ngwr-card.mjs +2 -2
  51. package/fesm2022/ngwr-card.mjs.map +1 -1
  52. package/fesm2022/ngwr-carousel-testing.mjs +377 -0
  53. package/fesm2022/ngwr-carousel-testing.mjs.map +1 -0
  54. package/fesm2022/ngwr-carousel.mjs +67 -13
  55. package/fesm2022/ngwr-carousel.mjs.map +1 -1
  56. package/fesm2022/ngwr-cascader-testing.mjs +534 -0
  57. package/fesm2022/ngwr-cascader-testing.mjs.map +1 -0
  58. package/fesm2022/ngwr-cascader.mjs +2 -2
  59. package/fesm2022/ngwr-cascader.mjs.map +1 -1
  60. package/fesm2022/ngwr-checkbox-testing.mjs +90 -0
  61. package/fesm2022/ngwr-checkbox-testing.mjs.map +1 -0
  62. package/fesm2022/ngwr-checkbox.mjs +9 -3
  63. package/fesm2022/ngwr-checkbox.mjs.map +1 -1
  64. package/fesm2022/ngwr-circular-text.mjs +2 -2
  65. package/fesm2022/ngwr-circular-text.mjs.map +1 -1
  66. package/fesm2022/ngwr-click-spark.mjs +2 -2
  67. package/fesm2022/ngwr-click-spark.mjs.map +1 -1
  68. package/fesm2022/ngwr-collapse-testing.mjs +368 -0
  69. package/fesm2022/ngwr-collapse-testing.mjs.map +1 -0
  70. package/fesm2022/ngwr-color-picker.mjs +134 -14
  71. package/fesm2022/ngwr-color-picker.mjs.map +1 -1
  72. package/fesm2022/ngwr-command-palette-testing.mjs +589 -0
  73. package/fesm2022/ngwr-command-palette-testing.mjs.map +1 -0
  74. package/fesm2022/ngwr-command-palette.mjs +58 -8
  75. package/fesm2022/ngwr-command-palette.mjs.map +1 -1
  76. package/fesm2022/ngwr-compare.mjs +103 -13
  77. package/fesm2022/ngwr-compare.mjs.map +1 -1
  78. package/fesm2022/ngwr-config.mjs +106 -0
  79. package/fesm2022/ngwr-config.mjs.map +1 -0
  80. package/fesm2022/ngwr-context-menu-testing.mjs +631 -0
  81. package/fesm2022/ngwr-context-menu-testing.mjs.map +1 -0
  82. package/fesm2022/ngwr-context-menu.mjs +94 -8
  83. package/fesm2022/ngwr-context-menu.mjs.map +1 -1
  84. package/fesm2022/ngwr-cookie.mjs +5 -1
  85. package/fesm2022/ngwr-cookie.mjs.map +1 -1
  86. package/fesm2022/ngwr-counter.mjs +11 -3
  87. package/fesm2022/ngwr-counter.mjs.map +1 -1
  88. package/fesm2022/ngwr-date-adapter-luxon.mjs +52 -4
  89. package/fesm2022/ngwr-date-adapter-luxon.mjs.map +1 -1
  90. package/fesm2022/ngwr-date-adapter.mjs +54 -8
  91. package/fesm2022/ngwr-date-adapter.mjs.map +1 -1
  92. package/fesm2022/ngwr-date-picker-testing.mjs +766 -0
  93. package/fesm2022/ngwr-date-picker-testing.mjs.map +1 -0
  94. package/fesm2022/ngwr-date-picker.mjs +73 -3
  95. package/fesm2022/ngwr-date-picker.mjs.map +1 -1
  96. package/fesm2022/ngwr-decrypt-text.mjs +27 -9
  97. package/fesm2022/ngwr-decrypt-text.mjs.map +1 -1
  98. package/fesm2022/ngwr-dialog-testing.mjs +89 -0
  99. package/fesm2022/ngwr-dialog-testing.mjs.map +1 -0
  100. package/fesm2022/ngwr-directives.mjs +36 -12
  101. package/fesm2022/ngwr-directives.mjs.map +1 -1
  102. package/fesm2022/ngwr-donut-chart.mjs +22 -5
  103. package/fesm2022/ngwr-donut-chart.mjs.map +1 -1
  104. package/fesm2022/ngwr-drag-drop.mjs +2 -2
  105. package/fesm2022/ngwr-drag-drop.mjs.map +1 -1
  106. package/fesm2022/ngwr-drawer-testing.mjs +250 -0
  107. package/fesm2022/ngwr-drawer-testing.mjs.map +1 -0
  108. package/fesm2022/ngwr-dropdown-testing.mjs +291 -0
  109. package/fesm2022/ngwr-dropdown-testing.mjs.map +1 -0
  110. package/fesm2022/ngwr-dropdown.mjs +10 -2
  111. package/fesm2022/ngwr-dropdown.mjs.map +1 -1
  112. package/fesm2022/ngwr-empty.mjs +24 -7
  113. package/fesm2022/ngwr-empty.mjs.map +1 -1
  114. package/fesm2022/ngwr-event-calendar.mjs +57 -10
  115. package/fesm2022/ngwr-event-calendar.mjs.map +1 -1
  116. package/fesm2022/ngwr-falling-text.mjs +2 -2
  117. package/fesm2022/ngwr-falling-text.mjs.map +1 -1
  118. package/fesm2022/ngwr-file-upload-testing.mjs +332 -0
  119. package/fesm2022/ngwr-file-upload-testing.mjs.map +1 -0
  120. package/fesm2022/ngwr-form-testing.mjs +451 -0
  121. package/fesm2022/ngwr-form-testing.mjs.map +1 -0
  122. package/fesm2022/ngwr-form.mjs +19 -3
  123. package/fesm2022/ngwr-form.mjs.map +1 -1
  124. package/fesm2022/ngwr-fuzzy-text.mjs +9 -2
  125. package/fesm2022/ngwr-fuzzy-text.mjs.map +1 -1
  126. package/fesm2022/ngwr-gauge.mjs +19 -5
  127. package/fesm2022/ngwr-gauge.mjs.map +1 -1
  128. package/fesm2022/ngwr-glitch-text.mjs +2 -2
  129. package/fesm2022/ngwr-glitch-text.mjs.map +1 -1
  130. package/fesm2022/ngwr-gradient-text.mjs +2 -2
  131. package/fesm2022/ngwr-gradient-text.mjs.map +1 -1
  132. package/fesm2022/ngwr-i18n-en.mjs +50 -0
  133. package/fesm2022/ngwr-i18n-en.mjs.map +1 -1
  134. package/fesm2022/ngwr-i18n-ru.mjs +48 -0
  135. package/fesm2022/ngwr-i18n-ru.mjs.map +1 -1
  136. package/fesm2022/ngwr-image-cropper.mjs +23 -0
  137. package/fesm2022/ngwr-image-cropper.mjs.map +1 -1
  138. package/fesm2022/ngwr-input-number-testing.mjs +306 -0
  139. package/fesm2022/ngwr-input-number-testing.mjs.map +1 -0
  140. package/fesm2022/ngwr-input-number.mjs +35 -3
  141. package/fesm2022/ngwr-input-number.mjs.map +1 -1
  142. package/fesm2022/ngwr-input-otp-testing.mjs +419 -0
  143. package/fesm2022/ngwr-input-otp-testing.mjs.map +1 -0
  144. package/fesm2022/ngwr-input-otp.mjs +36 -5
  145. package/fesm2022/ngwr-input-otp.mjs.map +1 -1
  146. package/fesm2022/ngwr-input-testing.mjs +102 -0
  147. package/fesm2022/ngwr-input-testing.mjs.map +1 -0
  148. package/fesm2022/ngwr-input.mjs +47 -10
  149. package/fesm2022/ngwr-input.mjs.map +1 -1
  150. package/fesm2022/ngwr-knob.mjs +44 -8
  151. package/fesm2022/ngwr-knob.mjs.map +1 -1
  152. package/fesm2022/ngwr-layout.mjs +21 -5
  153. package/fesm2022/ngwr-layout.mjs.map +1 -1
  154. package/fesm2022/ngwr-lightbox.mjs +33 -6
  155. package/fesm2022/ngwr-lightbox.mjs.map +1 -1
  156. package/fesm2022/ngwr-line-chart.mjs +17 -4
  157. package/fesm2022/ngwr-line-chart.mjs.map +1 -1
  158. package/fesm2022/ngwr-list.mjs +2 -2
  159. package/fesm2022/ngwr-list.mjs.map +1 -1
  160. package/fesm2022/ngwr-loading-bar.mjs +2 -2
  161. package/fesm2022/ngwr-loading-bar.mjs.map +1 -1
  162. package/fesm2022/ngwr-markdown-testing.mjs +516 -0
  163. package/fesm2022/ngwr-markdown-testing.mjs.map +1 -0
  164. package/fesm2022/ngwr-markdown.mjs +1492 -0
  165. package/fesm2022/ngwr-markdown.mjs.map +1 -0
  166. package/fesm2022/ngwr-marquee.mjs +17 -6
  167. package/fesm2022/ngwr-marquee.mjs.map +1 -1
  168. package/fesm2022/ngwr-mention-testing.mjs +513 -0
  169. package/fesm2022/ngwr-mention-testing.mjs.map +1 -0
  170. package/fesm2022/ngwr-mention.mjs +10 -1
  171. package/fesm2022/ngwr-mention.mjs.map +1 -1
  172. package/fesm2022/ngwr-meta.mjs +22 -7
  173. package/fesm2022/ngwr-meta.mjs.map +1 -1
  174. package/fesm2022/ngwr-meter-group.mjs +19 -5
  175. package/fesm2022/ngwr-meter-group.mjs.map +1 -1
  176. package/fesm2022/ngwr-overlay.mjs +41 -1
  177. package/fesm2022/ngwr-overlay.mjs.map +1 -1
  178. package/fesm2022/ngwr-pagination-testing.mjs +389 -0
  179. package/fesm2022/ngwr-pagination-testing.mjs.map +1 -0
  180. package/fesm2022/ngwr-pagination.mjs +14 -2
  181. package/fesm2022/ngwr-pagination.mjs.map +1 -1
  182. package/fesm2022/ngwr-popconfirm-testing.mjs +309 -0
  183. package/fesm2022/ngwr-popconfirm-testing.mjs.map +1 -0
  184. package/fesm2022/ngwr-popconfirm.mjs +95 -17
  185. package/fesm2022/ngwr-popconfirm.mjs.map +1 -1
  186. package/fesm2022/ngwr-popover-testing.mjs +316 -0
  187. package/fesm2022/ngwr-popover-testing.mjs.map +1 -0
  188. package/fesm2022/ngwr-popover.mjs +21 -3
  189. package/fesm2022/ngwr-popover.mjs.map +1 -1
  190. package/fesm2022/ngwr-pull-to-refresh.mjs +17 -2
  191. package/fesm2022/ngwr-pull-to-refresh.mjs.map +1 -1
  192. package/fesm2022/ngwr-qr.mjs +13 -3
  193. package/fesm2022/ngwr-qr.mjs.map +1 -1
  194. package/fesm2022/ngwr-radio-testing.mjs +392 -0
  195. package/fesm2022/ngwr-radio-testing.mjs.map +1 -0
  196. package/fesm2022/ngwr-radio.mjs +10 -3
  197. package/fesm2022/ngwr-radio.mjs.map +1 -1
  198. package/fesm2022/ngwr-rating-testing.mjs +384 -0
  199. package/fesm2022/ngwr-rating-testing.mjs.map +1 -0
  200. package/fesm2022/ngwr-rating.mjs +37 -2
  201. package/fesm2022/ngwr-rating.mjs.map +1 -1
  202. package/fesm2022/ngwr-segmented-testing.mjs +512 -0
  203. package/fesm2022/ngwr-segmented-testing.mjs.map +1 -0
  204. package/fesm2022/ngwr-select-testing.mjs +268 -0
  205. package/fesm2022/ngwr-select-testing.mjs.map +1 -0
  206. package/fesm2022/ngwr-select.mjs +87 -16
  207. package/fesm2022/ngwr-select.mjs.map +1 -1
  208. package/fesm2022/ngwr-shiny-text.mjs +2 -2
  209. package/fesm2022/ngwr-shiny-text.mjs.map +1 -1
  210. package/fesm2022/ngwr-sidebar.mjs +65 -12
  211. package/fesm2022/ngwr-sidebar.mjs.map +1 -1
  212. package/fesm2022/ngwr-slider-testing.mjs +478 -0
  213. package/fesm2022/ngwr-slider-testing.mjs.map +1 -0
  214. package/fesm2022/ngwr-slider.mjs +57 -13
  215. package/fesm2022/ngwr-slider.mjs.map +1 -1
  216. package/fesm2022/ngwr-sparkline.mjs +26 -6
  217. package/fesm2022/ngwr-sparkline.mjs.map +1 -1
  218. package/fesm2022/ngwr-speed-dial.mjs +37 -4
  219. package/fesm2022/ngwr-speed-dial.mjs.map +1 -1
  220. package/fesm2022/ngwr-spinner.mjs +12 -3
  221. package/fesm2022/ngwr-spinner.mjs.map +1 -1
  222. package/fesm2022/ngwr-splash-cursor.mjs +2 -2
  223. package/fesm2022/ngwr-splash-cursor.mjs.map +1 -1
  224. package/fesm2022/ngwr-split-text.mjs +2 -2
  225. package/fesm2022/ngwr-split-text.mjs.map +1 -1
  226. package/fesm2022/ngwr-splitter.mjs +70 -9
  227. package/fesm2022/ngwr-splitter.mjs.map +1 -1
  228. package/fesm2022/ngwr-spotlight-card.mjs +2 -2
  229. package/fesm2022/ngwr-spotlight-card.mjs.map +1 -1
  230. package/fesm2022/ngwr-star-border.mjs +2 -2
  231. package/fesm2022/ngwr-star-border.mjs.map +1 -1
  232. package/fesm2022/ngwr-statistic.mjs +24 -7
  233. package/fesm2022/ngwr-statistic.mjs.map +1 -1
  234. package/fesm2022/ngwr-stepper-testing.mjs +477 -0
  235. package/fesm2022/ngwr-stepper-testing.mjs.map +1 -0
  236. package/fesm2022/ngwr-switch-testing.mjs +77 -0
  237. package/fesm2022/ngwr-switch-testing.mjs.map +1 -0
  238. package/fesm2022/ngwr-switch.mjs +9 -3
  239. package/fesm2022/ngwr-switch.mjs.map +1 -1
  240. package/fesm2022/ngwr-table-testing.mjs +580 -0
  241. package/fesm2022/ngwr-table-testing.mjs.map +1 -0
  242. package/fesm2022/ngwr-table.mjs +87 -14
  243. package/fesm2022/ngwr-table.mjs.map +1 -1
  244. package/fesm2022/ngwr-tabs-testing.mjs +617 -0
  245. package/fesm2022/ngwr-tabs-testing.mjs.map +1 -0
  246. package/fesm2022/ngwr-tabs.mjs +38 -6
  247. package/fesm2022/ngwr-tabs.mjs.map +1 -1
  248. package/fesm2022/ngwr-textarea-testing.mjs +238 -0
  249. package/fesm2022/ngwr-textarea-testing.mjs.map +1 -0
  250. package/fesm2022/ngwr-textarea.mjs +32 -4
  251. package/fesm2022/ngwr-textarea.mjs.map +1 -1
  252. package/fesm2022/ngwr-tilt-card.mjs +2 -2
  253. package/fesm2022/ngwr-tilt-card.mjs.map +1 -1
  254. package/fesm2022/ngwr-toast-testing.mjs +101 -0
  255. package/fesm2022/ngwr-toast-testing.mjs.map +1 -0
  256. package/fesm2022/ngwr-toast.mjs +2 -2
  257. package/fesm2022/ngwr-toast.mjs.map +1 -1
  258. package/fesm2022/ngwr-tour.mjs +61 -9
  259. package/fesm2022/ngwr-tour.mjs.map +1 -1
  260. package/fesm2022/ngwr-transfer-testing.mjs +538 -0
  261. package/fesm2022/ngwr-transfer-testing.mjs.map +1 -0
  262. package/fesm2022/ngwr-transfer.mjs +45 -14
  263. package/fesm2022/ngwr-transfer.mjs.map +1 -1
  264. package/fesm2022/ngwr-tree-testing.mjs +734 -0
  265. package/fesm2022/ngwr-tree-testing.mjs.map +1 -0
  266. package/fesm2022/ngwr-tree.mjs +73 -7
  267. package/fesm2022/ngwr-tree.mjs.map +1 -1
  268. package/fesm2022/ngwr-typewriter.mjs +5 -3
  269. package/fesm2022/ngwr-typewriter.mjs.map +1 -1
  270. package/fesm2022/ngwr-version.mjs +1 -1
  271. package/fesm2022/ngwr-version.mjs.map +1 -1
  272. package/fesm2022/ngwr-virtual-scroll.mjs +31 -5
  273. package/fesm2022/ngwr-virtual-scroll.mjs.map +1 -1
  274. package/fesm2022/ngwr-waves.mjs +3 -3
  275. package/fesm2022/ngwr-waves.mjs.map +1 -1
  276. package/fesm2022/ngwr-window.mjs +8 -0
  277. package/fesm2022/ngwr-window.mjs.map +1 -1
  278. package/gauge/styles/_index.scss +1 -1
  279. package/glitch-text/styles/_index.scss +4 -0
  280. package/i18n/en.json +48 -0
  281. package/i18n/ru.json +48 -0
  282. package/image-cropper/styles/_index.scss +13 -1
  283. package/input/styles/_index.scss +2 -2
  284. package/input-number/styles/_index.scss +7 -2
  285. package/knob/styles/_index.scss +8 -1
  286. package/layout/styles/_index.scss +3 -3
  287. package/lightbox/styles/_index.scss +10 -2
  288. package/line-chart/styles/_index.scss +6 -0
  289. package/llms-full.txt +151 -4
  290. package/llms.txt +57 -8
  291. package/loading-bar/styles/_index.scss +1 -2
  292. package/markdown/styles/_index.scss +296 -0
  293. package/marquee/styles/_index.scss +12 -0
  294. package/mcp/api.js +512 -0
  295. package/mcp/catalog.js +157 -0
  296. package/mcp/server.js +273 -0
  297. package/mcp/tools.js +366 -0
  298. package/meter-group/styles/_index.scss +1 -1
  299. package/package.json +186 -35
  300. package/pagination/styles/_index.scss +6 -6
  301. package/popover/styles/_index.scss +37 -5
  302. package/rating/styles/_index.scss +10 -0
  303. package/schematics/use/symbol-map.json +2 -0
  304. package/segmented/styles/_index.scss +7 -0
  305. package/select/styles/_index.scss +29 -9
  306. package/sidebar/styles/_index.scss +30 -5
  307. package/slider/styles/_index.scss +15 -0
  308. package/speed-dial/styles/_index.scss +20 -0
  309. package/split-text/styles/_index.scss +13 -0
  310. package/star-border/styles/_index.scss +2 -0
  311. package/stepper/styles/_index.scss +1 -1
  312. package/styles/_grid.scss +4 -4
  313. package/styles.scss +1 -0
  314. package/switch/styles/_index.scss +5 -3
  315. package/table/styles/_index.scss +22 -11
  316. package/tabs/styles/_index.scss +11 -1
  317. package/textarea/styles/_index.scss +5 -0
  318. package/theme/styles/_colors.scss +29 -13
  319. package/theme/styles/_dark.scss +11 -3
  320. package/theme/styles/_mixins.scss +3 -0
  321. package/timeline/styles/_index.scss +2 -2
  322. package/toast/styles/_index.scss +17 -8
  323. package/toolbar/styles/_index.scss +3 -3
  324. package/tour/styles/_index.scss +7 -1
  325. package/tree/styles/_index.scss +5 -3
  326. package/types/ngwr-action-sheet.d.ts +9 -1
  327. package/types/ngwr-affix.d.ts +7 -1
  328. package/types/ngwr-anchor.d.ts +8 -1
  329. package/types/ngwr-avatar.d.ts +13 -3
  330. package/types/ngwr-bar-chart.d.ts +16 -0
  331. package/types/ngwr-burger.d.ts +6 -2
  332. package/types/ngwr-button-testing.d.ts +85 -0
  333. package/types/ngwr-button.d.ts +26 -10
  334. package/types/ngwr-calendar-heatmap.d.ts +16 -2
  335. package/types/ngwr-calendar.d.ts +10 -0
  336. package/types/ngwr-carousel-testing.d.ts +257 -0
  337. package/types/ngwr-carousel.d.ts +20 -4
  338. package/types/ngwr-cascader-testing.d.ts +392 -0
  339. package/types/ngwr-checkbox-testing.d.ts +77 -0
  340. package/types/ngwr-checkbox.d.ts +7 -2
  341. package/types/ngwr-collapse-testing.d.ts +290 -0
  342. package/types/ngwr-color-picker.d.ts +20 -11
  343. package/types/ngwr-command-palette-testing.d.ts +437 -0
  344. package/types/ngwr-command-palette.d.ts +25 -2
  345. package/types/ngwr-compare.d.ts +50 -2
  346. package/types/ngwr-config.d.ts +176 -0
  347. package/types/ngwr-context-menu-testing.d.ts +401 -0
  348. package/types/ngwr-context-menu.d.ts +65 -17
  349. package/types/ngwr-counter.d.ts +6 -1
  350. package/types/ngwr-date-adapter-luxon.d.ts +26 -0
  351. package/types/ngwr-date-picker-testing.d.ts +518 -0
  352. package/types/ngwr-date-picker.d.ts +4 -0
  353. package/types/ngwr-dialog-testing.d.ts +79 -0
  354. package/types/ngwr-directives.d.ts +10 -1
  355. package/types/ngwr-donut-chart.d.ts +8 -1
  356. package/types/ngwr-drawer-testing.d.ts +196 -0
  357. package/types/ngwr-dropdown-testing.d.ts +202 -0
  358. package/types/ngwr-dropdown.d.ts +7 -1
  359. package/types/ngwr-empty.d.ts +19 -4
  360. package/types/ngwr-event-calendar.d.ts +26 -1
  361. package/types/ngwr-file-upload-testing.d.ts +194 -0
  362. package/types/ngwr-form-testing.d.ts +379 -0
  363. package/types/ngwr-form.d.ts +17 -0
  364. package/types/ngwr-gauge.d.ts +13 -1
  365. package/types/ngwr-image-cropper.d.ts +10 -0
  366. package/types/ngwr-input-number-testing.d.ts +226 -0
  367. package/types/ngwr-input-number.d.ts +29 -1
  368. package/types/ngwr-input-otp-testing.d.ts +299 -0
  369. package/types/ngwr-input-otp.d.ts +23 -2
  370. package/types/ngwr-input-testing.d.ts +84 -0
  371. package/types/ngwr-input.d.ts +20 -6
  372. package/types/ngwr-knob.d.ts +18 -0
  373. package/types/ngwr-layout.d.ts +1 -0
  374. package/types/ngwr-lightbox.d.ts +17 -3
  375. package/types/ngwr-line-chart.d.ts +9 -2
  376. package/types/ngwr-markdown-testing.d.ts +462 -0
  377. package/types/ngwr-markdown.d.ts +534 -0
  378. package/types/ngwr-marquee.d.ts +12 -2
  379. package/types/ngwr-mention-testing.d.ts +359 -0
  380. package/types/ngwr-meta.d.ts +4 -2
  381. package/types/ngwr-meter-group.d.ts +11 -1
  382. package/types/ngwr-overlay.d.ts +33 -2
  383. package/types/ngwr-pagination-testing.d.ts +291 -0
  384. package/types/ngwr-pagination.d.ts +1 -0
  385. package/types/ngwr-popconfirm-testing.d.ts +235 -0
  386. package/types/ngwr-popconfirm.d.ts +31 -21
  387. package/types/ngwr-popover-testing.d.ts +221 -0
  388. package/types/ngwr-popover.d.ts +9 -0
  389. package/types/ngwr-pull-to-refresh.d.ts +7 -0
  390. package/types/ngwr-qr.d.ts +9 -1
  391. package/types/ngwr-radio-testing.d.ts +296 -0
  392. package/types/ngwr-radio.d.ts +8 -2
  393. package/types/ngwr-rating-testing.d.ts +291 -0
  394. package/types/ngwr-rating.d.ts +23 -0
  395. package/types/ngwr-segmented-testing.d.ts +401 -0
  396. package/types/ngwr-select-testing.d.ts +175 -0
  397. package/types/ngwr-select.d.ts +45 -4
  398. package/types/ngwr-sidebar.d.ts +17 -2
  399. package/types/ngwr-slider-testing.d.ts +329 -0
  400. package/types/ngwr-slider.d.ts +35 -1
  401. package/types/ngwr-sparkline.d.ts +12 -2
  402. package/types/ngwr-speed-dial.d.ts +17 -18
  403. package/types/ngwr-spinner.d.ts +8 -1
  404. package/types/ngwr-splitter.d.ts +24 -1
  405. package/types/ngwr-statistic.d.ts +12 -2
  406. package/types/ngwr-stepper-testing.d.ts +346 -0
  407. package/types/ngwr-switch-testing.d.ts +66 -0
  408. package/types/ngwr-switch.d.ts +7 -2
  409. package/types/ngwr-table-testing.d.ts +423 -0
  410. package/types/ngwr-table.d.ts +42 -0
  411. package/types/ngwr-tabs-testing.d.ts +470 -0
  412. package/types/ngwr-tabs.d.ts +9 -0
  413. package/types/ngwr-textarea-testing.d.ts +184 -0
  414. package/types/ngwr-textarea.d.ts +7 -2
  415. package/types/ngwr-toast-testing.d.ts +80 -0
  416. package/types/ngwr-tour.d.ts +27 -0
  417. package/types/ngwr-transfer-testing.d.ts +444 -0
  418. package/types/ngwr-transfer.d.ts +16 -1
  419. package/types/ngwr-tree-testing.d.ts +501 -0
  420. package/types/ngwr-tree.d.ts +33 -0
  421. package/types/ngwr-version.d.ts +1 -1
  422. package/types/ngwr-virtual-scroll.d.ts +13 -1
  423. package/typewriter/styles/_index.scss +1 -1
  424. package/typography/styles/_index.scss +1 -1
  425. package/window/styles/_index.scss +32 -9
@@ -38,6 +38,11 @@
38
38
  top: 50%;
39
39
  width: var(--wr-slider-thumb-size);
40
40
  height: var(--wr-slider-thumb-size);
41
+ // The inline half of the centring pair follows the inset it centres:
42
+ // `slider.html` positions the thumb with `inset-inline-start`, which is the
43
+ // RIGHT edge under `dir="rtl"`, so a fixed `-50%` would drag the thumb — and
44
+ // the 44px tap area pinned to it — a whole thumb-width past its own value.
45
+ // The block half is symmetric and stays put.
41
46
  transform: translate(-50%, -50%);
42
47
  appearance: none;
43
48
  background: var(--wr-slider-thumb);
@@ -60,6 +65,16 @@
60
65
  cursor: grabbing;
61
66
  transform: translate(-50%, -50%) scale(1.1);
62
67
  }
68
+
69
+ // Mirrored last, and with the `:active` pair spelled out, so the RTL rules
70
+ // outrank the LTR ones they replace at every state.
71
+ [dir='rtl'] & {
72
+ transform: translate(50%, -50%);
73
+
74
+ &:active {
75
+ transform: translate(50%, -50%) scale(1.1);
76
+ }
77
+ }
63
78
  }
64
79
 
65
80
  &__label {
@@ -19,9 +19,14 @@
19
19
  padding-top: env(safe-area-inset-top);
20
20
  }
21
21
  &--safe-area.wr-speed-dial--left {
22
+ // Pads toward the physical fan direction below, and
23
+ // `env(safe-area-inset-right)` names the device's own edge — it does not
24
+ // flip with direction, so it has to stay on the side it describes.
25
+ // rtl-ok: physical fan direction, physical `env()` inset
22
26
  padding-right: env(safe-area-inset-right);
23
27
  }
24
28
  &--safe-area.wr-speed-dial--right {
29
+ // rtl-ok: same pair as above — physical fan direction, physical inset.
25
30
  padding-left: env(safe-area-inset-left);
26
31
  }
27
32
 
@@ -90,11 +95,13 @@
90
95
  &--up {
91
96
  .wr-speed-dial__actions {
92
97
  bottom: 100%;
98
+ // rtl-ok: centred with a physical translateX, so the pair must stay physical
93
99
  left: 50%;
94
100
  transform: translateX(-50%);
95
101
  }
96
102
  .wr-speed-dial__action-wrap {
97
103
  bottom: 0;
104
+ // rtl-ok: centred with a physical translate(-50%, …), so the pair must stay physical
98
105
  left: 50%;
99
106
  transform: translate(-50%, 0.5rem);
100
107
  }
@@ -107,11 +114,13 @@
107
114
  &--down {
108
115
  .wr-speed-dial__actions {
109
116
  top: 100%;
117
+ // rtl-ok: centred with a physical translateX, so the pair must stay physical
110
118
  left: 50%;
111
119
  transform: translateX(-50%);
112
120
  }
113
121
  .wr-speed-dial__action-wrap {
114
122
  top: 0;
123
+ // rtl-ok: centred with a physical translate(-50%, …), so the pair must stay physical
115
124
  left: 50%;
116
125
  transform: translate(-50%, -0.5rem);
117
126
  }
@@ -123,11 +132,18 @@
123
132
 
124
133
  &--left {
125
134
  .wr-speed-dial__actions {
135
+ // The anchor and the fan offset are one pair — the actions travel on a
136
+ // physical `translateX` (`translate(calc(-1 * $offset), -50%)` below,
137
+ // which no logical property can mirror). Flip only the anchor and the
138
+ // dial fans back over its own trigger in RTL. A direction-aware fan is a
139
+ // TS/`Directionality` change, out of scope for this CSS sweep.
140
+ // rtl-ok: anchor paired with a physical translateX fan
126
141
  right: 100%;
127
142
  top: 50%;
128
143
  transform: translateY(-50%);
129
144
  }
130
145
  .wr-speed-dial__action-wrap {
146
+ // rtl-ok: same anchor/transform pair as above.
131
147
  right: 0;
132
148
  top: 50%;
133
149
  transform: translate(0.5rem, -50%);
@@ -140,11 +156,15 @@
140
156
 
141
157
  &--right {
142
158
  .wr-speed-dial__actions {
159
+ // Anchor paired with the physical `translate($offset, -50%)` fan below —
160
+ // see `--left` for why converting one half breaks the other.
161
+ // rtl-ok: anchor paired with a physical translateX fan
143
162
  left: 100%;
144
163
  top: 50%;
145
164
  transform: translateY(-50%);
146
165
  }
147
166
  .wr-speed-dial__action-wrap {
167
+ // rtl-ok: same anchor/transform pair as above.
148
168
  left: 0;
149
169
  top: 50%;
150
170
  transform: translate(-0.5rem, -50%);
@@ -9,6 +9,19 @@
9
9
  overflow-wrap: break-word;
10
10
  will-change: transform, opacity;
11
11
 
12
+ // Same shape as `wr-rotating-text`: the animated pieces are per-character
13
+ // spans, which a screen reader may read out one letter at a time, so the real
14
+ // string is carried once here and the pieces are taken out of the tree.
15
+ &__sr-only {
16
+ position: absolute;
17
+ width: 1px;
18
+ height: 1px;
19
+ overflow: hidden;
20
+ clip: rect(0 0 0 0);
21
+ clip-path: inset(50%);
22
+ white-space: nowrap;
23
+ }
24
+
12
25
  &__piece {
13
26
  display: inline-block;
14
27
  will-change: transform, opacity;
@@ -39,11 +39,13 @@
39
39
 
40
40
  &--bottom {
41
41
  bottom: -12px;
42
+ // rtl-ok: the comet's off-screen start mark — `wr-star-border-bottom` sweeps it by `translate(-100%, 0%)`
42
43
  right: -250%;
43
44
  }
44
45
 
45
46
  &--top {
46
47
  top: -12px;
48
+ // rtl-ok: the comet's off-screen start mark — `wr-star-border-top` sweeps it by `translate(100%, 0%)`
47
49
  left: -250%;
48
50
  animation-name: wr-star-border-top;
49
51
  }
@@ -60,7 +60,7 @@
60
60
  gap: 0.625rem;
61
61
  color: var(--wr-color-on-surface);
62
62
  cursor: pointer;
63
- text-align: left;
63
+ text-align: start;
64
64
  flex: 0 0 auto;
65
65
 
66
66
  &:disabled {
package/styles/_grid.scss CHANGED
@@ -18,10 +18,10 @@ $gutter: var(--wr-grid-gutter);
18
18
  .container,
19
19
  .container-fluid {
20
20
  width: 100%;
21
- padding-right: calc(#{$gutter} * 0.5);
22
- padding-left: calc(#{$gutter} * 0.5);
23
- margin-left: auto;
24
- margin-right: auto;
21
+ padding-inline-end: calc(#{$gutter} * 0.5);
22
+ padding-inline-start: calc(#{$gutter} * 0.5);
23
+ margin-inline-start: auto;
24
+ margin-inline-end: auto;
25
25
  }
26
26
 
27
27
  @each $name, $max-width in bp.$container-widths {
package/styles.scss CHANGED
@@ -73,6 +73,7 @@
73
73
  @forward './line-chart/styles';
74
74
  @forward './list/styles';
75
75
  @forward './loading-bar/styles';
76
+ @forward './markdown/styles';
76
77
  @forward './marquee/styles';
77
78
  @forward './mention/styles';
78
79
  @forward './meter-group/styles';
@@ -55,14 +55,16 @@
55
55
  &__thumb {
56
56
  position: absolute;
57
57
  top: 50%;
58
- left: calc((var(--wr-switch-track-height) - var(--wr-switch-thumb-size)) / 2);
58
+ inset-inline-start: calc((var(--wr-switch-track-height) - var(--wr-switch-thumb-size)) / 2);
59
59
  transform: translateY(-50%);
60
60
  width: var(--wr-switch-thumb-size);
61
61
  height: var(--wr-switch-thumb-size);
62
62
  background: var(--wr-switch-thumb);
63
63
  border-radius: 50%;
64
64
  box-shadow: var(--wr-shadow-xs);
65
- transition: left var(--wr-transition-base);
65
+ // Follows the property above — a `transition: left` would no longer name the
66
+ // property that moves, and the thumb would snap instead of glide.
67
+ transition: inset-inline-start var(--wr-transition-base);
66
68
  }
67
69
 
68
70
  // Sizes — track, thumb, label font + line-height scale together.
@@ -86,7 +88,7 @@
86
88
  --wr-switch-bg: var(--wr-switch-bg-checked);
87
89
 
88
90
  .wr-switch__thumb {
89
- left: calc(
91
+ inset-inline-start: calc(
90
92
  var(--wr-switch-track-width) - var(--wr-switch-thumb-size) -
91
93
  ((var(--wr-switch-track-height) - var(--wr-switch-thumb-size)) / 2)
92
94
  );
@@ -54,7 +54,7 @@
54
54
  &__th,
55
55
  &__td {
56
56
  padding: calc(0.625rem * var(--wr-density-y, 1)) calc(0.875rem * var(--wr-density-x, 1));
57
- text-align: left;
57
+ text-align: start;
58
58
  vertical-align: middle;
59
59
  border-bottom: 1px solid var(--wr-table-border);
60
60
  }
@@ -91,7 +91,11 @@
91
91
  &__resize-handle {
92
92
  position: absolute;
93
93
  top: 0;
94
- right: 0;
94
+ // The grab edge is the side a growing width extends toward, and `table.ts`
95
+ // now signs that travel from `Directionality` (`resizeDelta()`): rightward
96
+ // in LTR, leftward in RTL. The two are a pair — flipping one without the
97
+ // other leaves the grip standing still while the column resizes.
98
+ inset-inline-end: 0;
95
99
  z-index: 1;
96
100
  width: 0.5rem;
97
101
  height: 100%;
@@ -103,7 +107,9 @@
103
107
  content: '';
104
108
  position: absolute;
105
109
  inset: 20% 0.1875rem;
106
- left: auto;
110
+ // Cancels the inline-START inset so the grip bar hugs the handle's own
111
+ // grab edge, whichever physical side that lands on.
112
+ inset-inline-start: auto;
107
113
  width: 2px;
108
114
  border-radius: 1px;
109
115
  background: var(--wr-color-outline);
@@ -315,14 +321,19 @@
315
321
  background-image: linear-gradient(var(--wr-table-row-hover), var(--wr-table-row-hover));
316
322
  }
317
323
 
318
- // Separating shadow on the inner edge of each pinned group.
324
+ // 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.
319
328
  &__th--pin-edge-left,
320
329
  &__td--pin-edge-left {
330
+ // rtl-ok: physical offset matching the physical `left` pin set by the component
321
331
  box-shadow: 0.375rem 0 0.375rem -0.25rem rgba(0, 0, 0, 0.18);
322
332
  }
323
333
 
324
334
  &__th--pin-edge-right,
325
335
  &__td--pin-edge-right {
336
+ // rtl-ok: physical offset matching the physical `right` pin set by the component
326
337
  box-shadow: -0.375rem 0 0.375rem -0.25rem rgba(0, 0, 0, 0.18);
327
338
  }
328
339
 
@@ -398,10 +409,10 @@
398
409
  }
399
410
 
400
411
  // The band cell is full table width, so a sticky inline box inside it rides
401
- // horizontal scroll and keeps the label at the left edge. No measurement.
412
+ // horizontal scroll and keeps the label at the leading edge. No measurement.
402
413
  &__group-inner {
403
414
  position: sticky;
404
- left: 0;
415
+ inset-inline-start: 0;
405
416
  display: inline-flex;
406
417
  align-items: center;
407
418
  gap: 0.5rem;
@@ -586,7 +597,7 @@
586
597
  gap: 1rem;
587
598
  padding: 0.25rem 0.875rem;
588
599
  border-bottom: 0;
589
- text-align: right;
600
+ text-align: end;
590
601
  }
591
602
 
592
603
  .wr-table--responsive .wr-table__td::before {
@@ -600,7 +611,7 @@
600
611
  // so a consumer who opted out still got capitals on mobile.
601
612
  letter-spacing: var(--wr-table-head-letter-spacing);
602
613
  text-transform: var(--wr-table-head-transform);
603
- text-align: left;
614
+ text-align: start;
604
615
  white-space: nowrap;
605
616
  }
606
617
 
@@ -653,7 +664,7 @@
653
664
 
654
665
  .wr-table--responsive .wr-table__group-toggle {
655
666
  flex: 1 1 auto;
656
- text-align: left;
667
+ text-align: start;
657
668
  }
658
669
 
659
670
  // Per-group subtotals don't translate to cards either — hide like the grand footer.
@@ -769,7 +780,7 @@
769
780
  color: var(--wr-color-on-surface);
770
781
  font: inherit;
771
782
  font-size: var(--wr-text-sm);
772
- text-align: left;
783
+ text-align: start;
773
784
  cursor: pointer;
774
785
 
775
786
  &:hover {
@@ -817,7 +828,7 @@
817
828
  font: inherit;
818
829
  font-size: var(--wr-text-sm);
819
830
  cursor: pointer;
820
- text-align: left;
831
+ text-align: start;
821
832
 
822
833
  &:hover {
823
834
  background: var(--wr-color-primary-soft);
@@ -57,13 +57,23 @@
57
57
  --wr-tabs-fade: 1.5rem;
58
58
  --wr-tabs-fade-start: 0px;
59
59
  --wr-tabs-fade-end: 0px;
60
+ // A gradient has no logical direction keyword, so the axis is a variable the
61
+ // RTL rule below turns around. The two stops are LOGICAL — `updateFades()`
62
+ // measures the distance from the inline start — and the inline start is the
63
+ // right edge under `dir="rtl"`, so the gradient has to run the other way for
64
+ // the fade to land on the edge that still has tabs behind it.
65
+ --wr-tabs-fade-axis: to right;
60
66
  mask-image: linear-gradient(
61
- to right,
67
+ var(--wr-tabs-fade-axis),
62
68
  transparent 0,
63
69
  #000 var(--wr-tabs-fade-start),
64
70
  #000 calc(100% - var(--wr-tabs-fade-end)),
65
71
  transparent 100%
66
72
  );
73
+
74
+ [dir='rtl'] & {
75
+ --wr-tabs-fade-axis: to left;
76
+ }
67
77
  }
68
78
 
69
79
  &--fade-start &__strip {
@@ -94,6 +94,11 @@
94
94
  // cursor follow the `resize` direction.
95
95
  &__resize {
96
96
  position: absolute;
97
+ // `textarea.ts` starts the drag from `event.clientX` and applies
98
+ // `startWidth + (clientX - startX)`, so the grip has to sit on the physical
99
+ // side a growing width extends toward. Flip it only together with that sign,
100
+ // once the drag maths itself reads `Directionality`.
101
+ // rtl-ok: paired with the physical clientX drag maths in textarea.ts
97
102
  right: 0.25rem;
98
103
  bottom: 0.25rem;
99
104
  display: inline-flex;
@@ -9,15 +9,27 @@
9
9
  // $base-colors: (primary: #...)
10
10
  // );
11
11
 
12
+ // Five intents are deliberately deeper than their "brand" tone, and the reason is
13
+ // arithmetic rather than taste. `_contrast()` picks whichever of black / white
14
+ // scores HIGHER against the fill, and those two are equal at √21 ≈ 4.58 — so an
15
+ // intent lighter than that gets a black label whatever anyone prefers. At the old
16
+ // tones white measured 3.10–3.99 (below AA) and black 5.26–6.77, so black won on
17
+ // merit and the labels read muddy on a saturated mid-tone.
18
+ //
19
+ // Each of the five now sits just past the flip: white 4.60–4.64, black 4.52–4.56.
20
+ // The shift is 8–20% of the previous tone. `warning` and `light` are NOT in that
21
+ // set and cannot be — white needs `#906900` on warning, which is brown, not a
22
+ // warning colour; those two keep their black label, which is correct at 12.28 and
23
+ // 14.14.
12
24
  $base-colors: (
13
25
  primary: #3969e2,
14
- secondary: #f51c6a,
15
- success: #00a400,
26
+ secondary: #e21a62,
27
+ success: #008800,
16
28
  warning: #ffba00,
17
- danger: #fa383e,
18
- info: #3b82f6,
29
+ danger: #dc3137,
30
+ info: #3472d9,
19
31
  light: #cbd5e1,
20
- medium: #8594a4,
32
+ medium: #6a7683,
21
33
  dark: #0f172a,
22
34
  ) !default;
23
35
 
@@ -139,9 +151,10 @@ $contrast-light: #ffffff !default;
139
151
  // Muted TEXT, deliberately its own token rather than an alias of the `medium`
140
152
  // intent. The two roles pull in opposite directions and cannot share a value:
141
153
  // as text it needs >= 4.5:1 against the lightest surface (#ebeff4), while as a
142
- // button fill it carries dark text and needs >= 4.5:1 the other way. The best
143
- // candidate for either fails the other — the window closes around #6b7a8a
144
- // (3.81 as text, 4.11 as fill). Aliasing them left secondary text at 2.69:1.
154
+ // fill it has to clear the bar the other way, against its own label. v11 pulled
155
+ // them further apart rather than closer — the `medium` fill went deeper
156
+ // (#6a7683, whose label is now white at 4.63) while this token stayed where a
157
+ // light canvas needs it. Aliasing them left secondary text at 2.69:1.
145
158
  --wr-color-muted-text: #5f6c7d;
146
159
  --wr-color-muted-text-rgb: 95, 108, 125;
147
160
 
@@ -230,11 +243,14 @@ $contrast-light: #ffffff !default;
230
243
  // `-ink`: the intent used as TEXT on `--wr-color-surface`.
231
244
  //
232
245
  // v10 fixed the opposite direction — `-contrast`, the label ON a filled
233
- // intent. The inverse was never covered, and the light theme fails WCAG AA
234
- // everywhere an outlined / bordered variant paints the hue as its own label:
235
- // warning lands at 1.71:1 against a 4.5 bar, medium 3.10, success 3.33,
236
- // danger and info 3.68, secondary 3.99. Dark passes on all of them, because
237
- // its bases were retuned lighter for a dark canvas and that happens to be the
246
+ // intent. The inverse was never covered: an outlined / bordered variant paints
247
+ // the hue as its own label, and on a TINTED surface the light theme still
248
+ // fails there. Measured on #ebeff4, the lightest surface, after v11 deepened
249
+ // five of them: medium 4.01, success 4.02, danger 4.01, info and secondary
250
+ // 3.99 — all under the 4.5 bar — and warning 1.48, which nothing rescues.
251
+ // (On pure white those five now clear it at 4.61–4.64; the tint is what makes
252
+ // `-ink` necessary rather than optional.) Dark passes on all of them, because
253
+ // its bases are lighter for a dark canvas and that happens to be the
238
254
  // accessible direction.
239
255
  //
240
256
  // Same recipe as `-soft-contrast`: mixing toward `--wr-color-dark` darkens in
@@ -13,10 +13,15 @@
13
13
  // FULL symmetric shade set — the hand blocks used to ship only base+rgb,
14
14
  // leaving -light/-dark/-lighter/-darker baked from the LIGHT palette.
15
15
  // (primary keeps its hand-tuned block; info stays its light values.)
16
+ // `success` and `danger` are past the black/white flip point here too — see the
17
+ // note above `$base-colors`. The dark canvas wants a LIGHTER fill, so the deepening
18
+ // costs more here than in the light theme (33% and 21%), and that is the trade:
19
+ // a duller green, in exchange for a label that is legible rather than muddy.
20
+ // `warning` stays as it is — white cannot reach it at any tone worth shipping.
16
21
  $dark-intents: (
17
- success: #34c759,
22
+ success: #23863c,
18
23
  warning: #ffcc33,
19
- danger: #ff5c5c,
24
+ danger: #ca4949,
20
25
  );
21
26
 
22
27
  // The surface / ink bases below are re-tuned for the dark canvas too, but they
@@ -25,7 +30,10 @@ $dark-intents: (
25
30
  // the shade derivations read from the value that actually ships, instead of
26
31
  // being re-typed next to it.
27
32
  $_light: #262f44;
28
- $_medium: #9aa6b8;
33
+ // The medium FILL, past the flip point. Not the muted-text role: that reads from
34
+ // `--wr-color-muted-text` below, which stays #9aa6b8 — it is text on the canvas,
35
+ // where lighter is what makes it legible, the opposite direction from a fill.
36
+ $_medium: #6d7682;
29
37
  $_dark: #e6ebf3;
30
38
 
31
39
  [data-theme='dark'] {
@@ -93,6 +93,9 @@
93
93
  content: '';
94
94
  position: absolute;
95
95
  top: 50%;
96
+ // rtl-ok: centred with a physical `translate(-50%, -50%)` below, so the
97
+ // pair must stay physical — mirroring only this half would shift the
98
+ // hit area off the control by its own width under `dir="rtl"`.
96
99
  left: 50%;
97
100
  width: 100%;
98
101
  height: 100%;
@@ -88,7 +88,7 @@
88
88
  &::before {
89
89
  content: '';
90
90
  position: absolute;
91
- left: 0.34375rem;
91
+ inset-inline-start: 0.34375rem;
92
92
  top: 1rem;
93
93
  bottom: -1.25rem;
94
94
  width: 1.5px;
@@ -119,7 +119,7 @@
119
119
  position: absolute;
120
120
  // Dot centre: margin-top 0.125rem + half of the 0.75rem dot = 0.5rem.
121
121
  top: 0.5rem;
122
- left: 50%;
122
+ inset-inline-start: 50%;
123
123
  width: calc(100% + 2rem);
124
124
  height: 1.5px;
125
125
  background: var(--wr-color-outline);
@@ -26,6 +26,10 @@ $toast-colors: (
26
26
  // Safe-area: fold each inset into the matching padding side so toasts clear
27
27
  // notches / the home indicator / rounded corners on mobile, whichever edge
28
28
  // the host is anchored to. env() is 0 without insets, so desktop stays 1rem.
29
+ // `env(safe-area-inset-left/right)` report the device's own edges and do NOT
30
+ // flip with direction, so each inset must stay on the side it describes. The
31
+ // 1rem base is equal on both sides, so the shorthand reads the same either way.
32
+ // rtl-ok: physical shorthand carrying physical `env()` insets
29
33
  padding: calc(1rem + env(safe-area-inset-top)) calc(1rem + env(safe-area-inset-right))
30
34
  calc(1rem + env(safe-area-inset-bottom)) calc(1rem + env(safe-area-inset-left));
31
35
  pointer-events: none;
@@ -57,8 +61,7 @@ $toast-colors: (
57
61
  .wr-toast {
58
62
  --wr-toast-i: var(--wr-toast-stack-index, 0);
59
63
  position: absolute;
60
- left: 1rem;
61
- right: 1rem;
64
+ inset-inline: 1rem;
62
65
  width: auto;
63
66
  max-width: calc(100% - 2rem);
64
67
  transition:
@@ -98,31 +101,33 @@ $toast-colors: (
98
101
 
99
102
  &--top {
100
103
  top: 0;
104
+ // rtl-ok: centred with a physical translateX, so the pair must stay physical
101
105
  left: 50%;
102
106
  transform: translateX(-50%);
103
107
  }
104
108
  &--top-start {
105
109
  top: 0;
106
- left: 0;
110
+ inset-inline-start: 0;
107
111
  }
108
112
  &--top-end {
109
113
  top: 0;
110
- right: 0;
114
+ inset-inline-end: 0;
111
115
  }
112
116
  &--bottom {
113
117
  bottom: 0;
118
+ // rtl-ok: centred with a physical translateX, so the pair must stay physical
114
119
  left: 50%;
115
120
  transform: translateX(-50%);
116
121
  flex-direction: column-reverse;
117
122
  }
118
123
  &--bottom-start {
119
124
  bottom: 0;
120
- left: 0;
125
+ inset-inline-start: 0;
121
126
  flex-direction: column-reverse;
122
127
  }
123
128
  &--bottom-end {
124
129
  bottom: 0;
125
- right: 0;
130
+ inset-inline-end: 0;
126
131
  flex-direction: column-reverse;
127
132
  }
128
133
  }
@@ -143,7 +148,7 @@ $toast-colors: (
143
148
  border: 1px solid var(--wr-toast-border);
144
149
  // Capture horizontal swipe-to-dismiss; let vertical scroll pass through.
145
150
  touch-action: pan-y;
146
- border-left: 3px solid var(--wr-toast-accent);
151
+ border-inline-start: 3px solid var(--wr-toast-accent);
147
152
  @include theme.smooth-br(var(--wr-border-radius-base));
148
153
  box-shadow: var(--wr-shadow-overlay);
149
154
  font-family: var(--wr-font-family-base);
@@ -201,9 +206,13 @@ $toast-colors: (
201
206
  &__progress {
202
207
  position: absolute;
203
208
  bottom: 0;
204
- left: 0;
209
+ inset-inline-start: 0;
205
210
  height: 2px;
206
211
  width: 100%;
212
+ // `transform-origin` has no logical keyword, and the drain is a physical
213
+ // `scaleX`. Flipping the bar to drain from the reader's start needs a
214
+ // direction-aware rule, not a property rename.
215
+ // rtl-ok: origin is one half of a physical scaleX pair
207
216
  transform-origin: left;
208
217
  background: var(--wr-toast-accent);
209
218
  animation: wr-toast-progress linear forwards;
@@ -51,7 +51,7 @@
51
51
 
52
52
  &--end {
53
53
  flex: 0 0 auto;
54
- margin-left: auto;
54
+ margin-inline-start: auto;
55
55
  }
56
56
  }
57
57
 
@@ -64,7 +64,7 @@
64
64
  &::before {
65
65
  content: '';
66
66
  position: absolute;
67
- left: -0.5rem;
67
+ inset-inline-start: -0.5rem;
68
68
  top: 50%;
69
69
  transform: translateY(-50%);
70
70
  height: 1.25rem;
@@ -82,7 +82,7 @@
82
82
  }
83
83
 
84
84
  .wr-toolbar--responsive .wr-toolbar__zone--end {
85
- margin-left: 0;
85
+ margin-inline-start: 0;
86
86
  }
87
87
 
88
88
  // The vertical hairline dividers are a horizontal-row affordance — drop them
@@ -5,7 +5,13 @@
5
5
  // covered, so it stays readable and clickable.
6
6
  .wr-tour__spotlight {
7
7
  position: fixed;
8
- z-index: 1000;
8
+ // Below CDK's `.cdk-overlay-container` (1000), deliberately. Both are fixed
9
+ // children of `<body>`, so at equal z-index the DOM order decides — and the
10
+ // service appends a fresh cut-out on every step while the container stays put, so
11
+ // from the second step on the dimming shadow painted OVER the tour's own card.
12
+ // `.wr-tour-overlay { z-index: 1001 }` cannot help: it sits on the pane INSIDE the
13
+ // container, whose own stacking context scopes it.
14
+ z-index: 999;
9
15
  pointer-events: none;
10
16
  border-radius: var(--wr-border-radius-base);
11
17
  box-shadow: 0 0 0 9999px rgba(var(--wr-color-backdrop-rgb), 0.55);
@@ -19,7 +19,7 @@
19
19
  align-items: center;
20
20
  gap: 0.375rem;
21
21
  padding: 0.3125rem 0.5rem;
22
- padding-left: calc(0.5rem + var(--wr-tree-depth, 0) * var(--wr-tree-indent));
22
+ padding-inline-start: calc(0.5rem + var(--wr-tree-depth, 0) * var(--wr-tree-indent));
23
23
  border-radius: var(--wr-border-radius-sm);
24
24
  cursor: pointer;
25
25
  user-select: none;
@@ -156,7 +156,7 @@
156
156
  font-size: var(--wr-tree-trigger-font-size);
157
157
  line-height: var(--wr-tree-trigger-line-height);
158
158
  cursor: pointer;
159
- text-align: left;
159
+ text-align: start;
160
160
  transition:
161
161
  border-color var(--wr-transition-base),
162
162
  box-shadow var(--wr-transition-base);
@@ -243,7 +243,9 @@
243
243
  align-items: center;
244
244
  gap: 0.125rem;
245
245
  max-width: 100%;
246
- padding: 0.125rem 0.25rem 0.125rem 0.5rem;
246
+ // Roomier on the label side, tighter where the remove (×) sits.
247
+ padding-block: 0.125rem;
248
+ padding-inline: 0.5rem 0.25rem;
247
249
  border-radius: 999px;
248
250
  background: var(--wr-color-primary-soft);
249
251
  color: var(--wr-color-primary);
@@ -60,6 +60,14 @@ declare class WrActionSheet {
60
60
  readonly actions: _angular_core.InputSignal<readonly WrActionSheetAction[]>;
61
61
  /** Optional bold heading above the rows. */
62
62
  readonly title: _angular_core.InputSignal<string>;
63
+ /**
64
+ * Name announced for the dialog when there is no visible `title`. Falls back to
65
+ * `actionSheet.label`, then `'Actions'` — it used to be that English string,
66
+ * written into the template of a component whose every other string comes from
67
+ * the caller.
68
+ */
69
+ readonly titleFallback: _angular_core.InputSignal<string | null>;
70
+ protected readonly resolvedTitleFallback: _angular_core.Signal<string>;
63
71
  /** Optional muted sub-heading under the title. */
64
72
  readonly message: _angular_core.InputSignal<string>;
65
73
  /** Fires with the chosen row (never fires on a dismiss). */
@@ -68,7 +76,7 @@ declare class WrActionSheet {
68
76
  protected readonly cancelActions: _angular_core.Signal<WrActionSheetAction[]>;
69
77
  protected select(item: WrActionSheetAction): void;
70
78
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<WrActionSheet, never>;
71
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrActionSheet, "wr-action-sheet", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; "actions": { "alias": "actions"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "message": { "alias": "message"; "required": false; "isSignal": true; }; }, { "open": "openChange"; "action": "action"; }, never, never, true, never>;
79
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrActionSheet, "wr-action-sheet", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; "actions": { "alias": "actions"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "titleFallback": { "alias": "titleFallback"; "required": false; "isSignal": true; }; "message": { "alias": "message"; "required": false; "isSignal": true; }; }, { "open": "openChange"; "action": "action"; }, never, never, true, never>;
72
80
  }
73
81
 
74
82
  export { WrActionSheet };