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
@@ -5,8 +5,13 @@
5
5
  --wr-segmented-color: var(--wr-color-dark);
6
6
  --wr-segmented-selected-bg: var(--wr-color-white);
7
7
  --wr-segmented-selected-color: var(--wr-color-dark);
8
- --wr-segmented-radius: var(--wr-border-radius-base);
8
+ --wr-segmented-radius: 0.5rem; // 8px track
9
+ // Concentric thumb: outer − inset, so track and thumb corners nest naturally.
10
+ --wr-segmented-thumb-radius: calc(var(--wr-segmented-radius) - var(--wr-segmented-padding));
9
11
  --wr-segmented-padding: 0.1875rem;
12
+ --wr-segmented-font-size: var(--wr-text-sm);
13
+ --wr-segmented-line-height: var(--wr-control-line-height-md);
14
+ --wr-segmented-option-py: 0.125rem;
10
15
 
11
16
  --wr-segmented-thumb-index: 0;
12
17
  --wr-segmented-thumb-count: 1;
@@ -20,8 +25,25 @@
20
25
  padding: var(--wr-segmented-padding);
21
26
  @include theme.smooth-br(var(--wr-segmented-radius));
22
27
  font-family: var(--wr-font-family-base);
23
- font-size: 0.8125rem;
24
- line-height: 1.25rem;
28
+ font-size: var(--wr-segmented-font-size);
29
+ line-height: var(--wr-segmented-line-height);
30
+
31
+ // Sizes — track 22 / 30 / 36 px (line-height + 2×option-py + 2×track-padding).
32
+ &--sm {
33
+ --wr-segmented-radius: 0.4375rem; // 7px → concentric 5px thumb
34
+ --wr-segmented-padding: 0.125rem; // 2px
35
+ --wr-segmented-font-size: var(--wr-text-xs);
36
+ --wr-segmented-line-height: var(--wr-control-line-height-sm);
37
+ --wr-segmented-option-py: 0.0625rem; // 1px
38
+ }
39
+
40
+ &--lg {
41
+ --wr-segmented-radius: 0.5625rem; // 9px → concentric 6px thumb
42
+ --wr-segmented-padding: 0.1875rem; // 3px
43
+ --wr-segmented-font-size: var(--wr-text-base);
44
+ --wr-segmented-line-height: var(--wr-control-line-height-lg);
45
+ --wr-segmented-option-py: 0.1875rem; // 3px
46
+ }
25
47
 
26
48
  &__thumb {
27
49
  position: absolute;
@@ -31,8 +53,8 @@
31
53
  width: calc((100% - 2 * var(--wr-segmented-padding)) / var(--wr-segmented-thumb-count));
32
54
  transform: translateX(calc(100% * var(--wr-segmented-thumb-index)));
33
55
  background: var(--wr-segmented-selected-bg);
34
- @include theme.smooth-br(calc(var(--wr-segmented-radius) - var(--wr-segmented-padding)));
35
- box-shadow: 0 1px 2px rgba(0, 0, 0, 0.08);
56
+ @include theme.smooth-br(var(--wr-segmented-thumb-radius));
57
+ box-shadow: var(--wr-shadow-xs);
36
58
  pointer-events: none;
37
59
  // Animate slides, but only after first paint — see `&--mounted` below.
38
60
  }
@@ -56,8 +78,9 @@
56
78
  appearance: none;
57
79
  background: transparent;
58
80
  border: 0;
59
- padding: 0.3125rem 0.75rem;
60
- @include theme.smooth-br(calc(var(--wr-segmented-radius) - var(--wr-segmented-padding)));
81
+ // Height = line-height + 2×option-py + 2×track-padding (md → 30px); all scale per size.
82
+ padding: var(--wr-segmented-option-py) 0.75rem;
83
+ @include theme.smooth-br(var(--wr-segmented-thumb-radius));
61
84
  color: var(--wr-segmented-color);
62
85
  font: inherit;
63
86
  cursor: pointer;
@@ -82,7 +105,7 @@
82
105
  }
83
106
 
84
107
  &__label {
85
- line-height: 1.25rem;
108
+ line-height: var(--wr-segmented-line-height);
86
109
  }
87
110
 
88
111
  &--disabled {
@@ -5,15 +5,34 @@
5
5
  --wr-select-color: var(--wr-color-dark);
6
6
  --wr-select-bg: var(--wr-color-white);
7
7
  --wr-select-border: var(--wr-color-light);
8
- --wr-select-radius: var(--wr-border-radius-base);
9
- --wr-select-padding-y: 0.4375rem;
10
- --wr-select-padding-x: 0.75rem;
11
- --wr-select-font-size: 0.875rem;
12
- --wr-select-line-height: 1.25rem;
8
+ --wr-select-radius: var(--wr-control-radius-md);
9
+ --wr-select-padding-y: var(--wr-control-padding-y-md);
10
+ --wr-select-padding-x: var(--wr-control-padding-x-md);
11
+ --wr-select-font-size: var(--wr-control-font-size-md);
12
+ --wr-select-line-height: var(--wr-control-line-height-md);
13
13
 
14
14
  display: inline-flex;
15
15
  vertical-align: middle;
16
16
 
17
+ // Sizes — share the `--wr-control-*` contract (22 / 30 / 36 px). Multi/tag
18
+ // min-height and the search/tag inputs all read these vars, so every mode
19
+ // tracks the size. Declared before `--rounded` so the pill modifier wins.
20
+ &--sm {
21
+ --wr-select-radius: var(--wr-control-radius-sm);
22
+ --wr-select-padding-y: var(--wr-control-padding-y-sm);
23
+ --wr-select-padding-x: var(--wr-control-padding-x-sm);
24
+ --wr-select-font-size: var(--wr-control-font-size-sm);
25
+ --wr-select-line-height: var(--wr-control-line-height-sm);
26
+ }
27
+
28
+ &--lg {
29
+ --wr-select-radius: var(--wr-control-radius-lg);
30
+ --wr-select-padding-y: var(--wr-control-padding-y-lg);
31
+ --wr-select-padding-x: var(--wr-control-padding-x-lg);
32
+ --wr-select-font-size: var(--wr-control-font-size-lg);
33
+ --wr-select-line-height: var(--wr-control-line-height-lg);
34
+ }
35
+
17
36
  &--rounded {
18
37
  --wr-select-radius: var(--wr-border-radius-pill);
19
38
  --wr-select-padding-x: 1rem;
@@ -48,9 +67,8 @@
48
67
  box-shadow var(--wr-transition-base);
49
68
 
50
69
  &:focus-visible {
51
- outline: none;
52
70
  border-color: var(--wr-color-primary);
53
- box-shadow: 0 0 0 3px rgba(var(--wr-color-primary-rgb), 0.15);
71
+ @include theme.focus-ring;
54
72
  }
55
73
 
56
74
  &:disabled {
@@ -72,7 +90,7 @@
72
90
  }
73
91
 
74
92
  &__placeholder {
75
- color: rgba(var(--wr-color-medium-rgb), 0.85);
93
+ color: var(--wr-color-text-muted);
76
94
  }
77
95
 
78
96
  &__chevron {
@@ -94,8 +112,10 @@
94
112
  &--tag &__trigger {
95
113
  flex-wrap: wrap;
96
114
  align-items: center;
97
- padding: 0.25rem 0.5rem;
98
- min-height: calc(var(--wr-select-line-height) + var(--wr-select-padding-y) * 2);
115
+ padding: calc(var(--wr-select-padding-y) * var(--wr-density-y, 1)) calc(var(--wr-select-padding-x) * var(--wr-density-x, 1));
116
+ // Empty / single chip-row floor = single-mode height
117
+ // (line-height + 2×padding-y + 2×1px border), so every size + density lines up.
118
+ min-height: calc(var(--wr-select-line-height) + var(--wr-select-padding-y) * var(--wr-density-y, 1) * 2 + 2px);
99
119
  }
100
120
 
101
121
  // Search-mode trigger: inline text input + chevron + clear
@@ -114,7 +134,7 @@
114
134
  min-width: 0;
115
135
  border: 0;
116
136
  outline: 0;
117
- padding: var(--wr-select-padding-y) var(--wr-select-padding-x);
137
+ padding: calc(var(--wr-select-padding-y) * var(--wr-density-y, 1)) calc(var(--wr-select-padding-x) * var(--wr-density-x, 1));
118
138
  background: transparent;
119
139
  color: inherit;
120
140
  font: inherit;
@@ -122,7 +142,7 @@
122
142
  line-height: var(--wr-select-line-height);
123
143
 
124
144
  &::placeholder {
125
- color: rgba(var(--wr-color-medium-rgb), 0.85);
145
+ color: var(--wr-color-text-muted);
126
146
  }
127
147
 
128
148
  &:disabled {
@@ -149,11 +169,11 @@
149
169
  background: transparent;
150
170
  color: inherit;
151
171
  font: inherit;
152
- font-size: 0.875rem;
153
- line-height: 1.4;
172
+ font-size: var(--wr-select-font-size);
173
+ line-height: var(--wr-select-line-height);
154
174
 
155
175
  &::placeholder {
156
- color: rgba(var(--wr-color-medium-rgb), 0.85);
176
+ color: var(--wr-color-text-muted);
157
177
  }
158
178
 
159
179
  &:disabled {
@@ -177,9 +197,9 @@
177
197
  max-width: 100%;
178
198
  padding: 0.125rem 0.25rem 0.125rem 0.5rem;
179
199
  border-radius: 999px;
180
- background: rgba(var(--wr-color-primary-rgb), 0.1);
200
+ background: var(--wr-color-primary-soft);
181
201
  color: var(--wr-color-primary);
182
- font-size: 0.8125rem;
202
+ font-size: var(--wr-text-sm);
183
203
  line-height: 1.4;
184
204
  user-select: none;
185
205
  }
@@ -202,7 +222,7 @@
202
222
  transition: background 0.12s ease;
203
223
 
204
224
  &:hover {
205
- background: rgba(var(--wr-color-primary-rgb), 0.2);
225
+ background: var(--wr-color-primary-active);
206
226
  }
207
227
  }
208
228
 
@@ -243,9 +263,20 @@
243
263
  --wr-select-panel-radius: var(--wr-border-radius-base);
244
264
  --wr-select-panel-shadow: var(--wr-shadow-overlay);
245
265
  --wr-select-panel-max-height: 16rem;
266
+ // Option sizing — default md. --sm/--lg are set from the trigger size because
267
+ // the panel is portaled into an overlay and can't inherit the host size class.
268
+ --wr-option-font-size: var(--wr-control-font-size-md);
269
+ --wr-option-line-height: var(--wr-control-line-height-md);
270
+ --wr-option-padding-y: 0.4375rem;
271
+ --wr-option-padding-x: 0.625rem;
272
+ --wr-option-gap: 0.1875rem;
246
273
 
247
274
  display: flex;
248
275
  flex-direction: column;
276
+ // Fill the overlay pane so the visible panel == the pointer-catching surface;
277
+ // no transparent gutter to swallow outside-clicks (see openOverlay in select.ts).
278
+ width: 100%;
279
+ gap: var(--wr-option-gap);
249
280
  background: var(--wr-select-panel-bg);
250
281
  border: 1px solid var(--wr-select-panel-border);
251
282
  @include theme.smooth-br(var(--wr-select-panel-radius));
@@ -255,11 +286,27 @@
255
286
  overflow-y: auto;
256
287
  font-family: var(--wr-font-family-base);
257
288
 
289
+ &--sm {
290
+ --wr-option-font-size: var(--wr-control-font-size-sm);
291
+ --wr-option-line-height: var(--wr-control-line-height-sm);
292
+ --wr-option-padding-y: 0.3125rem;
293
+ --wr-option-padding-x: 0.5rem;
294
+ --wr-option-gap: 0.125rem;
295
+ }
296
+
297
+ &--lg {
298
+ --wr-option-font-size: var(--wr-control-font-size-lg);
299
+ --wr-option-line-height: var(--wr-control-line-height-lg);
300
+ --wr-option-padding-y: 0.5rem;
301
+ --wr-option-padding-x: 0.75rem;
302
+ --wr-option-gap: 0.25rem;
303
+ }
304
+
258
305
  &__loading,
259
306
  &__empty {
260
307
  padding: 0.625rem 0.75rem;
261
308
  color: var(--wr-color-medium);
262
- font-size: 0.875rem;
309
+ font-size: var(--wr-option-font-size);
263
310
  text-align: center;
264
311
  }
265
312
  }
@@ -267,21 +314,21 @@
267
314
  .wr-option {
268
315
  display: flex;
269
316
  align-items: center;
270
- padding: 0.4375rem 0.625rem;
317
+ padding: var(--wr-option-padding-y) var(--wr-option-padding-x);
271
318
  border-radius: var(--wr-border-radius-sm);
272
319
  color: var(--wr-color-dark);
273
- font-size: 0.875rem;
274
- line-height: 1.25rem;
320
+ font-size: var(--wr-option-font-size);
321
+ line-height: var(--wr-option-line-height);
275
322
  cursor: pointer;
276
323
  user-select: none;
277
324
  transition: background var(--wr-transition-short);
278
325
 
279
326
  &:hover {
280
- background: rgba(var(--wr-color-light-rgb), 0.4);
327
+ background: var(--wr-color-hover);
281
328
  }
282
329
 
283
330
  &--selected {
284
- background: rgba(var(--wr-color-primary-rgb), 0.1);
331
+ background: var(--wr-color-primary-soft);
285
332
  color: var(--wr-color-primary);
286
333
  font-weight: 500;
287
334
  }
@@ -306,11 +353,12 @@
306
353
  .wr-option-group {
307
354
  display: flex;
308
355
  flex-direction: column;
356
+ gap: var(--wr-option-gap);
309
357
 
310
358
  &__label {
311
359
  padding: 0.5rem 0.625rem 0.25rem;
312
360
  color: var(--wr-color-medium);
313
- font-size: 0.6875rem;
361
+ font-size: var(--wr-text-xs);
314
362
  font-weight: 600;
315
363
  letter-spacing: 0.04em;
316
364
  text-transform: uppercase;
@@ -34,7 +34,7 @@
34
34
  color var(--wr-transition-base);
35
35
 
36
36
  &:hover {
37
- background: rgba(var(--wr-color-light-rgb), 0.5);
37
+ background: var(--wr-color-hover);
38
38
 
39
39
  .wr-sidebar__icon {
40
40
  color: var(--wr-color-primary);
@@ -43,7 +43,7 @@
43
43
 
44
44
  &--active {
45
45
  color: var(--wr-color-primary);
46
- background: rgba(var(--wr-color-primary-rgb), 0.1);
46
+ background: var(--wr-color-primary-soft);
47
47
  pointer-events: none;
48
48
 
49
49
  .wr-sidebar__icon {
@@ -175,7 +175,7 @@
175
175
 
176
176
  &--active {
177
177
  color: var(--wr-color-primary);
178
- background: rgba(var(--wr-color-primary-rgb), 0.1);
178
+ background: var(--wr-color-primary-soft);
179
179
  pointer-events: none;
180
180
 
181
181
  &::before {
@@ -53,8 +53,7 @@
53
53
  @include theme.touch-target($positioned: true);
54
54
 
55
55
  &:focus-visible {
56
- outline: none;
57
- box-shadow: 0 0 0 3px rgba(var(--wr-color-primary-rgb), 0.25);
56
+ @include theme.focus-ring;
58
57
  }
59
58
 
60
59
  &:active {
@@ -66,7 +65,7 @@
66
65
  &__label {
67
66
  margin-top: 0.5rem;
68
67
  color: var(--wr-slider-label);
69
- font-size: 0.8125rem;
68
+ font-size: var(--wr-text-sm);
70
69
  line-height: 1.125rem;
71
70
  font-variant-numeric: tabular-nums;
72
71
  }
@@ -152,6 +152,7 @@
152
152
  &:hover {
153
153
  transform: scale(1.06);
154
154
  background: var(--wr-color-primary);
155
+ border-color: var(--wr-color-primary);
155
156
  color: var(--wr-color-primary-contrast, var(--wr-color-white));
156
157
  }
157
158
  }
@@ -44,7 +44,7 @@
44
44
  }
45
45
 
46
46
  &:focus-visible {
47
- box-shadow: 0 0 0 2px rgba(var(--wr-color-primary-rgb), 0.2);
47
+ @include theme.focus-ring;
48
48
  }
49
49
  }
50
50
 
@@ -61,7 +61,7 @@
61
61
  &__handle {
62
62
  background: var(--wr-color-white);
63
63
  border: 1px solid var(--wr-color-light);
64
- box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);
64
+ box-shadow: var(--wr-shadow-sm);
65
65
  display: inline-block;
66
66
  flex: 0 0 auto;
67
67
  }
@@ -69,13 +69,13 @@
69
69
  &--horizontal &__handle {
70
70
  width: 0.875rem;
71
71
  height: 2rem;
72
- @include theme.smooth-br(4px);
72
+ @include theme.smooth-br(var(--wr-control-radius-sm));
73
73
  }
74
74
 
75
75
  &--vertical &__handle {
76
76
  width: 2rem;
77
77
  height: 0.875rem;
78
- @include theme.smooth-br(4px);
78
+ @include theme.smooth-br(var(--wr-control-radius-sm));
79
79
  }
80
80
 
81
81
  &--disabled &__divider {
@@ -1,13 +1,14 @@
1
1
  // Cursor-tracked spotlight card (reactbits port). The `--wr-spotlight-x/y`
2
2
  // vars come from the host's mousemove handler; `--wr-spotlight-color` is
3
3
  // set inline from the `[spotlightColor]` input when provided — otherwise
4
- // the theme picks a default: a soft dark tint on light surfaces, the
5
- // classic white-alpha beam on dark.
4
+ // the theme picks the default below. `--wr-color-dark-rgb` flips between
5
+ // themes (dark on light surfaces, light on dark), so a single tint reads
6
+ // as a dark-ish glow in light mode and a light beam in dark mode.
6
7
 
7
8
  .wr-spotlight-card {
8
9
  --wr-spotlight-x: 50%;
9
10
  --wr-spotlight-y: 50%;
10
- --wr-spotlight-color: rgba(var(--wr-color-dark-rgb), 0.08);
11
+ --wr-spotlight-color: rgba(var(--wr-color-dark-rgb), 0.15);
11
12
 
12
13
  position: relative;
13
14
  display: block;
@@ -38,6 +39,9 @@
38
39
  }
39
40
  }
40
41
 
42
+ // Dark mode: `--wr-color-dark-rgb` already flips to a light value, so the
43
+ // default tint above becomes a light beam on the navy surface — nudge the
44
+ // alpha up a touch so it reads as bright as the classic spotlight.
41
45
  [data-theme='dark'] .wr-spotlight-card {
42
- --wr-spotlight-color: rgb(255 255 255 / 25%);
46
+ --wr-spotlight-color: rgba(var(--wr-color-dark-rgb), 0.22);
43
47
  }
@@ -80,7 +80,7 @@
80
80
  border: 1.5px solid var(--wr-color-light);
81
81
  background: var(--wr-color-white);
82
82
  color: var(--wr-stepper-muted);
83
- font-size: 0.8125rem;
83
+ font-size: var(--wr-text-sm);
84
84
  font-weight: 600;
85
85
  display: inline-flex;
86
86
  align-items: center;
@@ -95,7 +95,7 @@
95
95
  &__header--active &__indicator {
96
96
  border-color: var(--wr-color-primary);
97
97
  color: var(--wr-color-primary);
98
- background: rgba(var(--wr-color-primary-rgb), 0.08);
98
+ background: var(--wr-color-primary-soft);
99
99
  }
100
100
 
101
101
  &__header--completed &__indicator {
@@ -108,7 +108,7 @@
108
108
  display: inline-flex;
109
109
  flex-direction: column;
110
110
  gap: 0.0625rem;
111
- font-size: 0.875rem;
111
+ font-size: var(--wr-text-sm);
112
112
  font-weight: 500;
113
113
  line-height: 1.25rem;
114
114
  }
@@ -119,7 +119,7 @@
119
119
 
120
120
  &__optional,
121
121
  &__description {
122
- font-size: 0.6875rem;
122
+ font-size: var(--wr-text-xs);
123
123
  font-weight: 500;
124
124
  color: var(--wr-stepper-muted);
125
125
  text-transform: none;
@@ -153,23 +153,6 @@
153
153
  animation: wr-bounce 1s infinite;
154
154
  }
155
155
 
156
- // Reveal-on-scroll integration
157
- // Initial state — set by `[wrReveal]` on the host element via the
158
- // `wr-reveal` host class. The directive flips `wr-reveal--visible`
159
- // once the element enters the viewport.
160
- .wr-reveal {
161
- opacity: 0;
162
- transform: translateY(0.75rem);
163
- transition:
164
- opacity var(--wr-duration-slow) var(--wr-ease-out),
165
- transform var(--wr-duration-slow) var(--wr-ease-out);
166
-
167
- &--visible {
168
- opacity: 1;
169
- transform: translateY(0);
170
- }
171
- }
172
-
173
156
  // prefers-reduced-motion
174
157
  @media (prefers-reduced-motion: reduce) {
175
158
  .wr-animate-fade-in,
@@ -185,12 +168,6 @@
185
168
  .wr-animate-bounce {
186
169
  animation: none !important;
187
170
  }
188
-
189
- .wr-reveal {
190
- opacity: 1;
191
- transform: none;
192
- transition: none;
193
- }
194
171
  }
195
172
 
196
173
  // `wr-border-glow` lives in its own component now (see `ngwr/border-glow`).
package/styles.scss CHANGED
@@ -85,7 +85,6 @@
85
85
  @forward './rating/styles';
86
86
  @forward './result/styles';
87
87
  @forward './rotating-text/styles';
88
- @forward './scramble-text/styles';
89
88
  @forward './segmented/styles';
90
89
  @forward './select/styles';
91
90
  @forward './shiny-text/styles';
@@ -1,9 +1,11 @@
1
1
  @use '../../theme/styles' as theme;
2
2
 
3
3
  .wr-switch {
4
- --wr-switch-track-width: 2.25rem;
5
- --wr-switch-track-height: 1.25rem;
6
- --wr-switch-thumb-size: 1rem;
4
+ --wr-switch-track-width: 2rem;
5
+ --wr-switch-track-height: 1.125rem; // md = checkbox/radio box (18px)
6
+ --wr-switch-thumb-size: 0.875rem;
7
+ --wr-switch-font-size: var(--wr-text-sm);
8
+ --wr-switch-line-height: var(--wr-control-line-height-md);
7
9
  --wr-switch-bg: var(--wr-color-light);
8
10
  --wr-switch-bg-checked: var(--wr-color-primary);
9
11
  --wr-switch-thumb: var(--wr-color-white);
@@ -13,8 +15,8 @@
13
15
  vertical-align: middle;
14
16
  color: var(--wr-switch-color);
15
17
  font-family: var(--wr-font-family-base);
16
- font-size: 0.875rem;
17
- line-height: 1.25rem;
18
+ font-size: var(--wr-switch-font-size);
19
+ line-height: var(--wr-switch-line-height);
18
20
 
19
21
  &__label {
20
22
  display: inline-flex;
@@ -59,10 +61,27 @@
59
61
  height: var(--wr-switch-thumb-size);
60
62
  background: var(--wr-switch-thumb);
61
63
  border-radius: 50%;
62
- box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);
64
+ box-shadow: var(--wr-shadow-xs);
63
65
  transition: left var(--wr-transition-base);
64
66
  }
65
67
 
68
+ // Sizes — track, thumb, label font + line-height scale together.
69
+ &--sm {
70
+ --wr-switch-track-width: 1.75rem;
71
+ --wr-switch-track-height: 1rem;
72
+ --wr-switch-thumb-size: 0.75rem;
73
+ --wr-switch-font-size: var(--wr-text-xs);
74
+ --wr-switch-line-height: var(--wr-control-line-height-sm);
75
+ }
76
+
77
+ &--lg {
78
+ --wr-switch-track-width: 2.375rem;
79
+ --wr-switch-track-height: 1.25rem;
80
+ --wr-switch-thumb-size: 1rem;
81
+ --wr-switch-font-size: var(--wr-text-base);
82
+ --wr-switch-line-height: var(--wr-control-line-height-lg);
83
+ }
84
+
66
85
  &--checked {
67
86
  --wr-switch-bg: var(--wr-switch-bg-checked);
68
87
 
@@ -29,7 +29,7 @@
29
29
  &__table {
30
30
  width: 100%;
31
31
  border-collapse: collapse;
32
- font-size: 0.875rem;
32
+ font-size: var(--wr-text-sm);
33
33
  line-height: 1.25rem;
34
34
  }
35
35
 
@@ -45,7 +45,7 @@
45
45
  background: var(--wr-table-head-bg);
46
46
  color: var(--wr-color-medium);
47
47
  font-weight: 600;
48
- font-size: 0.6875rem;
48
+ font-size: var(--wr-text-xs);
49
49
  letter-spacing: 0.04em;
50
50
  text-transform: uppercase;
51
51
  white-space: nowrap;
@@ -154,7 +154,7 @@
154
154
  content: attr(data-label);
155
155
  flex: 0 0 auto;
156
156
  color: var(--wr-color-medium);
157
- font-size: 0.6875rem;
157
+ font-size: var(--wr-text-xs);
158
158
  font-weight: 600;
159
159
  letter-spacing: 0.04em;
160
160
  text-transform: uppercase;
@@ -214,7 +214,7 @@
214
214
  border-radius: var(--wr-border-radius-pill);
215
215
  background: var(--wr-color-primary);
216
216
  color: var(--wr-color-primary-contrast);
217
- font-size: 0.625rem;
217
+ font-size: 0.625rem; // 10px — intentional micro-count badge, below --wr-text-xs
218
218
  font-weight: 600;
219
219
  }
220
220
 
@@ -237,7 +237,7 @@
237
237
  background: transparent;
238
238
  color: var(--wr-color-dark);
239
239
  font: inherit;
240
- font-size: 0.8125rem;
240
+ font-size: var(--wr-text-sm);
241
241
  }
242
242
 
243
243
  &__list {
@@ -258,7 +258,7 @@
258
258
  border-radius: var(--wr-border-radius-sm);
259
259
  color: var(--wr-color-dark);
260
260
  font: inherit;
261
- font-size: 0.8125rem;
261
+ font-size: var(--wr-text-sm);
262
262
  text-align: left;
263
263
  cursor: pointer;
264
264
 
@@ -293,7 +293,7 @@
293
293
  &__empty {
294
294
  padding: 0.625rem 0.5rem;
295
295
  color: var(--wr-color-medium);
296
- font-size: 0.8125rem;
296
+ font-size: var(--wr-text-sm);
297
297
  text-align: center;
298
298
  }
299
299
 
@@ -305,12 +305,12 @@
305
305
  border-radius: var(--wr-border-radius-sm);
306
306
  color: var(--wr-color-primary);
307
307
  font: inherit;
308
- font-size: 0.8125rem;
308
+ font-size: var(--wr-text-sm);
309
309
  cursor: pointer;
310
310
  text-align: left;
311
311
 
312
312
  &:hover {
313
- background: rgba(var(--wr-color-primary-rgb), 0.08);
313
+ background: var(--wr-color-primary-soft);
314
314
  }
315
315
  }
316
316
  }
@@ -6,6 +6,10 @@
6
6
  --wr-tabs-color-hover: var(--wr-color-dark);
7
7
  --wr-tabs-color-active: var(--wr-color-primary);
8
8
  --wr-tabs-indicator: var(--wr-color-primary);
9
+ --wr-tabs-font-size: var(--wr-control-font-size-md);
10
+ --wr-tabs-line-height: var(--wr-control-line-height-md);
11
+ --wr-tabs-padding-y: 0.625rem;
12
+ --wr-tabs-padding-x: 1rem;
9
13
 
10
14
  display: block;
11
15
  // Claim the full row even when nested in a flex-row demo wrapper.
@@ -14,6 +18,21 @@
14
18
  min-width: 0;
15
19
  font-family: var(--wr-font-family-base);
16
20
 
21
+ // Sizes — wire the (previously inert) `size` input to the control fonts.
22
+ &--sm {
23
+ --wr-tabs-font-size: var(--wr-control-font-size-sm);
24
+ --wr-tabs-line-height: var(--wr-control-line-height-sm);
25
+ --wr-tabs-padding-y: 0.5rem;
26
+ --wr-tabs-padding-x: 0.75rem;
27
+ }
28
+
29
+ &--lg {
30
+ --wr-tabs-font-size: var(--wr-control-font-size-lg);
31
+ --wr-tabs-line-height: var(--wr-control-line-height-lg);
32
+ --wr-tabs-padding-y: 0.75rem;
33
+ --wr-tabs-padding-x: 1.25rem;
34
+ }
35
+
17
36
  &__strip {
18
37
  display: flex;
19
38
  align-items: stretch;
@@ -60,12 +79,12 @@
60
79
  background: transparent;
61
80
  border: 0;
62
81
  text-decoration: none;
63
- padding: 0.625rem 1rem;
82
+ padding: var(--wr-tabs-padding-y) var(--wr-tabs-padding-x);
64
83
  color: var(--wr-tabs-color);
65
84
  font: inherit;
66
- font-size: 0.875rem;
85
+ font-size: var(--wr-tabs-font-size);
67
86
  font-weight: 500;
68
- line-height: 1.25rem;
87
+ line-height: var(--wr-tabs-line-height);
69
88
  border-bottom: 2px solid transparent;
70
89
  cursor: pointer;
71
90
  white-space: nowrap;