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
@@ -2,6 +2,57 @@ import * as _angular_core from '@angular/core';
2
2
  import { TemplateRef } from '@angular/core';
3
3
  import { CdkDragDrop } from '@angular/cdk/drag-drop';
4
4
 
5
+ /**
6
+ * @license
7
+ *
8
+ * Use of this source code is governed by an MIT-style license that can be
9
+ * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
10
+ */
11
+ /**
12
+ * One row handed to `wr-table` through `[items]`.
13
+ *
14
+ * **`object`, not `Record<string, unknown>`, and the difference is the whole
15
+ * reason this type exists.** TypeScript withholds the implicit index signature
16
+ * from an `interface`, because declaration merging can widen one later, so an
17
+ * interface is NOT assignable to `Record<string, unknown>` while a `type` alias
18
+ * describing the same shape IS:
19
+ *
20
+ * ```ts
21
+ * interface UserI { id: number }
22
+ * type UserT = { id: number };
23
+ *
24
+ * declare function take(rows: readonly Record<string, unknown>[]): void;
25
+ * take([] as UserI[]); // Index signature for type 'string' is missing in type 'UserI'
26
+ * take([] as UserT[]); // fine
27
+ * ```
28
+ *
29
+ * The table used to declare `[items]` as the record form, so `[items]="users"`
30
+ * compiled for one declaration of `User` and failed for the other — reported as
31
+ * "the table refuses my data", which is what it looks like from outside. Nothing
32
+ * about the row is read at bind time; the table reads cells by string key and
33
+ * hands back `unknown`, so the wider type costs nothing and accepts both.
34
+ *
35
+ * The row callbacks (`rowKey`, `groupBy`, `childrenKey`) do NOT take this type:
36
+ * their parameter is `Record<string, unknown>`, and it stays that way. A
37
+ * parameter is contravariant, so no signature short of a generic component can
38
+ * accept `(row: User) => row.id` — and widening it to `object` would reject the
39
+ * callbacks that do compile today (an explicit
40
+ * `(row: Record<string, unknown>) => …`) while making the row unindexable.
41
+ *
42
+ * Index the row instead — `(row) => row['id']` needs no cast at all — or, to
43
+ * reach your own type, `(row) => (row as unknown as User).id`. A single
44
+ * `as User` is not enough for an `interface`: TypeScript refuses that
45
+ * conversion outright (TS2352, "neither type sufficiently overlaps"), over the
46
+ * same missing index signature. `rowKey="id"` sidesteps all of it.
47
+ *
48
+ * `childrenKey` is the one callback that also RETURNS rows, and there the type
49
+ * IS this wide one — a return is covariant, so
50
+ * `(row) => (row as unknown as User).reports` needs no second assertion on the
51
+ * array. Declared narrow, it accepted a forest through `[items]` and refused to
52
+ * let the children back out.
53
+ */
54
+ type WrTableRow = object;
55
+
5
56
  /**
6
57
  * @license
7
58
  *
@@ -248,8 +299,22 @@ type RenderRow = {
248
299
  declare class WrTable {
249
300
  /** Column definitions, keyed by row property name. */
250
301
  readonly columns: _angular_core.InputSignal<WrTableColumns>;
251
- /** Row items. `null`/`undefined` renders the empty state; use `[loading]` for the spinner. */
252
- readonly items: _angular_core.InputSignal<readonly Record<string, unknown>[] | null | undefined>;
302
+ /**
303
+ * Row items. `null`/`undefined` renders the empty state; use `[loading]` for
304
+ * the spinner.
305
+ *
306
+ * Typed `WrTableRow` (= `object`) rather than `Record<string, unknown>`, so an
307
+ * array of an `interface` binds as readily as an array of a `type` — see
308
+ * {@link WrTableRow} for why those two are not the same to TypeScript.
309
+ */
310
+ readonly items: _angular_core.InputSignal<readonly object[] | null | undefined>;
311
+ /**
312
+ * The rows as records, for everything downstream that reads a cell by key.
313
+ *
314
+ * One cast at the boundary: the INPUT is wide so any object shape binds, while
315
+ * the body keeps indexing rows the way it always has.
316
+ */
317
+ private readonly rows;
253
318
  /** Show the loading spinner overlay. @default false */
254
319
  readonly loading: _angular_core.InputSignalWithTransform<boolean, any>;
255
320
  /**
@@ -314,6 +379,14 @@ declare class WrTable {
314
379
  *
315
380
  * `pageSize` pages the ROOTS; a root brings its open descendants with it.
316
381
  *
382
+ * The function form RETURNS `WrTableRow`s, matching `[items]`: a return is
383
+ * covariant, so an array of `interface`-typed children satisfies it. Declared
384
+ * as records it did not, and a forest that bound to `[items]` could not hand
385
+ * its children back out. The PARAMETER stays `Record<string, unknown>` — that
386
+ * side is contravariant, and widening it would reject the callbacks that
387
+ * compile today while leaving `row['reports']` unindexable. See
388
+ * {@link WrTableRow}.
389
+ *
317
390
  * @example
318
391
  * ```html
319
392
  * <wr-table
@@ -326,7 +399,7 @@ declare class WrTable {
326
399
  * />
327
400
  * ```
328
401
  */
329
- readonly childrenKey: _angular_core.InputSignal<string | ((row: Record<string, unknown>) => readonly Record<string, unknown>[] | null | undefined) | null>;
402
+ readonly childrenKey: _angular_core.InputSignal<string | ((row: Record<string, unknown>) => readonly WrTableRow[] | null | undefined) | null>;
330
403
  /**
331
404
  * Which column carries the indent and the expand toggle. Keyed, not
332
405
  * positional, so it survives a `columnOrder` drag. Defaults to whichever
@@ -476,9 +549,17 @@ declare class WrTable {
476
549
  private readonly pins;
477
550
  constructor();
478
551
  private measurePins;
479
- /** Sticky `left` offset (px) for a left-pinned column, else `null`. */
552
+ /**
553
+ * Sticky `inset-inline-start` offset (px) for a `pin: 'left'` column, else `null`.
554
+ *
555
+ * The input keeps its physical name — it is public API — but the offset it
556
+ * produces is LOGICAL. `measurePins()` accumulates in DOM order, which is
557
+ * start-to-end semantics, and under `dir="rtl"` the column order mirrors: a
558
+ * `pin: 'left'` column then sits at the physical right, where a `left: 0`
559
+ * sticky inset can never catch it and the column just scrolls away.
560
+ */
480
561
  protected leftPin(key: string): number | null;
481
- /** Sticky `right` offset (px) for a right-pinned column, else `null`. */
562
+ /** Sticky `inset-inline-end` offset (px) for a `pin: 'right'` column, else `null`. See {@link leftPin}. */
482
563
  protected rightPin(key: string): number | null;
483
564
  /** Whether `key` is the inner-edge pinned column on `side` (carries the shadow). */
484
565
  protected isPinEdge(key: string, side: 'left' | 'right'): boolean;
@@ -569,7 +650,7 @@ declare class WrTable {
569
650
  * that is every VISIBLE node — a collapsed subtree is not on screen and is not
570
651
  * swept in, which keeps the checkbox honest about what it just did.
571
652
  */
572
- private readonly pageRowKeys;
653
+ protected readonly pageRowKeys: _angular_core.Signal<readonly unknown[]>;
573
654
  protected isRowSelected(row: Record<string, unknown>): boolean;
574
655
  /** Every current-page row selected (drives the header checkbox). */
575
656
  protected readonly allSelected: _angular_core.Signal<boolean>;
@@ -633,9 +714,9 @@ declare class WrTable {
633
714
  /**
634
715
  * The flat `<tbody>` render list. Ungrouped it is exactly today's rows in
635
716
  * order (the rendered elements are unchanged; only the `@for` track identity
636
- * moves to a stable id). Returns `[]` for both no-rows and loading — the
637
- * template's `@if (visibleItems())` guard keeps the loading case from showing
638
- * the empty row.
717
+ * moves to a stable id). Returns `[]` for nullish rows, and reads nothing about
718
+ * `loading()` — suppressing the "no data" row under the spinner is the
719
+ * template's job, not this one's.
639
720
  */
640
721
  protected readonly renderRows: _angular_core.Signal<readonly RenderRow[]>;
641
722
  /** Default band label — the primitive as text, `'—'` for empty, JSON for objects. */
@@ -793,8 +874,20 @@ declare class WrTableFilter {
793
874
  readonly filterLabel: _angular_core.InputSignal<string | null>;
794
875
  /** Text shown when the search finds nothing. Falls back to `table.noMatches`. */
795
876
  readonly noMatchesLabel: _angular_core.InputSignal<string | null>;
877
+ /**
878
+ * Placeholder AND accessible name of the search box. Falls back to `table.search`.
879
+ *
880
+ * One string for both because the box has no visible label: the placeholder was
881
+ * its only name, so a hard-coded literal left the control unnamed in every other
882
+ * language rather than merely untranslated.
883
+ */
884
+ readonly searchLabel: _angular_core.InputSignal<string | null>;
885
+ /** Label of the clear-selection button. Falls back to `table.reset`. */
886
+ readonly resetLabel: _angular_core.InputSignal<string | null>;
796
887
  protected readonly resolvedFilterLabel: _angular_core.Signal<string>;
797
888
  protected readonly resolvedNoMatchesLabel: _angular_core.Signal<string>;
889
+ protected readonly resolvedSearchLabel: _angular_core.Signal<string>;
890
+ protected readonly resolvedResetLabel: _angular_core.Signal<string>;
798
891
  readonly items: _angular_core.InputSignal<readonly WrTableFilterItem<unknown>[]>;
799
892
  /** Fires whenever the selection changes. */
800
893
  readonly selectionChange: _angular_core.OutputEmitterRef<readonly WrTableFilterItem<unknown>[]>;
@@ -818,8 +911,8 @@ declare class WrTableFilter {
818
911
  protected onReset(): void;
819
912
  private emitSelected;
820
913
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<WrTableFilter, never>;
821
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrTableFilter, "wr-table-filter", never, { "filterLabel": { "alias": "filterLabel"; "required": false; "isSignal": true; }; "noMatchesLabel": { "alias": "noMatchesLabel"; "required": false; "isSignal": true; }; "items": { "alias": "items"; "required": true; "isSignal": true; }; }, { "selectionChange": "selectionChange"; }, never, never, true, never>;
914
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<WrTableFilter, "wr-table-filter", never, { "filterLabel": { "alias": "filterLabel"; "required": false; "isSignal": true; }; "noMatchesLabel": { "alias": "noMatchesLabel"; "required": false; "isSignal": true; }; "searchLabel": { "alias": "searchLabel"; "required": false; "isSignal": true; }; "resetLabel": { "alias": "resetLabel"; "required": false; "isSignal": true; }; "items": { "alias": "items"; "required": true; "isSignal": true; }; }, { "selectionChange": "selectionChange"; }, never, never, true, never>;
822
915
  }
823
916
 
824
917
  export { WrTable, WrTableCell, WrTableExpand, WrTableFilter, WrTableGroupHeader, WrTableSort };
825
- export type { WrTableCellContext, WrTableColumn, WrTableColumns, WrTableCsvOptions, WrTableExpandContext, WrTableFilterChange, WrTableFilterItem, WrTableGroupContext, WrTableSortDirection, WrTableSortState, WrTableSummary };
918
+ export type { WrTableCellContext, WrTableColumn, WrTableColumns, WrTableCsvOptions, WrTableExpandContext, WrTableFilterChange, WrTableFilterItem, WrTableGroupContext, WrTableRow, WrTableSortDirection, WrTableSortState, WrTableSummary };
@@ -111,12 +111,12 @@ declare class WrTabHarness extends ContentContainerComponentHarness {
111
111
  * Whether this is the strip's selected tab.
112
112
  *
113
113
  * `aria-selected` first, because that is the state a screen reader acts on and
114
- * the `--active` class is only what it looks like. A ROUTER tab carries no
115
- * `aria-selected` at all — the router paints the class through
116
- * `routerLinkActive` and nothing announces the selection — so the class is the
117
- * fallback rather than the first choice, and the two branches are not
118
- * interchangeable: reading the class first would report a content tab as selected
119
- * while `aria-selected="false"` told assistive tech otherwise.
114
+ * the `--active` class is only what it looks like. Both shapes carry it now — a
115
+ * router tab publishes it off the same `routerLinkActive` that paints the class —
116
+ * so the class is a fallback for a tab that has neither yet, not a second reading
117
+ * of the same thing. The order is not interchangeable: reading the class first
118
+ * would report a tab as selected while `aria-selected="false"` told assistive tech
119
+ * otherwise.
120
120
  */
121
121
  isSelected(): Promise<boolean>;
122
122
  /**
@@ -243,10 +243,11 @@ declare class WrTabHarness extends ContentContainerComponentHarness {
243
243
  * the tab they move to, the APG's automatic-activation pattern. `<wr-tabs>`
244
244
  * renders exactly one panel: the selected tab's.
245
245
  * - **Router** — one `routerLink` on any child switches the whole strip over. The
246
- * tabs become `<a role="tab">`s, they announce no `aria-selected` at all (the
247
- * router paints `--active` and nothing else), the strip renders NO panel, and it
248
- * stops being one tab stop — every enabled tab is a Tab stop of its own. The
249
- * arrow keys still move focus, but they select nothing: the route does that.
246
+ * tabs become `<a role="tab">`s whose `aria-selected` follows the resolved route
247
+ * (the same `routerLinkActive` that paints `--active`), the strip renders NO
248
+ * panel, and it stops being one tab stop — every enabled tab is a Tab stop of its
249
+ * own. The arrow keys still move focus, but they select nothing: the route does
250
+ * that.
250
251
  *
251
252
  * So {@link getSelectedLabel} and {@link getFocusedLabel} are two different
252
253
  * questions, and {@link getTabStopLabels} is a third. They coincide in content mode
@@ -123,6 +123,8 @@ declare class WrTabs implements WrTabsContext {
123
123
  /** Recompute which edges can scroll, from the strip's scroll metrics. @internal */
124
124
  protected updateFades(): void;
125
125
  protected onTabClick(tab: WrTab): void;
126
+ /** Per-instance prefix, so keys only have to be unique within one group. */
127
+ private readonly uid;
126
128
  /** Header id for `aria-labelledby` on the panel. @internal */
127
129
  headerId(key: string): string;
128
130
  /** Panel id for `aria-controls` on the tab header. @internal */
@@ -45,6 +45,87 @@ declare const WR_COLORS: readonly ["primary", "secondary", "success", "warning",
45
45
  */
46
46
  type WrColor = (typeof WR_COLORS)[number];
47
47
 
48
+ /**
49
+ * @license
50
+ *
51
+ * Use of this source code is governed by an MIT-style license that can be
52
+ * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
53
+ */
54
+ /**
55
+ * The palette recipe, in TypeScript.
56
+ *
57
+ * `theme/styles/_colors.scss` derives seven tokens per intent from one hex, and
58
+ * until now that arithmetic existed only in Sass — so a theme picked at RUNTIME
59
+ * (a builder, a tenant colour from an API, a preset fetched from a registry)
60
+ * could not reproduce it. The showcase had half of it copied by hand for its
61
+ * own primary-colour switcher, which is the copy that drifts.
62
+ *
63
+ * **Seven tokens, not twelve, and that is not an omission.** The tint and ink
64
+ * layer is written in terms of `var()`:
65
+ *
66
+ * ```css
67
+ * --wr-color-primary-soft: rgba(var(--wr-color-primary-rgb), 0.12);
68
+ * --wr-color-primary-ink: color-mix(in srgb, var(--wr-color-primary) 78%, var(--wr-color-dark));
69
+ * ```
70
+ *
71
+ * so redefining the base and its channels re-resolves `-soft`, `-soft-border`,
72
+ * `-soft-contrast`, `-active` and `-ink` for free. A preset that also emitted
73
+ * those would be freezing values the stylesheet is meant to keep deriving.
74
+ *
75
+ * **`-contrast` IS re-derived, and must be.** It picks whichever of black and
76
+ * white scores higher against the fill, so a re-tuned intent keeps the label of
77
+ * the colour it replaced unless something recomputes it — that is how the dark
78
+ * theme once put white text on its lightened primary at 3.36:1.
79
+ *
80
+ * The LIGHT recipe only. `_dark.scss` is hand-tuned rather than derived — its
81
+ * `dark-light` uses `color.scale(…, 70%)` where the light block uses
82
+ * `color.adjust(…, 5%)`, and `light-light` goes -2.5% — so a generator claiming
83
+ * to reproduce it would be lying. Feed dark seeds through the same recipe if you
84
+ * want a derived dark theme; you will get a consistent one, not the shipped one.
85
+ *
86
+ * `pnpm check:theme` compiles nothing and trusts nothing: it reads the BUILT
87
+ * stylesheet and asserts this module reproduces every one of those tokens for
88
+ * the nine shipped intents.
89
+ *
90
+ * @example
91
+ * ```ts
92
+ * import { wrThemeTokens } from 'ngwr/theme';
93
+ *
94
+ * const tokens = wrThemeTokens({ primary: '#41598f' });
95
+ * for (const [name, value] of Object.entries(tokens)) {
96
+ * document.documentElement.style.setProperty(name, value);
97
+ * }
98
+ * ```
99
+ */
100
+
101
+ /**
102
+ * The readable label ON a filled intent — whichever of black and white scores
103
+ * higher, the SCSS `_contrast()`.
104
+ *
105
+ * It PICKS, it does not blend, so those two values are the ceiling for every
106
+ * intent. The comparison is `>=`, so a colour exactly at the flip point
107
+ * (√21 ≈ 4.58 against both) takes the dark label, matching the SCSS.
108
+ */
109
+ declare function wrContrastFor(hex: string): string;
110
+ /**
111
+ * The seven `--wr-color-<name>*` tokens one seed produces.
112
+ *
113
+ * Returns an empty record for a hex it cannot parse rather than a palette built
114
+ * on black — a silently black theme is harder to notice than a missing one.
115
+ *
116
+ * `name` is a shipped intent rather than any string: a token layer the
117
+ * stylesheet never declares has nothing reading it, and a typo would otherwise
118
+ * emit `--wr-color-primry-*` and paint nothing.
119
+ */
120
+ declare function wrIntentTokens(name: WrColor, seed: string): Record<string, string>;
121
+ /**
122
+ * Every token a theme preset needs, for as many intents as it re-tunes.
123
+ *
124
+ * Intents left out keep the values the stylesheet compiled, so a preset that
125
+ * only moves `primary` writes seven declarations and nothing else.
126
+ */
127
+ declare function wrThemeTokens(seeds: Partial<Record<WrColor, string>>): Record<string, string>;
128
+
48
129
  /**
49
130
  * @license
50
131
  *
@@ -132,5 +213,5 @@ declare class WrTheme {
132
213
  */
133
214
  declare function provideWrTheme(config?: Partial<WrThemeConfig>): EnvironmentProviders;
134
215
 
135
- export { DEFAULT_WR_THEME_CONFIG, WR_COLORS, WR_THEME_CONFIG, WrTheme, provideWrTheme };
216
+ export { DEFAULT_WR_THEME_CONFIG, WR_COLORS, WR_THEME_CONFIG, WrTheme, provideWrTheme, wrContrastFor, wrIntentTokens, wrThemeTokens };
136
217
  export type { WrColor, WrResolvedTheme, WrThemeConfig, WrThemeMode };
@@ -74,6 +74,7 @@ declare class WrTour {
74
74
  /** The step being shown, or `null` when idle. */
75
75
  readonly step: _angular_core.Signal<WrTourStep | null>;
76
76
  private readonly noStepAfter;
77
+ private readonly noStepBefore;
77
78
  /**
78
79
  * Whether this is the last step the user will see. Not `index() === total() - 1`:
79
80
  * a trailing step whose target is missing is skipped, so comparing against the
@@ -81,6 +82,14 @@ declare class WrTour {
81
82
  * ending the tour when it was pressed.
82
83
  */
83
84
  readonly isLast: _angular_core.Signal<boolean>;
85
+ /**
86
+ * Whether this is the first step the user will see. Not `index() === 0`, for the
87
+ * mirror of the reason above: a LEADING step whose target is missing is skipped,
88
+ * so the tour opens on a later index and the raw one put a Back button on the
89
+ * first card — one that did nothing at all, because `prev()` walks off the start
90
+ * and returns without moving.
91
+ */
92
+ readonly isFirst: _angular_core.Signal<boolean>;
84
93
  constructor();
85
94
  /**
86
95
  * Begin a tour. Restarts if one is already running. A no-op under SSR — a
@@ -102,6 +111,8 @@ declare class WrTour {
102
111
  private goTo;
103
112
  /** Whether the tour has a step past `index` that can actually be shown. */
104
113
  private anyResolvableAfter;
114
+ /** Whether the tour has a step before `index` that can actually be shown. */
115
+ private anyResolvableBefore;
105
116
  private resolve;
106
117
  private openStep;
107
118
  private placeSpotlight;
@@ -129,6 +140,13 @@ interface WrTourController {
129
140
  * skipped and the raw count would call the final card "Next".
130
141
  */
131
142
  readonly isLast: () => boolean;
143
+ /**
144
+ * Whether this is the first step the user will actually see — the service looks
145
+ * BEHIND for a reachable one, for the mirror reason: a leading step whose target
146
+ * is missing gets skipped, so the tour opens on a later index and the raw one
147
+ * would put a Back button on the very first card.
148
+ */
149
+ readonly isFirst: () => boolean;
132
150
  next(): void;
133
151
  prev(): void;
134
152
  stop(): void;
@@ -141,10 +159,10 @@ interface WrTourController {
141
159
  */
142
160
  declare class WrTourPopup {
143
161
  protected readonly tour: WrTourController;
144
- protected readonly nextLabel: string;
145
- protected readonly backLabel: string;
146
- protected readonly doneLabel: string;
147
- protected readonly skipLabel: string;
162
+ protected readonly nextLabel: _angular_core.Signal<string>;
163
+ protected readonly backLabel: _angular_core.Signal<string>;
164
+ protected readonly doneLabel: _angular_core.Signal<string>;
165
+ protected readonly skipLabel: _angular_core.Signal<string>;
148
166
  /** `Step {{current}} of {{total}}` — also the dialog's accessible name. */
149
167
  protected readonly progress: (params?: ngwr_i18n.WrI18nParams) => string;
150
168
  protected readonly isLast: _angular_core.Signal<boolean>;
@@ -158,6 +158,7 @@ declare class WrTree<TId = string> implements FormValueControl<unknown> {
158
158
  private readonly scrollStrategies;
159
159
  private readonly destroyRef;
160
160
  private readonly platformId;
161
+ private readonly injector;
161
162
  /**
162
163
  * Ambient reading direction. Optional so a bare `TestBed` — or a consumer who
163
164
  * never set a direction — needs no provider; `Directionality` is root-provided
@@ -179,10 +180,10 @@ declare class WrTree<TId = string> implements FormValueControl<unknown> {
179
180
  * `flat[i]` is undefined.
180
181
  */
181
182
  protected readonly cursorIndex: _angular_core.Signal<number>;
182
- /** Resolved ARIA labels — resolved once at construction, so a runtime locale switch needs a re-create. */
183
- protected readonly clearLabel: string;
184
- protected readonly expandLabel: string;
185
- protected readonly collapseLabel: string;
183
+ /** Resolved ARIA labels — signals, so they follow both a late catalog and a locale switch. */
184
+ protected readonly clearLabel: _angular_core.Signal<string>;
185
+ protected readonly expandLabel: _angular_core.Signal<string>;
186
+ protected readonly collapseLabel: _angular_core.Signal<string>;
186
187
  protected readonly chipRemoveLabel: (params?: ngwr_i18n.WrI18nParams) => string;
187
188
  /** Flattened list of currently visible nodes — what the template renders. */
188
189
  protected readonly flat: _angular_core.Signal<readonly FlatNode<TId>[]>;
@@ -108,6 +108,16 @@ declare class WrTypewriterHarness extends ComponentHarness {
108
108
  static with(options?: WrTypewriterHarnessFilters): HarnessPredicate<WrTypewriterHarness>;
109
109
  private readonly content;
110
110
  private readonly cursor;
111
+ /**
112
+ * One custom property off the host's `style` ATTRIBUTE.
113
+ *
114
+ * Not `getCssValue()`, which is `getComputedStyle`: with the entry point's own
115
+ * stylesheet loaded that resolves the sheet's declaration, so the method
116
+ * answers plausibly at exactly the moment the host binding — the thing under
117
+ * test — is what broke. The sibling reader below already says this; the
118
+ * blink duration was reading the computed value anyway.
119
+ */
120
+ private inlineVar;
111
121
  /**
112
122
  * What has been typed so far — a FRAGMENT while the machine is running.
113
123
  *
@@ -381,8 +381,11 @@ declare function throttle<TArgs extends readonly unknown[]>(fn: (...args: TArgs)
381
381
  * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
382
382
  */
383
383
  /**
384
- * Canonical `KeyboardEvent.key` values used across ngwr components.
385
- * Use these constants instead of magic strings so refactors are searchable.
384
+ * Canonical `KeyboardEvent.key` values for your own `keydown` handlers.
385
+ *
386
+ * The spec spellings are easy to get wrong — arrows are `ArrowUp`, space is a
387
+ * literal `' '` — and a typo like `'Esacpe'` never matches and never errors.
388
+ * These give you autocomplete and the {@link WrKey} union to match against.
386
389
  */
387
390
  declare const KEYS: {
388
391
  readonly ENTER: "Enter";
@@ -16,7 +16,7 @@ import { InjectionToken } from '@angular/core';
16
16
  * Distinct from `Version` exported by `@angular/core`, which reports the
17
17
  * loaded Angular runtime version (e.g. `'22.0.0'`), not ngwr's.
18
18
  */
19
- declare const NGWR_VERSION = "11.2.0";
19
+ declare const NGWR_VERSION = "12.0.0";
20
20
 
21
21
  /**
22
22
  * @license
@@ -166,6 +166,31 @@ interface WrWindowConfig<D = unknown> {
166
166
  */
167
167
  type WrWindowState = 'normal' | 'minimized' | 'maximized';
168
168
 
169
+ /**
170
+ * @license
171
+ *
172
+ * Use of this source code is governed by an MIT-style license that can be
173
+ * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
174
+ */
175
+
176
+ /**
177
+ * One window as `WrWindowManager.saveLayout()` recorded it — the geometry the
178
+ * window really had, not the geometry it happens to be showing while maximized
179
+ * or minimized.
180
+ *
181
+ * Public because `readLayout()` returns an array of these; a consumer that
182
+ * stores or forwards that result has to be able to name the element type.
183
+ */
184
+ interface WrWindowLayoutSnapshot {
185
+ readonly id: string;
186
+ readonly state: WrWindowState;
187
+ readonly x: number;
188
+ readonly y: number;
189
+ readonly width: number;
190
+ readonly height: number;
191
+ readonly title: string;
192
+ }
193
+
169
194
  /** Hook signature for `WrWindowRef.beforeClose()`. Return falsy to veto. */
170
195
  type WrWindowBeforeCloseHook<R> = (result: R | undefined) => boolean | Promise<boolean>;
171
196
 
@@ -272,6 +297,7 @@ declare class WrWindowRef<C, R = unknown> {
272
297
  constructor(id: string, _overlayRef: OverlayRef);
273
298
  /** Resolved instance of the projected component. */
274
299
  get componentInstance(): C;
300
+ private isClosed;
275
301
  /**
276
302
  * Close the window, optionally returning a result. If a `beforeClose`
277
303
  * hook is registered it is consulted first — a falsy resolution
@@ -315,15 +341,6 @@ declare const WR_WINDOW_REF: InjectionToken<WrWindowRef<unknown, unknown>>;
315
341
  /** Resolves to the `data` passed in `WrWindowConfig.data`. */
316
342
  declare const WR_WINDOW_DATA: InjectionToken<unknown>;
317
343
 
318
- interface RestoreSnapshot {
319
- readonly id: string;
320
- readonly state: WrWindowState;
321
- readonly x: number;
322
- readonly y: number;
323
- readonly width: number;
324
- readonly height: number;
325
- readonly title: string;
326
- }
327
344
  /**
328
345
  * Owns the open `<wr-window>` stack, hands out z-indexes, cascades the
329
346
  * default spawn position, and opens programmatic windows that wrap a
@@ -388,6 +405,17 @@ declare class WrWindowManager {
388
405
  * "Settings" menu item that should always re-focus the same window).
389
406
  */
390
407
  open<C, R = unknown, D = unknown>(component: ComponentType<C>, config?: WrWindowConfig<D>): WrWindowRef<C, R>;
408
+ /**
409
+ * Whether a keyboard event routed to `ref`'s overlay is actually meant for it.
410
+ *
411
+ * The window holding real DOM focus owns the key. When focus is outside every
412
+ * window — the common case, since a window is not modal and traps nothing —
413
+ * the FRONT-most one does, by the manager's own z stack rather than by attach
414
+ * order. A tie (nothing has ever been focused, so no z has been handed out
415
+ * yet) leaves every window willing, and the dispatcher's newest-first walk
416
+ * settles it as before.
417
+ */
418
+ private ownsKeyboard;
391
419
  /** Close every programmatically-opened window. */
392
420
  closeAll(): void;
393
421
  /** Look up an open window by its `config.id`. Returns `null` when no match. */
@@ -406,7 +434,7 @@ declare class WrWindowManager {
406
434
  */
407
435
  saveLayout(name: string): void;
408
436
  /** Read a saved workspace. Returns `null` when no snapshot is found. */
409
- readLayout(name: string): readonly RestoreSnapshot[] | null;
437
+ readLayout(name: string): readonly WrWindowLayoutSnapshot[] | null;
410
438
  /**
411
439
  * Apply a saved workspace.
412
440
  *
@@ -472,4 +500,4 @@ declare class WrWindowTaskbar {
472
500
  }
473
501
 
474
502
  export { WR_WINDOW_DATA, WR_WINDOW_REF, WrWindowManager, WrWindowRef, WrWindowTaskbar };
475
- export type { WrWindowBeforeCloseHook, WrWindowChromeSize, WrWindowConfig, WrWindowOs, WrWindowPersistMode, WrWindowSize, WrWindowSnap, WrWindowState, WrWindowStorageConfig };
503
+ export type { WrWindowBeforeCloseHook, WrWindowChromeSize, WrWindowConfig, WrWindowLayoutSnapshot, WrWindowOs, WrWindowPersistMode, WrWindowSize, WrWindowSnap, WrWindowState, WrWindowStorageConfig };
@@ -86,7 +86,7 @@
86
86
 
87
87
  &--code {
88
88
  padding: 0.0625rem 0.375rem;
89
- background: rgba(var(--wr-color-outline-rgb), 0.6);
89
+ background: var(--wr-color-fill-strong);
90
90
  border-radius: var(--wr-border-radius-sm);
91
91
  font-size: 0.875em;
92
92
  }