ngwr 7.3.0 → 8.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 (261) hide show
  1. package/README.md +5 -4
  2. package/alert/styles/_index.scss +44 -17
  3. package/avatar/styles/_index.scss +2 -2
  4. package/badge/styles/_index.scss +11 -7
  5. package/badge/styles/_tag.scss +1 -1
  6. package/bar-chart/styles/_index.scss +1 -2
  7. package/breadcrumbs/styles/_index.scss +4 -2
  8. package/burger/styles/_index.scss +2 -2
  9. package/button/styles/_index.scss +30 -20
  10. package/calendar/styles/_index.scss +11 -9
  11. package/calendar-heatmap/styles/_index.scss +2 -0
  12. package/card/styles/_index.scss +1 -1
  13. package/carousel/styles/_index.scss +1 -1
  14. package/cascader/styles/_index.scss +54 -14
  15. package/checkbox/styles/_index.scss +21 -4
  16. package/collapse/styles/_index.scss +1 -1
  17. package/color-picker/styles/_index.scss +11 -12
  18. package/command-palette/styles/_index.scss +3 -3
  19. package/compare/styles/_index.scss +3 -3
  20. package/context-menu/styles/_index.scss +1 -1
  21. package/date-picker/styles/_index.scss +5 -6
  22. package/density/styles/_index.scss +3 -3
  23. package/dialog/styles/_index.scss +3 -3
  24. package/divider/styles/_index.scss +1 -1
  25. package/drawer/styles/_index.scss +11 -11
  26. package/dropdown/styles/_index.scss +2 -2
  27. package/fesm2022/ngwr-affix.mjs +3 -3
  28. package/fesm2022/ngwr-alert.mjs +22 -10
  29. package/fesm2022/ngwr-alert.mjs.map +1 -1
  30. package/fesm2022/ngwr-anchor.mjs +3 -3
  31. package/fesm2022/ngwr-aurora.mjs +3 -3
  32. package/fesm2022/ngwr-avatar.mjs +3 -3
  33. package/fesm2022/ngwr-back-top.mjs +3 -3
  34. package/fesm2022/ngwr-badge.mjs +6 -6
  35. package/fesm2022/ngwr-bar-chart.mjs +3 -3
  36. package/fesm2022/ngwr-blur-text.mjs +3 -3
  37. package/fesm2022/ngwr-border-glow.mjs +3 -3
  38. package/fesm2022/ngwr-breadcrumbs.mjs +7 -7
  39. package/fesm2022/ngwr-breadcrumbs.mjs.map +1 -1
  40. package/fesm2022/ngwr-burger.mjs +3 -3
  41. package/fesm2022/ngwr-button.mjs +6 -6
  42. package/fesm2022/ngwr-calendar-heatmap.mjs +3 -3
  43. package/fesm2022/ngwr-calendar.mjs +4 -4
  44. package/fesm2022/ngwr-calendar.mjs.map +1 -1
  45. package/fesm2022/ngwr-card.mjs +10 -10
  46. package/fesm2022/ngwr-card.mjs.map +1 -1
  47. package/fesm2022/ngwr-carousel.mjs +6 -6
  48. package/fesm2022/ngwr-cascader.mjs +12 -35
  49. package/fesm2022/ngwr-cascader.mjs.map +1 -1
  50. package/fesm2022/ngwr-checkbox.mjs +13 -30
  51. package/fesm2022/ngwr-checkbox.mjs.map +1 -1
  52. package/fesm2022/ngwr-circular-text.mjs +3 -3
  53. package/fesm2022/ngwr-click-spark.mjs +25 -6
  54. package/fesm2022/ngwr-click-spark.mjs.map +1 -1
  55. package/fesm2022/ngwr-clipboard.mjs +27 -6
  56. package/fesm2022/ngwr-clipboard.mjs.map +1 -1
  57. package/fesm2022/ngwr-collapse.mjs +9 -9
  58. package/fesm2022/ngwr-color-picker.mjs +7 -7
  59. package/fesm2022/ngwr-color-picker.mjs.map +1 -1
  60. package/fesm2022/ngwr-command-palette.mjs +3 -3
  61. package/fesm2022/ngwr-compare.mjs +3 -3
  62. package/fesm2022/ngwr-confetti.mjs +3 -3
  63. package/fesm2022/ngwr-context-menu.mjs +40 -88
  64. package/fesm2022/ngwr-context-menu.mjs.map +1 -1
  65. package/fesm2022/ngwr-cookie.mjs +3 -3
  66. package/fesm2022/ngwr-counter.mjs +12 -8
  67. package/fesm2022/ngwr-counter.mjs.map +1 -1
  68. package/fesm2022/ngwr-date-adapter-fns.mjs +3 -3
  69. package/fesm2022/ngwr-date-adapter-luxon.mjs +3 -3
  70. package/fesm2022/ngwr-date-adapter.mjs +3 -3
  71. package/fesm2022/ngwr-date-picker.mjs +25 -11
  72. package/fesm2022/ngwr-date-picker.mjs.map +1 -1
  73. package/fesm2022/ngwr-decrypt-text.mjs +3 -3
  74. package/fesm2022/ngwr-density.mjs +14 -14
  75. package/fesm2022/ngwr-density.mjs.map +1 -1
  76. package/fesm2022/ngwr-descriptions.mjs +6 -6
  77. package/fesm2022/ngwr-dialog.mjs +15 -15
  78. package/fesm2022/ngwr-directives.mjs +15 -87
  79. package/fesm2022/ngwr-directives.mjs.map +1 -1
  80. package/fesm2022/ngwr-divider.mjs +3 -3
  81. package/fesm2022/ngwr-donut-chart.mjs +10 -4
  82. package/fesm2022/ngwr-donut-chart.mjs.map +1 -1
  83. package/fesm2022/ngwr-drag-drop.mjs +6 -6
  84. package/fesm2022/ngwr-drawer.mjs +15 -15
  85. package/fesm2022/ngwr-dropdown.mjs +9 -9
  86. package/fesm2022/ngwr-dropdown.mjs.map +1 -1
  87. package/fesm2022/ngwr-empty.mjs +3 -3
  88. package/fesm2022/ngwr-falling-text.mjs +3 -3
  89. package/fesm2022/ngwr-file-upload.mjs +3 -3
  90. package/fesm2022/ngwr-form.mjs +9 -9
  91. package/fesm2022/ngwr-fuzzy-text.mjs +8 -7
  92. package/fesm2022/ngwr-fuzzy-text.mjs.map +1 -1
  93. package/fesm2022/ngwr-gauge.mjs +3 -3
  94. package/fesm2022/ngwr-glitch-text.mjs +15 -7
  95. package/fesm2022/ngwr-glitch-text.mjs.map +1 -1
  96. package/fesm2022/ngwr-gradient-text.mjs +3 -3
  97. package/fesm2022/ngwr-hotkey.mjs +6 -6
  98. package/fesm2022/ngwr-i18n.mjs +9 -9
  99. package/fesm2022/ngwr-icon.mjs +3 -3
  100. package/fesm2022/ngwr-image-cropper.mjs +3 -3
  101. package/fesm2022/ngwr-input-number.mjs +4 -4
  102. package/fesm2022/ngwr-input-number.mjs.map +1 -1
  103. package/fesm2022/ngwr-input-otp.mjs +10 -4
  104. package/fesm2022/ngwr-input-otp.mjs.map +1 -1
  105. package/fesm2022/ngwr-input.mjs +25 -16
  106. package/fesm2022/ngwr-input.mjs.map +1 -1
  107. package/fesm2022/ngwr-keyboard.mjs +3 -3
  108. package/fesm2022/ngwr-knob.mjs +3 -3
  109. package/fesm2022/ngwr-layout.mjs +15 -15
  110. package/fesm2022/ngwr-lightbox.mjs +17 -5
  111. package/fesm2022/ngwr-lightbox.mjs.map +1 -1
  112. package/fesm2022/ngwr-line-chart.mjs +3 -3
  113. package/fesm2022/ngwr-list.mjs +7 -7
  114. package/fesm2022/ngwr-list.mjs.map +1 -1
  115. package/fesm2022/ngwr-loading-bar.mjs +6 -6
  116. package/fesm2022/ngwr-marquee.mjs +3 -3
  117. package/fesm2022/ngwr-media.mjs +3 -3
  118. package/fesm2022/ngwr-mention.mjs +6 -6
  119. package/fesm2022/ngwr-meta.mjs +6 -6
  120. package/fesm2022/ngwr-meter-group.mjs +3 -3
  121. package/fesm2022/ngwr-overlay.mjs +3 -3
  122. package/fesm2022/ngwr-page-header.mjs +3 -3
  123. package/fesm2022/ngwr-pagination.mjs +5 -15
  124. package/fesm2022/ngwr-pagination.mjs.map +1 -1
  125. package/fesm2022/ngwr-pipes.mjs +21 -21
  126. package/fesm2022/ngwr-platform.mjs +3 -3
  127. package/fesm2022/ngwr-popconfirm.mjs +6 -6
  128. package/fesm2022/ngwr-popover.mjs +6 -6
  129. package/fesm2022/ngwr-progress.mjs +3 -3
  130. package/fesm2022/ngwr-qr.mjs +3 -3
  131. package/fesm2022/ngwr-radio.mjs +28 -26
  132. package/fesm2022/ngwr-radio.mjs.map +1 -1
  133. package/fesm2022/ngwr-rating.mjs +12 -23
  134. package/fesm2022/ngwr-rating.mjs.map +1 -1
  135. package/fesm2022/ngwr-result.mjs +12 -12
  136. package/fesm2022/ngwr-rotating-text.mjs +3 -3
  137. package/fesm2022/ngwr-scroll.mjs +3 -3
  138. package/fesm2022/ngwr-segmented.mjs +10 -22
  139. package/fesm2022/ngwr-segmented.mjs.map +1 -1
  140. package/fesm2022/ngwr-select.mjs +26 -13
  141. package/fesm2022/ngwr-select.mjs.map +1 -1
  142. package/fesm2022/ngwr-shiny-text.mjs +6 -6
  143. package/fesm2022/ngwr-sidebar.mjs +3 -3
  144. package/fesm2022/ngwr-skeleton.mjs +3 -3
  145. package/fesm2022/ngwr-slider.mjs +3 -3
  146. package/fesm2022/ngwr-sparkline.mjs +3 -3
  147. package/fesm2022/ngwr-speed-dial.mjs +3 -3
  148. package/fesm2022/ngwr-spinner.mjs +3 -3
  149. package/fesm2022/ngwr-splash-cursor.mjs +3 -3
  150. package/fesm2022/ngwr-split-text.mjs +3 -3
  151. package/fesm2022/ngwr-splitter.mjs +3 -3
  152. package/fesm2022/ngwr-spotlight-card.mjs +8 -8
  153. package/fesm2022/ngwr-spotlight-card.mjs.map +1 -1
  154. package/fesm2022/ngwr-squircle.mjs +6 -6
  155. package/fesm2022/ngwr-star-border.mjs +3 -3
  156. package/fesm2022/ngwr-statistic.mjs +79 -10
  157. package/fesm2022/ngwr-statistic.mjs.map +1 -1
  158. package/fesm2022/ngwr-stepper.mjs +6 -6
  159. package/fesm2022/ngwr-storage.mjs +3 -3
  160. package/fesm2022/ngwr-switch.mjs +10 -14
  161. package/fesm2022/ngwr-switch.mjs.map +1 -1
  162. package/fesm2022/ngwr-table.mjs +12 -12
  163. package/fesm2022/ngwr-tabs.mjs +8 -6
  164. package/fesm2022/ngwr-tabs.mjs.map +1 -1
  165. package/fesm2022/ngwr-textarea.mjs +84 -25
  166. package/fesm2022/ngwr-textarea.mjs.map +1 -1
  167. package/fesm2022/ngwr-theme.mjs +3 -3
  168. package/fesm2022/ngwr-tilt-card.mjs +6 -6
  169. package/fesm2022/ngwr-timeline.mjs +6 -6
  170. package/fesm2022/ngwr-toast.mjs +46 -24
  171. package/fesm2022/ngwr-toast.mjs.map +1 -1
  172. package/fesm2022/ngwr-toolbar.mjs +3 -3
  173. package/fesm2022/ngwr-tree.mjs +3 -3
  174. package/fesm2022/ngwr-typewriter.mjs +3 -3
  175. package/fesm2022/ngwr-typography.mjs +3 -3
  176. package/fesm2022/ngwr-validators.mjs +41 -3
  177. package/fesm2022/ngwr-validators.mjs.map +1 -1
  178. package/fesm2022/ngwr-version.mjs +1 -1
  179. package/fesm2022/ngwr-version.mjs.map +1 -1
  180. package/fesm2022/ngwr-virtual-scroll.mjs +3 -3
  181. package/fesm2022/ngwr-waves.mjs +3 -3
  182. package/fesm2022/ngwr-window.mjs +12 -12
  183. package/file-upload/styles/_index.scss +3 -3
  184. package/form/styles/_index.scss +5 -5
  185. package/glitch-text/styles/_index.scss +3 -6
  186. package/image-cropper/styles/_index.scss +3 -3
  187. package/input/styles/_index.scss +26 -7
  188. package/input-otp/styles/_index.scss +23 -5
  189. package/keyboard/styles/_index.scss +6 -4
  190. package/knob/styles/_index.scss +1 -1
  191. package/lightbox/styles/_index.scss +29 -10
  192. package/list/styles/_index.scss +3 -3
  193. package/llms-full.txt +14 -19
  194. package/mention/styles/_index.scss +2 -2
  195. package/overlay/styles/_index.scss +1 -1
  196. package/package.json +1 -6
  197. package/pagination/styles/_index.scss +3 -26
  198. package/popconfirm/styles/_index.scss +1 -1
  199. package/popover/styles/_index.scss +2 -2
  200. package/radio/styles/_index.scss +20 -5
  201. package/rating/styles/_index.scss +12 -1
  202. package/schematics/migrations/v8/index.js +122 -0
  203. package/schematics/migrations.json +5 -0
  204. package/schematics/ng-add/index.js +3 -3
  205. package/schematics/ng-add/schema.json +6 -6
  206. package/schematics/provider/schema.json +1 -1
  207. package/schematics/use/symbol-map.json +11 -2
  208. package/segmented/styles/_index.scss +31 -8
  209. package/select/styles/_index.scss +73 -25
  210. package/sidebar/styles/_index.scss +3 -3
  211. package/slider/styles/_index.scss +2 -3
  212. package/speed-dial/styles/_index.scss +1 -0
  213. package/splitter/styles/_index.scss +4 -4
  214. package/spotlight-card/styles/_index.scss +8 -4
  215. package/stepper/styles/_index.scss +4 -4
  216. package/styles/_animations.scss +0 -23
  217. package/styles.scss +0 -1
  218. package/switch/styles/_index.scss +25 -6
  219. package/table/styles/_index.scss +9 -9
  220. package/tabs/styles/_index.scss +22 -3
  221. package/textarea/styles/_index.scss +59 -4
  222. package/theme/styles/_colors.scss +57 -0
  223. package/theme/styles/_dark.scss +22 -8
  224. package/theme/styles/_focus.scss +5 -0
  225. package/theme/styles/_variables.scss +24 -0
  226. package/timeline/styles/_index.scss +11 -2
  227. package/toast/styles/_index.scss +13 -5
  228. package/toolbar/styles/_index.scss +1 -1
  229. package/tree/styles/_index.scss +18 -17
  230. package/types/ngwr-alert.d.ts +16 -6
  231. package/types/ngwr-cascader.d.ts +5 -2
  232. package/types/ngwr-checkbox.d.ts +5 -2
  233. package/types/ngwr-click-spark.d.ts +13 -1
  234. package/types/ngwr-clipboard.d.ts +12 -1
  235. package/types/ngwr-context-menu.d.ts +20 -25
  236. package/types/ngwr-date-picker.d.ts +3 -0
  237. package/types/ngwr-density.d.ts +7 -7
  238. package/types/ngwr-directives.d.ts +17 -49
  239. package/types/ngwr-fuzzy-text.d.ts +1 -1
  240. package/types/ngwr-glitch-text.d.ts +9 -3
  241. package/types/ngwr-input-otp.d.ts +6 -2
  242. package/types/ngwr-input.d.ts +27 -13
  243. package/types/ngwr-lightbox.d.ts +9 -1
  244. package/types/ngwr-pagination.d.ts +3 -9
  245. package/types/ngwr-radio.d.ts +14 -3
  246. package/types/ngwr-rating.d.ts +5 -1
  247. package/types/ngwr-segmented.d.ts +5 -2
  248. package/types/ngwr-select.d.ts +6 -2
  249. package/types/ngwr-spotlight-card.d.ts +1 -1
  250. package/types/ngwr-statistic.d.ts +35 -1
  251. package/types/ngwr-switch.d.ts +5 -1
  252. package/types/ngwr-textarea.d.ts +25 -3
  253. package/types/ngwr-toast.d.ts +7 -1
  254. package/types/ngwr-validators.d.ts +3 -1
  255. package/types/ngwr-version.d.ts +1 -1
  256. package/window/styles/_index.scss +8 -8
  257. package/fesm2022/ngwr-scramble-text.mjs +0 -165
  258. package/fesm2022/ngwr-scramble-text.mjs.map +0 -1
  259. package/scramble-text/scramble-text.scss +0 -1
  260. package/scramble-text/styles/_index.scss +0 -8
  261. package/types/ngwr-scramble-text.d.ts +0 -49
package/llms-full.txt CHANGED
@@ -13,7 +13,7 @@
13
13
  - import: `import { WrAlert } from 'ngwr/alert'`
14
14
  - selector: `wr-alert`
15
15
  - exports: WrAlert, WrAlertType
16
- - Inline status banner — info, success, warning, danger.
16
+ - Inline status banner — info, success, warning, danger, neutral, offline.
17
17
 
18
18
  ## ngwr/anchor
19
19
  - import: `import { WrAnchor } from 'ngwr/anchor'`
@@ -105,13 +105,13 @@
105
105
  ## ngwr/cascader
106
106
  - import: `import { WrCascader } from 'ngwr/cascader'`
107
107
  - selector: `wr-cascader`
108
- - exports: WrCascader, type WrCascaderOption
108
+ - exports: WrCascader, type WrCascaderOption, type WrCascaderSize
109
109
  - Multi-level select. Drills through hierarchical categories one column at a time; picking a leaf commits the full path. Implements `ControlValueAccessor` — model is `readonly T[]`.
110
110
 
111
111
  ## ngwr/checkbox
112
112
  - import: `import { WrCheckbox } from 'ngwr/checkbox'`
113
113
  - selector: `wr-checkbox-group`, `wr-checkbox`
114
- - exports: WrCheckbox, WrCheckboxGroup, WR_CHECKBOX_GROUP, type WrCheckboxGroupContext
114
+ - exports: WrCheckbox, WrCheckboxSize, WrCheckboxGroup, WR_CHECKBOX_GROUP, type WrCheckboxGroupContext
115
115
  - Two-state checkbox. Standalone (boolean) or inside <wr-checkbox-group> (array of values).
116
116
 
117
117
  ## ngwr/circular-text
@@ -160,7 +160,7 @@
160
160
  - import: `import { WrContextMenu } from 'ngwr/context-menu'`
161
161
  - selector: `wr-context-menu-divider`, `wr-context-menu-item`, `wr-context-menu`, `[wrContextMenu]`
162
162
  - exports: WrContextMenu, WrContextMenuPanel, WrContextMenuItem, WrContextMenuDivider
163
- - Attach `[wrContextMenu]` to any element to open a `<wr-context-menu>` at the pointer position on right-click — or a long-press on touch. Native browser menu is suppressed on the host.
163
+ - Attach `[wrContextMenu]` to any element to open a `<wr-context-menu>` at the pointer position on right-click. Native browser menu is suppressed on the host.
164
164
 
165
165
  ## ngwr/cookie
166
166
  - import: `import { WrCookie } from 'ngwr/cookie'`
@@ -213,8 +213,8 @@
213
213
 
214
214
  ## ngwr/directives
215
215
  - import: `import { WrAutofocus } from 'ngwr/directives'`
216
- - selector: `[wrAutofocus]`, `textarea[wrAutosize]`, `[wrClickOutside]`, `[wrCopyToClipboard]`, `[wrReveal]`
217
- - exports: WrAutofocus, WrAutosize, WrClickOutside, WrCopyToClipboard, WrReveal
216
+ - selector: `[wrAutofocus]`, `textarea[wrAutosize]`, `[wrClickOutside]`, `[wrCopyToClipboard]`
217
+ - exports: WrAutofocus, WrAutosize, WrClickOutside, WrCopyToClipboard
218
218
 
219
219
  ## ngwr/divider
220
220
  - import: `import { WrDivider } from 'ngwr/divider'`
@@ -315,7 +315,7 @@
315
315
  ## ngwr/input
316
316
  - import: `import { WrInput } from 'ngwr/input'`
317
317
  - selector: `wr-input-group`, `wr-password-toggle`
318
- - exports: WrInput, WrInputPrefix, WrInputSuffix, WrInputGroup, WrPasswordToggle, WrInputType
318
+ - exports: WrInput, WrInputPrefix, WrInputSuffix, WrInputGroup, WrPasswordToggle, WrInputType, WrInputSize
319
319
  - Attribute directive applied to a native `<input>` (or `<textarea>`). Because the styling lives on the real input, third-party directives like `ngx-mask`, custom validators, and `[(ngModel)]` compose naturally on the same element.
320
320
 
321
321
  ## ngwr/input-number
@@ -327,7 +327,7 @@
327
327
  ## ngwr/input-otp
328
328
  - import: `import { WrInputOtp } from 'ngwr/input-otp'`
329
329
  - selector: `wr-input-otp`
330
- - exports: WrInputOtp, WrInputOtpMode
330
+ - exports: WrInputOtp, WrInputOtpMode, WrInputOtpSize
331
331
  - Fixed-length one-time-code input. One cell per character, auto-advances focus on typing, handles paste of a full code, optional masking like a password field.
332
332
 
333
333
  ## ngwr/keyboard
@@ -447,13 +447,13 @@
447
447
  ## ngwr/radio
448
448
  - import: `import { WrRadio } from 'ngwr/radio'`
449
449
  - selector: `wr-radio-group`, `wr-radio`
450
- - exports: WrRadio, WrRadioGroup, WR_RADIO_GROUP, type WrRadioGroupContext
450
+ - exports: WrRadio, WrRadioSize, WrRadioGroup, WR_RADIO_GROUP, type WrRadioGroupContext
451
451
  - Single-choice option. Always used inside <wr-radio-group>, which implements ControlValueAccessor.
452
452
 
453
453
  ## ngwr/rating
454
454
  - import: `import { WrRating } from 'ngwr/rating'`
455
455
  - selector: `wr-rating`
456
- - exports: WrRating
456
+ - exports: WrRating, WrRatingSize
457
457
  - Star rating input with whole or half-step granularity. Value type is `number | null` (clamped to `[0, count]`). Keyboard: arrows step by `step`, Home / End jump to 0 / max, Delete / Backspace clears.
458
458
 
459
459
  ## ngwr/result
@@ -467,11 +467,6 @@
467
467
  - selector: `wr-rotating-text`
468
468
  - exports: WrRotatingText, type WrRotatingTextSplit, type WrRotatingTextStaggerFrom
469
469
 
470
- ## ngwr/scramble-text
471
- - import: `import { WrScrambleText } from 'ngwr/scramble-text'`
472
- - selector: `wr-scramble-text`
473
- - exports: WrScrambleText
474
-
475
470
  ## ngwr/scroll
476
471
  - import: `import { WrScroll } from 'ngwr/scroll'`
477
472
  - exports: WrScroll, WrScrollTarget, WrScrollOptions
@@ -479,13 +474,13 @@
479
474
  ## ngwr/segmented
480
475
  - import: `import { WrSegmented } from 'ngwr/segmented'`
481
476
  - selector: `wr-segmented`
482
- - exports: WrSegmented, WrSegmentedOption
477
+ - exports: WrSegmented, WrSegmentedOption, WrSegmentedSize
483
478
  - Single-choice picker rendered as a segmented control. Two-way binds the selected value.
484
479
 
485
480
  ## ngwr/select
486
481
  - import: `import { WrSelect } from 'ngwr/select'`
487
482
  - selector: `wr-option-group`, `wr-option`, `wr-select`
488
- - exports: WrSelect, WrOption, WrOptionGroup, WR_SELECT, type WrSelectContext, WrSelectMode, WrSelectSearchLoader, WrSelectTagValidator
483
+ - exports: WrSelect, WrOption, WrOptionGroup, WR_SELECT, type WrSelectContext, WrSelectMode, WrSelectSearchLoader, WrSelectTagValidator, WrSelectSize
489
484
  - Native-like select built on CDK Overlay. Implements ControlValueAccessor.
490
485
 
491
486
  ## ngwr/shiny-text
@@ -580,7 +575,7 @@
580
575
  ## ngwr/switch
581
576
  - import: `import { WrSwitch } from 'ngwr/switch'`
582
577
  - selector: `wr-switch`
583
- - exports: WrSwitch
578
+ - exports: WrSwitch, WrSwitchSize
584
579
  - Boolean toggle with an iOS-style slider. Implements ControlValueAccessor.
585
580
 
586
581
  ## ngwr/table
@@ -598,7 +593,7 @@
598
593
  ## ngwr/textarea
599
594
  - import: `import { WrTextarea } from 'ngwr/textarea'`
600
595
  - selector: `wr-textarea`
601
- - exports: WrTextarea
596
+ - exports: WrTextarea, WrTextareaSize, WrTextareaResize
602
597
  - Multi-line text input. Implements ControlValueAccessor. Optional autosize.
603
598
 
604
599
  ## ngwr/theme
@@ -13,7 +13,7 @@
13
13
  @include theme.smooth-br(var(--wr-border-radius-base));
14
14
  box-shadow: var(--wr-shadow-overlay);
15
15
  font-family: var(--wr-font-family-base);
16
- font-size: 0.875rem;
16
+ font-size: var(--wr-text-sm);
17
17
  color: var(--wr-color-dark);
18
18
  overflow: hidden;
19
19
 
@@ -41,7 +41,7 @@
41
41
  &__empty {
42
42
  padding: 0.5rem 0.75rem;
43
43
  color: var(--wr-color-medium);
44
- font-size: 0.875rem;
44
+ font-size: var(--wr-text-sm);
45
45
  user-select: none;
46
46
  }
47
47
  }
@@ -17,7 +17,7 @@
17
17
 
18
18
  // Dim + blur behind a sheet — for overlays that otherwise have no backdrop.
19
19
  .wr-overlay-backdrop {
20
- background: rgba(var(--wr-color-backdrop-rgb), 0.45);
20
+ background: var(--wr-color-overlay);
21
21
  backdrop-filter: blur(2px);
22
22
  }
23
23
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ngwr",
3
- "version": "7.3.0",
3
+ "version": "8.0.0",
4
4
  "license": "MIT",
5
5
  "description": "NGWR – Angular UI components library",
6
6
  "author": "Roman Khegay <rk@garuna.dev> (https://garuna.dev)",
@@ -422,11 +422,6 @@
422
422
  "types": "./types/ngwr-rotating-text.d.ts",
423
423
  "default": "./fesm2022/ngwr-rotating-text.mjs"
424
424
  },
425
- "./scramble-text": {
426
- "sass": "./scramble-text/styles/_index.scss",
427
- "types": "./types/ngwr-scramble-text.d.ts",
428
- "default": "./fesm2022/ngwr-scramble-text.mjs"
429
- },
430
425
  "./segmented": {
431
426
  "sass": "./segmented/styles/_index.scss",
432
427
  "types": "./types/ngwr-segmented.d.ts",
@@ -36,7 +36,7 @@
36
36
  &__total {
37
37
  color: var(--wr-color-medium);
38
38
  font-family: var(--wr-font-family-base);
39
- font-size: 0.8125rem;
39
+ font-size: var(--wr-text-sm);
40
40
  }
41
41
 
42
42
  &__nav {
@@ -73,7 +73,7 @@
73
73
  padding: 0 0.375rem;
74
74
  color: var(--wr-color-dark);
75
75
  font-family: var(--wr-font-family-base);
76
- font-size: 0.8125rem;
76
+ font-size: var(--wr-text-sm);
77
77
  font-variant-numeric: tabular-nums;
78
78
  white-space: nowrap;
79
79
  }
@@ -82,20 +82,7 @@
82
82
  min-width: 0;
83
83
  }
84
84
 
85
- // Size variants. `xs` and `xl` extend the button scale by overriding
86
- // its CSS custom properties on the strip — the button itself still
87
- // gets the closest built-in size (sm or lg) via [size] so its other
88
- // tokens stay consistent.
89
- &--xs {
90
- --wr-pagination-cell: 1.5rem;
91
-
92
- .wr-btn {
93
- --wr-btn-padding-x: 0.375rem;
94
- --wr-btn-font-size: 0.6875rem;
95
- --wr-btn-line-height: 0.875rem;
96
- --wr-btn-icon-size: 0.75rem;
97
- }
98
- }
85
+ // Size variants — set the cell size; each button gets the matching [size].
99
86
  &--sm {
100
87
  --wr-pagination-cell: 1.75rem;
101
88
  }
@@ -105,16 +92,6 @@
105
92
  &--lg {
106
93
  --wr-pagination-cell: 2.5rem;
107
94
  }
108
- &--xl {
109
- --wr-pagination-cell: 3rem;
110
-
111
- .wr-btn {
112
- --wr-btn-padding-x: 1rem;
113
- --wr-btn-font-size: 1.125rem;
114
- --wr-btn-line-height: 1.75rem;
115
- --wr-btn-icon-size: 1.25rem;
116
- }
117
- }
118
95
 
119
96
  // Shape variants. `rounded` is the default the buttons already render.
120
97
  // `square` flattens every cell for a tighter numeric grid — useful
@@ -20,7 +20,7 @@
20
20
  .wr-popconfirm {
21
21
  &__message {
22
22
  margin: 0 0 0.625rem;
23
- font-size: 0.875rem;
23
+ font-size: var(--wr-text-sm);
24
24
  line-height: 1.25rem;
25
25
  }
26
26
 
@@ -36,9 +36,9 @@
36
36
  color: var(--wr-color-dark-contrast);
37
37
  border-radius: var(--wr-border-radius-sm);
38
38
  font-family: var(--wr-font-family-base);
39
- font-size: 0.75rem;
39
+ font-size: var(--wr-text-xs);
40
40
  line-height: 1rem;
41
- box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
41
+ box-shadow: var(--wr-shadow-overlay);
42
42
  animation: wr-overlay-in var(--wr-overlay-duration) var(--wr-overlay-ease);
43
43
  transform-origin: top left;
44
44
 
@@ -1,7 +1,9 @@
1
1
  @use '../../theme/styles' as theme;
2
2
 
3
3
  .wr-radio {
4
- --wr-radio-size: 1.125rem;
4
+ --wr-radio-size: 1.125rem; // md (18px)
5
+ --wr-radio-font-size: var(--wr-text-sm);
6
+ --wr-radio-line-height: var(--wr-control-line-height-md);
5
7
  --wr-radio-bg: var(--wr-color-white);
6
8
  --wr-radio-border: var(--wr-color-light);
7
9
  --wr-radio-dot: transparent;
@@ -11,8 +13,8 @@
11
13
  vertical-align: middle;
12
14
  color: var(--wr-radio-color);
13
15
  font-family: var(--wr-font-family-base);
14
- font-size: 0.875rem;
15
- line-height: 1.25rem;
16
+ font-size: var(--wr-radio-font-size);
17
+ line-height: var(--wr-radio-line-height);
16
18
 
17
19
  &__label {
18
20
  display: inline-flex;
@@ -52,8 +54,8 @@
52
54
 
53
55
  &::after {
54
56
  content: '';
55
- width: 0.5rem;
56
- height: 0.5rem;
57
+ width: calc(var(--wr-radio-size) - 0.625rem);
58
+ height: calc(var(--wr-radio-size) - 0.625rem);
57
59
  border-radius: 50%;
58
60
  background: var(--wr-radio-dot);
59
61
  transform: scale(0);
@@ -75,6 +77,19 @@
75
77
  opacity var(--wr-transition-base);
76
78
  }
77
79
 
80
+ // Sizes — dot, label font + line-height scale together.
81
+ &--sm {
82
+ --wr-radio-size: 1rem; // 16px
83
+ --wr-radio-font-size: var(--wr-text-xs);
84
+ --wr-radio-line-height: var(--wr-control-line-height-sm);
85
+ }
86
+
87
+ &--lg {
88
+ --wr-radio-size: 1.25rem; // 20px
89
+ --wr-radio-font-size: var(--wr-text-base);
90
+ --wr-radio-line-height: var(--wr-control-line-height-lg);
91
+ }
92
+
78
93
  &--has-icon &__dot::after {
79
94
  display: none;
80
95
  }
@@ -16,7 +16,7 @@
16
16
  outline: 0;
17
17
 
18
18
  &:focus-visible {
19
- box-shadow: 0 0 0 3px rgba(var(--wr-color-primary-rgb), 0.2);
19
+ @include theme.focus-ring;
20
20
  border-radius: var(--wr-border-radius-sm);
21
21
  }
22
22
  }
@@ -49,6 +49,17 @@
49
49
  transition: clip-path var(--wr-transition-base);
50
50
  }
51
51
 
52
+ // Sizes — scale the icon glyph + the gap between slots.
53
+ &--sm {
54
+ --wr-rating-size: 1rem; // 16px
55
+ --wr-rating-gap: 0.0625rem;
56
+ }
57
+
58
+ &--lg {
59
+ --wr-rating-size: 1.5rem; // 24px
60
+ --wr-rating-gap: 0.1875rem;
61
+ }
62
+
52
63
  &--readonly &__slot {
53
64
  cursor: default;
54
65
  }
@@ -0,0 +1,122 @@
1
+ "use strict";
2
+ /**
3
+ * @license
4
+ *
5
+ * Use of this source code is governed by an MIT-style license that can be
6
+ * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ /** compact|default|comfortable → sm|md|lg. `touch` is unchanged. */
10
+ const DENSITY_MAP = [
11
+ ['compact', 'sm'],
12
+ ['default', 'md'],
13
+ ['comfortable', 'lg'],
14
+ ];
15
+ const HTML_TRANSFORMS = [
16
+ // density — directive attribute, string form: wrDensity="compact" → "sm"
17
+ ...DENSITY_MAP.map(([from, to]) => ({
18
+ pattern: new RegExp(`(\\bwrDensity=")${from}(")`, 'g'),
19
+ replacement: `$1${to}$2`,
20
+ })),
21
+ // density — directive attribute, bound literal: [wrDensity]="'compact'" → "'sm'"
22
+ ...DENSITY_MAP.map(([from, to]) => ({
23
+ pattern: new RegExp(`(\\[wrDensity\\]=")'${from}'(")`, 'g'),
24
+ replacement: `$1'${to}'$2`,
25
+ })),
26
+ // density — selector form in templates: [data-wr-density='compact'] → 'sm'
27
+ ...DENSITY_MAP.map(([from, to]) => ({
28
+ pattern: new RegExp(`(data-wr-density=')${from}(')`, 'g'),
29
+ replacement: `$1${to}$2`,
30
+ })),
31
+ // pagination size — scoped to the element so other `size="xs"` attrs are untouched
32
+ { pattern: /(<wr-pagination\b[^>]*?\ssize=")xs(")/g, replacement: '$1sm$2' },
33
+ { pattern: /(<wr-pagination\b[^>]*?\ssize=")xl(")/g, replacement: '$1lg$2' },
34
+ ];
35
+ const TS_TRANSFORMS = [
36
+ // density — provideWrDensity({ defaultDensity: 'compact' }) → 'sm'
37
+ ...DENSITY_MAP.map(([from, to]) => ({
38
+ pattern: new RegExp(`(defaultDensity:\\s*['"])${from}(['"])`, 'g'),
39
+ replacement: `$1${to}$2`,
40
+ })),
41
+ ];
42
+ const SCSS_TRANSFORMS = [
43
+ // density — [data-wr-density='compact'] selector in stylesheets → 'sm'
44
+ ...DENSITY_MAP.map(([from, to]) => ({
45
+ pattern: new RegExp(`(data-wr-density=')${from}(')`, 'g'),
46
+ replacement: `$1${to}$2`,
47
+ })),
48
+ ];
49
+ /** Removed APIs to flag for manual migration (no safe automatic rewrite). */
50
+ const REMOVED_MARKERS = [
51
+ {
52
+ probe: /\bwrReveal\b/,
53
+ note: 'WrReveal directive removed — drop `wrReveal` + its [threshold]/[rootMargin]/[once]/[root] inputs',
54
+ },
55
+ {
56
+ probe: /<wr-scramble-text\b|\bWrScrambleText\b|ngwr\/scramble-text/,
57
+ note: 'WrScrambleText removed — use <wr-decrypt-text> or plain text',
58
+ },
59
+ ];
60
+ const IGNORE_DIRS = new Set(['node_modules', 'dist', '.git', '.cache', '.angular', 'coverage', '.next', '.nuxt']);
61
+ function ngUpdateV8() {
62
+ return (tree, context) => {
63
+ const summary = { html: 0, ts: 0, scss: 0 };
64
+ const warnings = [];
65
+ visit(tree, '/', filePath => {
66
+ const lower = filePath.toLowerCase();
67
+ const isHtml = lower.endsWith('.html');
68
+ const isTs = lower.endsWith('.ts');
69
+ const isScss = lower.endsWith('.scss') || lower.endsWith('.sass') || lower.endsWith('.css');
70
+ if (!isHtml && !isTs && !isScss)
71
+ return;
72
+ const original = tree.readText(filePath);
73
+ let next = original;
74
+ if (isHtml)
75
+ next = apply(next, HTML_TRANSFORMS);
76
+ if (isTs)
77
+ next = apply(next, TS_TRANSFORMS);
78
+ if (isScss)
79
+ next = apply(next, SCSS_TRANSFORMS);
80
+ if (next !== original) {
81
+ tree.overwrite(filePath, next);
82
+ if (isHtml)
83
+ summary.html += 1;
84
+ if (isTs)
85
+ summary.ts += 1;
86
+ if (isScss)
87
+ summary.scss += 1;
88
+ }
89
+ // Flag removed APIs (against the original — auto-fixes above don't touch them).
90
+ for (const { probe, note } of REMOVED_MARKERS) {
91
+ if (probe.test(original))
92
+ warnings.push(` ${filePath} — ${note}`);
93
+ }
94
+ });
95
+ context.logger.info(`ngwr v8 migration: rewrote ${summary.html} .html, ${summary.ts} .ts, ${summary.scss} stylesheet file(s) ` +
96
+ '(density compact/default/comfortable → sm/md/lg; pagination size xs/xl → sm/lg).');
97
+ if (warnings.length > 0) {
98
+ context.logger.warn(`\nngwr v8: ${warnings.length} usage(s) of REMOVED APIs need manual migration:\n${warnings.join('\n')}\n`);
99
+ }
100
+ context.logger.info('Verify the result with `git diff` — a few edge cases may need manual touch-up.');
101
+ return tree;
102
+ };
103
+ }
104
+ function apply(content, transforms) {
105
+ let next = content;
106
+ for (const { pattern, replacement } of transforms) {
107
+ next = next.replace(pattern, replacement);
108
+ }
109
+ return next;
110
+ }
111
+ function visit(tree, dir, visitor) {
112
+ const entry = tree.getDir(dir);
113
+ for (const file of entry.subfiles) {
114
+ visitor(`${dir === '/' ? '' : dir}/${file}`);
115
+ }
116
+ for (const sub of entry.subdirs) {
117
+ if (IGNORE_DIRS.has(sub))
118
+ continue;
119
+ visit(tree, `${dir === '/' ? '' : dir}/${sub}`, visitor);
120
+ }
121
+ }
122
+ exports.default = ngUpdateV8;
@@ -5,6 +5,11 @@
5
5
  "version": "7.0.0",
6
6
  "description": "Rewrite the v6 entry-points consolidated in v7: wr-autocomplete/chips-input \u2192 wr-select; wr-time-picker/date-time-picker \u2192 wr-date-picker; wr-tooltip \u2192 wr-popover; wr-tree-select \u2192 wr-tree; wr-bottom-sheet \u2192 wr-drawer; wr-count-up(-text) \u2192 wr-counter; ngwr/tag \u2192 ngwr/badge; wr-image \u2192 wr-lightbox; wr-animated-text \u2192 wr-typewriter/wr-decrypt-text/wr-split-text (per mode). Touches .html, .ts, and .scss files.",
7
7
  "factory": "./migrations/v7/index#default"
8
+ },
9
+ "migration-v8": {
10
+ "version": "8.0.0",
11
+ "description": "Rename density values compact/default/comfortable \u2192 sm/md/lg (wrDensity, provideWrDensity defaultDensity, [data-wr-density]); pagination size xs/xl \u2192 sm/lg. Warns about removed APIs (WrReveal directive, WrScrambleText / ngwr/scramble-text) that need manual migration. Touches .html, .ts, and .scss files.",
12
+ "factory": "./migrations/v8/index#default"
8
13
  }
9
14
  }
10
15
  }
@@ -26,11 +26,11 @@ const DATE_ADAPTER_PROVIDER = {
26
26
  'date-fns': 'provideWrDateAdapter({ adapter: WrDateFnsAdapter })',
27
27
  luxon: 'provideWrDateAdapter({ adapter: WrLuxonAdapter })',
28
28
  };
29
- /** Density preset → `provideWrDensity(...)` call. */
29
+ /** Default density → `provideWrDensity(...)` call. */
30
30
  const DENSITY_PROVIDER = {
31
31
  none: null,
32
- comfortable: "provideWrDensity({ preset: 'comfortable' })",
33
- compact: "provideWrDensity({ preset: 'compact' })",
32
+ sm: "provideWrDensity({ defaultDensity: 'sm' })",
33
+ lg: "provideWrDensity({ defaultDensity: 'lg' })",
34
34
  };
35
35
  /** Theme preset → `provideWrTheme(...)` call. */
36
36
  const THEME_PROVIDER = {
@@ -41,16 +41,16 @@
41
41
  },
42
42
  "density": {
43
43
  "type": "string",
44
- "enum": ["none", "comfortable", "compact"],
44
+ "enum": ["none", "sm", "lg"],
45
45
  "default": "none",
46
- "description": "Density preset wired via `provideWrDensity()`. `none` uses lib defaults.",
46
+ "description": "Default density wired via `provideWrDensity()`. `none` uses lib defaults (md).",
47
47
  "x-prompt": {
48
- "message": "Pick a density preset",
48
+ "message": "Pick a default density",
49
49
  "type": "list",
50
50
  "items": [
51
- { "value": "none", "label": "None — use lib defaults" },
52
- { "value": "comfortable", "label": "Comfortable — relaxed spacing" },
53
- { "value": "compact", "label": "Compact — tight spacing" }
51
+ { "value": "none", "label": "None — use lib defaults (md)" },
52
+ { "value": "sm", "label": "sm — tight spacing" },
53
+ { "value": "lg", "label": "lg — relaxed spacing" }
54
54
  ]
55
55
  }
56
56
  },
@@ -29,7 +29,7 @@
29
29
  { "value": "toast", "label": "toast — global toast service" },
30
30
  { "value": "i18n", "label": "i18n — Transloco-class translation core" },
31
31
  { "value": "date-adapter", "label": "date-adapter — calendar / date-picker plumbing" },
32
- { "value": "density", "label": "density — comfortable / compact preset" },
32
+ { "value": "density", "label": "density — sm / md / lg scale" },
33
33
  { "value": "loading-bar", "label": "loading-bar — router-aware progress bar" },
34
34
  { "value": "cookie", "label": "cookie — wr cookie service" },
35
35
  { "value": "storage", "label": "storage — swappable engine + TTL" },
@@ -36,7 +36,9 @@
36
36
  "WrCarouselSlide": "ngwr/carousel",
37
37
  "WrCascader": "ngwr/cascader",
38
38
  "WrCascaderOption": "ngwr/cascader",
39
+ "WrCascaderSize": "ngwr/cascader",
39
40
  "WrCheckbox": "ngwr/checkbox",
41
+ "WrCheckboxSize": "ngwr/checkbox",
40
42
  "WrCheckboxGroup": "ngwr/checkbox",
41
43
  "WrCheckboxGroupContext": "ngwr/checkbox",
42
44
  "WrCircularText": "ngwr/circular-text",
@@ -101,7 +103,6 @@
101
103
  "WrAutosize": "ngwr/directives",
102
104
  "WrClickOutside": "ngwr/directives",
103
105
  "WrCopyToClipboard": "ngwr/directives",
104
- "WrReveal": "ngwr/directives",
105
106
  "WrDivider": "ngwr/divider",
106
107
  "WrDividerType": "ngwr/divider",
107
108
  "WrDonutChart": "ngwr/donut-chart",
@@ -168,9 +169,11 @@
168
169
  "WrInputGroup": "ngwr/input",
169
170
  "WrPasswordToggle": "ngwr/input",
170
171
  "WrInputType": "ngwr/input",
172
+ "WrInputSize": "ngwr/input",
171
173
  "WrInputNumber": "ngwr/input-number",
172
174
  "WrInputOtp": "ngwr/input-otp",
173
175
  "WrInputOtpMode": "ngwr/input-otp",
176
+ "WrInputOtpSize": "ngwr/input-otp",
174
177
  "WrKbd": "ngwr/keyboard",
175
178
  "WrKbdSize": "ngwr/keyboard",
176
179
  "WrKnob": "ngwr/knob",
@@ -230,9 +233,11 @@
230
233
  "WrQr": "ngwr/qr",
231
234
  "WrQrErrorLevel": "ngwr/qr",
232
235
  "WrRadio": "ngwr/radio",
236
+ "WrRadioSize": "ngwr/radio",
233
237
  "WrRadioGroup": "ngwr/radio",
234
238
  "WrRadioGroupContext": "ngwr/radio",
235
239
  "WrRating": "ngwr/rating",
240
+ "WrRatingSize": "ngwr/rating",
236
241
  "WrResult": "ngwr/result",
237
242
  "WrResultStatus": "ngwr/result",
238
243
  "WrResult404": "ngwr/result",
@@ -241,12 +246,12 @@
241
246
  "WrRotatingText": "ngwr/rotating-text",
242
247
  "WrRotatingTextSplit": "ngwr/rotating-text",
243
248
  "WrRotatingTextStaggerFrom": "ngwr/rotating-text",
244
- "WrScrambleText": "ngwr/scramble-text",
245
249
  "WrScroll": "ngwr/scroll",
246
250
  "WrScrollTarget": "ngwr/scroll",
247
251
  "WrScrollOptions": "ngwr/scroll",
248
252
  "WrSegmented": "ngwr/segmented",
249
253
  "WrSegmentedOption": "ngwr/segmented",
254
+ "WrSegmentedSize": "ngwr/segmented",
250
255
  "WrSelect": "ngwr/select",
251
256
  "WrOption": "ngwr/select",
252
257
  "WrOptionGroup": "ngwr/select",
@@ -254,6 +259,7 @@
254
259
  "WrSelectMode": "ngwr/select",
255
260
  "WrSelectSearchLoader": "ngwr/select",
256
261
  "WrSelectTagValidator": "ngwr/select",
262
+ "WrSelectSize": "ngwr/select",
257
263
  "WrShinyText": "ngwr/shiny-text",
258
264
  "WrShimmer": "ngwr/shiny-text",
259
265
  "WrSidebar": "ngwr/sidebar",
@@ -294,6 +300,7 @@
294
300
  "WrStorageConfigResolved": "ngwr/storage",
295
301
  "WrStorageEngine": "ngwr/storage",
296
302
  "WrSwitch": "ngwr/switch",
303
+ "WrSwitchSize": "ngwr/switch",
297
304
  "WrTable": "ngwr/table",
298
305
  "WrTableCell": "ngwr/table",
299
306
  "WrTableSort": "ngwr/table",
@@ -309,6 +316,8 @@
309
316
  "WrTab": "ngwr/tabs",
310
317
  "WrTabsContext": "ngwr/tabs",
311
318
  "WrTextarea": "ngwr/textarea",
319
+ "WrTextareaSize": "ngwr/textarea",
320
+ "WrTextareaResize": "ngwr/textarea",
312
321
  "WrColor": "ngwr/theme",
313
322
  "WrTheme": "ngwr/theme",
314
323
  "WrResolvedTheme": "ngwr/theme",