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/README.md CHANGED
@@ -10,8 +10,9 @@
10
10
  zoneless-ready, responsive, modular SCSS, fully tree-shakable. Built on top of
11
11
  `@angular/cdk` for overlay, portal, and a11y primitives.
12
12
 
13
- > **Status:** active development. Public API is stable across patch releases but
14
- > the v7 line is still maturing. [Open an issue](https://github.com/thekhegay/ngwr/issues/new)
13
+ > **Status:** active development. v8 is the current major line (Angular 22 peer).
14
+ > Public API is stable across patch releases and still evolving between majors.
15
+ > [Open an issue](https://github.com/thekhegay/ngwr/issues/new)
15
16
  > if something breaks or feels wrong.
16
17
 
17
18
  ## Requirements
@@ -139,13 +140,13 @@ Plus [icon](https://ngwr.dev/components/icon), the experimental [squircle](https
139
140
 
140
141
  Animated UI effects. Mix of in-house components + ports of [reactbits.dev](https://www.reactbits.dev) — each port carries a credit chip on its docs page. Defaults are theme-aware (light + dark), and every component honors `prefers-reduced-motion`.
141
142
 
142
- [aurora](https://ngwr.dev/animations/aurora), [blur-text](https://ngwr.dev/animations/blur-text), [border-glow](https://ngwr.dev/animations/border-glow), [circular-text](https://ngwr.dev/animations/circular-text), [click-spark](https://ngwr.dev/animations/click-spark), [confetti](https://ngwr.dev/animations/confetti), [decrypt-text](https://ngwr.dev/animations/decrypt-text), [falling-text](https://ngwr.dev/animations/falling-text), [fuzzy-text](https://ngwr.dev/animations/fuzzy-text), [glitch-text](https://ngwr.dev/animations/glitch-text), [gradient-text](https://ngwr.dev/animations/gradient-text), [marquee](https://ngwr.dev/animations/marquee), [reveal](https://ngwr.dev/animations/reveal), [rotating-text](https://ngwr.dev/animations/rotating-text), [scramble-text](https://ngwr.dev/animations/scramble-text), [shiny-text](https://ngwr.dev/animations/shiny-text), [splash-cursor](https://ngwr.dev/animations/splash-cursor), [split-text](https://ngwr.dev/animations/split-text), [spotlight-card](https://ngwr.dev/animations/spotlight-card), [star-border](https://ngwr.dev/animations/star-border), [tilt-card](https://ngwr.dev/animations/tilt-card), [typewriter](https://ngwr.dev/animations/typewriter), [waves](https://ngwr.dev/animations/waves).
143
+ [aurora](https://ngwr.dev/animations/aurora), [blur-text](https://ngwr.dev/animations/blur-text), [border-glow](https://ngwr.dev/animations/border-glow), [circular-text](https://ngwr.dev/animations/circular-text), [click-spark](https://ngwr.dev/animations/click-spark), [confetti](https://ngwr.dev/animations/confetti), [decrypt-text](https://ngwr.dev/animations/decrypt-text), [falling-text](https://ngwr.dev/animations/falling-text), [fuzzy-text](https://ngwr.dev/animations/fuzzy-text), [glitch-text](https://ngwr.dev/animations/glitch-text), [gradient-text](https://ngwr.dev/animations/gradient-text), [marquee](https://ngwr.dev/animations/marquee), [rotating-text](https://ngwr.dev/animations/rotating-text), [shiny-text](https://ngwr.dev/animations/shiny-text), [splash-cursor](https://ngwr.dev/animations/splash-cursor), [split-text](https://ngwr.dev/animations/split-text), [spotlight-card](https://ngwr.dev/animations/spotlight-card), [star-border](https://ngwr.dev/animations/star-border), [tilt-card](https://ngwr.dev/animations/tilt-card), [typewriter](https://ngwr.dev/animations/typewriter), [waves](https://ngwr.dev/animations/waves).
143
144
 
144
145
  Card packages bundle their related directives: `ngwr/spotlight-card` exports `WrSpotlight`; `ngwr/tilt-card` exports `WrTilt`; `ngwr/shiny-text` exports `WrShimmer`.
145
146
 
146
147
  ### Directives — `ngwr/directives`
147
148
 
148
- [autofocus](https://ngwr.dev/directives/autofocus), [autosize](https://ngwr.dev/directives/autosize), [click-outside](https://ngwr.dev/directives/click-outside), [copy-to-clipboard](https://ngwr.dev/directives/copy-to-clipboard), [reveal](https://ngwr.dev/animations/reveal). [affix](https://ngwr.dev/directives/affix) ships as its own entry (`ngwr/affix`).
149
+ [autofocus](https://ngwr.dev/directives/autofocus), [autosize](https://ngwr.dev/directives/autosize), [click-outside](https://ngwr.dev/directives/click-outside), [copy-to-clipboard](https://ngwr.dev/directives/copy-to-clipboard). [affix](https://ngwr.dev/directives/affix) ships as its own entry (`ngwr/affix`).
149
150
 
150
151
  ### Pipes — `ngwr/pipes`
151
152
 
@@ -1,7 +1,7 @@
1
1
  @use '../../theme/styles' as theme;
2
2
 
3
3
  $alert-colors: (
4
- info: primary,
4
+ info: info,
5
5
  success: success,
6
6
  warning: warning,
7
7
  danger: danger,
@@ -17,16 +17,16 @@ $alert-colors: (
17
17
  min-width: 0;
18
18
 
19
19
  // Defaults — overridden per variant below.
20
- --wr-alert-bg: rgba(var(--wr-color-primary-rgb), 0.08);
21
- --wr-alert-border: var(--wr-color-primary);
22
- --wr-alert-title: var(--wr-color-primary);
20
+ --wr-alert-bg: var(--wr-color-info-soft);
21
+ --wr-alert-border: var(--wr-color-info-soft-border);
22
+ --wr-alert-title: var(--wr-color-info);
23
23
  --wr-alert-message: var(--wr-color-dark);
24
- --wr-alert-close: var(--wr-color-medium);
24
+ --wr-alert-close: var(--wr-color-info);
25
25
 
26
26
  background: var(--wr-alert-bg);
27
- border-left: 3px solid var(--wr-alert-border);
27
+ border: 1px solid var(--wr-alert-border);
28
28
  @include theme.smooth-br(var(--wr-border-radius-base));
29
- padding: 0.75rem 1rem;
29
+ padding: 0.625rem 0.875rem;
30
30
 
31
31
  &--dismissed {
32
32
  display: none;
@@ -38,6 +38,14 @@ $alert-colors: (
38
38
  height: 1.125rem;
39
39
  margin-top: 0.125rem;
40
40
  color: var(--wr-alert-title);
41
+ // A custom `<wr-icon>` sizes via this var, not width/height.
42
+ --wr-icon-size: 1.125rem;
43
+ }
44
+
45
+ // `<wr-icon>` sets `color: inherit` on its own host at equal specificity;
46
+ // the type selector wins it back so a custom icon takes the intent colour.
47
+ wr-icon.wr-alert__icon {
48
+ color: var(--wr-alert-title);
41
49
  }
42
50
 
43
51
  &__body {
@@ -52,7 +60,7 @@ $alert-colors: (
52
60
  margin: 0;
53
61
  color: var(--wr-alert-title);
54
62
  font-family: var(--wr-font-family-base);
55
- font-size: 0.875rem;
63
+ font-size: var(--wr-text-sm);
56
64
  font-weight: 600;
57
65
  line-height: 1.25rem;
58
66
  }
@@ -61,7 +69,7 @@ $alert-colors: (
61
69
  margin: 0;
62
70
  color: var(--wr-alert-message);
63
71
  font-family: var(--wr-font-family-base);
64
- font-size: 0.8125rem;
72
+ font-size: var(--wr-text-sm);
65
73
  line-height: 1.125rem;
66
74
  }
67
75
 
@@ -84,20 +92,39 @@ $alert-colors: (
84
92
 
85
93
  &:hover {
86
94
  color: var(--wr-alert-title);
87
- background: rgba(var(--wr-color-light-rgb), 0.4);
88
- }
89
-
90
- &:focus-visible {
91
- outline: 2px solid rgba(var(--wr-color-primary-rgb), 0.5);
92
- outline-offset: 1px;
95
+ background: var(--wr-color-hover);
93
96
  }
94
97
  }
95
98
 
96
99
  @each $variant, $color in $alert-colors {
97
100
  &--#{$variant} {
98
- --wr-alert-bg: rgba(var(--wr-color-#{$color}-rgb), 0.08);
99
- --wr-alert-border: var(--wr-color-#{$color});
101
+ --wr-alert-bg: var(--wr-color-#{$color}-soft);
102
+ --wr-alert-border: var(--wr-color-#{$color}-soft-border);
100
103
  --wr-alert-title: var(--wr-color-#{$color});
104
+ --wr-alert-close: var(--wr-color-#{$color});
101
105
  }
102
106
  }
107
+
108
+ // Neutral — muted gray chip, reusing the `medium` soft tokens.
109
+ &--neutral {
110
+ --wr-alert-bg: var(--wr-color-medium-soft);
111
+ --wr-alert-border: var(--wr-color-medium-soft-border);
112
+ --wr-alert-title: var(--wr-color-dark);
113
+ --wr-alert-message: var(--wr-color-medium);
114
+ --wr-alert-close: var(--wr-color-medium);
115
+
116
+ .wr-alert__icon {
117
+ color: var(--wr-color-medium);
118
+ }
119
+ }
120
+
121
+ // Offline — inverse chip. Auto-flips via the theme tokens: dark bg +
122
+ // light text in light theme; light bg + dark text in dark theme.
123
+ &--offline {
124
+ --wr-alert-bg: var(--wr-color-dark);
125
+ --wr-alert-border: var(--wr-color-dark);
126
+ --wr-alert-title: var(--wr-color-white);
127
+ --wr-alert-message: var(--wr-color-white);
128
+ --wr-alert-close: var(--wr-color-white);
129
+ }
103
130
  }
@@ -6,7 +6,7 @@
6
6
  // treatment.
7
7
  --wr-avatar-radius: 10%;
8
8
  --wr-avatar-img-opacity: 0;
9
- --wr-avatar-ring: rgba(var(--wr-color-light-rgb), 0.5);
9
+ --wr-avatar-ring: var(--wr-color-border);
10
10
 
11
11
  display: inline-flex;
12
12
  align-items: center;
@@ -49,7 +49,7 @@
49
49
 
50
50
  &__spin {
51
51
  position: absolute;
52
- color: rgba(var(--wr-color-medium-rgb), 0.6);
52
+ color: var(--wr-color-text-faint);
53
53
  --wr-spinner-size: 40%;
54
54
  }
55
55
  }
@@ -9,19 +9,23 @@
9
9
  display: inline-flex;
10
10
  align-items: center;
11
11
  justify-content: center;
12
+ min-height: var(--wr-badge-min-height);
12
13
  padding: var(--wr-badge-padding-y) var(--wr-badge-padding-x);
13
14
  border-radius: var(--wr-badge-radius);
14
15
  font-size: var(--wr-badge-font-size);
15
16
  font-weight: var(--wr-badge-font-weight);
16
- line-height: var(--wr-badge-line-height);
17
+ // line-height 1 + min-height: flex centres the tight glyph box vertically,
18
+ // instead of line-height baking in asymmetric leading (which left small
19
+ // sizes looking top-heavy).
20
+ line-height: 1;
17
21
  white-space: nowrap;
18
22
 
19
23
  // Defaults — sized modifiers override these
20
24
  --wr-badge-padding-y: 0.25rem;
21
25
  --wr-badge-padding-x: 0.5rem;
22
26
  --wr-badge-radius: var(--wr-border-radius-sm);
23
- --wr-badge-font-size: 0.75rem;
24
- --wr-badge-line-height: 1rem;
27
+ --wr-badge-font-size: var(--wr-text-xs);
28
+ --wr-badge-min-height: 1.5rem;
25
29
  --wr-badge-font-weight: 600;
26
30
 
27
31
  // Sizes
@@ -29,15 +33,15 @@
29
33
  &--sm {
30
34
  --wr-badge-padding-y: 0.125rem;
31
35
  --wr-badge-padding-x: 0.375rem;
32
- --wr-badge-font-size: 0.625rem;
33
- --wr-badge-line-height: 0.875rem;
36
+ --wr-badge-font-size: 0.625rem; // 10px — intentional micro-count, below --wr-text-xs
37
+ --wr-badge-min-height: 1.125rem;
34
38
  }
35
39
 
36
40
  &--lg {
37
41
  --wr-badge-padding-y: 0.375rem;
38
42
  --wr-badge-padding-x: 0.75rem;
39
- --wr-badge-font-size: 0.875rem;
40
- --wr-badge-line-height: 1.25rem;
43
+ --wr-badge-font-size: var(--wr-text-sm);
44
+ --wr-badge-min-height: 2rem;
41
45
  }
42
46
 
43
47
  // Shape — default `rounded` keeps the small radius from the defaults
@@ -17,7 +17,7 @@
17
17
  --wr-tag-radius: var(--wr-border-radius-sm);
18
18
  --wr-tag-padding-y: 0.125rem;
19
19
  --wr-tag-padding-x: 0.5rem;
20
- --wr-tag-font-size: 0.75rem;
20
+ --wr-tag-font-size: var(--wr-text-xs);
21
21
  --wr-tag-font-weight: 500;
22
22
  --wr-tag-line-height: 1rem;
23
23
 
@@ -9,7 +9,6 @@
9
9
  display: flex;
10
10
  align-items: flex-end;
11
11
  gap: 0.5rem;
12
- padding-bottom: 0.25rem;
13
12
  border-bottom: 1px solid var(--wr-color-light);
14
13
  }
15
14
 
@@ -33,7 +32,7 @@
33
32
 
34
33
  &__bar {
35
34
  width: 100%;
36
- border-radius: var(--wr-border-radius-sm) var(--wr-border-radius-sm) 0 0;
35
+ border-radius: 2px 2px 0 0;
37
36
  transition: height var(--wr-duration-slow) var(--wr-ease-out);
38
37
  min-height: 1px;
39
38
  }
@@ -2,6 +2,8 @@
2
2
  // (set by the component from the `[separator]` input). All items except
3
3
  // the first prepend the glyph via a `::before` pseudo-element.
4
4
 
5
+ @use '../../theme/styles' as theme;
6
+
5
7
  .wr-breadcrumbs {
6
8
  --wr-breadcrumbs-separator: '/';
7
9
  --wr-breadcrumbs-gap: 0.5rem;
@@ -12,7 +14,7 @@
12
14
 
13
15
  display: block;
14
16
  font-family: var(--wr-font-family-base);
15
- font-size: 0.875rem;
17
+ font-size: var(--wr-text-sm);
16
18
  color: var(--wr-breadcrumbs-color);
17
19
 
18
20
  &__nav {
@@ -56,7 +58,7 @@
56
58
  }
57
59
 
58
60
  &:focus-visible {
59
- outline: 2px solid var(--wr-color-primary);
61
+ @include theme.focus-ring;
60
62
  outline-offset: 2px;
61
63
  }
62
64
  }
@@ -38,11 +38,11 @@
38
38
  transition: background var(--wr-transition-base);
39
39
 
40
40
  &:hover {
41
- background: rgba(var(--wr-color-light-rgb), 0.4);
41
+ background: var(--wr-color-hover);
42
42
  }
43
43
 
44
44
  &:focus-visible {
45
- outline: 2px solid var(--wr-color-primary);
45
+ @include theme.focus-ring;
46
46
  outline-offset: 2px;
47
47
  }
48
48
 
@@ -20,13 +20,13 @@
20
20
  --wr-btn-color: var(--wr-color-dark);
21
21
  --wr-btn-bg: var(--wr-color-white);
22
22
  --wr-btn-border: var(--wr-color-light);
23
- --wr-btn-radius: var(--wr-border-radius-sm);
23
+ --wr-btn-radius: var(--wr-control-radius-md);
24
24
  --wr-btn-gap: 0.375rem;
25
- --wr-btn-padding-y: 0.5rem;
26
- --wr-btn-padding-x: 1rem;
27
- --wr-btn-font-size: 0.875rem;
25
+ --wr-btn-padding-y: var(--wr-control-padding-y-md);
26
+ --wr-btn-padding-x: 0.875rem; // 14px — buttons sit a touch wider than input/select
27
+ --wr-btn-font-size: var(--wr-control-font-size-md);
28
28
  --wr-btn-font-weight: 500;
29
- --wr-btn-line-height: 1.25rem;
29
+ --wr-btn-line-height: var(--wr-control-line-height-md);
30
30
  --wr-btn-icon-size: 1rem;
31
31
 
32
32
  color: var(--wr-btn-color);
@@ -41,7 +41,7 @@
41
41
  transition: var(--wr-transition-base);
42
42
 
43
43
  &:hover {
44
- --wr-btn-bg: rgba(var(--wr-color-light-rgb), 0.4);
44
+ --wr-btn-bg: var(--wr-color-hover);
45
45
  }
46
46
 
47
47
  &:active {
@@ -74,24 +74,26 @@
74
74
  min-width: 0;
75
75
  }
76
76
 
77
- // Sizes — consistent 28 / 36 / 44 px scale (each +8px tall).
78
- // Padding, font, line-height, icon, and gap all step up together so
79
- // the proportions stay visually identical between sizes.
77
+ // Sizes — share the `--wr-control-*` contract (22 / 30 / 36 px) so button,
78
+ // input and select line up in a row. Buttons keep a slightly wider padding-x
79
+ // (12 / 14 / 18) than input/select; gap + icon step with the size.
80
80
  &--sm {
81
+ --wr-btn-radius: var(--wr-control-radius-sm);
81
82
  --wr-btn-gap: 0.25rem;
82
- --wr-btn-padding-y: 0.375rem; // 6px
83
+ --wr-btn-padding-y: var(--wr-control-padding-y-sm);
83
84
  --wr-btn-padding-x: 0.75rem; // 12px
84
- --wr-btn-font-size: 0.75rem; // 12px
85
- --wr-btn-line-height: 1rem; // 16px
85
+ --wr-btn-font-size: var(--wr-control-font-size-sm);
86
+ --wr-btn-line-height: var(--wr-control-line-height-sm);
86
87
  --wr-btn-icon-size: 0.875rem; // 14px
87
88
  }
88
89
 
89
90
  &--lg {
91
+ --wr-btn-radius: var(--wr-control-radius-lg);
90
92
  --wr-btn-gap: 0.5rem;
91
- --wr-btn-padding-y: 0.625rem; // 10px
92
- --wr-btn-padding-x: 1.5rem; // 24px
93
- --wr-btn-font-size: 1rem; // 16px
94
- --wr-btn-line-height: 1.5rem; // 24px
93
+ --wr-btn-padding-y: var(--wr-control-padding-y-lg);
94
+ --wr-btn-padding-x: 1.125rem; // 18px
95
+ --wr-btn-font-size: var(--wr-control-font-size-lg);
96
+ --wr-btn-line-height: var(--wr-control-line-height-lg);
95
97
  --wr-btn-icon-size: 1.125rem; // 18px
96
98
  }
97
99
 
@@ -200,11 +202,19 @@
200
202
  }
201
203
 
202
204
  // Solid colored segments share border and background color, so adjacent
203
- // buttons fuse into one slab — draw a subtle divider on every inner
204
- // edge. Outlined/default variants keep their own visible borders.
205
+ // buttons fuse into one slab — draw a subtle divider on the right edge of
206
+ // every non-last segment. Outlined/default variants keep their own visible
207
+ // borders. On hover/focus the segment raises its own border (z-index above
208
+ // neighbours), which would otherwise double-paint that edge — so drop the
209
+ // seam there and let the raised border own it cleanly.
205
210
  @each $name in theme.$colors {
206
- > .wr-btn--#{$name}:not(.wr-btn--outlined):not(:first-child) {
207
- box-shadow: inset 1px 0 0 rgb(0 0 0 / 20%);
211
+ > .wr-btn--#{$name}:not(.wr-btn--outlined):not(:last-child) {
212
+ box-shadow: inset -1px 0 0 rgba(var(--wr-color-black-rgb), 0.2);
213
+
214
+ &:hover,
215
+ &:focus-visible {
216
+ box-shadow: none;
217
+ }
208
218
  }
209
219
  }
210
220
  }
@@ -42,7 +42,7 @@
42
42
  color: inherit;
43
43
  text-align: center;
44
44
  font-family: inherit;
45
- font-size: 0.875rem;
45
+ font-size: var(--wr-text-sm);
46
46
  font-weight: 600;
47
47
  line-height: 1.5rem;
48
48
  border-radius: var(--wr-calendar-day-radius);
@@ -52,7 +52,7 @@
52
52
  color var(--wr-transition-base);
53
53
 
54
54
  &:hover:not(:disabled) {
55
- background: rgba(var(--wr-color-light-rgb), 0.5);
55
+ background: var(--wr-color-hover);
56
56
  }
57
57
 
58
58
  &:focus-visible {
@@ -67,13 +67,15 @@
67
67
 
68
68
  &__nav {
69
69
  appearance: none;
70
+ display: inline-flex;
71
+ align-items: center;
72
+ justify-content: center;
70
73
  background: transparent;
71
74
  border: 0;
72
75
  width: 1.75rem;
73
76
  height: 1.75rem;
74
77
  border-radius: var(--wr-calendar-day-radius);
75
78
  color: var(--wr-calendar-muted);
76
- font-size: 1.125rem;
77
79
  line-height: 1;
78
80
  cursor: pointer;
79
81
  transition:
@@ -82,7 +84,7 @@
82
84
 
83
85
  &:hover:not(:disabled) {
84
86
  color: var(--wr-calendar-color);
85
- background: rgba(var(--wr-color-light-rgb), 0.5);
87
+ background: var(--wr-color-hover);
86
88
  }
87
89
 
88
90
  &:focus-visible {
@@ -106,7 +108,7 @@
106
108
  &__weekday {
107
109
  text-align: center;
108
110
  color: var(--wr-calendar-muted);
109
- font-size: 0.6875rem;
111
+ font-size: var(--wr-text-xs);
110
112
  font-weight: 600;
111
113
  line-height: 1.5rem;
112
114
  text-transform: uppercase;
@@ -134,7 +136,7 @@
134
136
  margin: 0;
135
137
  height: var(--wr-calendar-cell-size);
136
138
  font-family: inherit;
137
- font-size: 0.8125rem;
139
+ font-size: var(--wr-text-sm);
138
140
  line-height: var(--wr-calendar-cell-size);
139
141
  color: var(--wr-calendar-color);
140
142
  border-radius: var(--wr-calendar-day-radius);
@@ -144,7 +146,7 @@
144
146
  color var(--wr-transition-base);
145
147
 
146
148
  &:hover:not(:disabled):not(.wr-calendar__day--selected) {
147
- background: rgba(var(--wr-color-light-rgb), 0.5);
149
+ background: var(--wr-color-hover);
148
150
  }
149
151
 
150
152
  &:focus-visible {
@@ -208,7 +210,7 @@
208
210
  margin: 0;
209
211
  height: 2.5rem;
210
212
  font-family: inherit;
211
- font-size: 0.8125rem;
213
+ font-size: var(--wr-text-sm);
212
214
  line-height: 2.5rem;
213
215
  color: var(--wr-calendar-color);
214
216
  border-radius: var(--wr-calendar-day-radius);
@@ -218,7 +220,7 @@
218
220
  color var(--wr-transition-base);
219
221
 
220
222
  &:hover:not(:disabled):not(.wr-calendar__chip--selected) {
221
- background: rgba(var(--wr-color-light-rgb), 0.5);
223
+ background: var(--wr-color-hover);
222
224
  }
223
225
 
224
226
  &:focus-visible {
@@ -59,6 +59,8 @@
59
59
  &__cell {
60
60
  width: var(--wr-heatmap-cell-size);
61
61
  height: var(--wr-heatmap-cell-size);
62
+ // 2px — intentional micro-radius for the tiny (~11px) cells; the control /
63
+ // border-radius tokens (5px+) would read as near-circles at this size.
62
64
  border-radius: 2px;
63
65
  transition: transform var(--wr-transition-base);
64
66
 
@@ -75,7 +75,7 @@
75
75
  align-items: center;
76
76
  justify-content: center;
77
77
  @include theme.smooth-br(var(--wr-card-radius));
78
- background: rgb(255 255 255 / 50%);
78
+ background: rgba(var(--wr-color-white-rgb), 0.5);
79
79
  pointer-events: none;
80
80
  }
81
81
 
@@ -88,7 +88,7 @@
88
88
  border: 0;
89
89
  border-radius: 50%;
90
90
  background: rgba(var(--wr-color-white-rgb), 0.55);
91
- box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.15);
91
+ box-shadow: 0 0 0 1px rgba(var(--wr-color-black-rgb), 0.15);
92
92
  cursor: pointer;
93
93
  transition:
94
94
  width var(--wr-transition-base),
@@ -2,15 +2,17 @@
2
2
  // is a horizontal row of columns where each column lists the children
3
3
  // of the previously-active node. Picking a leaf commits the path.
4
4
 
5
+ @use '../../theme/styles' as theme;
6
+
5
7
  .wr-cascader {
6
8
  --wr-cascader-color: var(--wr-color-dark);
7
9
  --wr-cascader-bg: var(--wr-color-white);
8
10
  --wr-cascader-border: var(--wr-color-light);
9
- --wr-cascader-radius: var(--wr-border-radius-base);
10
- --wr-cascader-padding-y: 0.4375rem;
11
- --wr-cascader-padding-x: 0.75rem;
12
- --wr-cascader-font-size: 0.875rem;
13
- --wr-cascader-line-height: 1.25rem;
11
+ --wr-cascader-radius: var(--wr-control-radius-md);
12
+ --wr-cascader-padding-y: var(--wr-control-padding-y-md);
13
+ --wr-cascader-padding-x: var(--wr-control-padding-x-md);
14
+ --wr-cascader-font-size: var(--wr-control-font-size-md);
15
+ --wr-cascader-line-height: var(--wr-control-line-height-md);
14
16
  --wr-cascader-col-width: 12rem;
15
17
  --wr-cascader-max-height: 16rem;
16
18
 
@@ -22,6 +24,23 @@
22
24
  --wr-cascader-bg: rgba(var(--wr-color-light-rgb), 0.35);
23
25
  }
24
26
 
27
+ // Sizes — trigger on the control contract (sm 22 / md 30 / lg 36).
28
+ &--sm {
29
+ --wr-cascader-radius: var(--wr-control-radius-sm);
30
+ --wr-cascader-padding-y: var(--wr-control-padding-y-sm);
31
+ --wr-cascader-padding-x: var(--wr-control-padding-x-sm);
32
+ --wr-cascader-font-size: var(--wr-control-font-size-sm);
33
+ --wr-cascader-line-height: var(--wr-control-line-height-sm);
34
+ }
35
+
36
+ &--lg {
37
+ --wr-cascader-radius: var(--wr-control-radius-lg);
38
+ --wr-cascader-padding-y: var(--wr-control-padding-y-lg);
39
+ --wr-cascader-padding-x: var(--wr-control-padding-x-lg);
40
+ --wr-cascader-font-size: var(--wr-control-font-size-lg);
41
+ --wr-cascader-line-height: var(--wr-control-line-height-lg);
42
+ }
43
+
25
44
  &__trigger {
26
45
  display: inline-flex;
27
46
  align-items: center;
@@ -44,9 +63,8 @@
44
63
  box-shadow var(--wr-transition-base);
45
64
 
46
65
  &:focus-visible {
47
- outline: none;
48
66
  border-color: var(--wr-color-primary);
49
- box-shadow: 0 0 0 3px rgba(var(--wr-color-primary-rgb), 0.15);
67
+ @include theme.focus-ring;
50
68
  }
51
69
 
52
70
  &:disabled {
@@ -68,7 +86,7 @@
68
86
  }
69
87
 
70
88
  &__placeholder {
71
- color: rgba(var(--wr-color-medium-rgb), 0.85);
89
+ color: var(--wr-color-text-muted);
72
90
  }
73
91
 
74
92
  &__chevron {
@@ -108,44 +126,66 @@
108
126
  }
109
127
 
110
128
  .wr-cascader-panel {
129
+ // Option sizing — mirrored from the trigger size (panel is portaled, so it
130
+ // can't inherit the host size class). Default md.
131
+ --wr-cascader-opt-font: var(--wr-control-font-size-md);
132
+ --wr-cascader-opt-py: 0.5rem;
133
+
111
134
  display: flex;
112
135
  background: var(--wr-color-white);
113
136
  border: 1px solid var(--wr-color-light);
114
137
  border-radius: var(--wr-border-radius-base);
115
138
  box-shadow: var(--wr-shadow-overlay);
116
139
  font-family: var(--wr-font-family-base);
117
- font-size: 0.875rem;
140
+ font-size: var(--wr-cascader-opt-font);
118
141
  overflow: hidden;
119
142
 
143
+ &--sm {
144
+ --wr-cascader-opt-font: var(--wr-control-font-size-sm);
145
+ --wr-cascader-opt-py: 0.375rem;
146
+ }
147
+
148
+ &--lg {
149
+ --wr-cascader-opt-font: var(--wr-control-font-size-lg);
150
+ --wr-cascader-opt-py: 0.625rem;
151
+ }
152
+
120
153
  .wr-cascader__col {
121
154
  list-style: none;
122
155
  margin: 0;
123
- padding: 0.25rem 0;
156
+ // Inset padding so options read as rounded pills, matching the select panel.
157
+ padding: 0.25rem;
124
158
  width: var(--wr-cascader-col-width, 12rem);
125
159
  max-height: var(--wr-cascader-max-height, 16rem);
126
160
  overflow-y: auto;
161
+ display: flex;
162
+ flex-direction: column;
163
+ gap: 0.125rem;
127
164
 
128
165
  + .wr-cascader__col {
129
166
  border-left: 1px solid var(--wr-color-light);
130
167
  }
131
168
  }
132
169
 
170
+ // Options mirror .wr-option (rounded pill, soft primary tint when active).
133
171
  .wr-cascader__opt {
134
172
  display: flex;
135
173
  align-items: center;
136
174
  gap: 0.5rem;
137
- padding: 0.5rem 0.75rem;
175
+ padding: var(--wr-cascader-opt-py) 0.625rem;
176
+ border-radius: var(--wr-border-radius-sm);
138
177
  color: var(--wr-color-dark);
139
178
  cursor: pointer;
140
- transition: background 0.12s ease;
179
+ transition: background var(--wr-transition-short);
141
180
 
142
181
  &:hover {
143
- background: rgba(var(--wr-color-light-rgb), 0.5);
182
+ background: var(--wr-color-hover);
144
183
  }
145
184
 
146
185
  &--active {
147
- background: rgba(var(--wr-color-primary-rgb), 0.08);
186
+ background: var(--wr-color-primary-soft);
148
187
  color: var(--wr-color-primary);
188
+ font-weight: 500;
149
189
  }
150
190
 
151
191
  &--disabled {
@@ -1,8 +1,10 @@
1
1
  @use '../../theme/styles' as theme;
2
2
 
3
3
  .wr-checkbox {
4
- --wr-checkbox-size: 1.125rem;
5
- --wr-checkbox-radius: var(--wr-border-radius-sm);
4
+ --wr-checkbox-size: 1.125rem; // md box (18px)
5
+ --wr-checkbox-radius: var(--wr-control-radius-md);
6
+ --wr-checkbox-font-size: var(--wr-text-sm);
7
+ --wr-checkbox-line-height: var(--wr-control-line-height-md);
6
8
  --wr-checkbox-bg: var(--wr-color-white);
7
9
  --wr-checkbox-border: var(--wr-color-light);
8
10
  --wr-checkbox-mark: transparent;
@@ -12,8 +14,8 @@
12
14
  vertical-align: middle;
13
15
  color: var(--wr-checkbox-color);
14
16
  font-family: var(--wr-font-family-base);
15
- font-size: 0.875rem;
16
- line-height: 1.25rem;
17
+ font-size: var(--wr-checkbox-font-size);
18
+ line-height: var(--wr-checkbox-line-height);
17
19
 
18
20
  &__label {
19
21
  display: inline-flex;
@@ -76,6 +78,21 @@
76
78
  --wr-checkbox-border: var(--wr-color-primary);
77
79
  }
78
80
 
81
+ // Sizes — box, radius, label font + line-height scale together.
82
+ &--sm {
83
+ --wr-checkbox-size: 1rem; // 16px
84
+ --wr-checkbox-radius: var(--wr-control-radius-sm);
85
+ --wr-checkbox-font-size: var(--wr-text-xs);
86
+ --wr-checkbox-line-height: var(--wr-control-line-height-sm);
87
+ }
88
+
89
+ &--lg {
90
+ --wr-checkbox-size: 1.25rem; // 20px
91
+ --wr-checkbox-radius: var(--wr-control-radius-lg);
92
+ --wr-checkbox-font-size: var(--wr-text-base);
93
+ --wr-checkbox-line-height: var(--wr-control-line-height-lg);
94
+ }
95
+
79
96
  &--checked {
80
97
  --wr-checkbox-bg: var(--wr-color-primary);
81
98
  --wr-checkbox-border: var(--wr-color-primary);