@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,130 @@
1
+ // scroller / _mixins
2
+ @use 'variables' as *;
3
+ @use '../utility/mixins' as *;
4
+
5
+ // Builds scroller
6
+ @mixin uilib-scroller() {
7
+ @property --uilib-scroller-start-fade {
8
+ syntax: '<length>';
9
+ inherits: false;
10
+ initial-value: 0;
11
+ }
12
+
13
+ @property --uilib-scroller-end-fade {
14
+ syntax: '<length>';
15
+ inherits: false;
16
+ initial-value: 0;
17
+ }
18
+
19
+ @keyframes uilib-scrollfade {
20
+ 0% {
21
+ --uilib-scroller-start-fade: 0;
22
+ }
23
+
24
+ 10%,
25
+ 100% {
26
+ --uilib-scroller-start-fade: var(--uilib-scroller-fade-size);
27
+ }
28
+
29
+ /* stylelint-disable-next-line keyframe-block-no-duplicate-selectors */
30
+ 0%,
31
+ 90% {
32
+ --uilib-scroller-end-fade: var(--uilib-scroller-fade-size);
33
+ }
34
+
35
+ /* stylelint-disable-next-line keyframe-block-no-duplicate-selectors */
36
+ 100% {
37
+ --uilib-scroller-end-fade: 0;
38
+ }
39
+ }
40
+
41
+ .uilib-scroller {
42
+ $mask-vertical:
43
+ linear-gradient(to bottom, #0000, #ffff var(--uilib-scroller-start-fade) calc(100% - var(--uilib-scroller-end-fade)), #0000),
44
+ linear-gradient(to right, transparent 0% calc(100% - var(--uilib-scroller-bar-size)), #fff calc(100% - var(--uilib-scroller-bar-size)), #fff);
45
+ $mask-horizontal:
46
+ linear-gradient(to right, #0000, #fff var(--uilib-scroller-start-fade) calc(100% - var(--uilib-scroller-end-fade)), #0000),
47
+ linear-gradient(to bottom, transparent 0% calc(100% - var(--uilib-scroller-bar-size)), #fff calc(100% - var(--uilib-scroller-bar-size)), #fff);
48
+
49
+ position: relative;
50
+
51
+ display: block;
52
+
53
+ overflow: hidden;
54
+
55
+ &:has(.uilib-scroller__inner:focus-visible) {
56
+ border-radius: var(--uilib-scroller-focus-radius);
57
+
58
+ box-shadow: var(--uilib-focus-default);
59
+
60
+ &::before {
61
+ border-radius: var(--uilib-scroller-focus-radius);
62
+ }
63
+ }
64
+
65
+ &__inner {
66
+ width: 100%;
67
+ height: 100%;
68
+
69
+ overflow-x: hidden;
70
+ /* stylelint-disable-next-line declaration-block-no-redundant-longhand-properties */
71
+ overflow-y: auto;
72
+ -webkit-mask: #{$mask-vertical};
73
+ mask: #{$mask-vertical};
74
+
75
+ animation: uilib-scrollfade;
76
+ animation-timeline: --uilib-scrollfade;
77
+ scroll-timeline: --uilib-scrollfade y;
78
+
79
+ /* Edge legacy */
80
+ -ms-overflow-style: initial;
81
+
82
+ /* Firefox and new Chrome, Edge and Opera */
83
+ scrollbar-color: var(--uilib-scroller-thumb-color) transparent;
84
+ scrollbar-width: auto;
85
+
86
+ &:focus-visible::before {
87
+ display: none;
88
+ }
89
+
90
+ /* Chrome, Edge, Opera, and Safari */
91
+ &::-webkit-scrollbar {
92
+ display: initial;
93
+
94
+ width: var(--uilib-scroller-thumb-size);
95
+ height: var(--uilib-scroller-thumb-size);
96
+ -webkit-overflow-scrolling: auto;
97
+ }
98
+
99
+ &::-webkit-scrollbar-track {
100
+ background: transparent;
101
+ }
102
+
103
+ &::-webkit-scrollbar-thumb {
104
+ border: var(--uilib-spacing-100) solid transparent;
105
+ border-radius: var(--uilib-scroller-thumb-radius);
106
+
107
+ background-color: var(--uilib-scroller-thumb-color);
108
+ background-clip: padding-box;
109
+
110
+ cursor: pointer;
111
+ }
112
+ }
113
+
114
+ /* stylelint-disable-next-line order/order */
115
+ &--horizontal &__inner {
116
+ overflow-x: auto;
117
+ /* stylelint-disable-next-line declaration-block-no-redundant-longhand-properties */
118
+ overflow-y: hidden;
119
+ -webkit-mask: #{$mask-horizontal};
120
+ mask: #{$mask-horizontal};
121
+
122
+ scroll-timeline: --uilib-scrollfade x;
123
+ }
124
+
125
+ &--nofade &__inner {
126
+ -webkit-mask: none;
127
+ mask: none;
128
+ }
129
+ }
130
+ }
@@ -0,0 +1,9 @@
1
+ $uilib-scroller-variables: (
2
+ thumb-size: var(--uilib-spacing-400),
3
+ thumb-radius: var(--uilib-border-radius-pill),
4
+ thumb-color: var(--uilib-color-other-scroll-handle),
5
+ fade-size: var(--uilib-spacing-400),
6
+ focus-radius: var(--uilib-border-radius-100),
7
+ // Do not advertise this. This is for the JS to use
8
+ bar-size: var(--uilib-spacing-400),
9
+ ) !default;
@@ -0,0 +1,3 @@
1
+ // show more less / index
2
+ @use 'mixins' as *;
3
+ @include uilib-show-more-less;
@@ -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
+ }