@swisspost/design-system-styles 9.0.0-next.2 → 9.0.0-next.21

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 (321) hide show
  1. package/_svg-icon-map.scss +85 -23
  2. package/basics.css +1 -1
  3. package/basics.scss +2 -6
  4. package/cargo-external.css +7 -0
  5. package/cargo-external.scss +10 -0
  6. package/cargo-internal.css +7 -0
  7. package/cargo-internal.scss +10 -0
  8. package/cargo-tokens-external.css +1 -0
  9. package/cargo-tokens-external.scss +8 -0
  10. package/cargo-tokens-internal.css +1 -0
  11. package/cargo-tokens-internal.scss +8 -0
  12. package/components/_form-check.scss +166 -0
  13. package/components/_index.scss +21 -13
  14. package/components/appstore-badge.css +1 -0
  15. package/components/appstore-badge.scss +18 -0
  16. package/components/avatar.css +1 -0
  17. package/components/avatar.scss +41 -0
  18. package/components/badge.css +1 -1
  19. package/components/badge.scss +8 -2
  20. package/components/banner.css +1 -0
  21. package/components/banner.scss +105 -0
  22. package/components/blockquote.css +1 -0
  23. package/components/blockquote.scss +46 -0
  24. package/components/breadcrumb.css +1 -1
  25. package/components/breadcrumb.scss +4 -24
  26. package/components/breakpoints.css +1 -0
  27. package/components/breakpoints.scss +17 -0
  28. package/components/button-group.css +1 -1
  29. package/components/button-group.scss +7 -6
  30. package/components/button.css +1 -1
  31. package/components/button.scss +41 -228
  32. package/components/card-control.css +1 -1
  33. package/components/card-control.scss +33 -24
  34. package/components/card.css +1 -1
  35. package/components/card.scss +72 -68
  36. package/components/checkbox.css +1 -0
  37. package/components/checkbox.scss +127 -0
  38. package/components/chip.css +1 -1
  39. package/components/chip.scss +9 -8
  40. package/components/close.css +1 -1
  41. package/components/close.scss +0 -2
  42. package/components/datatable.css +1 -3
  43. package/components/datatable.scss +22 -17
  44. package/components/datepicker.css +1 -1
  45. package/components/datepicker.scss +6 -22
  46. package/components/dialog.css +1 -1
  47. package/components/dialog.scss +26 -38
  48. package/components/dropdown.css +1 -1
  49. package/components/dropdown.scss +9 -6
  50. package/components/fonts.css +1 -1
  51. package/components/fonts.scss +7 -45
  52. package/components/form-footer.css +1 -0
  53. package/components/form-footer.scss +18 -0
  54. package/components/form-hint.css +1 -0
  55. package/components/form-hint.scss +15 -0
  56. package/components/form-input.css +1 -0
  57. package/components/form-input.scss +301 -0
  58. package/components/form-range.css +1 -1
  59. package/components/form-range.scss +9 -9
  60. package/components/form-search-input.css +1 -0
  61. package/components/form-search-input.scss +97 -0
  62. package/components/form-select.css +1 -1
  63. package/components/form-select.scss +266 -55
  64. package/components/form-textarea.css +1 -1
  65. package/components/form-textarea.scss +172 -9
  66. package/components/globals/_index.scss +1 -0
  67. package/components/globals/post-footer.css +1 -0
  68. package/components/globals/post-footer.scss +113 -0
  69. package/components/header/_mixins.scss +48 -0
  70. package/components/header/index.css +1 -0
  71. package/components/header/index.scss +131 -0
  72. package/components/icon-button.css +1 -0
  73. package/components/icon-button.scss +19 -0
  74. package/components/icon-close-button.css +1 -0
  75. package/components/icon-close-button.scss +29 -0
  76. package/components/intranet-header/_icon.scss +1 -1
  77. package/components/intranet-header/_index.scss +0 -2
  78. package/components/intranet-header/_language-chooser.scss +3 -2
  79. package/components/intranet-header/_nav-overflow.scss +2 -2
  80. package/components/intranet-header/_scaffolding.scss +1 -1
  81. package/components/intranet-header/_searchbox.scss +1 -1
  82. package/components/intranet-header/_sidebar.scss +11 -11
  83. package/components/intranet-header/_top-navigation.scss +1 -1
  84. package/components/list-check.css +1 -0
  85. package/components/list-check.scss +79 -0
  86. package/components/list-group.css +1 -1
  87. package/components/list-group.scss +72 -127
  88. package/components/modal.css +2 -2
  89. package/components/modal.scss +2 -4
  90. package/components/offcanvas.css +1 -1
  91. package/components/offcanvas.scss +0 -2
  92. package/components/pagination.css +1 -1
  93. package/components/pagination.scss +10 -9
  94. package/components/popover.css +1 -1
  95. package/components/popover.scss +0 -2
  96. package/components/product-card.css +1 -1
  97. package/components/product-card.scss +11 -5
  98. package/components/progress.scss +0 -2
  99. package/components/radio-button.css +1 -0
  100. package/components/radio-button.scss +125 -0
  101. package/components/segmented-button.css +3 -0
  102. package/components/segmented-button.scss +207 -0
  103. package/components/skiplinks.css +1 -0
  104. package/components/skiplinks.scss +20 -0
  105. package/components/spinner.scss +0 -1
  106. package/components/stepper.css +1 -1
  107. package/components/stepper.scss +40 -33
  108. package/components/subnavigation.css +1 -1
  109. package/components/subnavigation.scss +17 -14
  110. package/components/switch.css +1 -0
  111. package/components/switch.scss +212 -0
  112. package/components/tables.css +1 -1
  113. package/components/tables.scss +0 -1
  114. package/components/tabs/_tab-title.scss +16 -55
  115. package/components/tabs/_tabs-wrapper.scss +3 -13
  116. package/components/tabs/index.css +1 -1
  117. package/components/tabs/index.scss +0 -2
  118. package/components/tag.css +1 -1
  119. package/components/tag.scss +1 -2
  120. package/components/teaser.css +1 -0
  121. package/components/teaser.scss +83 -0
  122. package/components/text-highlight.css +1 -1
  123. package/components/timepicker.css +1 -1
  124. package/components/timepicker.scss +13 -16
  125. package/components/toast.css +1 -1
  126. package/components/toast.scss +19 -16
  127. package/components/tooltip.css +1 -1
  128. package/components/tooltip.scss +0 -2
  129. package/components/transitions.scss +0 -2
  130. package/components/validation.css +1 -0
  131. package/components/validation.scss +120 -0
  132. package/elements/_index.scss +7 -1
  133. package/elements/anchor.css +1 -0
  134. package/elements/anchor.scss +33 -0
  135. package/elements/body.css +1 -1
  136. package/elements/body.scss +5 -1
  137. package/elements/fieldset-legend.css +1 -1
  138. package/elements/fieldset-legend.scss +7 -3
  139. package/elements/heading.css +1 -1
  140. package/elements/heading.scss +10 -12
  141. package/elements/list-bullet.css +1 -0
  142. package/elements/list-bullet.scss +43 -0
  143. package/elements/list-description.css +1 -0
  144. package/elements/list-description.scss +5 -0
  145. package/elements/list-number.css +1 -0
  146. package/elements/list-number.scss +33 -0
  147. package/elements/paragraph.css +1 -0
  148. package/elements/paragraph.scss +17 -0
  149. package/elements/reset.css +1 -1
  150. package/elements/reset.scss +16 -7
  151. package/elements.css +1 -0
  152. package/elements.scss +1 -0
  153. package/fonts.css +1 -1
  154. package/functions/_breakpoint.scss +26 -0
  155. package/functions/_forms.scss +46 -3
  156. package/functions/_icons.scss +2 -14
  157. package/helpers/_index.scss +4 -0
  158. package/helpers/clearfix.css +1 -0
  159. package/helpers/clearfix.scss +5 -0
  160. package/helpers/focus-ring.css +1 -0
  161. package/helpers/focus-ring.scss +5 -0
  162. package/helpers/text-truncation.css +1 -0
  163. package/helpers/text-truncation.scss +5 -0
  164. package/helpers/visually-hidden.css +1 -0
  165. package/helpers/visually-hidden.scss +5 -0
  166. package/index.css +3 -3
  167. package/index.scss +2 -5
  168. package/intranet.css +3 -3
  169. package/intranet.scss +2 -2
  170. package/layout/_containers.scss +32 -0
  171. package/layout/_section.scss +133 -0
  172. package/layout/grid/_index.scss +11 -0
  173. package/layout/grid/_mixins.scss +104 -0
  174. package/layout/grid/_variables.scss +2 -0
  175. package/layout/index.css +1 -0
  176. package/layout/index.scss +3 -0
  177. package/mixins/_button.scss +19 -15
  178. package/mixins/_form-checks.scss +1 -1
  179. package/mixins/_forms.scss +42 -33
  180. package/mixins/_icon-button.scss +27 -0
  181. package/mixins/_icons.scss +22 -32
  182. package/mixins/_index.scss +3 -2
  183. package/mixins/_layout.scss +26 -0
  184. package/mixins/_list.scss +112 -0
  185. package/mixins/_media.scss +58 -2
  186. package/mixins/_notification.scss +59 -53
  187. package/mixins/_utilities.scss +46 -25
  188. package/package.json +16 -16
  189. package/palettes/_mixins.scss +74 -0
  190. package/palettes/_utilities.scss +3 -0
  191. package/palettes/_variables.scss +2 -0
  192. package/palettes/cargo-palettes.css +1 -0
  193. package/palettes/cargo-palettes.scss +3 -0
  194. package/palettes/post-palettes.css +1 -0
  195. package/palettes/post-palettes.scss +3 -0
  196. package/placeholders/_button.scss +3 -6
  197. package/placeholders/_close.scss +2 -5
  198. package/placeholders/_schemes.scss +10 -0
  199. package/post-external.css +3 -3
  200. package/post-external.scss +7 -1
  201. package/post-internal.css +3 -3
  202. package/post-internal.scss +7 -1
  203. package/post-tokens-external.css +1 -1
  204. package/post-tokens-external.scss +1 -1
  205. package/post-tokens-internal.css +1 -1
  206. package/post-tokens-internal.scss +1 -1
  207. package/themes/bootstrap/_core.scss +0 -2
  208. package/themes/bootstrap/_forms.scss +0 -4
  209. package/themes/bootstrap/_overrides-variables.scss +0 -6
  210. package/themes/bootstrap/_utilities.scss +45 -1
  211. package/tokens/_cargo-theme.scss +8 -0
  212. package/tokens/_helpers.scss +1 -0
  213. package/tokens/_palettes.scss +9 -0
  214. package/tokens/_schemes.scss +11 -0
  215. package/tokens/_utilities_formatted.scss +1 -0
  216. package/tokens/temp/_channel.scss +4 -3
  217. package/tokens/temp/_components.scss +594 -503
  218. package/tokens/temp/_core.scss +49 -37
  219. package/tokens/temp/_device.scss +210 -239
  220. package/tokens/temp/_elements.scss +11 -11
  221. package/tokens/temp/_helpers.scss +13 -0
  222. package/tokens/temp/_index.scss +6 -4
  223. package/tokens/temp/_palettes.scss +19 -0
  224. package/tokens/temp/_scheme.scss +334 -0
  225. package/tokens/temp/_theme.scss +28 -9
  226. package/tokens/temp/_utilities-formatted.scss +128 -0
  227. package/tokens/temp/_utilities.scss +34 -58
  228. package/tokens/temp/palettes/_cargo-dark.scss +19 -0
  229. package/tokens/temp/palettes/_cargo-light.scss +19 -0
  230. package/tokens/temp/palettes/_post-dark.scss +19 -0
  231. package/tokens/temp/palettes/_post-light.scss +19 -0
  232. package/utilities/_not-defined.scss +44 -0
  233. package/utilities/_variables.scss +304 -22
  234. package/utilities/index.css +1 -0
  235. package/utilities/{_index.scss → index.scss} +1 -2
  236. package/variables/_animation.scss +10 -6
  237. package/variables/_breakpoints.scss +9 -5
  238. package/variables/_color.scss +0 -61
  239. package/variables/_commons.scss +1 -0
  240. package/variables/_elevation.scss +16 -22
  241. package/variables/_grid.scss +2 -12
  242. package/variables/_icons.scss +19 -696
  243. package/variables/_index.scss +1 -1
  244. package/variables/_sizing.scss +17 -0
  245. package/variables/_spacing.scss +0 -152
  246. package/variables/_type.scss +17 -27
  247. package/variables/components/_accordion.scss +0 -47
  248. package/variables/components/_badge.scss +9 -5
  249. package/variables/components/_button.scss +61 -113
  250. package/variables/components/_card.scss +7 -4
  251. package/variables/components/_chip.scss +13 -7
  252. package/variables/components/_close.scss +14 -8
  253. package/variables/components/_code.scss +1 -1
  254. package/variables/components/_datatable.scss +12 -8
  255. package/variables/components/_dropdowns.scss +1 -1
  256. package/variables/components/_form-check.scss +9 -46
  257. package/variables/components/_forms.scss +8 -101
  258. package/variables/components/_index.scss +0 -5
  259. package/variables/components/_modal.scss +17 -12
  260. package/variables/components/_nav.scss +3 -3
  261. package/variables/components/_navbar.scss +7 -4
  262. package/variables/components/_notification.scss +48 -37
  263. package/variables/components/_pagination.scss +14 -6
  264. package/variables/components/_spinners.scss +7 -2
  265. package/variables/components/_stepper.scss +15 -10
  266. package/variables/components/_subnavigation.scss +11 -9
  267. package/variables/components/_tables.scss +11 -6
  268. package/variables/components/_tag.scss +10 -7
  269. package/components/accordion.css +0 -1
  270. package/components/accordion.scss +0 -100
  271. package/components/alert.css +0 -1
  272. package/components/alert.scss +0 -137
  273. package/components/carousel.css +0 -1
  274. package/components/carousel.scss +0 -178
  275. package/components/elevation.css +0 -1
  276. package/components/elevation.scss +0 -8
  277. package/components/floating-label.css +0 -1
  278. package/components/floating-label.scss +0 -353
  279. package/components/form-check.css +0 -1
  280. package/components/form-check.scss +0 -297
  281. package/components/form-validation.css +0 -1
  282. package/components/form-validation.scss +0 -148
  283. package/components/forms.css +0 -1
  284. package/components/forms.scss +0 -215
  285. package/components/grid.css +0 -1
  286. package/components/grid.scss +0 -170
  287. package/components/icons.css +0 -1
  288. package/components/icons.scss +0 -60
  289. package/components/sizing.css +0 -1
  290. package/components/sizing.scss +0 -85
  291. package/components/topic-teaser.css +0 -1
  292. package/components/topic-teaser.scss +0 -196
  293. package/layouts/portal/_grid.scss +0 -85
  294. package/layouts/portal/_index.scss +0 -2
  295. package/layouts/portal/_subnavigation.scss +0 -5
  296. package/layouts/portal/_variables.scss +0 -8
  297. package/mixins/_accordion.scss +0 -16
  298. package/mixins/_elevation.scss +0 -6
  299. package/mixins/_focus.scss +0 -9
  300. package/mixins/_form-validation.scss +0 -5
  301. package/mixins/_size.scss +0 -65
  302. package/placeholders/_modes.scss +0 -10
  303. package/themes/bootstrap/_carousel.scss +0 -2
  304. package/themes/bootstrap/_containers.scss +0 -2
  305. package/themes/bootstrap/_grid.scss +0 -2
  306. package/themes/bootstrap/_overrides-mixins.scss +0 -33
  307. package/themes/bootstrap/forms/_floating-labels.scss +0 -2
  308. package/themes/bootstrap/forms/_form-control.scss +0 -2
  309. package/themes/bootstrap/forms/_form-select.scss +0 -2
  310. package/themes/bootstrap/forms/_form-text.scss +0 -2
  311. package/tokens/_modes.scss +0 -11
  312. package/tokens/temp/_mode.scss +0 -299
  313. package/utilities/_functions.scss +0 -35
  314. package/utilities/temp/_legacy.scss +0 -95
  315. package/variables/_options.scss +0 -5
  316. package/variables/components/_carousel.scss +0 -27
  317. package/variables/components/_figures.scss +0 -6
  318. package/variables/components/_form-select.scss +0 -13
  319. package/variables/components/_form-validation.scss +0 -38
  320. package/variables/components/_list-group.scss +0 -29
  321. package/variables/components/_topic-teaser.scss +0 -32
@@ -1,97 +1,308 @@
1
- @forward './../variables/options';
2
-
3
- @use './../themes/bootstrap/core' as b;
4
- @use './../themes/bootstrap/forms/form-select' as bffs;
5
- @use './../mixins/forms' as forms-mixins;
6
1
  @use './../mixins/utilities';
2
+ @use './../functions/forms' as forms-fx;
3
+ @use './../mixins/forms' as forms-mx;
4
+ @use './../functions/tokens';
5
+ @use './../tokens/components';
6
+ @use './../tokens/elements';
7
7
 
8
- @use './../variables/commons';
9
- @use './../variables/components/forms';
10
- @use './../variables/components/form-select' as form-select;
11
-
12
- .form-select-wrapper {
13
- @include utilities.focus-style() {
14
- border-radius: commons.$border-radius;
15
- }
16
- }
17
-
18
- :not(.form-select-wrapper) > {
19
- .form-select {
20
- @include utilities.focus-style() {
21
- border-radius: commons.$border-radius;
22
- }
23
- }
24
- }
8
+ tokens.$default-map: components.$post-select;
25
9
 
26
10
  .form-select {
27
- --form-select-indicator: #{form-select.$form-select-indicator};
11
+ display: block;
12
+ width: 100%;
13
+ font-family: inherit;
14
+ appearance: none;
15
+ position: relative;
16
+ min-height: tokens.get('select-sizing-height');
17
+ padding-block: tokens.get('select-standalone-padding-block');
18
+ padding-inline-start: tokens.get('select-padding-inline-start');
19
+ padding-inline-end: tokens.get('select-padding-inline-end');
20
+ background-color: tokens.get('select-color-enabled-bg');
21
+ background-repeat: no-repeat;
22
+ background-size: tokens.get('select-sizing-icon');
23
+ background-position: center right tokens.get('select-icon-position-inline-end');
24
+ border-width: tokens.get('select-border-width');
25
+ border-color: tokens.get('select-color-enabled-border');
26
+ border-radius: tokens.get('select-border-radius');
27
+ color: tokens.get('select-color-enabled-fg');
28
+ background-image: forms-fx.select-arrow-icon('enabled');
28
29
 
29
- &:focus {
30
- box-shadow: none; // Override bootstrap
30
+ &:disabled {
31
+ opacity: 1;
32
+ color: tokens.get('select-color-disabled-fg');
33
+ background-color: tokens.get('select-color-disabled-bg');
34
+ border-color: tokens.get('select-color-disabled-border');
35
+ border-style: tokens.get('select-border-style-disabled');
31
36
 
32
- @include utilities.high-contrast-mode {
33
- border-color: FieldText !important;
37
+ &:not([multiple]) {
38
+ background-image: forms-fx.select-arrow-icon('disabled');
34
39
  }
35
40
  }
36
41
 
37
42
  &:not(:disabled) {
38
- &:hover,
39
43
  &:focus {
44
+ background-color: tokens.get('select-color-selected-bg');
45
+ color: tokens.get('select-color-selected-fg');
46
+ border-color: tokens.get('select-color-selected-border');
47
+ background-image: forms-fx.select-arrow-icon('selected');
48
+
49
+ @include utilities.focus-style;
50
+
40
51
  @include utilities.high-contrast-mode {
41
52
  border-color: FieldText;
42
53
  }
54
+
55
+ @include utilities.high-contrast-mode-dark() {
56
+ background-image: forms-fx.select-arrow-icon('selected-hcm', $mode: dark);
57
+ }
43
58
  }
44
59
 
45
60
  &:hover {
61
+ background-color: tokens.get('select-color-hover-bg');
62
+ color: tokens.get('select-color-enabled-fg');
63
+ border-color: tokens.get('select-color-hover-border');
64
+
65
+ &:not([multiple]) {
66
+ background-image: forms-fx.select-arrow-icon('hover');
67
+
68
+ @include utilities.high-contrast-mode-light() {
69
+ background-image: forms-fx.select-arrow-icon('hover-hcm', $mode: light);
70
+ }
71
+
72
+ @include utilities.high-contrast-mode-dark() {
73
+ background-image: forms-fx.select-arrow-icon('hover-hcm', $mode: dark);
74
+ }
75
+ }
76
+
46
77
  @include utilities.high-contrast-mode {
47
78
  border-color: Highlight;
48
79
  }
49
80
  }
50
81
  }
51
82
 
52
- @include utilities.disabled-style {
53
- ~ .form-text {
54
- color: var(--post-gray-60);
83
+ @include utilities.high-contrast-mode() {
84
+ background-color: Field;
85
+ border-color: FieldText;
86
+ color: FieldText;
87
+
88
+ &:focus-visible {
89
+ color: FieldText;
55
90
  }
56
91
  }
57
92
 
58
- &:not([multiple]) {
59
- &:disabled {
60
- background-image: b.escape-svg(form-select.$form-select-indicator-disabled),
61
- var(--form-select-indicator), var(--bs-form-select-bg-icon, none);
93
+ @include utilities.high-contrast-mode-light() {
94
+ background-image: forms-fx.select-arrow-icon('enabled-hcm', $mode: light);
95
+ }
96
+
97
+ @include utilities.high-contrast-mode-dark() {
98
+ background-image: forms-fx.select-arrow-icon('enabled-hcm', $mode: dark);
99
+ }
100
+
101
+ &.is-valid,
102
+ &.is-invalid {
103
+ &:not(:disabled) {
104
+ padding-inline-end: tokens.get('select-label-validated-padding-inline-end');
105
+ background-position:
106
+ center right tokens.get('select-icon-position-inline-end'),
107
+ center right tokens.get('select-validation-icon-position-inline-end');
62
108
  }
63
109
  }
64
110
 
65
- @include utilities.high-contrast-mode() {
66
- --form-select-indicator: #{b.escape-svg(form-select.$form-select-indicator-hcm-dark)};
67
- background-image: b.escape-svg(form-select.$form-select-indicator-hcm-dark);
111
+ &.is-valid:not(:disabled) {
112
+ background-image: forms-fx.select-arrow-icon('enabled'), forms-fx.success-icon();
68
113
 
69
- @media (prefers-color-scheme: light) {
70
- --form-select-indicator: #{b.escape-svg(form-select.$form-select-indicator-hcm-light)};
71
- background-image: b.escape-svg(form-select.$form-select-indicator-hcm-light);
114
+ &:focus {
115
+ background-image: forms-fx.select-arrow-icon('selected'), forms-fx.success-icon();
72
116
  }
73
117
 
74
- background-color: Field;
75
- border-color: FieldText;
76
- color: FieldText;
118
+ &:hover {
119
+ &:not([multiple]) {
120
+ background-image: forms-fx.select-arrow-icon('hover'), forms-fx.success-icon();
121
+ }
122
+ }
77
123
 
78
- &:focus-visible {
79
- color: FieldText;
124
+ &,
125
+ &:hover:not([multiple]),
126
+ &:focus {
127
+ @include utilities.high-contrast-mode-dark() {
128
+ background-image: forms-fx.select-arrow-icon('enabled'), forms-fx.success-icon(#e0e0e0);
129
+ }
130
+
131
+ @include utilities.high-contrast-mode-light() {
132
+ background-image: forms-fx.select-arrow-icon('enabled'), forms-fx.success-icon(#333);
133
+ }
80
134
  }
81
135
  }
136
+
137
+ &.is-invalid:not(:disabled) {
138
+ background-image: forms-fx.select-arrow-icon('enabled'), forms-fx.warning-icon();
139
+
140
+ &:focus {
141
+ background-image: forms-fx.select-arrow-icon('selected'), forms-fx.warning-icon();
142
+ }
143
+
144
+ &:hover {
145
+ &:not([multiple]) {
146
+ background-image: forms-fx.select-arrow-icon('hover'), forms-fx.warning-icon();
147
+ }
148
+ }
149
+
150
+ &,
151
+ &:hover:not([multiple]),
152
+ &:focus {
153
+ @include utilities.high-contrast-mode-dark() {
154
+ background-image: forms-fx.select-arrow-icon('enabled'), forms-fx.warning-icon(#e0e0e0);
155
+ }
156
+
157
+ @include utilities.high-contrast-mode-light() {
158
+ background-image: forms-fx.select-arrow-icon('enabled'), forms-fx.warning-icon(#333);
159
+ }
160
+ }
161
+ }
162
+
163
+ &[multiple],
164
+ &[size]:not([size='1']) {
165
+ background-image: none;
166
+
167
+ &.is-valid,
168
+ &.is-invalid {
169
+ background-position: center right tokens.get('select-validation-icon-position-inline-end');
170
+ }
171
+
172
+ @include forms-mx.validation-icons();
173
+ }
82
174
  }
83
175
 
84
- .form-select-rg {
85
- @include forms-mixins.form-rg;
86
- background-size: forms.$form-bg-size; // Set arrow size. Duplicated rule in form-validation for is-valid/is-invalid icon.
176
+ .form-floating {
177
+ position: relative;
178
+
179
+ > .form-select {
180
+ padding-block-start: tokens.get('select-padding-block-start');
181
+ padding-block-end: tokens.get('select-padding-block-end');
182
+
183
+ ~ label {
184
+ position: absolute;
185
+ z-index: 2;
186
+ text-align: start;
187
+ pointer-events: none;
188
+ display: block;
189
+ left: tokens.get('select-border-width');
190
+ top: tokens.get('select-border-width');
191
+ font-size: tokens.get('select-label-filled-font-size');
192
+ padding-inline-start: calc(
193
+ tokens.get('select-label-empty-padding-inline-start') - tokens.get('select-border-width')
194
+ );
195
+ padding-inline-end: 0;
196
+ padding-block-start: tokens.get('select-label-filled-padding-block-start');
197
+ border-radius: tokens.get('select-border-radius');
198
+ color: tokens.get('select-color-enabled-fg');
199
+ max-width: calc(
200
+ 100% - (#{tokens.get('select-border-width')} * 2) - tokens.get(
201
+ 'select-label-empty-padding-inline-end'
202
+ )
203
+ );
204
+ background-color: tokens.get('select-color-enabled-bg');
205
+ white-space: nowrap;
206
+ overflow: hidden;
207
+ text-overflow: ellipsis;
208
+ transition:
209
+ font-size 0.25s ease-in-out,
210
+ padding-block-start 0.25s ease-in-out;
211
+ }
212
+
213
+ &:not(:disabled):hover ~ label {
214
+ color: tokens.get('select-color-hover-fg');
215
+ background-color: tokens.get('select-color-hover-bg');
216
+ }
217
+
218
+ &:disabled ~ label {
219
+ color: tokens.get('select-color-disabled-fg');
220
+ background-color: tokens.get('select-color-disabled-bg');
221
+ }
222
+
223
+ &:empty,
224
+ &.form-select-empty {
225
+ ~ label {
226
+ padding-block-start: tokens.get('select-label-empty-padding-block-start');
227
+ font-size: unset;
228
+ }
229
+ }
230
+
231
+ &[multiple] {
232
+ padding-block-end: 0;
233
+ height: auto;
234
+
235
+ option {
236
+ color: tokens.get('select-color-enabled-fg');
237
+ }
238
+
239
+ ~ label {
240
+ // Add some distance on the right to leave space for the scrollbar
241
+ width: calc(100% - (#{tokens.get('select-padding-inline-end')} * 2));
242
+ }
243
+
244
+ &:disabled option {
245
+ color: tokens.get('select-color-disabled-fg');
246
+ }
247
+
248
+ &:empty {
249
+ ~ label {
250
+ padding-block: tokens.get('select-standalone-padding-block');
251
+ width: calc(
252
+ 100% - (#{tokens.get('select-border-width')} * 2) - #{tokens.get(
253
+ 'select-label-empty-padding-inline-start'
254
+ )}
255
+ );
256
+ }
257
+ }
258
+ }
259
+ }
87
260
  }
88
261
 
89
- .form-select-sm {
90
- @include forms-mixins.form-sm;
91
- background-size: forms.$form-bg-size-sm; // Set arrow size. Duplicated rule in form-validation for is-valid/is-invalid icon.
262
+ [data-color-scheme='dark'] {
263
+ .form-select:not([multiple]) {
264
+ background-image: forms-fx.select-arrow-icon('enabled', 'dark');
265
+
266
+ &:disabled {
267
+ background-image: forms-fx.select-arrow-icon('disabled', 'dark');
268
+ }
269
+
270
+ &:not(:disabled) {
271
+ &:focus {
272
+ background-image: forms-fx.select-arrow-icon('selected', 'dark');
273
+ }
274
+
275
+ &:hover {
276
+ background-image: forms-fx.select-arrow-icon('hover', 'dark');
277
+ }
278
+ }
279
+
280
+ &.is-valid:not(:disabled) {
281
+ background-image: forms-fx.select-arrow-icon('enabled', 'dark'), forms-fx.success-icon();
282
+
283
+ &:focus {
284
+ background-image: forms-fx.select-arrow-icon('selected', 'dark'), forms-fx.success-icon();
285
+ }
286
+
287
+ &:hover {
288
+ background-image: forms-fx.select-arrow-icon('hover', 'dark'), forms-fx.success-icon();
289
+ }
290
+ }
291
+
292
+ &.is-invalid:not(:disabled) {
293
+ background-image: forms-fx.select-arrow-icon('enabled', 'dark'), forms-fx.warning-icon();
294
+
295
+ &:focus {
296
+ background-image: forms-fx.select-arrow-icon('selected', 'dark'), forms-fx.warning-icon();
297
+ }
298
+
299
+ &:hover {
300
+ background-image: forms-fx.select-arrow-icon('hover', 'dark'), forms-fx.warning-icon();
301
+ }
302
+ }
303
+ }
92
304
  }
93
305
 
94
- .form-select-lg {
95
- @include forms-mixins.form-lg;
96
- background-size: forms.$form-bg-size; // Set arrow size. Duplicated rule in form-validation for is-valid/is-invalid icon.
306
+ .no-toggle-arrow::after {
307
+ display: none !important;
97
308
  }
@@ -1 +1 @@
1
- textarea.form-control::-webkit-resizer{background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 15 15' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='hsl(0, 0%, 20%)' d='M0 12H3V15H0V12Z'/%3E%3Cpath fill='hsl(0, 0%, 20%)' d='M6 12H9V15H6V12Z'/%3E%3Cpath fill='hsl(0, 0%, 20%)' d='M6 6H9V9H6V6Z'/%3E%3Cpath fill='hsl(0, 0%, 20%)' d='M12 6H15V9H12V6Z'/%3E%3Cpath fill='hsl(0, 0%, 20%)' d='M12 0H15V3H12V0Z'/%3E%3Cpath fill='hsl(0, 0%, 20%)' d='M12 12H15V15H12V12Z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-size:75%}textarea.form-control[disabled]::-webkit-resizer{background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 15 15' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='var(--post-gray-40)' d='M0 12H3V15H0V12Z'/%3E%3Cpath fill='var(--post-gray-40)' d='M6 12H9V15H6V12Z'/%3E%3Cpath fill='var(--post-gray-40)' d='M6 6H9V9H6V6Z'/%3E%3Cpath fill='var(--post-gray-40)' d='M12 6H15V9H12V6Z'/%3E%3Cpath fill='var(--post-gray-40)' d='M12 0H15V3H12V0Z'/%3E%3Cpath fill='var(--post-gray-40)' d='M12 12H15V15H12V12Z'/%3E%3C/svg%3E")}
1
+ textarea.form-control{display:block;width:100%;appearance:none;background-clip:padding-box;border:var(--post-device-border-width-default) var(--post-core-border-style-solid) var(--post-scheme-color-interactive-input-enabled-border);position:relative;border-radius:var(--post-device-border-radius-1);background-color:var(--post-scheme-color-interactive-input-enabled-bg);color:var(--post-scheme-color-interactive-input-enabled-fg);padding-inline-start:var(--post-device-spacing-padding-inline-1);padding-inline-end:var(--post-core-dimension-26);padding-block:var(--post-device-spacing-padding-3);min-height:var(--post-core-dimension-88);resize:vertical}textarea.form-control{outline-offset:var(--post-device-spacing-padding-2) !important;outline:var(--post-scheme-color-interactive-focus-stroke) none var(--post-device-border-width-focus) !important}textarea.form-control:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-style:var(--post-core-border-style-solid) !important}@media(forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){textarea.form-control:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-color:Highlight !important}}@supports not selector(:has(:focus-visible)){textarea.form-control:is(:focus-visible,:focus-within,.pretend-focus){outline-style:var(--post-core-border-style-solid) !important}@media(forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){textarea.form-control:is(:focus-visible,:focus-within,.pretend-focus){outline-color:Highlight !important}}}textarea.form-control::-webkit-resizer{background-image:url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" width="25" height="24" viewBox="0 0 25 24" fill="none"%3E%3Cg clip-path="url(%23clip0_7846_3191)"%3E%3Cpath d="M6.5 18H9.5V21H6.5V18Z" fill="%23050400"/%3E%3Cpath d="M12.5 18H15.5V21H12.5V18Z" fill="%23050400"/%3E%3Cpath d="M12.5 12H15.5V15H12.5V12Z" fill="%23050400"/%3E%3Cpath d="M18.5 12H21.5V15H18.5V12Z" fill="%23050400"/%3E%3Cpath d="M18.5 6H21.5V9H18.5V6Z" fill="%23050400"/%3E%3Cpath d="M18.5 18H21.5V21H18.5V18Z" fill="%23050400"/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id="clip0_7846_3191"%3E%3Crect width="24" height="24" fill="white" transform="translate(0.5)"/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E');background-repeat:no-repeat;background-size:100%}textarea.form-control[disabled]::-webkit-resizer{background-image:url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" width="25" height="24" viewBox="0 0 25 24" fill="none"%3E%3Cg clip-path="url(%23clip0_7846_3191)"%3E%3Cpath d="M6.5 18H9.5V21H6.5V18Z" fill="%23696864"/%3E%3Cpath d="M12.5 18H15.5V21H12.5V18Z" fill="%23696864"/%3E%3Cpath d="M12.5 12H15.5V15H12.5V12Z" fill="%23696864"/%3E%3Cpath d="M18.5 12H21.5V15H18.5V12Z" fill="%23696864"/%3E%3Cpath d="M18.5 6H21.5V9H18.5V6Z" fill="%23696864"/%3E%3Cpath d="M18.5 18H21.5V21H18.5V18Z" fill="%23696864"/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id="clip0_7846_3191"%3E%3Crect width="24" height="24" fill="white" transform="translate(0.5)"/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E');background-repeat:no-repeat;background-size:100%}@media(forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){textarea.form-control:focus{border-color:FieldText !important}}@media(forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){textarea.form-control:not(:disabled):hover,textarea.form-control:not(:disabled):focus{border-color:FieldText}}textarea.form-control:not(:disabled):hover{border-color:var(--post-scheme-color-interactive-input-hover-border);background-color:var(--post-scheme-color-interactive-input-hover-bg)}@media(forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){textarea.form-control:not(:disabled):hover{border-color:Highlight}}textarea.form-control[readonly]:not(:disabled){border-color:var(--post-scheme-color-interactive-input-enabled-border);background-color:var(--post-scheme-color-interactive-input-enabled-bg)}textarea.form-control::placeholder{color:var(--post-scheme-color-interactive-primary-enabled-fg2);opacity:1}textarea.form-control:disabled{color:var(--post-scheme-color-interactive-input-disabled-fg);background-color:var(--post-scheme-color-interactive-input-disabled-bg);border-color:var(--post-scheme-color-interactive-input-disabled-border);border-style:var(--post-core-border-style-dash);opacity:1}textarea.form-control.is-valid:not(:disabled),textarea.form-control.is-invalid:not(:disabled){background-size:var(--post-device-sizing-notification-1);background-position:top var(--post-core-dimension-12) right var(--post-core-dimension-28);background-repeat:no-repeat;padding-inline-end:var(--post-core-dimension-56)}textarea.form-control.is-valid:not(:disabled){background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Cpath opacity='1' fill='%23107800' d='M16 0C7.18 0 0 7.18 0 16C0 24.82 7.18 32 16 32C24.82 32 32 24.82 32 16C32 7.18 24.82 0 16 0ZM23.52 10.18L15.26 23.19L8.21 17.27C7.79 16.92 7.73 16.28 8.09 15.86C8.44 15.44 9.07 15.38 9.5 15.74L14.8 20.19L21.84 9.1C22.14 8.63 22.76 8.49 23.22 8.79C23.69 9.09 23.82 9.7 23.53 10.17L23.52 10.18Z'%3E%3C/path%3E%3C/svg%3E")}@media(forced-colors: active)and (prefers-color-scheme: dark),(-ms-high-contrast: white-on-black){textarea.form-control.is-valid:not(:disabled){background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Cpath opacity='1' fill='%23e0e0e0' d='M16 0C7.18 0 0 7.18 0 16C0 24.82 7.18 32 16 32C24.82 32 32 24.82 32 16C32 7.18 24.82 0 16 0ZM23.52 10.18L15.26 23.19L8.21 17.27C7.79 16.92 7.73 16.28 8.09 15.86C8.44 15.44 9.07 15.38 9.5 15.74L14.8 20.19L21.84 9.1C22.14 8.63 22.76 8.49 23.22 8.79C23.69 9.09 23.82 9.7 23.53 10.17L23.52 10.18Z'%3E%3C/path%3E%3C/svg%3E")}}@media(forced-colors: active)and (prefers-color-scheme: light),(-ms-high-contrast: black-on-white){textarea.form-control.is-valid:not(:disabled){background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Cpath opacity='1' fill='%23333333' d='M16 0C7.18 0 0 7.18 0 16C0 24.82 7.18 32 16 32C24.82 32 32 24.82 32 16C32 7.18 24.82 0 16 0ZM23.52 10.18L15.26 23.19L8.21 17.27C7.79 16.92 7.73 16.28 8.09 15.86C8.44 15.44 9.07 15.38 9.5 15.74L14.8 20.19L21.84 9.1C22.14 8.63 22.76 8.49 23.22 8.79C23.69 9.09 23.82 9.7 23.53 10.17L23.52 10.18Z'%3E%3C/path%3E%3C/svg%3E")}}textarea.form-control.is-invalid:not(:disabled){background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Cpath opacity='1' fill='%23b20000' d='M16 0C7.18 0 0 7.18 0 16C0 24.82 7.18 32 16 32C24.82 32 32 24.82 32 16C32 7.18 24.82 0 16 0ZM14.11 6.96H18.25V11.47L17.47 17.49H14.87L14.11 11.47V6.96ZM16.18 23.63C14.73 23.63 13.79 22.62 13.79 21.4C13.79 20.18 14.73 19.19 16.18 19.19C17.63 19.19 18.57 20.23 18.57 21.4C18.57 22.57 17.63 23.63 16.18 23.63Z'%3E%3C/path%3E%3C/svg%3E")}@media(forced-colors: active)and (prefers-color-scheme: dark),(-ms-high-contrast: white-on-black){textarea.form-control.is-invalid:not(:disabled){background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Cpath opacity='1' fill='%23e0e0e0' d='M16 0C7.18 0 0 7.18 0 16C0 24.82 7.18 32 16 32C24.82 32 32 24.82 32 16C32 7.18 24.82 0 16 0ZM14.11 6.96H18.25V11.47L17.47 17.49H14.87L14.11 11.47V6.96ZM16.18 23.63C14.73 23.63 13.79 22.62 13.79 21.4C13.79 20.18 14.73 19.19 16.18 19.19C17.63 19.19 18.57 20.23 18.57 21.4C18.57 22.57 17.63 23.63 16.18 23.63Z'%3E%3C/path%3E%3C/svg%3E")}}@media(forced-colors: active)and (prefers-color-scheme: light),(-ms-high-contrast: black-on-white){textarea.form-control.is-invalid:not(:disabled){background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Cpath opacity='1' fill='%23333333' d='M16 0C7.18 0 0 7.18 0 16C0 24.82 7.18 32 16 32C24.82 32 32 24.82 32 16C32 7.18 24.82 0 16 0ZM14.11 6.96H18.25V11.47L17.47 17.49H14.87L14.11 11.47V6.96ZM16.18 23.63C14.73 23.63 13.79 22.62 13.79 21.4C13.79 20.18 14.73 19.19 16.18 19.19C17.63 19.19 18.57 20.23 18.57 21.4C18.57 22.57 17.63 23.63 16.18 23.63Z'%3E%3C/path%3E%3C/svg%3E")}}.form-label:has(+textarea.form-control[disabled]){color:var(--post-scheme-color-interactive-input-disabled-fg)}.form-floating{position:relative}.form-floating>textarea~label{position:absolute;z-index:2;text-align:start;pointer-events:none;display:block;top:var(--post-device-border-width-default);left:var(--post-device-border-width-default);margin:0;padding-inline-start:calc(var(--post-device-spacing-padding-5) - var(--post-device-border-width-default));padding-inline-end:0;padding-block-start:var(--post-device-spacing-padding-block-27);width:calc(100% - var(--post-device-border-width-default)*2 - var(--post-core-dimension-28));border:0;color:var(--post-scheme-color-interactive-input-enabled-fg);height:auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:padding-block-start .2s ease-in-out,font-size .2s ease-in-out;background-color:var(--post-scheme-color-interactive-input-enabled-bg)}.form-floating>textarea.form-control{padding-block-start:var(--post-device-spacing-padding-block-29);padding-block-end:var(--post-device-spacing-padding-3)}.form-floating>textarea.form-control::placeholder{color:rgba(0,0,0,0)}.form-floating>textarea.form-control:focus~label,.form-floating>textarea.form-control:not(:placeholder-shown)~label{font-size:var(--post-device-font-size-10);padding-block-start:var(--post-device-spacing-padding-block-30)}.form-floating>textarea.form-control::placeholder{opacity:0}.form-floating>textarea.form-control::input-placeholder{opacity:0}.form-floating>textarea.form-control:focus::placeholder{color:var(--post-scheme-color-interactive-primary-enabled-fg2);opacity:1}.form-floating>textarea.form-control:focus::input-placeholder{color:var(--post-scheme-color-interactive-primary-enabled-fg2);opacity:1}.form-floating>textarea.form-control:disabled~label{color:var(--post-scheme-color-interactive-input-disabled-fg);background-color:var(--post-scheme-color-interactive-input-disabled-bg)}.form-floating>textarea.form-control:not(:disabled):hover~label{color:var(--post-scheme-color-interactive-input-hover-fg);background-color:var(--post-scheme-color-interactive-input-hover-bg)}.form-floating>textarea.form-control:is(.is-valid,.is-invalid)~label{width:calc(100% - var(--post-device-border-width-default)*2 - var(--post-core-dimension-58))}.form-floating>textarea:disabled~label{color:var(--post-scheme-color-interactive-input-disabled-fg);background-color:var(--post-scheme-color-interactive-input-disabled-bg)}
@@ -1,17 +1,180 @@
1
- @use './../variables/spacing';
1
+ @use './../mixins/utilities';
2
2
  @use './../variables/components/forms';
3
- @use './../functions/sizing';
3
+ @use './../mixins/forms' as forms-mx;
4
+
5
+ @use './../functions/tokens';
6
+ @use './../tokens/components';
7
+ @use './../tokens/elements';
8
+
9
+ tokens.$default-map: components.$post-text-area;
4
10
 
5
11
  textarea.form-control {
6
- &::-webkit-resizer {
7
- background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 15 15' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='#{forms.$input-border-color}' d='M0 12H3V15H0V12Z'/%3E%3Cpath fill='#{forms.$input-border-color}' d='M6 12H9V15H6V12Z'/%3E%3Cpath fill='#{forms.$input-border-color}' d='M6 6H9V9H6V6Z'/%3E%3Cpath fill='#{forms.$input-border-color}' d='M12 6H15V9H12V6Z'/%3E%3Cpath fill='#{forms.$input-border-color}' d='M12 0H15V3H12V0Z'/%3E%3Cpath fill='#{forms.$input-border-color}' d='M12 12H15V15H12V12Z'/%3E%3C/svg%3E");
8
- background-repeat: no-repeat;
9
- background-size: 75%;
10
- }
12
+ display: block;
13
+ width: 100%;
14
+ appearance: none; // Fix appearance for date inputs in Safari
15
+ background-clip: padding-box;
16
+ border: tokens.get('textarea-border-width') tokens.get('textarea-border-style-enabled')
17
+ tokens.get('textarea-enabled-border');
18
+ position: relative;
19
+ border-radius: tokens.get('textarea-border-radius');
20
+ background-color: tokens.get('textarea-enabled-bg');
21
+ color: tokens.get('textarea-enabled-fg');
22
+ padding-inline-start: tokens.get('textarea-padding-inline-start');
23
+ padding-inline-end: tokens.get('textarea-padding-inline-end');
24
+ padding-block: tokens.get('textarea-standalone-padding-block');
25
+ min-height: tokens.get('textarea-sizing-min-height');
26
+ resize: vertical;
27
+ @include utilities.focus-style;
28
+ @include forms-mx.textarea-resizer-svg(#050400);
11
29
 
12
30
  &[disabled] {
13
- &::-webkit-resizer {
14
- background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 15 15' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='#{forms.$input-disabled-border-color}' d='M0 12H3V15H0V12Z'/%3E%3Cpath fill='#{forms.$input-disabled-border-color}' d='M6 12H9V15H6V12Z'/%3E%3Cpath fill='#{forms.$input-disabled-border-color}' d='M6 6H9V9H6V6Z'/%3E%3Cpath fill='#{forms.$input-disabled-border-color}' d='M12 6H15V9H12V6Z'/%3E%3Cpath fill='#{forms.$input-disabled-border-color}' d='M12 0H15V3H12V0Z'/%3E%3Cpath fill='#{forms.$input-disabled-border-color}' d='M12 12H15V15H12V12Z'/%3E%3C/svg%3E");
31
+ @include forms-mx.textarea-resizer-svg(#696864);
32
+ }
33
+
34
+ &:focus {
35
+ @include utilities.high-contrast-mode {
36
+ border-color: FieldText !important; // On blink browser valid and invalid border colors are converted to Highlight color
37
+ }
38
+ }
39
+
40
+ &:not(:disabled) {
41
+ &:hover,
42
+ &:focus {
43
+ @include utilities.high-contrast-mode {
44
+ border-color: FieldText;
45
+ }
46
+ }
47
+
48
+ &:hover {
49
+ border-color: tokens.get('textarea-hover-border');
50
+ background-color: tokens.get('textarea-hover-bg');
51
+
52
+ @include utilities.high-contrast-mode {
53
+ border-color: Highlight;
54
+ }
15
55
  }
16
56
  }
57
+
58
+ &[readonly]:not(:disabled) {
59
+ border-color: tokens.get('textarea-enabled-border');
60
+ background-color: tokens.get('textarea-enabled-bg');
61
+ }
62
+
63
+ &::placeholder {
64
+ color: tokens.get('textarea-placeholder-fg');
65
+ opacity: 1;
66
+ }
67
+
68
+ &:disabled {
69
+ color: tokens.get('textarea-disabled-fg');
70
+ background-color: tokens.get('textarea-disabled-bg');
71
+ border-color: tokens.get('textarea-disabled-border');
72
+ border-style: tokens.get('textarea-border-style-disabled');
73
+ opacity: 1;
74
+ }
75
+
76
+ &.is-valid,
77
+ &.is-invalid {
78
+ &:not(:disabled) {
79
+ background-size: tokens.get('textarea-sizing-icon');
80
+ background-position: top tokens.get('textarea-position-block-start-validation') right
81
+ tokens.get('textarea-position-inline-end-validation');
82
+ background-repeat: no-repeat;
83
+ padding-inline-end: tokens.get('textarea-validated-padding-inline-end');
84
+ }
85
+ }
86
+
87
+ @include forms-mx.validation-icons;
88
+ }
89
+
90
+ .form-label:has(+ textarea.form-control[disabled]) {
91
+ color: tokens.get('textarea-disabled-fg');
92
+ }
93
+
94
+ .form-floating {
95
+ position: relative;
96
+
97
+ > textarea ~ label {
98
+ position: absolute;
99
+ z-index: 2;
100
+ text-align: start;
101
+ pointer-events: none;
102
+ display: block;
103
+ top: tokens.get('textarea-border-width');
104
+ left: tokens.get('textarea-border-width');
105
+ margin: 0;
106
+ padding-inline-start: calc(
107
+ tokens.get('textarea-label-padding-inline-start') - tokens.get('textarea-border-width')
108
+ );
109
+ padding-inline-end: 0;
110
+ padding-block-start: tokens.get('textarea-label-padding-block-start');
111
+ width: calc(
112
+ 100% - (#{tokens.get('textarea-border-width')} * 2) - #{tokens.get(
113
+ 'textarea-label-padding-inline-end'
114
+ )}
115
+ );
116
+ border: 0;
117
+ color: tokens.get('textarea-enabled-fg');
118
+ height: auto;
119
+ white-space: nowrap;
120
+ overflow: hidden;
121
+ text-overflow: ellipsis;
122
+ transition:
123
+ padding-block-start 0.2s ease-in-out,
124
+ font-size 0.2s ease-in-out;
125
+ background-color: tokens.get('textarea-enabled-bg');
126
+ }
127
+
128
+ > textarea.form-control {
129
+ padding-block-start: tokens.get('textarea-padding-block-start');
130
+ padding-block-end: tokens.get('textarea-padding-block-end');
131
+
132
+ &::placeholder {
133
+ color: transparent;
134
+ }
135
+
136
+ &:focus,
137
+ &:not(:placeholder-shown) {
138
+ ~ label {
139
+ font-size: tokens.get('textarea-label-filled-font-size');
140
+ padding-block-start: tokens.get('textarea-label-filled-padding-block-start');
141
+ }
142
+ }
143
+
144
+ @include forms-mx.placeholder {
145
+ opacity: 0;
146
+ }
147
+
148
+ &:focus {
149
+ @include forms-mx.placeholder {
150
+ color: tokens.get('textarea-placeholder-fg');
151
+ opacity: 1;
152
+ }
153
+ }
154
+
155
+ &:disabled ~ label {
156
+ color: tokens.get('textarea-disabled-fg');
157
+ background-color: tokens.get('textarea-disabled-bg');
158
+ }
159
+
160
+ &:not(:disabled):hover ~ label {
161
+ color: tokens.get('textarea-hover-fg');
162
+ background-color: tokens.get('textarea-hover-bg');
163
+ }
164
+
165
+ &:is(.is-valid, .is-invalid) {
166
+ ~ label {
167
+ width: calc(
168
+ 100% - (#{tokens.get('textarea-border-width')} * 2) - #{tokens.get(
169
+ 'textarea-label-validated-padding-inline-end'
170
+ )}
171
+ );
172
+ }
173
+ }
174
+ }
175
+
176
+ > textarea:disabled ~ label {
177
+ color: tokens.get('textarea-disabled-fg');
178
+ background-color: tokens.get('textarea-disabled-bg');
179
+ }
17
180
  }
@@ -0,0 +1 @@
1
+ @use 'post-footer';
@@ -0,0 +1 @@
1
+ post-footer{--post-footer-grid-list-title-display: none;--post-footer-grid-list-title-gap: 0;--post-footer-grid-list-item-gap: 8px;--post-footer-socialmedia-list-item-gap: 8px;--post-footer-app-list-item-gap: 8px;--post-footer-businesssector-list-item-gap: 8px;--post-footer-meta-list-item-gap: 8px}@media screen and (min-width: 600px){post-footer{--post-footer-grid-list-title-display: block;--post-footer-grid-list-title-gap: 8px;--post-footer-socialmedia-list-item-gap: 16px;--post-footer-businesssector-list-item-gap: 24px;--post-footer-meta-list-item-gap: 16px}}@media screen and (min-width: 1024px){post-footer{--post-footer-meta-list-item-gap: 24px}}post-footer :is(h3,.h3){margin:0;font-size:inherit}post-footer a:not(.btn-icon,.app-store-badge){display:block;text-decoration:none}post-footer a:not(.btn-icon,.app-store-badge):hover{text-decoration:underline}@media(forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){post-footer a:not(.btn-icon,.app-store-badge):hover{text-decoration:underline}}@media(forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){post-footer a.btn-icon{color:CanvasText !important}}@media(forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){post-footer a.btn-icon:hover{color:LinkText !important}}post-footer post-list[slot|=grid] :is(h3,.h3){display:var(--post-footer-grid-list-title-display);margin-block-end:var(--post-footer-grid-list-title-gap)}post-footer post-list[slot|=grid]>[role=list]{list-style:none;margin-block:var(--post-device-spacing-padding-block-8);padding-inline-start:calc(var(--post-device-sizing-notification-icon-3) + var(--post-device-spacing-gap-inline-10));margin-block:0;padding-inline-start:0;list-style:none}post-footer post-list[slot|=grid]>[role=list]>post-list-item{margin:0;padding-inline:0;padding-block:var(--post-device-spacing-padding-block-6)}post-footer post-list[slot|=grid]>[role=list]>post-list-item~post-list-item{margin-block-start:var(--post-device-spacing-gap-1)}post-footer post-list[slot|=grid]>[role=list]>post-list-item::before{display:block;content:"";box-sizing:content-box;float:inline-start;margin-block-start:calc(var(--post-device-line-height-content)*.5em - var(--post-device-sizing-interactive-button-icon-6)*.5);margin-inline-start:calc(var(--post-device-sizing-notification-icon-3)*-0.5 + var(--post-device-sizing-interactive-button-icon-6)*-0.5 + var(--post-device-spacing-gap-inline-10)*-1);width:var(--post-device-sizing-interactive-button-icon-6);height:var(--post-device-sizing-interactive-button-icon-6);background-color:currentColor;border-radius:50%}post-footer post-list[slot|=grid]>[role=list]>post-list-item::before{display:none}post-footer post-list[slot|=grid]>[role=list]>post-list-item~post-list-item{margin-block-start:var(--post-footer-grid-list-item-gap)}post-footer post-list:is([slot=socialmedia],[slot=app],[slot=businesssectors],[slot=meta])>[role=list]{all:unset;display:block;list-style:none;display:flex;flex-wrap:wrap;row-gap:var(--post-device-spacing-gap-1);column-gap:calc(var(--post-device-spacing-gap-inline-10)*2);margin-block:var(--post-device-spacing-padding-block-8);margin:0}post-footer post-list:is([slot=socialmedia],[slot=app],[slot=businesssectors],[slot=meta])>[role=list]>post-list-item{all:unset;display:list-item}post-footer post-list:is([slot=socialmedia],[slot=app],[slot=businesssectors],[slot=meta])>[role=list]>post-list-item~post-list-item{all:unset;display:list-item}post-footer post-list:is([slot=socialmedia],[slot=app],[slot=businesssectors],[slot=meta])>[role=list]>post-list-item::before{all:unset}post-footer post-list[slot=socialmedia]>[role=list]{gap:var(--post-footer-socialmedia-list-item-gap)}post-footer post-list[slot=app]>[role=list]{gap:var(--post-footer-app-list-item-gap)}post-footer post-list[slot=businesssectors]>[role=list]{gap:var(--post-footer-businesssector-list-item-gap)}post-footer post-list[slot=meta]>[role=list]{row-gap:0;column-gap:var(--post-footer-meta-list-item-gap)}