@tui/design-system 5.0.0-beta.1 → 5.0.0-beta.4

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 (213) hide show
  1. package/CHANGELOG.md +49 -4
  2. package/README.md +36 -8
  3. package/dist/themes/crystalski/fonts.css +30 -0
  4. package/dist/themes/crystalski/fonts.css.map +1 -0
  5. package/dist/themes/crystalski/index.css +405 -0
  6. package/dist/themes/crystalski/index.css.map +1 -0
  7. package/dist/themes/firstchoice/fonts.css +23 -0
  8. package/dist/themes/firstchoice/fonts.css.map +1 -0
  9. package/dist/themes/firstchoice/index.css +419 -0
  10. package/dist/themes/firstchoice/index.css.map +1 -0
  11. package/dist/themes/tui/fonts.css +58 -0
  12. package/dist/themes/tui/fonts.css.map +1 -0
  13. package/dist/themes/tui/index.css +442 -0
  14. package/dist/themes/tui/index.css.map +1 -0
  15. package/package.json +2 -10
  16. package/scss/functions/_map.scss +84 -0
  17. package/scss/functions.scss +1 -0
  18. package/scss/lib/accordion/_index.scss +4 -0
  19. package/scss/lib/accordion/_mixins.scss +233 -0
  20. package/scss/lib/accordion/_variables.scss +11 -0
  21. package/scss/lib/active-tag/_index.scss +4 -0
  22. package/scss/lib/active-tag/_mixins.scss +112 -0
  23. package/scss/lib/active-tag/_variables.scss +8 -0
  24. package/scss/lib/alert/_index.scss +3 -0
  25. package/scss/lib/alert/_mixins.scss +135 -0
  26. package/scss/lib/alert/_variables.scss +15 -0
  27. package/scss/lib/breadcrumb/_index.scss +3 -0
  28. package/scss/lib/breadcrumb/_mixins.scss +58 -0
  29. package/scss/lib/breadcrumb/_variables.scss +6 -0
  30. package/scss/lib/button/_index.scss +4 -0
  31. package/scss/lib/button/_mixins.scss +187 -0
  32. package/scss/lib/button/_variables.scss +25 -0
  33. package/scss/lib/cards/card/_index.scss +3 -0
  34. package/scss/lib/cards/card/_mixins.scss +37 -0
  35. package/scss/lib/cards/card/_variables.scss +2 -0
  36. package/scss/lib/cards/search/_index.scss +3 -0
  37. package/scss/lib/cards/search/_mixins.scss +432 -0
  38. package/scss/lib/cards/search/_variables.scss +10 -0
  39. package/scss/lib/divider/_index.scss +4 -0
  40. package/scss/lib/divider/_mixins.scss +54 -0
  41. package/scss/lib/divider/_variables.scss +17 -0
  42. package/scss/lib/flyout-dropdown/_index.scss +3 -0
  43. package/scss/lib/flyout-dropdown/_mixins.scss +124 -0
  44. package/scss/lib/forms/form-row/_index.scss +3 -0
  45. package/scss/lib/forms/form-row/_mixins.scss +72 -0
  46. package/scss/lib/forms/form-row/_variables.scss +7 -0
  47. package/scss/lib/forms/input-checkbox/_index.scss +3 -0
  48. package/scss/lib/forms/input-checkbox/_mixins.scss +216 -0
  49. package/scss/lib/forms/input-checkbox/_variables.scss +9 -0
  50. package/scss/lib/forms/input-chip/_index.scss +4 -0
  51. package/scss/lib/forms/input-chip/_mixins.scss +124 -0
  52. package/scss/lib/forms/input-chip/_variables.scss +19 -0
  53. package/scss/lib/forms/input-count/_index.scss +3 -0
  54. package/scss/lib/forms/input-count/_mixins.scss +72 -0
  55. package/scss/lib/forms/input-count/_variables.scss +13 -0
  56. package/scss/lib/forms/input-radio/_index.scss +3 -0
  57. package/scss/lib/forms/input-radio/_mixins.scss +139 -0
  58. package/scss/lib/forms/input-radio/_variables.scss +6 -0
  59. package/scss/lib/forms/input-slider/_index.scss +3 -0
  60. package/scss/lib/forms/input-slider/_mixins.scss +147 -0
  61. package/scss/lib/forms/input-slider/_variables.scss +12 -0
  62. package/scss/lib/forms/input-stepper/_index.scss +3 -0
  63. package/scss/lib/forms/input-stepper/_mixins.scss +143 -0
  64. package/scss/lib/forms/input-stepper/_variables.scss +7 -0
  65. package/scss/lib/forms/input-text/_index.scss +3 -0
  66. package/scss/lib/forms/input-text/_mixins.scss +155 -0
  67. package/scss/lib/forms/input-text/_variables.scss +9 -0
  68. package/scss/lib/grid/_column.scss +51 -0
  69. package/scss/lib/grid/_container.scss +21 -0
  70. package/scss/lib/grid/_index.scss +3 -0
  71. package/scss/lib/grid/_mixins.scss +126 -0
  72. package/scss/lib/grid/_variables.scss +11 -0
  73. package/scss/lib/icon/_index.scss +3 -0
  74. package/scss/lib/icon/_mixins.scss +54 -0
  75. package/scss/lib/icon/_variables.scss +10 -0
  76. package/scss/lib/icon-button/_index.scss +3 -0
  77. package/scss/lib/icon-button/_mixins.scss +168 -0
  78. package/scss/lib/icon-button/_variables.scss +31 -0
  79. package/scss/lib/image/_index.scss +3 -0
  80. package/scss/lib/image/_mixins.scss +49 -0
  81. package/scss/lib/image/_variables.scss +13 -0
  82. package/scss/lib/info-tag/_index.scss +4 -0
  83. package/scss/lib/info-tag/_mixins.scss +100 -0
  84. package/scss/lib/info-tag/_variables.scss +13 -0
  85. package/scss/lib/link/_index.scss +3 -0
  86. package/scss/lib/link/_mixins.scss +86 -0
  87. package/scss/lib/link/_variables.scss +13 -0
  88. package/scss/lib/list/_index.scss +3 -0
  89. package/scss/lib/list/_mixins.scss +198 -0
  90. package/scss/lib/list/_variables.scss +9 -0
  91. package/scss/lib/loader/_index.scss +3 -0
  92. package/scss/lib/loader/_mixins.scss +52 -0
  93. package/scss/lib/loader/_variables.scss +12 -0
  94. package/scss/lib/media-button/_index.scss +4 -0
  95. package/scss/lib/media-button/_mixins.scss +75 -0
  96. package/scss/lib/media-button/_variables.scss +4 -0
  97. package/scss/lib/modal/_index.scss +2 -0
  98. package/scss/lib/modal/_mixins.scss +135 -0
  99. package/scss/lib/modal/_variables.scss +11 -0
  100. package/scss/lib/pagination/_index.scss +3 -0
  101. package/scss/lib/pagination/_mixins.scss +220 -0
  102. package/scss/lib/pagination/_variables.scss +12 -0
  103. package/scss/lib/price/_index.scss +3 -0
  104. package/scss/lib/price/_mixins.scss +83 -0
  105. package/scss/lib/price/_variables.scss +10 -0
  106. package/scss/lib/promo-tag/_index.scss +4 -0
  107. package/scss/lib/promo-tag/_mixins.scss +81 -0
  108. package/scss/lib/promo-tag/_variables.scss +7 -0
  109. package/scss/lib/ratings-reviews/numerical/_index.scss +3 -0
  110. package/scss/lib/ratings-reviews/numerical/_mixins.scss +91 -0
  111. package/scss/lib/ratings-reviews/numerical/_variables.scss +18 -0
  112. package/scss/lib/ratings-reviews/percentage/_index.scss +3 -0
  113. package/scss/lib/ratings-reviews/percentage/_mixins.scss +74 -0
  114. package/scss/lib/ratings-reviews/percentage/_variables.scss +6 -0
  115. package/scss/lib/ratings-reviews/range-bar/_index.scss +3 -0
  116. package/scss/lib/ratings-reviews/range-bar/_mixins.scss +88 -0
  117. package/scss/lib/ratings-reviews/range-bar/_variables.scss +16 -0
  118. package/scss/lib/ratings-reviews/range-icons/_index.scss +3 -0
  119. package/scss/lib/ratings-reviews/range-icons/_mixins.scss +200 -0
  120. package/scss/lib/ratings-reviews/range-icons/_variables.scss +31 -0
  121. package/scss/lib/ratings-reviews/range-icons-group/_index.scss +3 -0
  122. package/scss/lib/ratings-reviews/range-icons-group/_mixins.scss +26 -0
  123. package/scss/lib/richtext/_index.scss +3 -0
  124. package/scss/lib/richtext/_mixins.scss +136 -0
  125. package/scss/lib/scroller/_index.scss +4 -0
  126. package/scss/lib/scroller/_mixins.scss +130 -0
  127. package/scss/lib/scroller/_variables.scss +9 -0
  128. package/scss/lib/show-more-less/_index.scss +3 -0
  129. package/scss/lib/show-more-less/_mixins.scss +90 -0
  130. package/scss/lib/show-more-less/_variables.scss +6 -0
  131. package/scss/lib/skeleton/_index.scss +3 -0
  132. package/scss/lib/skeleton/_mixins.scss +151 -0
  133. package/scss/lib/skeleton/_variables.scss +8 -0
  134. package/scss/lib/tooltip/_index.scss +3 -0
  135. package/scss/lib/tooltip/_mixins.scss +305 -0
  136. package/scss/lib/tooltip/_variables.scss +8 -0
  137. package/scss/lib/typography/_index.scss +14 -0
  138. package/scss/lib/typography/_mixins.scss +27 -0
  139. package/scss/lib/typography/_variables.scss +58 -0
  140. package/scss/lib/utility/_index.scss +109 -0
  141. package/scss/lib/utility/_mixins.scss +198 -0
  142. package/scss/mixins.scss +41 -0
  143. package/scss/reset.scss +168 -0
  144. package/scss/themes/crystalski/_colors.scss +48 -0
  145. package/scss/themes/crystalski/_overrides.scss +276 -0
  146. package/scss/themes/crystalski/_primitives.scss +73 -0
  147. package/scss/themes/crystalski/_typography.scss +12 -0
  148. package/scss/themes/crystalski/fonts.json +30 -0
  149. package/scss/themes/crystalski/fonts.scss +5 -0
  150. package/scss/themes/crystalski/index.scss +157 -0
  151. package/scss/themes/crystalski/theme.json +232 -0
  152. package/scss/themes/firstchoice/_colors.scss +53 -0
  153. package/scss/themes/firstchoice/_overrides.scss +346 -0
  154. package/scss/themes/firstchoice/_primitives.scss +106 -0
  155. package/scss/themes/firstchoice/_typography.scss +20 -0
  156. package/scss/themes/firstchoice/fonts.json +23 -0
  157. package/scss/themes/firstchoice/fonts.scss +4 -0
  158. package/scss/themes/firstchoice/index.scss +157 -0
  159. package/scss/themes/firstchoice/theme.json +323 -0
  160. package/scss/themes/tui/_colors.scss +60 -0
  161. package/scss/themes/tui/_overrides.scss +33 -0
  162. package/scss/themes/tui/_primitives.scss +22 -0
  163. package/scss/themes/tui/_typography.scss +15 -0
  164. package/scss/themes/tui/fonts.json +58 -0
  165. package/scss/themes/tui/fonts.scss +10 -0
  166. package/scss/themes/tui/index.scss +157 -0
  167. package/scss/themes/tui/theme.json +137 -0
  168. package/scss/variables/_aspect-ratios.scss +8 -0
  169. package/scss/variables/_assets.scss +6 -0
  170. package/scss/variables/_border-radius.scss +20 -0
  171. package/scss/variables/_breakpoints.scss +17 -0
  172. package/scss/variables/_colors.scss +58 -0
  173. package/scss/variables/_directions.scss +8 -0
  174. package/scss/variables/_display-values.scss +9 -0
  175. package/scss/variables/_elevations.scss +16 -0
  176. package/scss/variables/_env-variables.scss +1 -0
  177. package/scss/variables/_focus.scss +14 -0
  178. package/scss/variables/_grid.scss +21 -0
  179. package/scss/variables/_icons.scss +26 -0
  180. package/scss/variables/_layers.scss +20 -0
  181. package/scss/variables/_motion.scss +27 -0
  182. package/scss/variables/_prefix.scss +1 -0
  183. package/scss/variables/_primitives.scss +100 -0
  184. package/scss/variables/_spacing.scss +38 -0
  185. package/scss/variables/_strokes.scss +18 -0
  186. package/scss/variables/_typography.scss +123 -0
  187. package/scss/variables/base-theme.json +1952 -0
  188. package/scss/variables/fonts/_ambit-bold-italic.scss +10 -0
  189. package/scss/variables/fonts/_ambit-bold.scss +10 -0
  190. package/scss/variables/fonts/_ambit-fallback.scss +21 -0
  191. package/scss/variables/fonts/_ambit-regular-italic.scss +10 -0
  192. package/scss/variables/fonts/_ambit-regular.scss +10 -0
  193. package/scss/variables/fonts/_ambit-semibold-italic.scss +10 -0
  194. package/scss/variables/fonts/_ambit-semibold.scss +10 -0
  195. package/scss/variables/fonts/_brandon-fallback.scss +22 -0
  196. package/scss/variables/fonts/_brandon-medium-italic.scss +10 -0
  197. package/scss/variables/fonts/_brandon-medium.scss +10 -0
  198. package/scss/variables/fonts/_brandon-regular-italic.scss +10 -0
  199. package/scss/variables/fonts/_brandon-regular.scss +10 -0
  200. package/scss/variables/fonts/_font-path.scss +3 -0
  201. package/scss/variables/fonts/_graphie-extralight.scss +10 -0
  202. package/scss/variables/fonts/_graphie-fallback.scss +11 -0
  203. package/scss/variables/fonts/_pastiche-grotesque-black.scss +10 -0
  204. package/scss/variables/fonts/_pastiche-grotesque-fallback.scss +11 -0
  205. package/scss/variables/fonts/_rondelle-black.scss +10 -0
  206. package/scss/variables/fonts/_rondelle-book.scss +10 -0
  207. package/scss/variables/fonts/_rondelle-fallback.scss +21 -0
  208. package/scss/variables/fonts/_tuitypelight-bold-italic.scss +10 -0
  209. package/scss/variables/fonts/_tuitypelight-bold.scss +10 -0
  210. package/scss/variables/fonts/_tuitypelight-fallback.scss +21 -0
  211. package/scss/variables/fonts/_tuitypelight-regular-italic.scss +10 -0
  212. package/scss/variables/fonts/_tuitypelight-regular.scss +10 -0
  213. package/scss/variables.scss +57 -0
@@ -0,0 +1,54 @@
1
+ // divider / _mixins
2
+ @use 'variables' as *;
3
+
4
+ // Builds divider
5
+ @mixin uilib-divider() {
6
+ .uilib-divider {
7
+ @include uilib-divider-basic;
8
+ }
9
+
10
+ .uilib-divider--vertical {
11
+ display: inline-flex;
12
+ flex-direction: column;
13
+
14
+ border-top-width: 0;
15
+ border-right-width: var(--uilib-stroke-size-025);
16
+ }
17
+
18
+ /* stylelint-disable-next-line order/order */
19
+ @each $weight, $class in $uilib-divider-weight-selectors-config {
20
+ #{$class} {
21
+ border-top-width: var(--#{$weight});
22
+ }
23
+
24
+ #{$class}.uilib-divider--vertical {
25
+ border-top-width: 0;
26
+ border-right-width: var(--#{$weight});
27
+ }
28
+ }
29
+
30
+ /* stylelint-disable-next-line order/order */
31
+ @each $color, $class in $uilib-divider-color-selectors-config {
32
+ #{$class} {
33
+ border-color: var(--#{$color});
34
+ }
35
+ }
36
+
37
+ .uilib-divider--dashed {
38
+ border-color: var(--uilib-color-border-dashed);
39
+ border-style: var(--uilib-stroke-style-dashed);
40
+ }
41
+ }
42
+
43
+ /* For internal use to support richText component */
44
+ @mixin uilib-divider-basic($inverse: false) {
45
+ @if $inverse {
46
+ border-color: var(--uilib-color-border-inverse);
47
+ } @else {
48
+ margin: var(--uilib-spacing-200) 0;
49
+
50
+ border-color: var(--uilib-color-border-divider);
51
+ border-style: var(--uilib-stroke-style-solid);
52
+ border-top-width: var(--uilib-stroke-size-025);
53
+ }
54
+ }
@@ -0,0 +1,17 @@
1
+ @use 'sass:map';
2
+
3
+ /* Weight selectors */
4
+ $uilib-divider-weight-selectors-default: (
5
+ 'uilib-stroke-size-050': '.uilib-divider--medium',
6
+ 'uilib-stroke-size-075': '.uilib-divider--heavy',
7
+ );
8
+ $uilib-divider-weight-selectors-custom: () !default;
9
+ $uilib-divider-weight-selectors-config: map.merge($uilib-divider-weight-selectors-default, $uilib-divider-weight-selectors-custom);
10
+
11
+ /* Colour selectors */
12
+ $uilib-divider-color-selectors-default: (
13
+ 'uilib-color-border-brand-strong': '.uilib-divider--color-strong',
14
+ 'uilib-color-border-inverse': '.uilib-divider--color-inverse',
15
+ );
16
+ $uilib-divider-color-selectors-custom: () !default;
17
+ $uilib-divider-color-selectors-config: map.merge($uilib-divider-color-selectors-default, $uilib-divider-color-selectors-custom);
@@ -0,0 +1,3 @@
1
+ // flyout-dropdown / index
2
+ @use 'mixins' as *;
3
+ @include uilib-flyout-dropdown;
@@ -0,0 +1,124 @@
1
+ @mixin uilib-flyout-dropdown() {
2
+ .uilib-flyout-dropdown {
3
+ @include uilib-flyout-dropdown-basic;
4
+ }
5
+
6
+ ::before {
7
+ left: 50%;
8
+ }
9
+
10
+ .uilib-flyout-dropdown--left {
11
+ &::before {
12
+ left: 2.8125rem; /* 45px/16 */
13
+ }
14
+ }
15
+
16
+ .uilib-flyout-dropdown--right {
17
+ &::before {
18
+ left: calc(100% - 2.8125rem - var(--uilib-spacing-500)); /* 45px/16 */
19
+ }
20
+ }
21
+
22
+ .uilib-flyout-dropdown__content {
23
+ flex-grow: 1;
24
+
25
+ width: 100%;
26
+
27
+ overflow: hidden;
28
+
29
+ .uilib-flyout-dropdown__scroller-inner {
30
+ display: flex;
31
+ flex-direction: column;
32
+ gap: var(--uilib-spacing-200);
33
+
34
+ @supports (-webkit-appearance: none) {
35
+ /* Safari-specific styles */
36
+ max-height: calc(100dvh - 16rem);
37
+ }
38
+ }
39
+ }
40
+
41
+ .uilib-flyout-dropdown__header,
42
+ .uilib-flyout-dropdown__footer {
43
+ display: flex;
44
+ flex-direction: row;
45
+
46
+ width: 100%;
47
+ }
48
+
49
+ .uilib-flyout-dropdown__header {
50
+ justify-content: space-between;
51
+
52
+ .uilib-flyout-dropdown-close-button {
53
+ position: absolute;
54
+ top: var(--uilib-spacing-100);
55
+ right: var(--uilib-spacing-100);
56
+
57
+ &:focus-visible {
58
+ position: absolute;
59
+ }
60
+ }
61
+ }
62
+
63
+ .uilib-flyout-dropdown__heading {
64
+ max-width: calc(100% - 44px);
65
+
66
+ color: var(--uilib-color-text-strong);
67
+ font: var(--uilib-typography-component-heading-small);
68
+ }
69
+
70
+ .uilib-divider {
71
+ width: 100%;
72
+ }
73
+
74
+ .uilib-flyout-dropdown__footer {
75
+ gap: var(--uilib-spacing-400);
76
+ justify-content: flex-end;
77
+ align-items: center;
78
+ }
79
+ }
80
+
81
+ /* For internal use to support richText component */
82
+ @mixin uilib-flyout-dropdown-basic() {
83
+ position: absolute;
84
+ top: 0;
85
+ left: 0;
86
+ z-index: 2000;
87
+
88
+ display: flex;
89
+ flex-direction: column;
90
+ gap: var(--uilib-spacing-200);
91
+ align-items: flex-start;
92
+
93
+ max-width: min(calc(100vw - var(--uilib-spacing-800)), 65.5rem); /* 1048px/16 */
94
+ max-height: calc(100dvh - var(--uilib-spacing-800));
95
+ margin-top: var(--uilib-spacing-400); /* 12px pointer/4px margin */
96
+ padding: var(--uilib-spacing-400);
97
+ box-sizing: border-box;
98
+
99
+ border: solid transparent;
100
+ border-radius: var(--uilib-border-radius-400);
101
+
102
+ background: var(--uilib-color-core-neutral);
103
+
104
+ filter: drop-shadow(0 0 0.5rem var(--uilib-color-other-elevation)); /* 0 0 8px 16px */
105
+
106
+ overflow: visible;
107
+
108
+ &::before {
109
+ position: absolute;
110
+ top: calc(var(--uilib-spacing-200) * -1);
111
+ left: 50%;
112
+ content: '';
113
+
114
+ width: var(--uilib-spacing-500);
115
+ height: var(--uilib-spacing-500);
116
+
117
+ border-radius: var(--uilib-border-radius-100);
118
+
119
+ background-color: var(--uilib-color-core-neutral);
120
+
121
+ transform: rotate(45deg);
122
+ transform-origin: center;
123
+ }
124
+ }
@@ -0,0 +1,3 @@
1
+ // form row / index
2
+ @use 'mixins' as *;
3
+ @include uilib-form-row;
@@ -0,0 +1,72 @@
1
+ // form row / _mixins
2
+ @use '../../utility/mixins' as *;
3
+
4
+ // Builds form row
5
+ @mixin uilib-form-row() {
6
+ .uilib-form-row {
7
+ margin: var(--uilib-spacing-400) 0;
8
+ padding: 0;
9
+
10
+ &--reduced {
11
+ margin: var(--uilib-spacing-100) 0;
12
+ }
13
+
14
+ &__label {
15
+ padding: 0;
16
+
17
+ color: var(--uilib-color-text-strong);
18
+ font: var(--uilib-form-row-label-font);
19
+ }
20
+
21
+ &__hint {
22
+ color: var(--uilib-color-text-body);
23
+ font: var(--uilib-typography-body-medium);
24
+ }
25
+
26
+ &__input {
27
+ margin: var(--uilib-spacing-100) 0;
28
+
29
+ &:last-child {
30
+ margin-bottom: 0;
31
+ }
32
+ }
33
+
34
+ &__error {
35
+ position: relative;
36
+
37
+ padding-left: var(--uilib-spacing-600);
38
+
39
+ color: var(--uilib-color-text-danger);
40
+ font: var(--uilib-typography-body-medium);
41
+
42
+ &::before {
43
+ position: absolute;
44
+ top: calc(calc(calc(var(--uilib-line-height-body) * var(--uilib-icon-size-xsmall)) - var(--uilib-icon-size-xsmall)) / 2);
45
+ left: 0;
46
+ content: '';
47
+
48
+ display: block;
49
+
50
+ width: var(--uilib-icon-size-xsmall);
51
+ aspect-ratio: var(--uilib-aspect-ratio-1x1-square);
52
+
53
+ background: currentcolor;
54
+ background-repeat: no-repeat;
55
+ background-position: center center;
56
+ background-size: cover;
57
+ -webkit-mask-repeat: no-repeat;
58
+ mask-repeat: no-repeat;
59
+ -webkit-mask-position: center;
60
+ mask-position: center;
61
+ -webkit-mask-size: cover;
62
+ mask-size: cover;
63
+ -webkit-mask-image: var(--uilib-form-row-icon);
64
+ mask-image: var(--uilib-form-row-icon);
65
+ }
66
+ }
67
+
68
+ &__error-prefix {
69
+ @include uilib-visually-hidden;
70
+ }
71
+ }
72
+ }
@@ -0,0 +1,7 @@
1
+ @use '../../../variables/env-variables' as *;
2
+
3
+ // Form row specific variables to allow theming
4
+ $uilib-form-row-variables: (
5
+ label-font: var(--uilib-typography-label-medium),
6
+ icon: url('#{$uilib-assets-base-url}v3/icons/tui/standard/exclamation-mark-circled-filled.svg'),
7
+ ) !default;
@@ -0,0 +1,3 @@
1
+ // checkbox / index
2
+ @use 'mixins' as *;
3
+ @include uilib-input-checkbox;
@@ -0,0 +1,216 @@
1
+ // checkbox / _mixins
2
+ @use '../../utility/mixins' as *;
3
+
4
+ // Builds checkbox
5
+ @mixin uilib-input-checkbox() {
6
+ .uilib-input-checkbox {
7
+ &__input {
8
+ @include uilib-visually-hidden;
9
+ }
10
+
11
+ &__label {
12
+ position: relative;
13
+
14
+ display: flex;
15
+ flex-flow: row nowrap;
16
+ gap: var(--uilib-spacing-300);
17
+ align-items: flex-start;
18
+
19
+ padding: var(--uilib-spacing-300);
20
+
21
+ border-radius: var(--uilib-border-radius-100);
22
+
23
+ &::before,
24
+ &::after {
25
+ content: '';
26
+
27
+ display: block;
28
+ flex-shrink: 0;
29
+
30
+ width: 1.25rem; /* 20px */
31
+ height: 1.25rem;
32
+
33
+ border: var(--uilib-stroke-size-025) var(--uilib-stroke-style-solid) var(--uilib-color-border-input);
34
+ border-radius: var(--uilib-border-radius-100);
35
+
36
+ background: var(--uilib-color-core-neutral);
37
+
38
+ cursor: pointer;
39
+
40
+ @media (prefers-reduced-motion: no-preference) {
41
+ transition:
42
+ border-color var(--uilib-motion-timing-inout) var(--uilib-motion-duration-fast),
43
+ border-width var(--uilib-motion-timing-inout) var(--uilib-motion-duration-fast),
44
+ background-color var(--uilib-motion-timing-inout) var(--uilib-motion-duration-fast),
45
+ color var(--uilib-motion-timing-inout) var(--uilib-motion-duration-fast),
46
+ transform var(--uilib-motion-timing-inout) var(--uilib-motion-duration-medium);
47
+ }
48
+ }
49
+
50
+ &::after {
51
+ position: absolute;
52
+ top: var(--uilib-spacing-300);
53
+ left: var(--uilib-spacing-300);
54
+
55
+ color: var(--uilib-color-core-neutral);
56
+
57
+ border: none;
58
+
59
+ -webkit-mask-repeat: no-repeat;
60
+ mask-repeat: no-repeat;
61
+ -webkit-mask-position: center;
62
+ mask-position: center;
63
+ -webkit-mask-size: cover;
64
+ mask-size: cover;
65
+ -webkit-mask-image: var(--uilib-input-checkbox-icon-checked);
66
+ mask-image: var(--uilib-input-checkbox-icon-checked);
67
+
68
+ transform: scale(0);
69
+
70
+ pointer-events: none;
71
+ }
72
+ }
73
+
74
+ &__input:checked + .uilib-input-checkbox__label {
75
+ &::before {
76
+ border-color: var(--uilib-color-core-interaction);
77
+
78
+ background-color: var(--uilib-color-core-interaction);
79
+ }
80
+
81
+ &::after {
82
+ transform: scale(1);
83
+ }
84
+ }
85
+
86
+ &__input:indeterminate + .uilib-input-checkbox__label {
87
+ &::before {
88
+ border-color: var(--uilib-color-core-interaction);
89
+ border-width: var(--uilib-stroke-size-050);
90
+
91
+ background-color: var(--uilib-color-core-neutral);
92
+ }
93
+
94
+ &::after {
95
+ background-color: var(--uilib-color-core-interaction);
96
+
97
+ -webkit-mask-image: var(--uilib-input-checkbox-icon-indeterminate);
98
+ mask-image: var(--uilib-input-checkbox-icon-indeterminate);
99
+
100
+ transform: scale(0.8);
101
+ }
102
+ }
103
+
104
+ .uilib-input-checkbox__label-content {
105
+ color: var(--uilib-color-text-body);
106
+ font: var(--uilib-typography-body-medium);
107
+ }
108
+
109
+ /* stylelint-disable-next-line order/order */
110
+ &--title .uilib-input-checkbox__label-content {
111
+ color: var(--uilib-color-text-strong);
112
+ font: var(--uilib-typography-component-heading-small);
113
+ }
114
+
115
+ &--strong .uilib-input-checkbox__label-content {
116
+ color: var(--uilib-input-checkbox-text-color-strong);
117
+ }
118
+
119
+ &__input:focus-visible + .uilib-input-checkbox__label .uilib-input-checkbox__label-content {
120
+ @include uilib-focus;
121
+
122
+ /* stylelint-disable-next-line order/order */
123
+ position: static;
124
+
125
+ &::before {
126
+ border-radius: var(--uilib-border-radius-100);
127
+ }
128
+ }
129
+
130
+ &__input:disabled + .uilib-input-checkbox__label {
131
+ &::before {
132
+ border-color: var(--uilib-color-other-disabled-soft);
133
+
134
+ background: var(--uilib-color-other-disabled-soft);
135
+
136
+ cursor: default;
137
+ }
138
+
139
+ &::after {
140
+ cursor: default;
141
+ }
142
+ }
143
+
144
+ &__input:disabled:checked + .uilib-input-checkbox__label {
145
+ &::before {
146
+ border-color: var(--uilib-color-other-disabled-soft);
147
+
148
+ background: var(--uilib-color-other-disabled-soft);
149
+ }
150
+ }
151
+
152
+ &__input:disabled:indeterminate + .uilib-input-checkbox__label {
153
+ &::before {
154
+ border-color: var(--uilib-color-other-disabled-soft);
155
+
156
+ background-color: var(--uilib-color-core-neutral);
157
+ }
158
+
159
+ &::after {
160
+ background-color: var(--uilib-color-other-disabled-soft);
161
+ }
162
+ }
163
+
164
+ .uilib-ratings-range-icons {
165
+ display: flex;
166
+
167
+ margin: 0;
168
+ }
169
+ }
170
+
171
+ .uilib-form-row:has(.uilib-input-checkbox--confirm) {
172
+ position: relative;
173
+
174
+ padding: var(--uilib-spacing-200);
175
+
176
+ color: var(--uilib-input-checkbox-text-color-strong);
177
+
178
+ border-radius: var(--uilib-input-checkbox-confirm-radius);
179
+
180
+ background: var(--uilib-color-status-warning-surface);
181
+
182
+ &:has(.uilib-input-checkbox__input[aria-invalid='true']) {
183
+ background: var(--uilib-color-status-danger-surface);
184
+ }
185
+
186
+ .uilib-input-checkbox__label {
187
+ position: static;
188
+
189
+ &::after {
190
+ top: var(--uilib-spacing-500); /* 8 + 12 */
191
+ left: var(--uilib-spacing-500);
192
+ }
193
+ }
194
+
195
+ .uilib-input-checkbox__label-content {
196
+ color: var(--uilib-input-checkbox-text-color-strong);
197
+ }
198
+
199
+ .uilib-form-row__input {
200
+ margin: 0;
201
+ }
202
+
203
+ .uilib-form-row__error {
204
+ padding-bottom: var(--uilib-spacing-200);
205
+ padding-left: var(--uilib-spacing-1100);
206
+
207
+ &::before {
208
+ left: calc(calc(var(--uilib-spacing-1100) - var(--uilib-icon-size-xsmall)) / 2);
209
+ }
210
+ }
211
+ }
212
+
213
+ .uilib-input-checkbox-list__item .uilib-input-checkbox-list {
214
+ padding-left: var(--uilib-spacing-600);
215
+ }
216
+ }
@@ -0,0 +1,9 @@
1
+ @use '../../../variables/env-variables' as *;
2
+
3
+ // Input checkbox specific variables to allow theming
4
+ $uilib-input-checkbox-variables: (
5
+ icon-checked: url('#{$uilib-assets-base-url}v3/icons/tui/standard/checkmark.svg'),
6
+ icon-indeterminate: url('#{$uilib-assets-base-url}v3/icons/tui/standard/minus.svg'),
7
+ text-color-strong: var(--uilib-color-text-strong),
8
+ confirm-radius: var(--uilib-border-radius-100),
9
+ ) !default;
@@ -0,0 +1,4 @@
1
+ // input-chip / index
2
+ @use 'mixins' as *;
3
+ @include uilib-input-chip;
4
+ @include uilib-input-chip-list;
@@ -0,0 +1,124 @@
1
+ // input-chip / _mixins
2
+ @use '../../utility/mixins' as *;
3
+
4
+ // Builds input chip
5
+ @mixin uilib-input-chip() {
6
+ .uilib-input-chip {
7
+ &__input {
8
+ appearance: none;
9
+
10
+ @include uilib-visually-hidden;
11
+
12
+ &:hover + .uilib-input-chip__label {
13
+ background-color: var(--uilib-input-chip-hover-bg-color);
14
+ }
15
+
16
+ &:focus-visible + .uilib-input-chip__label {
17
+ @include uilib-focus;
18
+ }
19
+
20
+ &:disabled + .uilib-input-chip__label,
21
+ &:disabled:checked + .uilib-input-chip__label {
22
+ color: var(--uilib-input-chip-disabled-color);
23
+
24
+ background: var(--uilib-input-chip-disabled-bg-color);
25
+
26
+ cursor: default;
27
+ }
28
+
29
+ &:checked + .uilib-input-chip__label {
30
+ border-color: var(--uilib-input-chip-active-border-color);
31
+
32
+ background-color: var(--uilib-input-chip-active-bg-color);
33
+
34
+ box-shadow: var(--uilib-elevation-100);
35
+ }
36
+
37
+ &:checked:hover + .uilib-input-chip__label {
38
+ background: var(--uilib-input-chip-active-hover-bg-color);
39
+ }
40
+ }
41
+
42
+ &__label {
43
+ display: inline-flex;
44
+ flex-flow: row nowrap;
45
+ gap: var(--uilib-spacing-200);
46
+ justify-content: center;
47
+ align-items: center;
48
+
49
+ padding: var(--uilib-spacing-200);
50
+
51
+ color: var(--uilib-input-chip-default-text-color);
52
+ font: var(--uilib-typography-label-medium);
53
+ white-space: nowrap;
54
+ text-align: center;
55
+
56
+ border: var(--uilib-stroke-size-025) var(--uilib-stroke-style-solid) var(--uilib-input-chip-default-border-color);
57
+ border-radius: var(--uilib-input-chip-radius);
58
+
59
+ background: var(--uilib-input-chip-default-bg-color);
60
+
61
+ cursor: pointer;
62
+
63
+ /* stylelint-disable-next-line property-no-vendor-prefix */
64
+ -webkit-user-select: none; /* Safari */
65
+ user-select: none;
66
+
67
+ @media (prefers-reduced-motion: no-preference) {
68
+ transition:
69
+ border-color var(--uilib-motion-timing-inout) var(--uilib-motion-duration-fast),
70
+ background-color var(--uilib-motion-timing-inout) var(--uilib-motion-duration-fast),
71
+ color var(--uilib-motion-timing-inout) var(--uilib-motion-duration-fast);
72
+ }
73
+ }
74
+
75
+ &.uilib-input-chip--choice label {
76
+ min-width: var(--uilib-spacing-1600); /* 64px */
77
+ min-height: var(--uilib-spacing-1000); /* 40px */
78
+ }
79
+
80
+ &.uilib-input-chip--month-calendar {
81
+ max-width: fit-content;
82
+ }
83
+
84
+ &.uilib-input-chip--month-calendar label {
85
+ min-height: calc(var(--uilib-spacing-1200) + var(--uilib-spacing-050)); /* 50px */
86
+ }
87
+ }
88
+ }
89
+
90
+ @mixin uilib-input-chip-list() {
91
+ [data-testid='list-choice']:has(.uilib-input-chip-list),
92
+ .uilib-form-row__input:has(.uilib-input-chip-list) {
93
+ .uilib-input-chip-list {
94
+ display: flex;
95
+ flex-flow: row wrap;
96
+ gap: var(--uilib-spacing-200);
97
+
98
+ margin: 0;
99
+ padding: 0;
100
+ }
101
+ }
102
+
103
+ // Month calendar grid
104
+
105
+ [data-testid='list-month-calendar']:has(.uilib-input-chip-list),
106
+ .uilib-form-row__input:has(.uilib-input-chip-list-month-calendar) {
107
+ .uilib-input-chip-list-month-calendar {
108
+ display: grid;
109
+ grid-template-columns: repeat(3, 1fr);
110
+ gap: var(--uilib-spacing-200);
111
+
112
+ max-width: calc(7.5rem * 3 + var(--uilib-spacing-200) * 2);
113
+
114
+ .uilib-input-chip--month-calendar {
115
+ width: 100%;
116
+ max-width: 7.5rem; /* 120px */
117
+
118
+ label {
119
+ width: 100%;
120
+ }
121
+ }
122
+ }
123
+ }
124
+ }
@@ -0,0 +1,19 @@
1
+ @use 'sass:map';
2
+ @use 'sass:color';
3
+ @use '../../../variables/colors' as *;
4
+ @use '../../../variables/env-variables' as *;
5
+
6
+ // Input chip specific variables to allow theming
7
+ $uilib-input-chip-variables: (
8
+ radius: var(--uilib-border-radius-200),
9
+ default-bg-color: var(--uilib-color-core-neutral),
10
+ default-border-color: var(--uilib-color-border-card),
11
+ default-text-color: var(--uilib-color-text-strong),
12
+ hover-bg-color: var(--uilib-color-other-secondary-button-hover-state),
13
+ active-bg-color: var(--uilib-color-other-active-state-tint),
14
+ active-border-color: var(--uilib-color-core-interaction),
15
+ active-hover-bg-color: color.mix(map.get($uilib-color-semantic, 'core-neutral'), map.get($uilib-color-semantic, 'core-interaction'), 80%),
16
+ box-shadow: var(--uilib-elevation-100),
17
+ disabled-text-color: var(--uilib-color-other-disabled-soft),
18
+ disabled-bg-color: var(--uilib-color-core-neutral),
19
+ ) !default;
@@ -0,0 +1,3 @@
1
+ // input count / index
2
+ @use 'mixins' as *;
3
+ @include uilib-input-count;