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

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 (227) hide show
  1. package/CHANGELOG.md +83 -5
  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 +435 -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 +449 -0
  10. package/dist/themes/firstchoice/index.css.map +1 -0
  11. package/dist/themes/tui/fonts.css +72 -0
  12. package/dist/themes/tui/fonts.css.map +1 -0
  13. package/dist/themes/tui/index.css +482 -0
  14. package/dist/themes/tui/index.css.map +1 -0
  15. package/package.json +31 -37
  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 +193 -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/flight-details/_index.scss +3 -0
  43. package/scss/lib/flight-details/_mixins.scss +468 -0
  44. package/scss/lib/flight-details/_variables.scss +6 -0
  45. package/scss/lib/flyout-dropdown/_index.scss +3 -0
  46. package/scss/lib/flyout-dropdown/_mixins.scss +124 -0
  47. package/scss/lib/forms/form-row/_index.scss +3 -0
  48. package/scss/lib/forms/form-row/_mixins.scss +72 -0
  49. package/scss/lib/forms/form-row/_variables.scss +7 -0
  50. package/scss/lib/forms/input-checkbox/_index.scss +3 -0
  51. package/scss/lib/forms/input-checkbox/_mixins.scss +216 -0
  52. package/scss/lib/forms/input-checkbox/_variables.scss +9 -0
  53. package/scss/lib/forms/input-chip/_index.scss +4 -0
  54. package/scss/lib/forms/input-chip/_mixins.scss +124 -0
  55. package/scss/lib/forms/input-chip/_variables.scss +19 -0
  56. package/scss/lib/forms/input-count/_index.scss +3 -0
  57. package/scss/lib/forms/input-count/_mixins.scss +72 -0
  58. package/scss/lib/forms/input-count/_variables.scss +13 -0
  59. package/scss/lib/forms/input-radio/_index.scss +3 -0
  60. package/scss/lib/forms/input-radio/_mixins.scss +139 -0
  61. package/scss/lib/forms/input-radio/_variables.scss +6 -0
  62. package/scss/lib/forms/input-slider/_index.scss +3 -0
  63. package/scss/lib/forms/input-slider/_mixins.scss +147 -0
  64. package/scss/lib/forms/input-slider/_variables.scss +12 -0
  65. package/scss/lib/forms/input-stepper/_index.scss +3 -0
  66. package/scss/lib/forms/input-stepper/_mixins.scss +143 -0
  67. package/scss/lib/forms/input-stepper/_variables.scss +7 -0
  68. package/scss/lib/forms/input-switch/_index.scss +3 -0
  69. package/scss/lib/forms/input-switch/_mixins.scss +122 -0
  70. package/scss/lib/forms/input-switch/_variables.scss +18 -0
  71. package/scss/lib/forms/input-text/_index.scss +3 -0
  72. package/scss/lib/forms/input-text/_mixins.scss +155 -0
  73. package/scss/lib/forms/input-text/_variables.scss +9 -0
  74. package/scss/lib/forms/textarea/_index.scss +3 -0
  75. package/scss/lib/forms/textarea/_mixins.scss +88 -0
  76. package/scss/lib/grid/_column.scss +51 -0
  77. package/scss/lib/grid/_container.scss +21 -0
  78. package/scss/lib/grid/_index.scss +3 -0
  79. package/scss/lib/grid/_mixins.scss +126 -0
  80. package/scss/lib/grid/_variables.scss +11 -0
  81. package/scss/lib/hero/_index.scss +3 -0
  82. package/scss/lib/hero/_mixins.scss +336 -0
  83. package/scss/lib/hero/_variables.scss +21 -0
  84. package/scss/lib/icon/_index.scss +3 -0
  85. package/scss/lib/icon/_mixins.scss +54 -0
  86. package/scss/lib/icon/_variables.scss +10 -0
  87. package/scss/lib/icon-button/_index.scss +3 -0
  88. package/scss/lib/icon-button/_mixins.scss +168 -0
  89. package/scss/lib/icon-button/_variables.scss +31 -0
  90. package/scss/lib/image/_index.scss +3 -0
  91. package/scss/lib/image/_mixins.scss +89 -0
  92. package/scss/lib/image/_variables.scss +13 -0
  93. package/scss/lib/info-tag/_index.scss +4 -0
  94. package/scss/lib/info-tag/_mixins.scss +100 -0
  95. package/scss/lib/info-tag/_variables.scss +13 -0
  96. package/scss/lib/link/_index.scss +3 -0
  97. package/scss/lib/link/_mixins.scss +86 -0
  98. package/scss/lib/link/_variables.scss +13 -0
  99. package/scss/lib/list/_index.scss +3 -0
  100. package/scss/lib/list/_mixins.scss +198 -0
  101. package/scss/lib/list/_variables.scss +9 -0
  102. package/scss/lib/loader/_index.scss +3 -0
  103. package/scss/lib/loader/_mixins.scss +52 -0
  104. package/scss/lib/loader/_variables.scss +12 -0
  105. package/scss/lib/media-button/_index.scss +4 -0
  106. package/scss/lib/media-button/_mixins.scss +75 -0
  107. package/scss/lib/media-button/_variables.scss +4 -0
  108. package/scss/lib/modal/_index.scss +2 -0
  109. package/scss/lib/modal/_mixins.scss +135 -0
  110. package/scss/lib/modal/_variables.scss +11 -0
  111. package/scss/lib/pagination/_index.scss +3 -0
  112. package/scss/lib/pagination/_mixins.scss +220 -0
  113. package/scss/lib/pagination/_variables.scss +12 -0
  114. package/scss/lib/price/_index.scss +3 -0
  115. package/scss/lib/price/_mixins.scss +83 -0
  116. package/scss/lib/price/_variables.scss +10 -0
  117. package/scss/lib/promo-tag/_index.scss +4 -0
  118. package/scss/lib/promo-tag/_mixins.scss +81 -0
  119. package/scss/lib/promo-tag/_variables.scss +7 -0
  120. package/scss/lib/ratings-reviews/numerical/_index.scss +3 -0
  121. package/scss/lib/ratings-reviews/numerical/_mixins.scss +91 -0
  122. package/scss/lib/ratings-reviews/numerical/_variables.scss +18 -0
  123. package/scss/lib/ratings-reviews/percentage/_index.scss +3 -0
  124. package/scss/lib/ratings-reviews/percentage/_mixins.scss +74 -0
  125. package/scss/lib/ratings-reviews/percentage/_variables.scss +6 -0
  126. package/scss/lib/ratings-reviews/range-bar/_index.scss +3 -0
  127. package/scss/lib/ratings-reviews/range-bar/_mixins.scss +88 -0
  128. package/scss/lib/ratings-reviews/range-bar/_variables.scss +16 -0
  129. package/scss/lib/ratings-reviews/range-icons/_index.scss +3 -0
  130. package/scss/lib/ratings-reviews/range-icons/_mixins.scss +200 -0
  131. package/scss/lib/ratings-reviews/range-icons/_variables.scss +31 -0
  132. package/scss/lib/ratings-reviews/range-icons-group/_index.scss +3 -0
  133. package/scss/lib/ratings-reviews/range-icons-group/_mixins.scss +26 -0
  134. package/scss/lib/richtext/_index.scss +3 -0
  135. package/scss/lib/richtext/_mixins.scss +136 -0
  136. package/scss/lib/scroller/_index.scss +4 -0
  137. package/scss/lib/scroller/_mixins.scss +130 -0
  138. package/scss/lib/scroller/_variables.scss +9 -0
  139. package/scss/lib/show-more-less/_index.scss +3 -0
  140. package/scss/lib/show-more-less/_mixins.scss +90 -0
  141. package/scss/lib/show-more-less/_variables.scss +6 -0
  142. package/scss/lib/skeleton/_index.scss +3 -0
  143. package/scss/lib/skeleton/_mixins.scss +151 -0
  144. package/scss/lib/skeleton/_variables.scss +8 -0
  145. package/scss/lib/tooltip/_index.scss +3 -0
  146. package/scss/lib/tooltip/_mixins.scss +305 -0
  147. package/scss/lib/tooltip/_variables.scss +8 -0
  148. package/scss/lib/typography/_index.scss +14 -0
  149. package/scss/lib/typography/_mixins.scss +27 -0
  150. package/scss/lib/typography/_variables.scss +58 -0
  151. package/scss/lib/utility/_index.scss +109 -0
  152. package/scss/lib/utility/_mixins.scss +198 -0
  153. package/scss/mixins.scss +44 -0
  154. package/scss/reset.scss +168 -0
  155. package/scss/themes/crystalski/_colors.scss +48 -0
  156. package/scss/themes/crystalski/_overrides.scss +285 -0
  157. package/scss/themes/crystalski/_primitives.scss +73 -0
  158. package/scss/themes/crystalski/_typography.scss +12 -0
  159. package/scss/themes/crystalski/fonts.json +49 -0
  160. package/scss/themes/crystalski/fonts.scss +5 -0
  161. package/scss/themes/crystalski/index.scss +166 -0
  162. package/scss/themes/crystalski/theme.json +232 -0
  163. package/scss/themes/firstchoice/_colors.scss +53 -0
  164. package/scss/themes/firstchoice/_overrides.scss +355 -0
  165. package/scss/themes/firstchoice/_primitives.scss +106 -0
  166. package/scss/themes/firstchoice/_typography.scss +20 -0
  167. package/scss/themes/firstchoice/fonts.json +50 -0
  168. package/scss/themes/firstchoice/fonts.scss +4 -0
  169. package/scss/themes/firstchoice/index.scss +166 -0
  170. package/scss/themes/firstchoice/theme.json +323 -0
  171. package/scss/themes/tui/_colors.scss +61 -0
  172. package/scss/themes/tui/_overrides.scss +34 -0
  173. package/scss/themes/tui/_primitives.scss +23 -0
  174. package/scss/themes/tui/_typography.scss +24 -0
  175. package/scss/themes/tui/fonts.json +117 -0
  176. package/scss/themes/tui/fonts.scss +12 -0
  177. package/scss/themes/tui/index.scss +166 -0
  178. package/scss/themes/tui/theme.json +139 -0
  179. package/scss/variables/_aspect-ratios.scss +8 -0
  180. package/scss/variables/_assets.scss +6 -0
  181. package/scss/variables/_border-radius.scss +20 -0
  182. package/scss/variables/_breakpoints.scss +17 -0
  183. package/scss/variables/_colors.scss +58 -0
  184. package/scss/variables/_directions.scss +8 -0
  185. package/scss/variables/_display-values.scss +9 -0
  186. package/scss/variables/_elevations.scss +17 -0
  187. package/scss/variables/_env-variables.scss +1 -0
  188. package/scss/variables/_focus.scss +14 -0
  189. package/scss/variables/_grid.scss +21 -0
  190. package/scss/variables/_icons.scss +26 -0
  191. package/scss/variables/_layers.scss +20 -0
  192. package/scss/variables/_motion.scss +27 -0
  193. package/scss/variables/_prefix.scss +1 -0
  194. package/scss/variables/_primitives.scss +100 -0
  195. package/scss/variables/_spacing.scss +38 -0
  196. package/scss/variables/_strokes.scss +18 -0
  197. package/scss/variables/_typography.scss +125 -0
  198. package/scss/variables/base-theme.json +2142 -0
  199. package/scss/variables/fonts/_ambit-bold-italic.scss +10 -0
  200. package/scss/variables/fonts/_ambit-bold.scss +10 -0
  201. package/scss/variables/fonts/_ambit-fallback.scss +21 -0
  202. package/scss/variables/fonts/_ambit-regular-italic.scss +10 -0
  203. package/scss/variables/fonts/_ambit-regular.scss +10 -0
  204. package/scss/variables/fonts/_ambit-semibold-italic.scss +10 -0
  205. package/scss/variables/fonts/_ambit-semibold.scss +10 -0
  206. package/scss/variables/fonts/_brandon-fallback.scss +22 -0
  207. package/scss/variables/fonts/_brandon-medium-italic.scss +10 -0
  208. package/scss/variables/fonts/_brandon-medium.scss +10 -0
  209. package/scss/variables/fonts/_brandon-regular-italic.scss +10 -0
  210. package/scss/variables/fonts/_brandon-regular.scss +10 -0
  211. package/scss/variables/fonts/_font-path.scss +3 -0
  212. package/scss/variables/fonts/_graphie-extralight.scss +10 -0
  213. package/scss/variables/fonts/_graphie-fallback.scss +11 -0
  214. package/scss/variables/fonts/_pastiche-grotesque-black.scss +10 -0
  215. package/scss/variables/fonts/_pastiche-grotesque-fallback.scss +11 -0
  216. package/scss/variables/fonts/_rondelle-black.scss +10 -0
  217. package/scss/variables/fonts/_rondelle-book.scss +10 -0
  218. package/scss/variables/fonts/_rondelle-fallback.scss +21 -0
  219. package/scss/variables/fonts/_tuiheadline-black-italic.scss +10 -0
  220. package/scss/variables/fonts/_tuiheadline-black.scss +10 -0
  221. package/scss/variables/fonts/_tuiheadline-fallback.scss +11 -0
  222. package/scss/variables/fonts/_tuitypelight-bold-italic.scss +10 -0
  223. package/scss/variables/fonts/_tuitypelight-bold.scss +10 -0
  224. package/scss/variables/fonts/_tuitypelight-fallback.scss +21 -0
  225. package/scss/variables/fonts/_tuitypelight-regular-italic.scss +10 -0
  226. package/scss/variables/fonts/_tuitypelight-regular.scss +10 -0
  227. package/scss/variables.scss +60 -0
@@ -0,0 +1,90 @@
1
+ // show more less / _mixins
2
+ // Builds show-more-less
3
+ @mixin uilib-show-more-less() {
4
+ .uilib-show-more-less {
5
+ display: block;
6
+
7
+ margin: var(--uilib-spacing-200) 0 var(--uilib-spacing-600);
8
+ }
9
+
10
+ .uilib-show-more-less__intro,
11
+ .uilib-show-more-less__content {
12
+ & > *:first-child {
13
+ margin-top: 0;
14
+ }
15
+
16
+ & > *:last-child {
17
+ margin-bottom: 0;
18
+ }
19
+ }
20
+
21
+ .uilib-show-more-less[text-only] .uilib-show-more-less__content {
22
+ display: inline;
23
+
24
+ margin-right: var(--uilib-spacing-100);
25
+
26
+ & > *:last-child {
27
+ display: inline;
28
+ }
29
+ }
30
+
31
+ .uilib-show-more-less:not([text-only]) .uilib-show-more-less__content {
32
+ margin-top: var(--uilib-spacing-400);
33
+ margin-bottom: var(--uilib-spacing-200);
34
+ }
35
+
36
+ .uilib-show-more-less:not([text-only])[is-hydrated] .uilib-show-more-less__content {
37
+ block-size: 0;
38
+ content-visibility: hidden;
39
+
40
+ margin-top: 0;
41
+
42
+ overflow: hidden;
43
+
44
+ @media (prefers-reduced-motion: no-preference) {
45
+ transition:
46
+ block-size var(--uilib-motion-duration-medium) var(--uilib-motion-timing-out),
47
+ content-visibility var(--uilib-motion-duration-medium) allow-discrete,
48
+ margin-top var(--uilib-motion-duration-medium) var(--uilib-motion-timing-out);
49
+ }
50
+ }
51
+
52
+ .uilib-show-more-less:not([text-only])[is-open] .uilib-show-more-less__content {
53
+ block-size: auto;
54
+ content-visibility: visible;
55
+
56
+ margin-top: var(--uilib-spacing-400);
57
+ }
58
+
59
+ .uilib-show-more-less__button {
60
+ margin-top: var(--uilib-spacing-200);
61
+ }
62
+
63
+ .uilib-show-more-less__icon {
64
+ -webkit-mask-image: var(--uilib-show-more-less-icon);
65
+ mask-image: var(--uilib-show-more-less-icon);
66
+
67
+ transform: rotate(0deg);
68
+
69
+ @media (prefers-reduced-motion: no-preference) {
70
+ transition: transform var(--uilib-motion-duration-medium) var(--uilib-motion-timing-out);
71
+ }
72
+ }
73
+
74
+ .uilib-show-more-less[is-open] .uilib-show-more-less__icon {
75
+ transform: rotate(180deg);
76
+ }
77
+
78
+ .uilib-show-more-less[text-only] .uilib-show-more-less__icon {
79
+ display: none;
80
+ }
81
+
82
+ .uilib-show-more-less--inverse {
83
+ color: var(--uilib-color-text-inverse);
84
+
85
+ .uilib-show-more-less__button {
86
+ color: var(--uilib-color-text-inverse);
87
+ text-decoration-color: var(--uilib-color-text-inverse);
88
+ }
89
+ }
90
+ }
@@ -0,0 +1,6 @@
1
+ @use '../../variables/env-variables' as *;
2
+
3
+ // Show more/less specific variables to allow theming
4
+ $uilib-show-more-less-variables: (
5
+ icon: url('#{$uilib-assets-base-url}v3/icons/tui/standard/chevron-down.svg'),
6
+ ) !default;
@@ -0,0 +1,3 @@
1
+ // skeleton / index
2
+ @use 'mixins' as *;
3
+ @include uilib-skeleton;
@@ -0,0 +1,151 @@
1
+ @use './variables' as *;
2
+ @use '../grid/mixins' as *;
3
+
4
+ @mixin uilib-skeleton() {
5
+ // syncing animation across all skeletons
6
+ @property --uilib-skeleton-position {
7
+ syntax: '<number>';
8
+ inherits: true;
9
+ initial-value: -1;
10
+ }
11
+
12
+ @keyframes shimmer {
13
+ from {
14
+ --uilib-skeleton-position: 1;
15
+ }
16
+
17
+ to {
18
+ --uilib-skeleton-position: -1;
19
+ }
20
+ }
21
+
22
+ .uilib-skeleton {
23
+ width: 100%;
24
+
25
+ border-radius: calc(var(--uilib-spacing-400) - var(--uilib-border-radius-100));
26
+
27
+ background: linear-gradient(
28
+ 90deg,
29
+ var(--uilib-skeleton-color) 0%,
30
+ var(--uilib-skeleton-shimmer-color) 4%,
31
+ var(--uilib-skeleton-color) 8%,
32
+ var(--uilib-skeleton-color) 32%,
33
+ var(--uilib-skeleton-shimmer-color) 36%,
34
+ var(--uilib-skeleton-color) 40%,
35
+ var(--uilib-skeleton-color) 62%,
36
+ var(--uilib-skeleton-shimmer-color) 66%,
37
+ var(--uilib-skeleton-color) 70%
38
+ );
39
+ background-position-x: calc(var(--uilib-skeleton-position) * 100%);
40
+ background-size: 200% 100%;
41
+ background-attachment: fixed; // required to sync all skeletons
42
+
43
+ container-type: inline-size;
44
+
45
+ // Skeleton types
46
+ &--heading {
47
+ height: 1.5rem;
48
+
49
+ border-radius: var(--uilib-border-radius-100);
50
+ }
51
+
52
+ &--subheading {
53
+ height: 1rem;
54
+
55
+ border-radius: var(--uilib-border-radius-100);
56
+ }
57
+
58
+ &--text {
59
+ height: 1rem;
60
+
61
+ border-radius: var(--uilib-border-radius-100);
62
+ }
63
+
64
+ &--circle {
65
+ flex-shrink: 0;
66
+
67
+ width: var(--uilib-spacing-500);
68
+ height: var(--uilib-spacing-500);
69
+
70
+ border-radius: 50%;
71
+ }
72
+
73
+ &--card {
74
+ display: grid;
75
+
76
+ @container (min-width: 35rem) {
77
+ grid-template-columns: 45% 55%;
78
+ }
79
+ }
80
+
81
+ &--container {
82
+ padding: var(--uilib-spacing-400);
83
+ }
84
+
85
+ &--spacer {
86
+ background: transparent;
87
+
88
+ animation: none;
89
+
90
+ &:not([class*='--h-']) {
91
+ flex-grow: 1;
92
+ }
93
+ }
94
+
95
+ // Skeleton variants
96
+
97
+ &--outlined {
98
+ border: var(--uilib-stroke-size-025) solid var(--uilib-skeleton-color);
99
+
100
+ background: var(--uilib-color-core-neutral);
101
+ }
102
+
103
+ &--rounded-bottom {
104
+ border-radius: 0 0 var(--uilib-border-radius-600) var(--uilib-border-radius-600);
105
+ }
106
+
107
+ @media (prefers-reduced-motion: no-preference) {
108
+ animation: shimmer 4s linear infinite;
109
+ }
110
+
111
+ // Width utilities
112
+ @for $i from 1 through 10 {
113
+ &--w-#{$i * 10} {
114
+ width: #{$i * 10%};
115
+ }
116
+ &--w-#{$i * 10}-xs {
117
+ @include uilib-breakpoint(xs) {
118
+ width: #{$i * 10%};
119
+ }
120
+ }
121
+ }
122
+
123
+ // Height utilities
124
+ @for $i from 1 through 20 {
125
+ &--h-#{$i} {
126
+ height: #{$i * 1rem};
127
+ }
128
+ }
129
+ }
130
+
131
+ // Skeleton Layout
132
+ .uilib-skeleton-layout {
133
+ display: flex;
134
+ gap: var(--uilib-spacing-200);
135
+
136
+ width: 100%;
137
+ container-type: inline-size;
138
+
139
+ &--gap-sm {
140
+ gap: var(--uilib-spacing-100);
141
+ }
142
+
143
+ &--column {
144
+ flex-direction: column;
145
+ }
146
+
147
+ &--justify-between {
148
+ justify-content: space-between;
149
+ }
150
+ }
151
+ }
@@ -0,0 +1,8 @@
1
+ @use 'sass:map';
2
+ @use '../../variables/colors' as *;
3
+ @use '../../variables/primitives' as *;
4
+
5
+ $uilib-skeleton-variables: (
6
+ color: map.get($uilib-color-semantic, 'other-skeleton-loading'),
7
+ shimmer-color: map.get($uilib-primitives, 'color-neutral-20'),
8
+ ) !default;
@@ -0,0 +1,3 @@
1
+ // tooltip / index
2
+ @use 'mixins' as *;
3
+ @include uilib-tooltip;
@@ -0,0 +1,305 @@
1
+ // tooltip / _mixins
2
+ // Builds tooltip
3
+ @mixin uilib-tooltip() {
4
+ .uilib-tooltip {
5
+ $spacing-075: 0.1875rem; /* 3px */
6
+ $spacing-150: 0.375rem; /* 6px */
7
+ $spacing-250: 0.625rem; /* 10px */
8
+ $overlay-space: calc(#{$spacing-250} * -1); /* 6 (pointer) + 4 (gap) */
9
+ $overlay-alignment: calc(#{$spacing-150} * -1); /* 6 */
10
+
11
+ position: relative;
12
+
13
+ display: inline-block;
14
+
15
+ // Extra specificity required to ensure link styling override
16
+ .uilib-tooltip__trigger {
17
+ text-decoration-style: dotted;
18
+ }
19
+
20
+ /* stylelint-disable-next-line order/order */
21
+ &--icon .uilib-tooltip__trigger {
22
+ vertical-align: calc(#{$spacing-075} * -1);
23
+ }
24
+
25
+ /* stylelint-disable-next-line order/order */
26
+ &--inverse .uilib-tooltip__trigger {
27
+ color: var(--uilib-color-text-inverse);
28
+ text-decoration-color: var(--uilib-link-decoration-color-inverse);
29
+ }
30
+
31
+ &--inverse.uilib-tooltip--icon .uilib-tooltip__trigger:hover {
32
+ background: var(--uilib-color-other-button-hover-state);
33
+ }
34
+
35
+ &__live {
36
+ position: fixed;
37
+ z-index: var(--uilib-layer-tooltip);
38
+
39
+ transform: translate(0, -100%);
40
+
41
+ pointer-events: none;
42
+ }
43
+
44
+ &__overlay {
45
+ position: absolute;
46
+ left: 50%;
47
+ bottom: #{$overlay-space};
48
+
49
+ width: max-content;
50
+ max-width: min(14rem, calc(100vw - 1rem)); /* 224 / 16 */
51
+ padding: var(--uilib-spacing-100) var(--uilib-spacing-200);
52
+
53
+ color: var(--uilib-tooltip-color-text);
54
+ font: var(--uilib-typography-body-medium);
55
+ white-space: normal;
56
+
57
+ border-radius: var(--uilib-tooltip-radius);
58
+
59
+ background: var(--uilib-tooltip-color-bg);
60
+
61
+ cursor: default;
62
+
63
+ opacity: 0;
64
+ transform: translate(-50%, 100%);
65
+
66
+ &--show {
67
+ opacity: 1;
68
+ }
69
+
70
+ @media (prefers-reduced-motion: no-preference) {
71
+ transition: opacity var(--uilib-motion-timing-inout) var(--uilib-motion-duration-fast);
72
+ }
73
+
74
+ &::before {
75
+ position: absolute;
76
+ top: 0;
77
+ left: 50%;
78
+ content: '';
79
+
80
+ display: block;
81
+
82
+ border-color: transparent transparent var(--uilib-tooltip-color-bg);
83
+ border-style: solid;
84
+ border-width: 0 0.5rem 0.5rem;
85
+
86
+ transform: translate(-50%, -75%);
87
+ }
88
+
89
+ /* stylelint-disable-next-line order/order */
90
+ &--left {
91
+ left: #{$overlay-alignment};
92
+
93
+ transform: translate(0, 100%);
94
+
95
+ &::before {
96
+ left: var(--uilib-spacing-200);
97
+
98
+ transform: translate(0, -75%);
99
+ }
100
+
101
+ &.uilib-tooltip__overlay--center {
102
+ top: 50%;
103
+ left: #{$overlay-space};
104
+ bottom: unset;
105
+
106
+ transform: translate(-100%, -50%);
107
+
108
+ &::before {
109
+ top: 50%;
110
+ left: unset;
111
+ right: 0;
112
+
113
+ border-color: transparent transparent transparent var(--uilib-tooltip-color-bg);
114
+ border-width: 0.5rem 0 0.5rem 0.5rem;
115
+
116
+ transform: translate(75%, -50%);
117
+ }
118
+ }
119
+ }
120
+
121
+ &--right {
122
+ left: unset;
123
+ right: #{$overlay-alignment};
124
+
125
+ transform: translate(0, 100%);
126
+
127
+ &::before {
128
+ left: unset;
129
+ right: var(--uilib-spacing-200);
130
+
131
+ transform: translate(0, -75%);
132
+ }
133
+
134
+ &.uilib-tooltip__overlay--center {
135
+ top: 50%;
136
+ bottom: unset;
137
+ right: #{$overlay-space};
138
+
139
+ transform: translate(100%, -50%);
140
+
141
+ &::before {
142
+ top: 50%;
143
+ left: 0;
144
+ right: unset;
145
+
146
+ border-color: transparent var(--uilib-tooltip-color-bg) transparent transparent;
147
+ border-width: 0.5rem 0.5rem 0.5rem 0;
148
+
149
+ transform: translate(-75%, -50%);
150
+ }
151
+ }
152
+ }
153
+
154
+ &--top {
155
+ top: #{$overlay-space};
156
+ bottom: unset;
157
+
158
+ transform: translate(-50%, -100%);
159
+
160
+ &::before {
161
+ top: unset;
162
+ bottom: 0;
163
+
164
+ border-color: var(--uilib-tooltip-color-bg) transparent transparent;
165
+ border-width: 0.5rem 0.5rem 0;
166
+
167
+ transform: translate(-50%, 75%);
168
+ }
169
+
170
+ &.uilib-tooltip__overlay--left {
171
+ transform: translate(0, -100%);
172
+
173
+ &::before {
174
+ transform: translate(0, 75%);
175
+ }
176
+
177
+ &.uilib-tooltip__overlay--center {
178
+ top: #{$overlay-alignment};
179
+
180
+ transform: translate(-100%, 0);
181
+
182
+ &::before {
183
+ top: var(--uilib-spacing-200);
184
+ bottom: unset;
185
+
186
+ transform: translate(75%, 0);
187
+ }
188
+ }
189
+ }
190
+
191
+ &.uilib-tooltip__overlay--right {
192
+ transform: translate(0, -100%);
193
+
194
+ &::before {
195
+ transform: translate(0, 75%);
196
+ }
197
+
198
+ &.uilib-tooltip__overlay--center {
199
+ top: #{$overlay-alignment};
200
+
201
+ transform: translate(100%, 0);
202
+
203
+ &::before {
204
+ top: var(--uilib-spacing-200);
205
+ bottom: unset;
206
+
207
+ transform: translate(-75%, 0);
208
+ }
209
+ }
210
+ }
211
+ }
212
+
213
+ &--bottom {
214
+ &.uilib-tooltip__overlay--left {
215
+ transform: translate(0, -100%);
216
+
217
+ &.uilib-tooltip__overlay--center {
218
+ top: unset;
219
+ bottom: #{$overlay-alignment};
220
+
221
+ transform: translate(-100%, 0);
222
+
223
+ &::before {
224
+ top: unset;
225
+ bottom: var(--uilib-spacing-200);
226
+
227
+ transform: translate(75%, 0);
228
+ }
229
+ }
230
+ }
231
+
232
+ &.uilib-tooltip__overlay--right {
233
+ transform: translate(-100%, -100%);
234
+
235
+ &.uilib-tooltip__overlay--center {
236
+ top: unset;
237
+ bottom: #{$overlay-alignment};
238
+
239
+ transform: translate(100%, 0);
240
+
241
+ &::before {
242
+ top: unset;
243
+ bottom: var(--uilib-spacing-200);
244
+
245
+ transform: translate(-75%, 0);
246
+ }
247
+ }
248
+ }
249
+ }
250
+ }
251
+
252
+ /* stylelint-disable-next-line order/order */
253
+ &--icon .uilib-tooltip__overlay,
254
+ &__live--icon .uilib-tooltip__overlay {
255
+ bottom: calc(#{$overlay-space} + var(--uilib-spacing-200));
256
+
257
+ &--left,
258
+ &--right {
259
+ &.uilib-tooltip__overlay--center {
260
+ top: calc(50% + var(--uilib-spacing-050));
261
+ bottom: unset;
262
+ }
263
+ }
264
+
265
+ &--left {
266
+ left: 0;
267
+
268
+ &.uilib-tooltip__overlay--center {
269
+ left: calc(var(--uilib-spacing-050) * -1);
270
+ }
271
+ }
272
+
273
+ &--right {
274
+ left: unset;
275
+ right: 0;
276
+
277
+ &.uilib-tooltip__overlay--center {
278
+ right: calc(var(--uilib-spacing-050) * -1);
279
+ }
280
+ }
281
+
282
+ &--top {
283
+ top: calc(#{$overlay-space} + var(--uilib-spacing-200));
284
+ bottom: unset;
285
+
286
+ &.uilib-tooltip__overlay--left,
287
+ &.uilib-tooltip__overlay--right {
288
+ &.uilib-tooltip__overlay--center {
289
+ top: 0;
290
+ }
291
+ }
292
+ }
293
+
294
+ &--bottom {
295
+ &.uilib-tooltip__overlay--left,
296
+ &.uilib-tooltip__overlay--right {
297
+ &.uilib-tooltip__overlay--center {
298
+ top: unset;
299
+ bottom: 0;
300
+ }
301
+ }
302
+ }
303
+ }
304
+ }
305
+ }
@@ -0,0 +1,8 @@
1
+ @use '../../variables/env-variables' as *;
2
+
3
+ // Tooltip specific variables to allow theming
4
+ $uilib-tooltip-variables: (
5
+ radius: var(--uilib-border-radius-100),
6
+ color-bg: var(--uilib-color-text-body),
7
+ color-text: var(--uilib-color-text-inverse),
8
+ ) !default;
@@ -0,0 +1,14 @@
1
+ // typography / index
2
+ @use 'variables' as *;
3
+ @use 'mixins' as *;
4
+ @use '../../variables/typography' as *;
5
+
6
+ // Basic heading and text styles
7
+ @include uilib-typography;
8
+
9
+ // Utility text styles
10
+ @each $modifier in $uilib-typography-modifiers {
11
+ #{$uilib-typography-modifier-selector}#{$modifier} {
12
+ @include uilib-typography-modifier($modifier);
13
+ }
14
+ }
@@ -0,0 +1,27 @@
1
+ @use 'sass:map';
2
+ @use 'sass:meta';
3
+ @use 'sass:string';
4
+ @use 'variables' as *;
5
+ @use '../utility/mixins' as *;
6
+
7
+ @mixin uilib-typography {
8
+ @each $token, $class in $uilib-typography-selectors-config {
9
+ #{$class} {
10
+ @if string.index($token, 'uilib-color-text-strong') {
11
+ margin: var(--uilib-spacing-600) 0 var(--uilib-spacing-200);
12
+ } @else if string.index($token, 'uilib-color-text-body') {
13
+ margin: 0 0 var(--uilib-spacing-400);
14
+ }
15
+
16
+ @if string.index($token, 'uilib-color') {
17
+ color: var(--#{$token});
18
+ } @else {
19
+ font: var(--#{$token});
20
+ }
21
+ }
22
+ }
23
+ }
24
+
25
+ @mixin uilib-typography-modifier($modifier) {
26
+ @include uilib-build-css-props(map.get($uilib-typography-modifiers-config, $modifier));
27
+ }
@@ -0,0 +1,58 @@
1
+ // text sizes
2
+ @use 'sass:map';
3
+
4
+ $uilib-typography-selectors-default: (
5
+ uilib-color-text-strong: '.uilib-heading',
6
+ uilib-typography-heading-xxlarge: '.uilib-heading--xxlarge',
7
+ uilib-typography-heading-xlarge: '.uilib-heading--xlarge',
8
+ uilib-typography-heading-large: '.uilib-heading--large',
9
+ uilib-typography-heading-medium: '.uilib-heading--medium',
10
+ uilib-typography-heading-small: '.uilib-heading--small',
11
+ uilib-color-text-body: '.uilib-body',
12
+ uilib-color-text-inverse: '.uilib-heading--inverse, .uilib-body--inverse',
13
+ uilib-typography-body-large: '.uilib-body--large',
14
+ uilib-typography-body-medium: '.uilib-body--medium',
15
+ uilib-typography-body-small: '.uilib-body--small',
16
+ );
17
+ $uilib-typography-selectors-custom: () !default;
18
+ $uilib-typography-selectors-config: map.merge($uilib-typography-selectors-default, $uilib-typography-selectors-custom);
19
+
20
+ // Text modifier
21
+ $uilib-typography-modifier-selector: '.uilib-text--' !default;
22
+ $uilib-typography-modifiers-default: (
23
+ uppercase: (
24
+ 'text-transform': uppercase,
25
+ ),
26
+ wrap: (
27
+ 'white-space': normal,
28
+ ),
29
+ nowrap: (
30
+ 'white-space': nowrap,
31
+ ),
32
+ 'wrap-balance': (
33
+ 'text-wrap': balance,
34
+ ),
35
+ break: (
36
+ 'word-wrap': break-word,
37
+ 'word-break': break-word,
38
+ ),
39
+ 'align-start': (
40
+ 'text-align': start,
41
+ ),
42
+ 'align-center': (
43
+ 'text-align': center,
44
+ ),
45
+ 'align-end': (
46
+ 'text-align': end,
47
+ ),
48
+ 'tabular-nums': (
49
+ 'font-variant-numeric': tabular-nums,
50
+ ),
51
+ 'oldstyle-nums': (
52
+ 'font-variant-numeric': oldstyle-nums,
53
+ ),
54
+ );
55
+ $uilib-typography-modifiers-custom: () !default;
56
+ $uilib-typography-modifiers-config: map.merge($uilib-typography-modifiers-default, $uilib-typography-modifiers-custom);
57
+ $uilib-typography-modifiers:
58
+ 'uppercase', 'wrap', 'nowrap', 'break', 'align-start', 'align-center', 'align-end', 'tabular-nums', 'oldstyle-nums' !default;