@gooddata/sdk-ui-kit 10.26.0-alpha.8 → 10.26.0

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 (188) hide show
  1. package/esm/@ui/@utils/keyboardNavigation.d.ts +18 -0
  2. package/esm/@ui/@utils/keyboardNavigation.d.ts.map +1 -0
  3. package/esm/@ui/@utils/keyboardNavigation.js +47 -0
  4. package/esm/@ui/@utils/keyboardNavigation.js.map +1 -0
  5. package/esm/@ui/UiButton/UiButton.d.ts +3 -4
  6. package/esm/@ui/UiButton/UiButton.d.ts.map +1 -1
  7. package/esm/@ui/UiButton/UiButton.js +10 -9
  8. package/esm/@ui/UiButton/UiButton.js.map +1 -1
  9. package/esm/@ui/UiChip/UiChip.d.ts +10 -1
  10. package/esm/@ui/UiChip/UiChip.d.ts.map +1 -1
  11. package/esm/@ui/UiChip/UiChip.js +21 -12
  12. package/esm/@ui/UiChip/UiChip.js.map +1 -1
  13. package/esm/@ui/UiFocusTrap/UiFocusTrap.d.ts.map +1 -1
  14. package/esm/@ui/UiFocusTrap/UiFocusTrap.js +17 -13
  15. package/esm/@ui/UiFocusTrap/UiFocusTrap.js.map +1 -1
  16. package/esm/@ui/UiIcon/UiIcon.d.ts +1 -1
  17. package/esm/@ui/UiIcon/UiIcon.d.ts.map +1 -1
  18. package/esm/@ui/UiIcon/UiIcon.js +3 -3
  19. package/esm/@ui/UiIcon/UiIcon.js.map +1 -1
  20. package/esm/@ui/UiIcon/icons.d.ts +1 -8
  21. package/esm/@ui/UiIcon/icons.d.ts.map +1 -1
  22. package/esm/@ui/UiIcon/icons.js +14 -53
  23. package/esm/@ui/UiIcon/icons.js.map +1 -1
  24. package/esm/@ui/UiIconButton/UiIconButton.d.ts +21 -0
  25. package/esm/@ui/UiIconButton/UiIconButton.d.ts.map +1 -0
  26. package/esm/@ui/UiIconButton/UiIconButton.js +15 -0
  27. package/esm/@ui/UiIconButton/UiIconButton.js.map +1 -0
  28. package/esm/@ui/UiListbox/UiListbox.d.ts +11 -0
  29. package/esm/@ui/UiListbox/UiListbox.d.ts.map +1 -0
  30. package/esm/@ui/UiListbox/UiListbox.js +133 -0
  31. package/esm/@ui/UiListbox/UiListbox.js.map +1 -0
  32. package/esm/@ui/UiListbox/defaults/DefaultUiListboxInteractiveItemComponent.d.ts +7 -0
  33. package/esm/@ui/UiListbox/defaults/DefaultUiListboxInteractiveItemComponent.d.ts.map +1 -0
  34. package/esm/@ui/UiListbox/defaults/DefaultUiListboxInteractiveItemComponent.js +16 -0
  35. package/esm/@ui/UiListbox/defaults/DefaultUiListboxInteractiveItemComponent.js.map +1 -0
  36. package/esm/@ui/UiListbox/defaults/DefaultUiListboxStaticItemComponent.d.ts +12 -0
  37. package/esm/@ui/UiListbox/defaults/DefaultUiListboxStaticItemComponent.d.ts.map +1 -0
  38. package/esm/@ui/UiListbox/defaults/DefaultUiListboxStaticItemComponent.js +18 -0
  39. package/esm/@ui/UiListbox/defaults/DefaultUiListboxStaticItemComponent.js.map +1 -0
  40. package/esm/@ui/UiListbox/defaults/firstCharacterSearch.d.ts +8 -0
  41. package/esm/@ui/UiListbox/defaults/firstCharacterSearch.d.ts.map +1 -0
  42. package/esm/@ui/UiListbox/defaults/firstCharacterSearch.js +27 -0
  43. package/esm/@ui/UiListbox/defaults/firstCharacterSearch.js.map +1 -0
  44. package/esm/@ui/UiListbox/listboxBem.d.ts +2 -0
  45. package/esm/@ui/UiListbox/listboxBem.d.ts.map +1 -0
  46. package/esm/@ui/UiListbox/listboxBem.js +4 -0
  47. package/esm/@ui/UiListbox/listboxBem.js.map +1 -0
  48. package/esm/@ui/UiListbox/types.d.ts +73 -0
  49. package/esm/@ui/UiListbox/types.d.ts.map +1 -0
  50. package/esm/@ui/UiListbox/types.js +3 -0
  51. package/esm/@ui/UiListbox/types.js.map +1 -0
  52. package/esm/Bubble/withBubble.d.ts +1 -1
  53. package/esm/Bubble/withBubble.d.ts.map +1 -1
  54. package/esm/Bubble/withBubble.js +7 -6
  55. package/esm/Bubble/withBubble.js.map +1 -1
  56. package/esm/Button/Button.d.ts.map +1 -1
  57. package/esm/Button/Button.js +2 -2
  58. package/esm/Button/Button.js.map +1 -1
  59. package/esm/Dialog/BackButton.d.ts.map +1 -1
  60. package/esm/Dialog/BackButton.js +6 -2
  61. package/esm/Dialog/BackButton.js.map +1 -1
  62. package/esm/Dialog/ConfirmDialogBase.d.ts.map +1 -1
  63. package/esm/Dialog/ConfirmDialogBase.js +5 -3
  64. package/esm/Dialog/ConfirmDialogBase.js.map +1 -1
  65. package/esm/Dialog/DialogBase.d.ts.map +1 -1
  66. package/esm/Dialog/DialogBase.js +10 -13
  67. package/esm/Dialog/DialogBase.js.map +1 -1
  68. package/esm/Dialog/ShareDialog/ShareDialogBase/AddGranteeBase.d.ts.map +1 -1
  69. package/esm/Dialog/ShareDialog/ShareDialogBase/AddGranteeBase.js +6 -2
  70. package/esm/Dialog/ShareDialog/ShareDialogBase/AddGranteeBase.js.map +1 -1
  71. package/esm/Dialog/ShareDialog/ShareDialogBase/AddGranteeButton.d.ts.map +1 -1
  72. package/esm/Dialog/ShareDialog/ShareDialogBase/AddGranteeButton.js +5 -3
  73. package/esm/Dialog/ShareDialog/ShareDialogBase/AddGranteeButton.js.map +1 -1
  74. package/esm/Dialog/ShareDialog/ShareDialogBase/AddGranteeSelect.d.ts.map +1 -1
  75. package/esm/Dialog/ShareDialog/ShareDialogBase/AddGranteeSelect.js +18 -6
  76. package/esm/Dialog/ShareDialog/ShareDialogBase/AddGranteeSelect.js.map +1 -1
  77. package/esm/Dialog/ShareDialog/ShareDialogBase/GranteeItem.d.ts.map +1 -1
  78. package/esm/Dialog/ShareDialog/ShareDialogBase/GranteeItem.js +5 -3
  79. package/esm/Dialog/ShareDialog/ShareDialogBase/GranteeItem.js.map +1 -1
  80. package/esm/Dialog/ShareDialog/ShareDialogBase/GranularPermissions/GranularGranteeGroupItem.d.ts +1 -0
  81. package/esm/Dialog/ShareDialog/ShareDialogBase/GranularPermissions/GranularGranteeGroupItem.d.ts.map +1 -1
  82. package/esm/Dialog/ShareDialog/ShareDialogBase/GranularPermissions/GranularGranteeGroupItem.js +6 -4
  83. package/esm/Dialog/ShareDialog/ShareDialogBase/GranularPermissions/GranularGranteeGroupItem.js.map +1 -1
  84. package/esm/Dialog/ShareDialog/ShareDialogBase/GranularPermissions/GranularGranteeUserItem.d.ts +1 -0
  85. package/esm/Dialog/ShareDialog/ShareDialogBase/GranularPermissions/GranularGranteeUserItem.d.ts.map +1 -1
  86. package/esm/Dialog/ShareDialog/ShareDialogBase/GranularPermissions/GranularGranteeUserItem.js +6 -4
  87. package/esm/Dialog/ShareDialog/ShareDialogBase/GranularPermissions/GranularGranteeUserItem.js.map +1 -1
  88. package/esm/Dialog/ShareDialog/ShareDialogBase/GranularPermissions/GranularPermissionItem.d.ts +1 -1
  89. package/esm/Dialog/ShareDialog/ShareDialogBase/GranularPermissions/GranularPermissionItem.d.ts.map +1 -1
  90. package/esm/Dialog/ShareDialog/ShareDialogBase/GranularPermissions/GranularPermissionItem.js +7 -6
  91. package/esm/Dialog/ShareDialog/ShareDialogBase/GranularPermissions/GranularPermissionItem.js.map +1 -1
  92. package/esm/Dialog/ShareDialog/ShareDialogBase/GranularPermissions/GranularPermissionsDropdown.d.ts +4 -3
  93. package/esm/Dialog/ShareDialog/ShareDialogBase/GranularPermissions/GranularPermissionsDropdown.d.ts.map +1 -1
  94. package/esm/Dialog/ShareDialog/ShareDialogBase/GranularPermissions/GranularPermissionsDropdown.js +18 -16
  95. package/esm/Dialog/ShareDialog/ShareDialogBase/GranularPermissions/GranularPermissionsDropdown.js.map +1 -1
  96. package/esm/Dialog/ShareDialog/ShareDialogBase/GranularPermissions/GranularPermissionsDropdownBody.d.ts +1 -1
  97. package/esm/Dialog/ShareDialog/ShareDialogBase/GranularPermissions/GranularPermissionsDropdownBody.d.ts.map +1 -1
  98. package/esm/Dialog/ShareDialog/ShareDialogBase/GranularPermissions/GranularPermissionsDropdownBody.js +93 -13
  99. package/esm/Dialog/ShareDialog/ShareDialogBase/GranularPermissions/GranularPermissionsDropdownBody.js.map +1 -1
  100. package/esm/Dialog/ShareDialog/ShareDialogBase/ShareDialogBase.d.ts.map +1 -1
  101. package/esm/Dialog/ShareDialog/ShareDialogBase/ShareDialogBase.js +4 -3
  102. package/esm/Dialog/ShareDialog/ShareDialogBase/ShareDialogBase.js.map +1 -1
  103. package/esm/Dialog/ShareDialog/ShareDialogBase/ShareGranteeBase.d.ts.map +1 -1
  104. package/esm/Dialog/ShareDialog/ShareDialogBase/ShareGranteeBase.js +7 -2
  105. package/esm/Dialog/ShareDialog/ShareDialogBase/ShareGranteeBase.js.map +1 -1
  106. package/esm/Dialog/ShareDialog/ShareDialogBase/types.d.ts +1 -0
  107. package/esm/Dialog/ShareDialog/ShareDialogBase/types.d.ts.map +1 -1
  108. package/esm/Dialog/ShareDialog/ShareDialogBase/types.js.map +1 -1
  109. package/esm/Dialog/ShareDialog/ShareDialogBase/utils.d.ts +8 -0
  110. package/esm/Dialog/ShareDialog/ShareDialogBase/utils.d.ts.map +1 -1
  111. package/esm/Dialog/ShareDialog/ShareDialogBase/utils.js +8 -0
  112. package/esm/Dialog/ShareDialog/ShareDialogBase/utils.js.map +1 -1
  113. package/esm/Dialog/elementId.d.ts +5 -0
  114. package/esm/Dialog/elementId.d.ts.map +1 -0
  115. package/esm/Dialog/elementId.js +6 -0
  116. package/esm/Dialog/elementId.js.map +1 -0
  117. package/esm/Dialog/typings.d.ts +4 -0
  118. package/esm/Dialog/typings.d.ts.map +1 -1
  119. package/esm/Dropdown/Dropdown.d.ts +18 -1
  120. package/esm/Dropdown/Dropdown.d.ts.map +1 -1
  121. package/esm/Dropdown/Dropdown.js +41 -29
  122. package/esm/Dropdown/Dropdown.js.map +1 -1
  123. package/esm/Dropdown/DropdownButton.d.ts.map +1 -1
  124. package/esm/Dropdown/DropdownButton.js +2 -1
  125. package/esm/Dropdown/DropdownButton.js.map +1 -1
  126. package/esm/Dropdown/DropdownButtonKeyboardWrapper.d.ts +8 -0
  127. package/esm/Dropdown/DropdownButtonKeyboardWrapper.d.ts.map +1 -0
  128. package/esm/Dropdown/DropdownButtonKeyboardWrapper.js +22 -0
  129. package/esm/Dropdown/DropdownButtonKeyboardWrapper.js.map +1 -0
  130. package/esm/List/index.js +1 -1
  131. package/esm/RecurrenceForm/CronExpression.d.ts +2 -1
  132. package/esm/RecurrenceForm/CronExpression.d.ts.map +1 -1
  133. package/esm/RecurrenceForm/CronExpression.js +25 -10
  134. package/esm/RecurrenceForm/CronExpression.js.map +1 -1
  135. package/esm/RecurrenceForm/DateTime.d.ts.map +1 -1
  136. package/esm/RecurrenceForm/DateTime.js +2 -1
  137. package/esm/RecurrenceForm/DateTime.js.map +1 -1
  138. package/esm/RecurrenceForm/Recurrence.d.ts +1 -0
  139. package/esm/RecurrenceForm/Recurrence.d.ts.map +1 -1
  140. package/esm/RecurrenceForm/Recurrence.js +2 -2
  141. package/esm/RecurrenceForm/Recurrence.js.map +1 -1
  142. package/esm/RecurrenceForm/RecurrenceForm.d.ts +1 -0
  143. package/esm/RecurrenceForm/RecurrenceForm.d.ts.map +1 -1
  144. package/esm/RecurrenceForm/RecurrenceForm.js +2 -2
  145. package/esm/RecurrenceForm/RecurrenceForm.js.map +1 -1
  146. package/esm/RecurrenceForm/RepeatTypeDescription.d.ts.map +1 -1
  147. package/esm/RecurrenceForm/RepeatTypeDescription.js +3 -2
  148. package/esm/RecurrenceForm/RepeatTypeDescription.js.map +1 -1
  149. package/esm/RecurrenceForm/useCronValidation.js +1 -1
  150. package/esm/RecurrenceForm/useCronValidation.js.map +1 -1
  151. package/esm/RichText/RichText.d.ts.map +1 -1
  152. package/esm/RichText/RichText.js +2 -0
  153. package/esm/RichText/RichText.js.map +1 -1
  154. package/esm/RichText/RichTextWithTooltip.d.ts +1 -1
  155. package/esm/RichText/RichTextWithTooltip.d.ts.map +1 -1
  156. package/esm/RichText/RichTextWithTooltip.js +12 -4
  157. package/esm/RichText/RichTextWithTooltip.js.map +1 -1
  158. package/esm/RichText/plugins/rehype-references.d.ts.map +1 -1
  159. package/esm/RichText/plugins/rehype-references.js +18 -15
  160. package/esm/RichText/plugins/rehype-references.js.map +1 -1
  161. package/esm/index.d.ts +8 -3
  162. package/esm/index.d.ts.map +1 -1
  163. package/esm/index.js +5 -1
  164. package/esm/index.js.map +1 -1
  165. package/esm/sdk-ui-kit.d.ts +157 -14
  166. package/esm/utils/domUtilities.d.ts +2 -0
  167. package/esm/utils/domUtilities.d.ts.map +1 -1
  168. package/esm/utils/domUtilities.js +16 -1
  169. package/esm/utils/domUtilities.js.map +1 -1
  170. package/package.json +9 -9
  171. package/src/@ui/UiButton/UiButton.scss +43 -149
  172. package/src/@ui/UiChip/UiChip.scss +60 -19
  173. package/src/@ui/UiIcon/UiIcon.scss +3 -3
  174. package/src/@ui/UiIconButton/UiIconButton.scss +164 -0
  175. package/src/@ui/UiListbox/UiListbox.scss +79 -0
  176. package/src/@ui/index.scss +2 -0
  177. package/styles/css/button.css +0 -6
  178. package/styles/css/button.css.map +1 -1
  179. package/styles/css/main.css +290 -214
  180. package/styles/css/main.css.map +1 -1
  181. package/styles/css/recurrenceForm.css +13 -0
  182. package/styles/css/recurrenceForm.css.map +1 -1
  183. package/styles/css/shareDialog.css +16 -0
  184. package/styles/css/shareDialog.css.map +1 -1
  185. package/styles/scss/button.scss +0 -8
  186. package/styles/scss/dropdown.scss +1 -1
  187. package/styles/scss/recurrenceForm.scss +16 -0
  188. package/styles/scss/shareDialog.scss +20 -1
@@ -1,7 +1,6 @@
1
1
  // (C) 2024-2025 GoodData Corporation
2
2
 
3
- .gd-ui-kit-button,
4
- %ui-button {
3
+ .gd-ui-kit-button {
5
4
  $root: &;
6
5
 
7
6
  font-family: var(--gd-font-family);
@@ -19,90 +18,49 @@
19
18
  cursor: default;
20
19
  }
21
20
 
22
- &:not(&:disabled, &--variant-tertiary, &--variant-popout) {
23
- &:active {
24
- #{$root}__text {
25
- // Move text inside the button on :active state.
26
- padding-top: 1px;
27
- }
28
-
29
- #{$root}__icon {
30
- // Move icon inside the button on :active state.
31
- padding-top: 1px;
32
- }
33
- }
34
- }
35
-
36
- &__text,
37
- %ui-button__text {
38
- transition: var(--gd-transition-all);
39
- }
40
-
41
- &__icon,
42
- %ui-button__icon {
43
- display: flex;
44
- align-items: center;
45
- justify-content: center;
46
- transition: var(--gd-transition-all);
47
- }
48
-
49
- &--isLoading {
50
- #{$root}__icon {
51
- // Spin icon on loading state.
52
- animation: rotate 1s infinite steps(30);
53
- }
54
- }
55
-
56
21
  /**
57
22
  * Size
58
23
  */
59
24
  &--size {
60
25
  &-small {
61
26
  height: var(--gd-button-S);
62
- padding: var(--gd-spacing-6px) var(--gd-spacing-10px);
27
+ padding: 0 var(--gd-spacing-10px);
63
28
  font-size: 12px;
64
- line-height: 14px;
65
29
 
66
- &#{$root}--iconPosition {
67
- &-left {
68
- padding-left: var(--gd-spacing-7px);
69
- }
30
+ &#{$root}--hasIconBefore {
31
+ padding-left: var(--gd-spacing-7px);
32
+ }
70
33
 
71
- &-right {
72
- padding-right: var(--gd-spacing-7px);
73
- }
34
+ &#{$root}--hasIconAfter {
35
+ padding-right: var(--gd-spacing-7px);
74
36
  }
75
37
  }
76
38
 
77
39
  &-medium {
78
40
  height: var(--gd-button-M);
79
- padding: var(--gd-spacing-6px) var(--gd-spacing-15px);
41
+ padding: 0 var(--gd-spacing-15px);
80
42
  font-size: 14px;
81
- line-height: 16px;
82
- &#{$root}--iconPosition {
83
- &-left {
84
- padding-left: var(--gd-spacing-10px);
85
- }
86
43
 
87
- &-right {
88
- padding-right: var(--gd-spacing-10px);
89
- }
44
+ &#{$root}--hasIconBefore {
45
+ padding-left: var(--gd-spacing-10px);
46
+ }
47
+
48
+ &#{$root}--hasIconAfter {
49
+ padding-right: var(--gd-spacing-10px);
90
50
  }
91
51
  }
92
52
 
93
53
  &-large {
94
54
  height: var(--gd-button-L);
95
- padding: var(--gd-spacing-6px) var(--gd-spacing-20px);
55
+ padding: 0 var(--gd-spacing-20px);
96
56
  font-size: 16px;
97
- line-height: 18px;
98
- &#{$root}--iconPosition {
99
- &-left {
100
- padding-left: var(--gd-spacing-15px);
101
- }
102
57
 
103
- &-right {
104
- padding-right: var(--gd-spacing-15px);
105
- }
58
+ &#{$root}--hasIconBefore {
59
+ padding-left: var(--gd-spacing-15px);
60
+ }
61
+
62
+ &#{$root}--hasIconAfter {
63
+ padding-right: var(--gd-spacing-15px);
106
64
  }
107
65
  }
108
66
  }
@@ -113,27 +71,23 @@
113
71
  &--variant {
114
72
  &-primary {
115
73
  --gd-icon-fill-color: var(--gd-palette-complementary-0);
116
-
117
74
  color: var(--gd-palette-complementary-0);
118
75
  background-color: var(--gd-palette-primary-base);
119
76
  border-color: var(--gd-palette-complementary-9-t90);
120
77
  font-weight: 700;
121
78
 
122
79
  &:not(&:disabled) {
123
- &:focus {
124
- box-shadow: var(--gd-button-dropShadow, 0 -2px 0 0) var(--gd-palette-complementary-9-t85)
125
- inset;
126
- }
127
-
80
+ &:focus-visible,
128
81
  &:hover {
129
82
  background-color: var(--gd-palette-primary-base-d06);
130
- box-shadow: var(--gd-button-dropShadow, 0 -2px 0 0) var(--gd-palette-complementary-9-t85)
83
+
84
+ box-shadow: var(--gd-button-dropShadow, 0 -1px 0 0) var(--gd-palette-complementary-9-t85)
131
85
  inset;
132
86
  }
133
87
 
134
88
  &:active {
135
- background: var(--gd-palette-primary-base-d12);
136
- box-shadow: var(--gd-button-dropShadow, 0 2px 0 0) var(--gd-palette-complementary-9-t85)
89
+ background-color: var(--gd-palette-primary-base-d12);
90
+ box-shadow: var(--gd-button-dropShadow, 0 1px 0 0) var(--gd-palette-complementary-9-t85)
137
91
  inset;
138
92
  }
139
93
  }
@@ -147,29 +101,20 @@
147
101
 
148
102
  &-secondary {
149
103
  --gd-icon-fill-color: var(--gd-palette-complementary-5);
150
-
151
104
  color: var(--gd-palette-complementary-7);
152
105
  border-color: var(--gd-palette-complementary-4);
153
106
  background-color: var(--gd-palette-complementary-0);
154
107
  font-weight: 400;
155
108
 
156
109
  &:not(&:disabled) {
157
- &:focus {
158
- --gd-icon-fill-color: var(--gd-palette-primary-base);
159
-
160
- color: var(--gd-palette-complementary-8);
161
- background: var(--gd-palette-complementary-1);
162
- box-shadow: var(--gd-button-dropShadow, 0 -2px 0 0) var(--gd-palette-complementary-5-t40)
163
- inset;
164
- }
165
-
110
+ &:focus-visible,
166
111
  &:hover {
167
112
  --gd-icon-fill-color: var(--gd-palette-primary-base);
168
113
 
169
114
  color: var(--gd-palette-complementary-8);
170
115
  border-color: var(--gd-palette-complementary-5);
171
- background: var(--gd-palette-complementary-0);
172
- box-shadow: var(--gd-button-dropShadow, 0 -2px 0 0) var(--gd-palette-complementary-5-t40)
116
+ background-color: var(--gd-palette-complementary-1);
117
+ box-shadow: var(--gd-button-dropShadow, 0 -1px 0 0) var(--gd-palette-complementary-5-t40)
173
118
  inset;
174
119
  }
175
120
 
@@ -178,8 +123,8 @@
178
123
 
179
124
  color: var(--gd-palette-complementary-8);
180
125
  border-color: var(--gd-palette-complementary-5);
181
- background: var(--gd-palette-complementary-3);
182
- box-shadow: var(--gd-button-dropShadow, 0 2px 0 0) var(--gd-palette-complementary-9-t85)
126
+ background-color: var(--gd-palette-complementary-3);
127
+ box-shadow: var(--gd-button-dropShadow, 0 1px 0 0) var(--gd-palette-complementary-9-t85)
183
128
  inset;
184
129
  }
185
130
  }
@@ -187,31 +132,21 @@
187
132
  &:disabled {
188
133
  color: var(--gd-palette-complementary-5);
189
134
  border-color: var(--gd-palette-complementary-4);
190
- background: var(--gd-palette-complementary-0);
191
135
  box-shadow: none;
192
136
  }
193
137
  }
194
138
 
195
- &-tertiary,
196
- %ui-button--variant-tertiary {
139
+ &-tertiary {
197
140
  --gd-icon-fill-color: var(--gd-palette-complementary-5);
198
-
199
141
  color: var(--gd-palette-complementary-7);
142
+ padding: 0;
200
143
  text-decoration: underline;
201
144
  background-color: transparent;
202
145
  border-color: transparent;
203
146
 
204
147
  &:not(&:disabled) {
205
- &:focus {
206
- --gd-icon-fill-color: var(--gd-palette-primary-base);
207
-
208
- color: var(--gd-palette-complementary-8);
209
- }
210
- &:hover {
211
- --gd-icon-fill-color: var(--gd-palette-primary-base);
212
-
213
- color: var(--gd-palette-complementary-8);
214
- }
148
+ &:hover,
149
+ &:focus-visible,
215
150
  &:active {
216
151
  --gd-icon-fill-color: var(--gd-palette-primary-base);
217
152
 
@@ -223,36 +158,19 @@
223
158
  color: var(--gd-palette-complementary-5);
224
159
  text-decoration: none;
225
160
  }
226
-
227
- &#{$root}--size {
228
- &-small,
229
- &-medium,
230
- &-large {
231
- padding: 0;
232
- height: auto;
233
- }
234
- }
235
161
  }
236
162
 
237
163
  &-popout {
238
164
  --gd-icon-fill-color: var(--gd-palette-primary-base);
239
-
240
165
  color: var(--gd-palette-primary-base);
166
+ padding: 0;
241
167
  background-color: transparent;
242
168
  border-color: transparent;
243
169
 
244
170
  &:not(&:disabled) {
245
- &:focus {
246
- text-decoration: underline;
247
- }
248
-
249
- &:hover {
250
- color: var(--gd-palette-complementary-8);
251
- text-decoration: underline;
252
- }
253
-
171
+ &:hover,
172
+ &:focus-visible,
254
173
  &:active {
255
- color: var(--gd-palette-primary-base);
256
174
  text-decoration: underline;
257
175
  }
258
176
  }
@@ -260,43 +178,28 @@
260
178
  &:disabled {
261
179
  color: var(--gd-palette-complementary-5);
262
180
  }
263
-
264
- &#{$root}--size {
265
- &-small,
266
- &-medium,
267
- &-large {
268
- padding: 0;
269
- height: auto;
270
- }
271
- }
272
181
  }
273
182
 
274
183
  &-danger {
275
184
  --gd-icon-fill-color: var(--gd-palette-complementary-0);
276
-
277
- background: var(--gd-palette-error-base);
278
185
  color: var(--gd-palette-complementary-0);
186
+ background-color: var(--gd-palette-error-base);
279
187
  border-color: var(--gd-palette-complementary-9-t90);
280
188
  font-weight: 700;
281
189
 
282
190
  &:not(&:disabled) {
283
- &:focus {
284
- border-color: var(--gd-palette-complementary-9-t80);
285
- box-shadow: var(--gd-button-dropShadow, 0 -2px 0 0) var(--gd-palette-complementary-9-t85)
286
- inset;
287
- }
288
-
191
+ &:focus-visible,
289
192
  &:hover {
290
193
  border-color: var(--gd-palette-complementary-9-t80);
291
194
  background-color: var(--gd-palette-error-base-d10);
292
- box-shadow: var(--gd-button-dropShadow, 0 -2px 0 0) var(--gd-palette-complementary-9-t85)
195
+ box-shadow: var(--gd-button-dropShadow, 0 -1px 0 0) var(--gd-palette-complementary-9-t85)
293
196
  inset;
294
197
  }
295
198
 
296
199
  &:active {
297
200
  border-color: var(--gd-palette-complementary-9-t80);
298
- background: var(--gd-palette-error-base-d20);
299
- box-shadow: var(--gd-button-dropShadow, 0 2px 0 0) var(--gd-palette-complementary-9-t85)
201
+ background-color: var(--gd-palette-error-base-d20);
202
+ box-shadow: var(--gd-button-dropShadow, 0 1px 0 0) var(--gd-palette-complementary-9-t85)
300
203
  inset;
301
204
  }
302
205
  }
@@ -309,12 +212,3 @@
309
212
  }
310
213
  }
311
214
  }
312
-
313
- @keyframes rotate {
314
- from {
315
- transform: rotate(0deg);
316
- }
317
- to {
318
- transform: rotate(360deg);
319
- }
320
- }
@@ -1,7 +1,5 @@
1
1
  // (C) 2025 GoodData Corporation
2
2
 
3
- @use "../UiButton//UiButton.scss";
4
-
5
3
  $border-radius: 20px;
6
4
  $background-color: var(--gd-palette-complementary-0);
7
5
  $border-color: var(--gd-palette-complementary-4);
@@ -19,7 +17,7 @@ $action-box-shadow: var(--gd-button-dropShadow, 0 -1px 0 0) var(--gd-palette-err
19
17
  height: 27px;
20
18
  max-width: 245px;
21
19
 
22
- display: flex;
20
+ display: inline-flex;
23
21
  flex-direction: row;
24
22
  align-items: center;
25
23
  justify-content: center;
@@ -90,17 +88,24 @@ $action-box-shadow: var(--gd-button-dropShadow, 0 -1px 0 0) var(--gd-palette-err
90
88
  }
91
89
 
92
90
  #{$root}__delete {
93
- svg {
94
- --gd-icon-fill-color: var(--gd-palette-error-base);
95
- }
91
+ color: var(--gd-palette-error-base);
96
92
  }
97
93
  }
98
94
 
95
+ #{$root}__trigger--isDeletable {
96
+ border-right: 1px solid transparent;
97
+ }
98
+
99
99
  &__trigger,
100
100
  &__delete {
101
- @extend %ui-button;
102
- @extend %ui-button--variant-tertiary;
103
-
101
+ color: var(--gd-palette-complementary-7);
102
+ background-color: transparent;
103
+ border-radius: var(--gd-button-borderRadius);
104
+ transition: var(--gd-transition-all);
105
+ display: inline-flex;
106
+ justify-content: center;
107
+ align-items: center;
108
+ cursor: pointer;
104
109
  height: 100%;
105
110
  min-width: 0;
106
111
  flex-shrink: 1;
@@ -108,6 +113,11 @@ $action-box-shadow: var(--gd-button-dropShadow, 0 -1px 0 0) var(--gd-palette-err
108
113
  text-decoration: none;
109
114
  padding: 0 10px;
110
115
  border: none;
116
+
117
+ &:disabled {
118
+ cursor: default;
119
+ color: var(--gd-palette-complementary-5);
120
+ }
111
121
  }
112
122
 
113
123
  &__trigger {
@@ -132,6 +142,18 @@ $action-box-shadow: var(--gd-button-dropShadow, 0 -1px 0 0) var(--gd-palette-err
132
142
  }
133
143
  }
134
144
 
145
+ &:not(&:disabled) {
146
+ &:hover,
147
+ &:focus,
148
+ &:active {
149
+ svg {
150
+ color: var(--gd-palette-primary-base);
151
+ }
152
+
153
+ color: var(--gd-palette-complementary-8);
154
+ }
155
+ }
156
+
135
157
  &:not(&--isDeletable) {
136
158
  border-radius: $border-radius;
137
159
  border: none;
@@ -142,31 +164,44 @@ $action-box-shadow: var(--gd-button-dropShadow, 0 -1px 0 0) var(--gd-palette-err
142
164
  flex-shrink: 0;
143
165
  border-radius: 0 $border-radius $border-radius 0;
144
166
  padding: 0 7px 0 5px;
167
+
168
+ &:not(&:disabled) {
169
+ &:hover,
170
+ &:focus,
171
+ &:active {
172
+ svg {
173
+ color: var(--gd-palette-error-base);
174
+ }
175
+
176
+ color: var(--gd-palette-complementary-8);
177
+ }
178
+ }
145
179
  }
146
180
 
147
181
  &__label {
148
- @extend %ui-button__text;
149
-
182
+ transition: var(--gd-transition-all);
150
183
  white-space: nowrap;
151
184
  overflow: hidden;
152
185
  text-overflow: ellipsis;
153
186
  }
154
187
 
155
188
  &__tag {
156
- @extend %ui-button__text;
157
-
189
+ transition: var(--gd-transition-all);
158
190
  margin-left: 2px;
159
191
  }
160
192
 
161
193
  &__icon-before {
162
- @extend %ui-button__icon;
163
-
194
+ display: flex;
195
+ align-items: center;
196
+ justify-content: center;
197
+ transition: var(--gd-transition-all);
164
198
  margin-right: 5px;
165
199
  }
166
200
 
167
201
  &__icon-chevron {
168
- @extend %ui-button__icon;
169
-
202
+ align-items: center;
203
+ justify-content: center;
204
+ transition: var(--gd-transition-all);
170
205
  display: none;
171
206
  margin-left: 5px;
172
207
 
@@ -181,12 +216,18 @@ $action-box-shadow: var(--gd-button-dropShadow, 0 -1px 0 0) var(--gd-palette-err
181
216
  }
182
217
 
183
218
  &__icon-lock {
184
- @extend %ui-button__icon;
219
+ display: flex;
220
+ align-items: center;
221
+ justify-content: center;
222
+ transition: var(--gd-transition-all);
185
223
 
186
224
  margin-left: 5px;
187
225
  }
188
226
 
189
227
  &__icon-delete {
190
- @extend %ui-button__icon;
228
+ display: flex;
229
+ align-items: center;
230
+ justify-content: center;
231
+ transition: var(--gd-transition-all);
191
232
  }
192
233
  }
@@ -1,5 +1,6 @@
1
- // (C) 2024 GoodData Corporation
1
+ // (C) 2024-2025 GoodData Corporation
2
2
  .gd-ui-kit-icon {
3
+ fill: var(--gd-icon-fill-color);
3
4
  &--color {
4
5
  &-primary {
5
6
  --gd-icon-fill-color: var(--gd-palette-primary-base);
@@ -54,8 +55,7 @@
54
55
  }
55
56
  }
56
57
 
57
- &__fill {
58
+ path {
58
59
  transition: var(--gd-transition-all);
59
- fill: var(--gd-icon-fill-color);
60
60
  }
61
61
  }
@@ -0,0 +1,164 @@
1
+ // (C) 2024-2025 GoodData Corporation
2
+
3
+ .gd-ui-kit-icon-button {
4
+ border-radius: var(--gd-button-borderRadius);
5
+ transition: var(--gd-transition-all);
6
+ cursor: pointer;
7
+ border-style: solid;
8
+ border-width: 1px;
9
+ display: inline-grid;
10
+ place-items: center;
11
+ padding: 0;
12
+
13
+ &:disabled {
14
+ cursor: default;
15
+ }
16
+
17
+ /**
18
+ * Size
19
+ */
20
+ &--size {
21
+ &-small {
22
+ height: var(--gd-button-S);
23
+ width: var(--gd-button-S);
24
+ }
25
+
26
+ &-medium {
27
+ height: var(--gd-button-M);
28
+ width: var(--gd-button-M);
29
+ }
30
+
31
+ &-large {
32
+ height: var(--gd-button-L);
33
+ width: var(--gd-button-L);
34
+ }
35
+ }
36
+
37
+ /**
38
+ * Variant
39
+ */
40
+ &--variant {
41
+ &-primary {
42
+ --gd-icon-fill-color: var(--gd-palette-complementary-0);
43
+ background-color: var(--gd-palette-primary-base);
44
+ border-color: var(--gd-palette-complementary-9-t90);
45
+
46
+ &:not(&:disabled) {
47
+ &:focus-visible,
48
+ &:hover {
49
+ background-color: var(--gd-palette-primary-base-d06);
50
+ box-shadow: var(--gd-button-dropShadow, 0 -1px 0 0) var(--gd-palette-complementary-9-t85)
51
+ inset;
52
+ }
53
+
54
+ &:active {
55
+ background-color: var(--gd-palette-primary-base-d12);
56
+ box-shadow: var(--gd-button-dropShadow, 0 1px 0 0) var(--gd-palette-complementary-9-t85)
57
+ inset;
58
+ }
59
+ }
60
+
61
+ &:disabled {
62
+ background-color: var(--gd-palette-primary-disabled);
63
+ box-shadow: none;
64
+ border-color: transparent;
65
+ }
66
+ }
67
+
68
+ &-secondary {
69
+ --gd-icon-fill-color: var(--gd-palette-complementary-7);
70
+ border-color: var(--gd-palette-complementary-4);
71
+ background-color: var(--gd-palette-complementary-0);
72
+
73
+ &:not(&:disabled) {
74
+ &:focus-visible,
75
+ &:hover {
76
+ --gd-icon-fill-color: var(--gd-palette-primary-base);
77
+ border-color: var(--gd-palette-complementary-5);
78
+ background-color: var(--gd-palette-complementary-1);
79
+ box-shadow: var(--gd-button-dropShadow, 0 -1px 0 0) var(--gd-palette-complementary-5-t40)
80
+ inset;
81
+ }
82
+
83
+ &:active {
84
+ --gd-icon-fill-color: var(--gd-palette-primary-base);
85
+ border-color: var(--gd-palette-complementary-5);
86
+ background-color: var(--gd-palette-complementary-3);
87
+ box-shadow: var(--gd-button-dropShadow, 0 1px 0 0) var(--gd-palette-complementary-9-t85)
88
+ inset;
89
+ }
90
+ }
91
+
92
+ &:disabled {
93
+ --gd-icon-fill-color: var(--gd-palette-complementary-5);
94
+ border-color: var(--gd-palette-complementary-4);
95
+ box-shadow: none;
96
+ }
97
+ }
98
+
99
+ &-tertiary {
100
+ --gd-icon-fill-color: var(--gd-palette-complementary-7);
101
+ background-color: transparent;
102
+ border-color: transparent;
103
+
104
+ &:not(&:disabled) {
105
+ &:hover,
106
+ &:focus-visible,
107
+ &:active {
108
+ --gd-icon-fill-color: var(--gd-palette-primary-base);
109
+ }
110
+ }
111
+
112
+ &:disabled {
113
+ --gd-icon-fill-color: var(--gd-palette-complementary-5);
114
+ }
115
+ }
116
+
117
+ &-popout {
118
+ --gd-icon-fill-color: var(--gd-palette-primary-base);
119
+ background-color: transparent;
120
+ border-color: transparent;
121
+
122
+ &:not(&:disabled) {
123
+ &:hover,
124
+ &:focus-visible,
125
+ &:active {
126
+ --gd-icon-fill-color: var(--gd-palette-complementary-8);
127
+ }
128
+ }
129
+
130
+ &:disabled {
131
+ --gd-icon-fill-color: var(--gd-palette-complementary-5);
132
+ }
133
+ }
134
+
135
+ &-danger {
136
+ --gd-icon-fill-color: var(--gd-palette-complementary-0);
137
+ background-color: var(--gd-palette-error-base);
138
+ border-color: var(--gd-palette-complementary-9-t90);
139
+
140
+ &:not(&:disabled) {
141
+ &:focus-visible,
142
+ &:hover {
143
+ border-color: var(--gd-palette-complementary-9-t80);
144
+ background-color: var(--gd-palette-error-base-d10);
145
+ box-shadow: var(--gd-button-dropShadow, 0 -1px 0 0) var(--gd-palette-complementary-9-t85)
146
+ inset;
147
+ }
148
+
149
+ &:active {
150
+ border-color: var(--gd-palette-complementary-9-t80);
151
+ background-color: var(--gd-palette-error-base-d20);
152
+ box-shadow: var(--gd-button-dropShadow, 0 1px 0 0) var(--gd-palette-complementary-9-t85)
153
+ inset;
154
+ }
155
+ }
156
+
157
+ &:disabled {
158
+ background-color: var(--gd-palette-error-disabled);
159
+ box-shadow: none;
160
+ border-color: transparent;
161
+ }
162
+ }
163
+ }
164
+ }