@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,468 @@
1
+ // flight-details / _mixins
2
+ @use '../utility/mixins' as *;
3
+
4
+ // Builds flight-details
5
+ @mixin uilib-flight-details() {
6
+ .uilib-flight-details {
7
+ display: block;
8
+ container-type: inline-size;
9
+ container-name: uilib-flight-details;
10
+
11
+ &__outbound,
12
+ &__return {
13
+ display: flex;
14
+ flex-flow: column;
15
+ gap: var(--uilib-spacing-100);
16
+ }
17
+
18
+ &__title {
19
+ display: flex;
20
+ flex-flow: row wrap;
21
+ gap: var(--uilib-spacing-100);
22
+ align-items: center;
23
+
24
+ &::before {
25
+ content: '';
26
+
27
+ order: 1;
28
+
29
+ display: block;
30
+
31
+ width: calc(var(--uilib-spacing-300) / 4);
32
+
33
+ aspect-ratio: var(--uilib-aspect-ratio-1x1-square);
34
+
35
+ border-radius: var(--uilib-border-radius-circle);
36
+
37
+ background: var(--uilib-color-text-body);
38
+ }
39
+
40
+ &-type {
41
+ order: 0;
42
+
43
+ color: var(--uilib-color-text-strong);
44
+ font: var(--uilib-typography-label-medium-strong);
45
+ }
46
+
47
+ &-date {
48
+ order: 2;
49
+
50
+ display: flex;
51
+ flex-flow: row wrap;
52
+ gap: var(--uilib-spacing-100);
53
+ align-items: center;
54
+
55
+ color: var(--uilib-color-text-body);
56
+ font: var(--uilib-typography-body-medium);
57
+ }
58
+ }
59
+
60
+ &__airline {
61
+ display: flex;
62
+ flex-flow: row nowrap;
63
+ gap: 0 1ex;
64
+ align-items: flex-start;
65
+
66
+ margin-bottom: calc(var(--uilib-spacing-600) * -1);
67
+ padding: var(--uilib-spacing-200) 0;
68
+ }
69
+
70
+ &__airline-logo {
71
+ max-height: 1.375rem; /* 22 / 16 */
72
+ margin-top: calc(calc(var(--uilib-spacing-050) / 2) * -1);
73
+ }
74
+
75
+ &-leg {
76
+ display: grid;
77
+ grid-template:
78
+ 'originTime originInfo'
79
+ 'destinationTime destinationInfo'
80
+ / auto 1fr;
81
+ gap: var(--uilib-spacing-200) var(--uilib-spacing-300);
82
+
83
+ margin-top: var(--uilib-spacing-600);
84
+ padding-left: var(--uilib-spacing-600);
85
+
86
+ &--indirect-concise {
87
+ display: none;
88
+ }
89
+
90
+ &:has(.uilib-flight-details-leg__type, .uilib-flight-details-leg__duration) {
91
+ grid-template-areas:
92
+ 'type duration'
93
+ 'originTime originInfo'
94
+ 'destinationTime destinationInfo';
95
+ }
96
+
97
+ &:has(.uilib-flight-details-leg__connection-time, .uilib-flight-details-leg__connection-details) {
98
+ grid-template-areas:
99
+ 'originTime originInfo'
100
+ 'destinationTime destinationInfo'
101
+ 'connectionTime connectionDetails';
102
+ }
103
+
104
+ &:has(.uilib-flight-details-leg__type, .uilib-flight-details-leg__duration):has(
105
+ .uilib-flight-details-leg__connection-time,
106
+ .uilib-flight-details-leg__connection-details
107
+ ) {
108
+ grid-template-areas:
109
+ 'type duration'
110
+ 'originTime originInfo'
111
+ 'destinationTime destinationInfo'
112
+ 'connectionTime connectionDetails';
113
+ }
114
+
115
+ &__type,
116
+ &__duration {
117
+ grid-area: type;
118
+
119
+ color: var(--uilib-color-text-body);
120
+ font: var(--uilib-typography-body-medium);
121
+ }
122
+
123
+ &__duration {
124
+ grid-area: duration;
125
+ }
126
+
127
+ &__origin-time,
128
+ &__destination-time {
129
+ grid-area: originTime;
130
+
131
+ position: relative;
132
+
133
+ align-self: stretch;
134
+
135
+ color: var(--uilib-color-text-strong);
136
+ font: var(--uilib-typography-component-heading-large-strong);
137
+
138
+ &::before {
139
+ position: absolute;
140
+ top: 0.3rem;
141
+ left: calc(var(--uilib-spacing-400) * -1);
142
+ content: '';
143
+
144
+ width: calc(var(--uilib-spacing-500) / 2);
145
+
146
+ aspect-ratio: var(--uilib-aspect-ratio-1x1-square);
147
+
148
+ border-radius: var(--uilib-border-radius-circle);
149
+
150
+ background: var(--uilib-color-border-brand-strong);
151
+
152
+ transform: translate(-50%, 0);
153
+ }
154
+
155
+ &::after {
156
+ position: absolute;
157
+ top: 0.3rem;
158
+ left: calc(var(--uilib-spacing-400) * -1);
159
+ bottom: calc(var(--uilib-spacing-100) * -1);
160
+ content: '';
161
+
162
+ border-right: var(--uilib-stroke-size-050) var(--uilib-stroke-style-solid) var(--uilib-color-border-brand-strong);
163
+
164
+ transform: translate(-50%, 0);
165
+ }
166
+ }
167
+
168
+ &__destination-time {
169
+ grid-area: destinationTime;
170
+
171
+ display: flex;
172
+ flex-flow: column;
173
+ align-items: flex-start;
174
+ align-self: start;
175
+
176
+ &::before {
177
+ top: unset;
178
+ bottom: 0.4rem;
179
+ }
180
+
181
+ &::after {
182
+ top: calc(var(--uilib-spacing-100) * -1);
183
+ bottom: 0.4rem;
184
+ }
185
+ }
186
+
187
+ &__origin,
188
+ &__destination {
189
+ grid-area: originInfo;
190
+
191
+ display: flex;
192
+ flex-flow: row nowrap;
193
+ gap: 0 1ex;
194
+ align-items: flex-end;
195
+
196
+ padding-bottom: var(--uilib-spacing-050);
197
+
198
+ overflow: hidden;
199
+ }
200
+
201
+ &__destination {
202
+ grid-area: destinationInfo;
203
+ }
204
+
205
+ &__origin-name,
206
+ &__destination-name {
207
+ grid-area: originName;
208
+
209
+ color: var(--uilib-color-text-body);
210
+ font: var(--uilib-typography-body-medium);
211
+ white-space: nowrap;
212
+ text-overflow: ellipsis;
213
+
214
+ overflow: hidden;
215
+ }
216
+
217
+ &__origin-code,
218
+ &__destination-code {
219
+ grid-area: originCode;
220
+
221
+ color: var(--uilib-color-text-body);
222
+ font: var(--uilib-typography-body-medium-strong);
223
+ }
224
+
225
+ &__destination-name {
226
+ grid-area: destinationName;
227
+ }
228
+
229
+ &__destination-code {
230
+ grid-area: destinationCode;
231
+ }
232
+
233
+ &__connection-time {
234
+ grid-area: connectionTime;
235
+
236
+ color: var(--uilib-color-text-strong);
237
+ font: var(--uilib-typography-label-small-strong);
238
+ }
239
+
240
+ &__connection-details {
241
+ grid-area: connectionDetails;
242
+
243
+ color: var(--uilib-color-text-body);
244
+ font: var(--uilib-typography-body-small);
245
+ }
246
+
247
+ &__tooltip.uilib-tooltip {
248
+ margin-top: calc(var(--uilib-spacing-100) * -1);
249
+
250
+ font: var(--uilib-typography-body-medium);
251
+ }
252
+ }
253
+
254
+ &__arrival-date {
255
+ display: flex;
256
+ flex-flow: row wrap;
257
+ gap: 0 var(--uilib-spacing-100);
258
+ align-items: baseline;
259
+
260
+ color: var(--uilib-color-text-body);
261
+ font: var(--uilib-typography-body-small-strong);
262
+ }
263
+
264
+ &__outbound--indirect &__arrival-date::before,
265
+ &__return--indirect &__arrival-date::before {
266
+ content: '';
267
+
268
+ order: 1;
269
+
270
+ display: block;
271
+ align-self: center;
272
+
273
+ width: calc(var(--uilib-spacing-300) / 4);
274
+
275
+ aspect-ratio: var(--uilib-aspect-ratio-1x1-square);
276
+
277
+ border-radius: var(--uilib-border-radius-circle);
278
+
279
+ background: var(--uilib-color-text-body);
280
+ }
281
+
282
+ &__duration {
283
+ order: 2;
284
+ }
285
+
286
+ &__outbound--indirect .uilib-flight-details__title + .uilib-flight-details__airline,
287
+ &__return--indirect .uilib-flight-details__title + .uilib-flight-details__airline {
288
+ display: none;
289
+ }
290
+
291
+ &__group--collapsed {
292
+ .uilib-flight-details__outbound--indirect .uilib-flight-details__airline,
293
+ .uilib-flight-details__return--indirect .uilib-flight-details__airline,
294
+ .uilib-flight-details-leg:not(.uilib-flight-details-leg--direct),
295
+ .uilib-flight-details__arrival-date::before,
296
+ .uilib-flight-details__duration {
297
+ display: none;
298
+ }
299
+
300
+ .uilib-flight-details__title + .uilib-flight-details__airline {
301
+ display: flex;
302
+ }
303
+
304
+ .uilib-flight-details-leg.uilib-flight-details-leg--indirect-concise {
305
+ display: grid;
306
+ }
307
+ }
308
+
309
+ &__button-icon {
310
+ -webkit-mask-image: var(--uilib-flight-details-icon);
311
+ mask-image: var(--uilib-flight-details-icon);
312
+
313
+ transform: rotate(0deg);
314
+
315
+ @media (prefers-reduced-motion: no-preference) {
316
+ transition: transform var(--uilib-motion-duration-medium) var(--uilib-motion-timing-out);
317
+ }
318
+ }
319
+
320
+ &__button[aria-expanded='true'] &__button-icon {
321
+ transform: rotate(180deg);
322
+ }
323
+
324
+ &__button.uilib-link {
325
+ margin-top: calc(var(--uilib-spacing-200) - var(--uilib-focus-gap));
326
+ margin-bottom: calc(var(--uilib-spacing-200) - var(--uilib-focus-gap));
327
+ }
328
+
329
+ /* stylelint-disable-next-line order/order */
330
+ @container uilib-flight-details (min-width: 15rem) {
331
+ .uilib-flight-details-leg--direct,
332
+ .uilib-flight-details-leg--indirect-concise {
333
+ grid-template:
334
+ 'originTime type type destinationTime'
335
+ 'originTime duration duration destinationTime'
336
+ 'originName originName destinationName destinationName'
337
+ 'originCode originCode destinationCode destinationCode'
338
+ / auto 1fr 1fr auto;
339
+ gap: 0 var(--uilib-spacing-600);
340
+
341
+ padding-left: 0;
342
+
343
+ .uilib-flight-details-leg__type,
344
+ .uilib-flight-details-leg__duration {
345
+ position: relative;
346
+
347
+ justify-self: stretch;
348
+
349
+ padding-bottom: var(--uilib-spacing-100);
350
+
351
+ text-align: center;
352
+ }
353
+
354
+ .uilib-flight-details-leg__duration {
355
+ padding-top: var(--uilib-spacing-100);
356
+ padding-bottom: 0;
357
+
358
+ border-top: var(--uilib-stroke-size-050) var(--uilib-stroke-style-solid) var(--uilib-color-border-brand-strong);
359
+
360
+ &::before,
361
+ &::after {
362
+ position: absolute;
363
+ top: calc(calc(var(--uilib-stroke-size-050) / 2) * -1);
364
+ left: 0;
365
+ content: '';
366
+
367
+ width: calc(var(--uilib-spacing-500) / 2);
368
+
369
+ aspect-ratio: var(--uilib-aspect-ratio-1x1-square);
370
+
371
+ border-radius: var(--uilib-border-radius-circle);
372
+
373
+ background: var(--uilib-color-border-brand-strong);
374
+
375
+ transform: translate(-50%, -50%);
376
+ }
377
+
378
+ &::after {
379
+ left: unset;
380
+ right: 0;
381
+
382
+ transform: translate(50%, -50%);
383
+ }
384
+ }
385
+
386
+ .uilib-flight-details-leg__origin,
387
+ .uilib-flight-details-leg__destination {
388
+ display: contents;
389
+ }
390
+
391
+ .uilib-flight-details-leg__origin-time,
392
+ .uilib-flight-details-leg__destination-time {
393
+ align-self: center;
394
+
395
+ &::before,
396
+ &::after {
397
+ display: none;
398
+ }
399
+ }
400
+
401
+ .uilib-flight-details-leg__destination-time {
402
+ justify-self: end;
403
+ }
404
+
405
+ .uilib-flight-details-leg__destination-name,
406
+ .uilib-flight-details-leg__destination-code {
407
+ justify-self: end;
408
+
409
+ text-align: right;
410
+ }
411
+
412
+ .uilib-flight-details-leg__origin-name,
413
+ .uilib-flight-details-leg__destination-name {
414
+ max-width: 100%;
415
+ }
416
+ }
417
+
418
+ .uilib-flight-details-leg--indirect-concise .uilib-flight-details-leg__type::before {
419
+ position: absolute;
420
+ left: 50%;
421
+ bottom: calc(calc(var(--uilib-stroke-size-050) / 2) * -1);
422
+ content: '';
423
+ z-index: 1;
424
+
425
+ width: calc(var(--uilib-spacing-500) / 2);
426
+
427
+ aspect-ratio: var(--uilib-aspect-ratio-1x1-square);
428
+
429
+ border: var(--uilib-stroke-size-050) var(--uilib-stroke-style-solid) var(--uilib-color-border-brand-strong);
430
+ border-radius: var(--uilib-border-radius-circle);
431
+
432
+ background: var(--uilib-color-core-neutral);
433
+
434
+ transform: translate(-50%, 50%);
435
+ }
436
+ }
437
+
438
+ @container uilib-flight-details (min-width: 34rem) {
439
+ .uilib-flight-details {
440
+ &__group {
441
+ display: flex;
442
+ flex-flow: row nowrap;
443
+ gap: var(--uilib-spacing-200);
444
+
445
+ width: 100%;
446
+
447
+ .uilib-flight-details__outbound,
448
+ .uilib-flight-details__return {
449
+ flex-grow: 1;
450
+
451
+ width: 50%;
452
+ }
453
+
454
+ .uilib-flight-details__divider {
455
+ margin: 0 var(--uilib-spacing-200);
456
+
457
+ border-top-width: var(--uilib-stroke-size-025);
458
+ border-right-width: var(--uilib-stroke-size-025);
459
+ }
460
+ }
461
+ }
462
+ }
463
+
464
+ &__visually-hidden {
465
+ @include uilib-visually-hidden;
466
+ }
467
+ }
468
+ }
@@ -0,0 +1,6 @@
1
+ @use '../../variables/env-variables' as *;
2
+
3
+ // Flight details specific variables to allow theming
4
+ $uilib-flight-details-variables: (
5
+ icon: url('#{$uilib-assets-base-url}v3/icons/tui/standard/chevron-down.svg'),
6
+ ) !default;
@@ -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;