@agorapulse/ui-theme 20.1.19 → 20.1.21

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 (72) hide show
  1. package/agorapulse-ui-theme-20.1.21.tgz +0 -0
  2. package/assets/desktop_variables.css +10 -0
  3. package/assets/mobile_variables.css +10 -0
  4. package/assets/style/_tooltip.scss +6 -1
  5. package/assets/style/css-ui/_accordion.scss +54 -0
  6. package/assets/style/css-ui/_action-dropdown.scss +163 -0
  7. package/assets/style/css-ui/_avatar-group.scss +61 -0
  8. package/assets/style/css-ui/_avatar.scss +183 -0
  9. package/assets/style/css-ui/{badge.css → _badge.scss} +10 -12
  10. package/assets/style/css-ui/_button.scss +258 -0
  11. package/assets/style/css-ui/_card.scss +17 -0
  12. package/assets/style/css-ui/_checkbox.scss +164 -0
  13. package/assets/style/css-ui/_counter.scss +76 -0
  14. package/assets/style/css-ui/_datepicker.scss +307 -0
  15. package/assets/style/css-ui/_dialog.scss +74 -0
  16. package/assets/style/css-ui/_dot-stepper.scss +68 -0
  17. package/assets/style/{_helpers.scss → css-ui/_helpers.scss} +14 -13
  18. package/assets/style/css-ui/_icon-button.scss +162 -0
  19. package/assets/style/css-ui/_infobox.scss +154 -0
  20. package/assets/style/css-ui/_input.scss +129 -0
  21. package/assets/style/css-ui/_label.scss +95 -0
  22. package/assets/style/css-ui/_link.scss +86 -0
  23. package/assets/style/css-ui/_list-panel.scss +73 -0
  24. package/assets/style/css-ui/_loader.scss +173 -0
  25. package/assets/style/css-ui/_mixins.scss +50 -0
  26. package/assets/style/css-ui/_pagination.scss +177 -0
  27. package/assets/style/css-ui/_radio-card.scss +200 -0
  28. package/assets/style/css-ui/_radio.scss +107 -0
  29. package/assets/style/css-ui/{select.css → _select.scss} +290 -298
  30. package/assets/style/css-ui/_selection-dropdown.scss +183 -0
  31. package/assets/style/css-ui/_snackbar.scss +161 -0
  32. package/assets/style/css-ui/_split-button.scss +74 -0
  33. package/assets/style/css-ui/_status.scss +71 -0
  34. package/assets/style/css-ui/_stepper.scss +113 -0
  35. package/assets/style/css-ui/_table.scss +325 -0
  36. package/assets/style/css-ui/_tabs.scss +182 -0
  37. package/assets/style/css-ui/_tag.scss +169 -0
  38. package/assets/style/css-ui/_textarea.scss +121 -0
  39. package/assets/style/css-ui/_toggle.scss +132 -0
  40. package/assets/style/css-ui/_tooltip.scss +122 -0
  41. package/assets/style/{_mat-typography.scss → css-ui/_typography.scss} +34 -26
  42. package/assets/style/css-ui/font-face.css +43 -0
  43. package/assets/style/css-ui/index.css +4907 -27
  44. package/assets/style/css-ui/index.css.map +1 -0
  45. package/assets/style/css-ui/index.scss +39 -0
  46. package/assets/style/theme.scss +9 -2
  47. package/package.json +17 -2
  48. package/src/tokens/system/icon.json +33 -0
  49. package/agorapulse-ui-theme-20.1.19.tgz +0 -0
  50. package/assets/style/css-ui/action-dropdown.css +0 -172
  51. package/assets/style/css-ui/avatar.css +0 -199
  52. package/assets/style/css-ui/button.css +0 -446
  53. package/assets/style/css-ui/checkbox.css +0 -170
  54. package/assets/style/css-ui/counter.css +0 -73
  55. package/assets/style/css-ui/datepicker.css +0 -294
  56. package/assets/style/css-ui/dot-stepper.css +0 -67
  57. package/assets/style/css-ui/infobox.css +0 -163
  58. package/assets/style/css-ui/input.css +0 -119
  59. package/assets/style/css-ui/label.css +0 -67
  60. package/assets/style/css-ui/link.css +0 -92
  61. package/assets/style/css-ui/loader.css +0 -247
  62. package/assets/style/css-ui/pagination.css +0 -161
  63. package/assets/style/css-ui/radio.css +0 -109
  64. package/assets/style/css-ui/snackbar.css +0 -166
  65. package/assets/style/css-ui/status.css +0 -87
  66. package/assets/style/css-ui/stepper.css +0 -123
  67. package/assets/style/css-ui/table.css +0 -305
  68. package/assets/style/css-ui/tabs.css +0 -188
  69. package/assets/style/css-ui/tag.css +0 -171
  70. package/assets/style/css-ui/textarea.css +0 -158
  71. package/assets/style/css-ui/toggle.css +0 -161
  72. package/assets/style/css-ui/tooltip.css +0 -228
@@ -0,0 +1,307 @@
1
+ // Agorapulse Datepicker Styles
2
+
3
+ .ap-datepicker {
4
+ background-color: var(--ref-color-white);
5
+ display: flex;
6
+ flex-direction: column;
7
+ border-radius: var(--ref-border-radius-md);
8
+ box-shadow: none;
9
+ font-family: var(--ref-font-family);
10
+ width: fit-content;
11
+ overflow: hidden;
12
+
13
+ // Single calendar mode
14
+ &.single .ap-datepicker-calendars {
15
+ justify-content: center;
16
+ }
17
+
18
+ // Range mode
19
+ &.range .ap-datepicker-calendars {
20
+ display: flex;
21
+ }
22
+
23
+ // Inline variant
24
+ &.inline {
25
+ box-shadow: none;
26
+ border: 1px solid var(--ref-color-grey-20);
27
+ }
28
+
29
+ // Compact variant
30
+ &.compact {
31
+ .ap-datepicker-calendar {
32
+ padding: var(--ref-spacing-xs);
33
+ }
34
+
35
+ .ap-datepicker-header {
36
+ padding: var(--ref-spacing-xs) var(--ref-spacing-sm);
37
+ }
38
+ }
39
+ }
40
+
41
+ // Header with month navigation
42
+ .ap-datepicker-header {
43
+ display: flex;
44
+ align-items: center;
45
+ justify-content: center;
46
+ height: 55px;
47
+ padding: 0 var(--ref-spacing-md);
48
+ }
49
+
50
+ // Month navigation group (contains nav buttons + month label)
51
+ .ap-datepicker-month-nav {
52
+ display: flex;
53
+ align-items: center;
54
+ flex: 1;
55
+
56
+ // Nav buttons — implicit > button
57
+ > button {
58
+ display: flex;
59
+ align-items: center;
60
+ justify-content: center;
61
+ width: 32px;
62
+ height: 32px;
63
+ border: none;
64
+ background: transparent;
65
+ border-radius: 50%;
66
+ cursor: pointer;
67
+ color: var(--ref-color-grey-60);
68
+ transition: background-color 0.15s ease;
69
+ padding: 0;
70
+ flex-shrink: 0;
71
+
72
+ &:hover {
73
+ background-color: var(--ref-color-grey-10);
74
+ }
75
+
76
+ &:disabled {
77
+ opacity: 0.4;
78
+ cursor: not-allowed;
79
+
80
+ &:hover {
81
+ background-color: transparent;
82
+ }
83
+ }
84
+
85
+ // Nav icon — implicit > i
86
+ > i {
87
+ width: 14px;
88
+ height: 14px;
89
+ }
90
+ }
91
+
92
+ // Month label — implicit > span
93
+ > span {
94
+ flex: 1;
95
+ font-size: var(--ref-font-size-xs);
96
+ font-weight: var(--ref-font-weight-bold);
97
+ color: var(--ref-color-grey-100);
98
+ text-transform: capitalize;
99
+ text-align: center;
100
+ }
101
+ }
102
+
103
+ // Calendar container
104
+ .ap-datepicker-calendars {
105
+ display: flex;
106
+ }
107
+
108
+ // Individual calendar panel
109
+ .ap-datepicker-calendar {
110
+ padding: 0 var(--ref-spacing-md) var(--ref-spacing-md);
111
+
112
+ & + & {
113
+ border-left: 1px solid var(--ref-color-grey-10);
114
+ }
115
+
116
+ // Calendar table — implicit > table
117
+ > table {
118
+ border-collapse: separate;
119
+ border-spacing: 0 5px;
120
+ }
121
+
122
+ // Weekday headers — implicit th
123
+ th {
124
+ width: 33px;
125
+ height: 24px;
126
+ font-size: var(--ref-font-size-xs);
127
+ font-weight: var(--ref-font-weight-bold);
128
+ color: var(--ref-color-grey-40);
129
+ text-transform: capitalize;
130
+ text-align: center;
131
+ }
132
+
133
+ // Day cells — implicit td
134
+ td {
135
+ width: 33px;
136
+ height: 27px;
137
+ padding: 0;
138
+ border: none;
139
+ background: transparent;
140
+ cursor: pointer;
141
+ position: relative;
142
+
143
+ &:hover > span {
144
+ background-color: var(--ref-color-electric-blue-20);
145
+ }
146
+
147
+ // Day inner — implicit > span
148
+ > span {
149
+ display: flex;
150
+ align-items: center;
151
+ justify-content: center;
152
+ width: 27px;
153
+ height: 27px;
154
+ margin: 0 3px;
155
+ border-radius: 50%;
156
+ font-size: var(--ref-font-size-sm);
157
+ color: var(--ref-color-grey-100);
158
+ transition: background-color 0.15s ease;
159
+ }
160
+
161
+ // Today
162
+ &.today > span {
163
+ border: 1px solid var(--ref-color-electric-blue-100);
164
+ width: 25px;
165
+ height: 25px;
166
+ }
167
+
168
+ // Selected day
169
+ &.selected > span {
170
+ background-color: var(--ref-color-electric-blue-100);
171
+ color: var(--ref-color-white);
172
+ }
173
+
174
+ &.selected:hover > span {
175
+ background-color: var(--ref-color-electric-blue-85);
176
+ }
177
+
178
+ // In range (for range picker)
179
+ &.in-range {
180
+ background-color: var(--ref-color-electric-blue-10);
181
+
182
+ &:first-child,
183
+ &.range-start {
184
+ border-radius: 2em 0 0 2em;
185
+ }
186
+
187
+ &:last-child,
188
+ &.range-end {
189
+ border-radius: 0 2em 2em 0;
190
+ }
191
+ }
192
+
193
+ &.range-start.range-end {
194
+ border-radius: 2em;
195
+ background-color: transparent;
196
+ }
197
+
198
+ // Start and end of range
199
+ &.range-start > span,
200
+ &.range-end > span {
201
+ background-color: var(--ref-color-electric-blue-100);
202
+ color: var(--ref-color-white);
203
+ }
204
+
205
+ // Disabled/off days
206
+ &.off,
207
+ &:disabled {
208
+ > span {
209
+ color: var(--ref-color-grey-20);
210
+ cursor: default;
211
+ }
212
+
213
+ &:hover > span {
214
+ background-color: transparent;
215
+ }
216
+ }
217
+ }
218
+ }
219
+
220
+ // Preset ranges sidebar
221
+ .ap-datepicker-ranges {
222
+ border-left: 1px solid var(--ref-color-grey-10);
223
+ padding: var(--ref-spacing-sm);
224
+ min-width: 140px;
225
+ display: flex;
226
+ flex-direction: column;
227
+ gap: var(--ref-spacing-xxxs);
228
+
229
+ // Range buttons — implicit > button
230
+ > button {
231
+ display: block;
232
+ width: 100%;
233
+ padding: var(--ref-spacing-xxs) var(--ref-spacing-xs);
234
+ border: none;
235
+ background: transparent;
236
+ border-radius: var(--ref-border-radius-sm);
237
+ font-family: var(--ref-font-family);
238
+ font-size: var(--ref-font-size-sm);
239
+ color: var(--ref-color-grey-80);
240
+ text-align: left;
241
+ cursor: pointer;
242
+ transition: background-color 0.15s ease, color 0.15s ease;
243
+
244
+ &:hover:not(.active):not(:disabled) {
245
+ color: var(--ref-color-electric-blue-100);
246
+ background-color: var(--ref-color-electric-blue-10);
247
+ }
248
+
249
+ &.active {
250
+ color: var(--ref-color-white);
251
+ background-color: var(--ref-color-electric-blue-100);
252
+
253
+ &:hover {
254
+ background-color: var(--ref-color-electric-blue-85);
255
+ }
256
+ }
257
+
258
+ &:disabled {
259
+ color: var(--ref-color-grey-20);
260
+ cursor: default;
261
+ }
262
+ }
263
+ }
264
+
265
+ // Footer with actions
266
+ .ap-datepicker-footer {
267
+ display: flex;
268
+ align-items: center;
269
+ justify-content: flex-end;
270
+ gap: var(--ref-spacing-sm);
271
+ padding: var(--ref-spacing-sm) var(--ref-spacing-md);
272
+ border-top: 1px solid var(--ref-color-grey-10);
273
+ }
274
+
275
+ // Time picker addon
276
+ .ap-datepicker-time {
277
+ display: flex;
278
+ align-items: center;
279
+ gap: var(--ref-spacing-xs);
280
+ padding: var(--ref-spacing-sm) var(--ref-spacing-md);
281
+ border-top: 1px solid var(--ref-color-grey-10);
282
+
283
+ // Time inputs — implicit > input
284
+ > input {
285
+ width: 60px;
286
+ padding: var(--ref-spacing-xxs) var(--ref-spacing-xs);
287
+ border: 1px solid var(--ref-color-grey-20);
288
+ border-radius: var(--ref-border-radius-sm);
289
+ font-family: var(--ref-font-family);
290
+ font-size: var(--ref-font-size-sm);
291
+ text-align: center;
292
+
293
+ &:focus {
294
+ outline: none;
295
+ border-color: var(--ref-color-electric-blue-100);
296
+ }
297
+ }
298
+ }
299
+
300
+ .ap-datepicker-time-label {
301
+ font-size: var(--ref-font-size-sm);
302
+ color: var(--ref-color-grey-60);
303
+ }
304
+
305
+ .ap-datepicker-time-separator {
306
+ color: var(--ref-color-grey-60);
307
+ }
@@ -0,0 +1,74 @@
1
+ .ap-dialog {
2
+ background-color: var(--ref-color-white);
3
+ border-radius: var(--ref-border-radius-md);
4
+ display: flex;
5
+ flex-direction: column;
6
+ overflow: hidden;
7
+ position: relative;
8
+ }
9
+
10
+ .ap-dialog-header {
11
+ display: flex;
12
+ flex-direction: column;
13
+ gap: var(--ref-spacing-xxxs);
14
+ padding: var(--ref-spacing-lg) var(--ref-spacing-lg) 0;
15
+ padding-right: 64px;
16
+ }
17
+
18
+ .ap-dialog-title {
19
+ font-size: var(--ref-font-size-xxl);
20
+ font-weight: var(--ref-font-weight-bold);
21
+ line-height: var(--ref-font-line-height-xl);
22
+ color: var(--ref-color-grey-100);
23
+ margin: 0;
24
+ }
25
+
26
+ .ap-dialog-subtitle {
27
+ font-size: var(--ref-font-size-md);
28
+ line-height: var(--ref-font-line-height-lg);
29
+ color: var(--ref-color-grey-80);
30
+ }
31
+
32
+ .ap-dialog-content {
33
+ display: flex;
34
+ flex-direction: column;
35
+ gap: var(--ref-spacing-md);
36
+ padding: var(--ref-spacing-md) var(--ref-spacing-lg);
37
+ }
38
+
39
+ .ap-dialog-footer {
40
+ border-top: 1px solid var(--ref-color-grey-10);
41
+ display: flex;
42
+ align-items: center;
43
+ gap: var(--ref-spacing-sm);
44
+ padding: var(--ref-spacing-sm) var(--ref-spacing-lg);
45
+ }
46
+
47
+ .ap-dialog-footer-left {
48
+ display: flex;
49
+ align-items: center;
50
+ gap: var(--ref-spacing-sm);
51
+ }
52
+
53
+ .ap-dialog-footer-right {
54
+ display: flex;
55
+ align-items: center;
56
+ gap: var(--ref-spacing-sm);
57
+ flex: 1;
58
+ justify-content: flex-end;
59
+ }
60
+
61
+ .ap-dialog-close {
62
+ position: absolute;
63
+ top: 20px;
64
+ right: 20px;
65
+ padding: 10px;
66
+ border-radius: var(--ref-border-radius-md);
67
+ cursor: pointer;
68
+ background: none;
69
+ border: none;
70
+ color: var(--ref-color-grey-100);
71
+ display: flex;
72
+ align-items: center;
73
+ justify-content: center;
74
+ }
@@ -0,0 +1,68 @@
1
+ // Agorapulse Dot Stepper Styles
2
+
3
+ .ap-dot-stepper {
4
+ display: flex;
5
+ flex-direction: row;
6
+ align-items: stretch;
7
+ gap: var(--comp-dot-stepper-spacing);
8
+ place-content: stretch center;
9
+ width: 100%;
10
+ box-sizing: border-box;
11
+
12
+ // Individual dot — implicit > button
13
+ > button {
14
+ position: relative;
15
+ width: var(--comp-dot-stepper-dot-size);
16
+ height: var(--comp-dot-stepper-dot-size);
17
+ border-radius: 50%;
18
+ border: var(--comp-dot-stepper-dot-inactive-border-width) solid var(--comp-dot-stepper-dot-inactive-border-color);
19
+ background: transparent;
20
+ cursor: pointer;
21
+ transition: all 0.2s ease-in-out;
22
+ padding: 0;
23
+ box-sizing: border-box;
24
+
25
+ // Hover state
26
+ &:hover:not(.active):not(:disabled) {
27
+ border-color: var(--ref-color-electric-blue-60);
28
+ background: var(--comp-dot-stepper-dot-inactive-focused-background-color);
29
+ }
30
+
31
+ // Focus state (inactive dots only)
32
+ &:focus:not(:disabled):not(.active) {
33
+ background: var(--comp-dot-stepper-dot-inactive-hovered-background-color);
34
+ outline: none;
35
+
36
+ &::after {
37
+ content: '';
38
+ position: absolute;
39
+ width: calc(var(--comp-dot-stepper-dot-size) + var(--comp-dot-stepper-dot-inactive-border-width));
40
+ height: calc(var(--comp-dot-stepper-dot-size) + var(--comp-dot-stepper-dot-inactive-border-width));
41
+ top: 50%;
42
+ left: 50%;
43
+ transform: translate(-50%, -50%);
44
+ border-radius: 50%;
45
+ border: var(--comp-dot-stepper-dot-inactive-border-width) solid var(--ref-color-electric-blue-100);
46
+ }
47
+ }
48
+
49
+ // Active state
50
+ &.active {
51
+ background: var(--comp-dot-stepper-dot-active-background-color);
52
+ border-color: var(--ref-color-electric-blue-150);
53
+ cursor: default;
54
+ }
55
+
56
+ // Disabled state
57
+ &:disabled {
58
+ cursor: default;
59
+ pointer-events: none;
60
+ opacity: 0.5;
61
+ }
62
+
63
+ // Pressed state
64
+ &:not(.active):not(:disabled):active {
65
+ background: var(--comp-dot-stepper-dot-inactive-clicked-background-color);
66
+ }
67
+ }
68
+ }
@@ -1,28 +1,29 @@
1
- @use 'variables' as vars;
1
+ // ── Helpers ──
2
2
 
3
- /*
4
- * Helpers, mostly from https://materializecss.com/helpers.html
5
- */
6
3
  blockquote {
7
- border-left: 5px solid vars.$color-azure;
8
- margin: vars.$padding-l 0;
4
+ border-left: 5px solid var(--sys-color-accent-default);
5
+ margin: var(--ref-spacing-md) 0;
9
6
  padding-left: 1.5rem;
10
7
  font-style: italic;
11
8
  }
12
9
 
13
- .divider {
10
+ .divider,
11
+ .ap-divider {
14
12
  height: 1px;
15
13
  overflow: hidden;
16
- background-color: vars.$color-silver;
14
+ background-color: var(--sys-color-border-color-default);
17
15
  }
18
16
 
19
- .left-align {
17
+ .left-align,
18
+ .ap-text-left {
20
19
  text-align: left;
21
20
  }
22
- .center-align {
21
+ .center-align,
22
+ .ap-text-center {
23
23
  text-align: center;
24
24
  }
25
- .right-align {
25
+ .right-align,
26
+ .ap-text-right {
26
27
  text-align: right;
27
28
  }
28
29
 
@@ -31,7 +32,8 @@ blockquote {
31
32
  display: flex;
32
33
  }
33
34
 
34
- .truncate {
35
+ .truncate,
36
+ .ap-truncate {
35
37
  display: block;
36
38
  white-space: nowrap;
37
39
  overflow: hidden;
@@ -69,7 +71,6 @@ embed {
69
71
  height: 100%;
70
72
  }
71
73
 
72
- /* Other (used?) */
73
74
  .square,
74
75
  .rounded,
75
76
  .round {
@@ -0,0 +1,162 @@
1
+ // Agorapulse Icon Button Styles
2
+ @use 'mixins' as m;
3
+ @use '../button-mixins' as btn;
4
+
5
+ .ap-icon-button {
6
+ display: flex;
7
+ justify-content: center;
8
+ align-items: center;
9
+ @include m.fixed-size(var(--comp-icon-button-width));
10
+ border-radius: var(--comp-icon-button-border-radius);
11
+ background: transparent;
12
+ border: none;
13
+ padding: var(--comp-icon-button-padding);
14
+ position: relative;
15
+ cursor: pointer;
16
+ transition: border-color 0.25s, background-color 0.25s;
17
+ box-sizing: border-box;
18
+
19
+ > i {
20
+ color: var(--ref-color-grey-60);
21
+ @include m.fixed-size(calc(var(--comp-icon-button-height) - (var(--comp-icon-button-padding) * 2)));
22
+ flex-shrink: 0;
23
+ }
24
+
25
+ // Default hover/active (flat, no color)
26
+ &:hover:not(.stroked):not(.locked):not(:disabled) {
27
+ background: var(--ref-color-grey-05);
28
+ }
29
+
30
+ &:active:not(.stroked):not(.locked):not(:disabled) {
31
+ background: var(--ref-color-grey-10);
32
+ }
33
+
34
+ &:focus:not(:disabled):not(:active) {
35
+ @include m.focus-ring;
36
+ }
37
+
38
+ &:disabled {
39
+ pointer-events: none;
40
+
41
+ > i {
42
+ color: var(--ref-color-grey-20);
43
+ }
44
+ }
45
+
46
+ // Color variants — flat
47
+ &.blue {
48
+ > i { color: var(--ref-color-electric-blue-100); }
49
+
50
+ &:hover:not(.stroked):not(.locked):not(:disabled) {
51
+ background: var(--ref-color-electric-blue-05);
52
+ }
53
+
54
+ &:active:not(.stroked):not(.locked):not(:disabled) {
55
+ background: var(--ref-color-electric-blue-10);
56
+ }
57
+
58
+ &:disabled > i { color: var(--ref-color-electric-blue-20); }
59
+ }
60
+
61
+ &.green {
62
+ > i { color: var(--ref-color-green-100); }
63
+
64
+ &:hover:not(.stroked):not(.locked):not(:disabled) {
65
+ background: var(--ref-color-green-10);
66
+ }
67
+
68
+ &:active:not(.stroked):not(.locked):not(:disabled) {
69
+ background: var(--ref-color-green-20);
70
+ }
71
+
72
+ &:disabled > i { color: var(--ref-color-green-20); }
73
+ }
74
+
75
+ &.red {
76
+ > i { color: var(--ref-color-red-100); }
77
+
78
+ &:hover:not(.stroked):not(.locked):not(:disabled) {
79
+ background: var(--ref-color-red-10);
80
+ }
81
+
82
+ &:active:not(.stroked):not(.locked):not(:disabled) {
83
+ background: var(--ref-color-red-20);
84
+ }
85
+
86
+ &:disabled > i { color: var(--ref-color-red-20); }
87
+ }
88
+
89
+ // Stroked variant
90
+ &.stroked {
91
+ border: 1px solid var(--ref-color-grey-20);
92
+ background: var(--ref-color-white);
93
+
94
+ &:hover:not(.locked):not(:disabled) {
95
+ border-color: var(--ref-color-grey-40);
96
+ }
97
+
98
+ &:active:not(.locked):not(:disabled) {
99
+ border-color: var(--ref-color-grey-60);
100
+ }
101
+
102
+ &:disabled {
103
+ border-color: var(--ref-color-grey-20);
104
+ }
105
+
106
+ // Stroked color variants
107
+ &.blue:not(.loading):not(.locked) {
108
+ border-color: var(--ref-color-electric-blue-100);
109
+
110
+ &:hover:not(:disabled) { border-color: var(--ref-color-electric-blue-60); }
111
+ &:active:not(:disabled) { border-color: var(--ref-color-electric-blue-100); }
112
+ &:disabled { border-color: var(--ref-color-electric-blue-20); }
113
+ }
114
+
115
+ &.green:not(.loading):not(.locked) {
116
+ border-color: var(--ref-color-green-100);
117
+
118
+ &:hover:not(:disabled) { border-color: var(--ref-color-green-60); }
119
+ &:active:not(:disabled) { border-color: var(--ref-color-green-100); }
120
+ &:disabled { border-color: var(--ref-color-green-20); }
121
+ }
122
+
123
+ &.red:not(.loading):not(.locked) {
124
+ border-color: var(--ref-color-red-100);
125
+
126
+ &:hover:not(:disabled) { border-color: var(--ref-color-red-60); }
127
+ &:active:not(:disabled) { border-color: var(--ref-color-red-100); }
128
+ &:disabled { border-color: var(--ref-color-red-20); }
129
+ }
130
+ }
131
+
132
+ // Stroked transparent
133
+ &.stroked.transparent:not(.loading):not(.locked) {
134
+ background: transparent;
135
+ }
136
+
137
+ // Loading state
138
+ &.loading {
139
+ background: var(--ref-color-grey-20);
140
+ border: none;
141
+ pointer-events: none;
142
+ }
143
+
144
+ // Locked state — reuses .ap-locked-symbol from _button.scss
145
+ &.locked {
146
+ background: var(--ref-color-purple-10);
147
+ border: 1px solid var(--ref-color-purple-20);
148
+ overflow: visible;
149
+
150
+ > i {
151
+ color: var(--ref-color-purple-100);
152
+ }
153
+
154
+ &:hover {
155
+ border-color: var(--ref-color-purple-40);
156
+ }
157
+
158
+ &:active {
159
+ border-color: var(--ref-color-purple-60);
160
+ }
161
+ }
162
+ }