@transferwise/neptune-css 10.0.5 → 10.0.6-beta.38

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 (113) hide show
  1. package/dist/css/accordion.css +1 -1
  2. package/dist/css/alerts.css +1 -1
  3. package/dist/css/background.css +1 -1
  4. package/dist/css/badge.css +1 -1
  5. package/dist/css/breadcrumbs.css +1 -1
  6. package/dist/css/button-groups.css +1 -1
  7. package/dist/css/buttons.css +1 -1
  8. package/dist/css/chevron.css +1 -1
  9. package/dist/css/circles.css +1 -1
  10. package/dist/css/close.css +1 -1
  11. package/dist/css/column-layout.css +1 -1
  12. package/dist/css/currency-flags.css +1 -1
  13. package/dist/css/decision.css +1 -1
  14. package/dist/css/dropdowns.css +1 -0
  15. package/dist/css/droppable.css +1 -1
  16. package/dist/css/flex.css +1 -1
  17. package/dist/css/footer.css +1 -1
  18. package/dist/css/forms.css +1 -1
  19. package/dist/css/grid.css +1 -1
  20. package/dist/css/input-groups.css +1 -1
  21. package/dist/css/link-callout.css +1 -1
  22. package/dist/css/list-group.css +1 -1
  23. package/dist/css/media.css +1 -1
  24. package/dist/css/modals.css +1 -1
  25. package/dist/css/navbar-base.css +1 -0
  26. package/dist/css/navbar.css +1 -1
  27. package/dist/css/navs.css +1 -1
  28. package/dist/css/neptune-addons.css +1 -1
  29. package/dist/css/neptune-core.css +1 -1
  30. package/dist/css/neptune-social-media.css +1 -1
  31. package/dist/css/neptune.css +1 -1
  32. package/dist/css/panels.css +1 -1
  33. package/dist/css/popovers.css +1 -1
  34. package/dist/css/process.css +1 -1
  35. package/dist/css/progress-bars.css +1 -1
  36. package/dist/css/select.css +1 -1
  37. package/dist/css/sequences.css +1 -1
  38. package/dist/css/table.css +1 -1
  39. package/dist/css/tick.css +1 -1
  40. package/dist/css/tooltip.css +1 -1
  41. package/dist/css/utilities.css +1 -1
  42. package/dist/css/wells.css +1 -1
  43. package/dist/less/neptune-tokens.less +85 -78
  44. package/dist/props/neptune-tokens.css +89 -41
  45. package/package.json +3 -3
  46. package/src/less/addons/_background-utilities.less +31 -6
  47. package/src/less/addons/_spacing-utilities.less +4 -4
  48. package/src/less/addons/_utilities.less +141 -0
  49. package/src/less/alerts.less +14 -14
  50. package/src/less/badge.less +65 -4
  51. package/src/less/breadcrumbs.less +25 -4
  52. package/src/less/button-groups.less +45 -38
  53. package/src/less/buttons.less +90 -107
  54. package/src/less/chevron.less +1 -1
  55. package/src/less/circles.less +206 -19
  56. package/src/less/close.less +38 -6
  57. package/src/less/column-layout.less +160 -3
  58. package/src/less/core/_scaffolding.less +36 -27
  59. package/src/less/core/_typography-utilities.less +59 -45
  60. package/src/less/core/_typography.less +126 -111
  61. package/src/less/currency-flags.less +4 -4
  62. package/src/less/decision.less +4 -9
  63. package/src/less/dropdowns.less +362 -0
  64. package/src/less/droppable.less +202 -3
  65. package/src/less/flex.less +17 -16
  66. package/src/less/footer.less +18 -19
  67. package/src/less/forms/bootstrap-forms.less +105 -95
  68. package/src/less/forms/checkbox-radio.less +51 -52
  69. package/src/less/grid.less +23 -22
  70. package/src/less/input-groups.less +47 -48
  71. package/src/less/link-callout.less +4 -1
  72. package/src/less/list-group.less +281 -4
  73. package/src/less/media.less +8 -5
  74. package/src/less/mixins/_alerts.less +15 -7
  75. package/src/less/mixins/_arrows.less +13 -7
  76. package/src/less/mixins/_border-radius.less +1 -8
  77. package/src/less/mixins/_buttons.less +5 -5
  78. package/src/less/mixins/_center-block.less +7 -0
  79. package/src/less/mixins/_circle.less +11 -0
  80. package/src/less/mixins/_forms.less +16 -12
  81. package/src/less/mixins/_grid-framework.less +11 -8
  82. package/src/less/mixins/_grid.less +52 -36
  83. package/src/less/mixins/_hide-text.less +20 -0
  84. package/src/less/mixins/_list-group.less +23 -0
  85. package/src/less/mixins/_logical-properties-IE-friendly.less +329 -0
  86. package/src/less/mixins/_logical-properties-modern-browsers.less +226 -0
  87. package/src/less/mixins/_logical-properties.less +5 -0
  88. package/src/less/mixins/_panels.less +23 -0
  89. package/src/less/mixins/_physical-properties.less +111 -0
  90. package/src/less/mixins/_reset-text.less +22 -0
  91. package/src/less/mixins/_sequence.less +197 -0
  92. package/src/less/mixins/_spacing.less +20 -10
  93. package/src/less/mixins/_table-row.less +1 -1
  94. package/src/less/mixins/_text-emphasis.less +7 -1
  95. package/src/less/modals.less +53 -23
  96. package/src/less/navbar-base.less +1382 -0
  97. package/src/less/navbar.less +16 -20
  98. package/src/less/navs.less +348 -3
  99. package/src/less/neptune-social-media.less +11 -6
  100. package/src/less/neptune.bundle.less +2 -1
  101. package/src/less/panels.less +409 -4
  102. package/src/less/popovers.less +368 -5
  103. package/src/less/process.less +358 -3
  104. package/src/less/progress-bars.less +14 -9
  105. package/src/less/select.less +8 -6
  106. package/src/less/sequences.less +504 -8
  107. package/src/less/table.less +40 -54
  108. package/src/less/tick.less +14 -1
  109. package/src/less/tooltip.less +123 -4
  110. package/src/less/utilities.less +134 -4
  111. package/src/less/variables/_typography.less +2 -0
  112. package/src/props/neptune-tokens.css +2 -1
  113. package/src/variables/neptune-tokens.less +1 -3
@@ -1,9 +1,372 @@
1
1
  // TODO: remove bootstrap dependencies
2
2
 
3
3
  @import (reference) '../variables/legacy-variables.less';
4
- @import (reference) 'bootstrap/less/mixins/buttons.less';
5
- @import (reference) 'bootstrap/less/mixins/arrows.less';
6
- @import (reference) 'bootstrap/less/mixins/reset-text.less';
7
- @import (reference) 'bootstrap/less/mixins/vendor-prefixes.less';
4
+ @import (reference) './mixins/_buttons.less';
5
+ @import (reference) './mixins/_arrows.less';
6
+ @import (reference) './mixins/_reset-text.less';
7
+ @import (reference) './mixins/_logical-properties.less';
8
8
  @import 'close.less';
9
- @import 'bootstrap/less/popovers.less';
9
+
10
+ //
11
+ // Popovers
12
+ // --------------------------------------------------
13
+ @popover-padding-vertical: 18px;
14
+ @popover-padding-horizontal: 24px;
15
+
16
+ .popover {
17
+ top: 0;
18
+ .left(0);
19
+
20
+ z-index: @zindex-popover;
21
+ width: @popover-max-width;
22
+ padding: @popover-padding-vertical @popover-padding-horizontal;
23
+ // Our parent element can be arbitrary since popovers are by default inserted as a sibling of their target element.
24
+ // So reset our font and text properties to avoid inheriting weird values.
25
+ .reset-text();
26
+
27
+ font-size: @font-size-small;
28
+ background-color: var(--color-background-screen);
29
+ background-clip: padding-box;
30
+ border-radius: @border-radius-large;
31
+ box-shadow: 0 20px 66px 0 rgba(34, 48, 73, 0.2);
32
+ position: absolute;
33
+
34
+ &.animate {
35
+ transition: transform 0.25s;
36
+ }
37
+
38
+ &.scale-down {
39
+ transform: scale(0);
40
+ }
41
+
42
+ // Offset the popover to account for the popover arrow
43
+
44
+ &.top {
45
+ margin-top: -@popover-arrow-width;
46
+ transform-origin: 50% 100%;
47
+ }
48
+
49
+ &.top-left {
50
+ margin-top: -@popover-arrow-width;
51
+ transform-origin: calc(100% - 29px) 100%;
52
+ }
53
+
54
+ &.top-right {
55
+ margin-top: -@popover-arrow-width;
56
+ transform-origin: 29px 100%;
57
+ }
58
+
59
+ &.right {
60
+ .margin(left, @popover-arrow-width);
61
+
62
+ transform-origin: 0% 50%;
63
+ }
64
+
65
+ &.right-top {
66
+ .margin(left, @popover-arrow-width);
67
+
68
+ transform-origin: 0% 29px;
69
+ }
70
+
71
+ &.right-bottom {
72
+ .margin(left, @popover-arrow-width);
73
+
74
+ transform-origin: 0% calc(100% - 29px);
75
+ }
76
+
77
+ &.bottom {
78
+ margin-top: @popover-arrow-width;
79
+ transform-origin: 50% 0%;
80
+ }
81
+
82
+ &.bottom-left {
83
+ margin-top: @popover-arrow-width;
84
+ transform-origin: calc(100% - 29px) 0%;
85
+ }
86
+
87
+ &.bottom-right {
88
+ margin-top: @popover-arrow-width;
89
+ transform-origin: 29px 0%;
90
+ }
91
+
92
+ &.left {
93
+ .margin(left, -@popover-arrow-width);
94
+
95
+ transform-origin: 100% 50%;
96
+ }
97
+
98
+ &.left-top {
99
+ .margin(left, -@popover-arrow-width);
100
+
101
+ transform-origin: 100% 29px;
102
+ }
103
+
104
+ &.left-bottom {
105
+ .margin(left, -@popover-arrow-width);
106
+
107
+ transform-origin: 100% calc(100% - 29px);
108
+ }
109
+
110
+ .arrow-pointer(@popover-arrow-width);
111
+
112
+ &.top::before {
113
+ top: auto;
114
+ bottom: (@popover-arrow-width / -2);
115
+ .left(50%);
116
+
117
+ .margin(left, (@popover-arrow-width / -2));
118
+ }
119
+
120
+ &.top-left::before {
121
+ top: auto;
122
+ bottom: (@popover-arrow-width / -2);
123
+ .right(29px);
124
+
125
+ .left(auto);
126
+
127
+ .margin(left, (@popover-arrow-width / -2));
128
+ }
129
+
130
+ &.top-right::before {
131
+ top: auto;
132
+ bottom: (@popover-arrow-width / -2);
133
+ .left(29px);
134
+
135
+ .right(auto);
136
+
137
+ .margin(left,(@popover-arrow-width / -2));
138
+ }
139
+
140
+ &.right::before {
141
+ top: 50%;
142
+ margin-top: (@popover-arrow-width / -2);
143
+ .left((@popover-arrow-width / -2));
144
+ }
145
+
146
+ &.right-top::before {
147
+ top: 29px;
148
+ margin-top: (@popover-arrow-width / -2);
149
+ .left((@popover-arrow-width / -2));
150
+ }
151
+
152
+ &.right-bottom::before {
153
+ top: calc(100% - 29px);
154
+ margin-top: (@popover-arrow-width / -2);
155
+ .left((@popover-arrow-width / -2));
156
+ }
157
+
158
+ &.bottom::before {
159
+ top: (@popover-arrow-width / -2);
160
+ bottom: auto;
161
+ .left(50%);
162
+
163
+ .margin(left, (@popover-arrow-width / -2));
164
+ }
165
+
166
+ &.bottom-left::before {
167
+ top: (@popover-arrow-width / -2);
168
+ bottom: auto;
169
+ .right(29px);
170
+
171
+ .left(auto);
172
+
173
+ .margin(left, (@popover-arrow-width / -2));
174
+ }
175
+
176
+ &.bottom-right::before {
177
+ top: (@popover-arrow-width / -2);
178
+ bottom: auto;
179
+ .right(29px);
180
+
181
+ .left(auto);
182
+
183
+ .margin(left, (@popover-arrow-width / -2));
184
+ }
185
+
186
+ &.left::before {
187
+ top: 50%;
188
+ margin-top: (@popover-arrow-width / -2);
189
+ .left(auto);
190
+
191
+ .right((@popover-arrow-width / -2));
192
+ }
193
+
194
+ &.left-top::before {
195
+ top: 29px;
196
+ margin-top: (@popover-arrow-width / -2);
197
+ .left(auto);
198
+
199
+ .right((@popover-arrow-width / -2));
200
+ }
201
+
202
+ &.left-bottom::before {
203
+ top: calc(100% - 29px);
204
+ margin-top: (@popover-arrow-width / -2);
205
+ .left(auto);
206
+
207
+ .right((@popover-arrow-width / -2));
208
+ }
209
+
210
+ img,
211
+ .popover-image {
212
+ width: 65%;
213
+ margin: 8px 0;
214
+ }
215
+ }
216
+
217
+ .popover-title {
218
+ margin: 0; // reset heading margin
219
+ padding: 0;
220
+ font-size: @font-size-small;
221
+ background-color: var(--color-background-screen);
222
+ border-bottom: 0;
223
+ border-radius: (@border-radius-large - 1) (@border-radius-large - 1) 0 0;
224
+ color: var(--color-content-primary) !important;
225
+ line-height: var(--size-24);
226
+ }
227
+
228
+ .popover-content {
229
+ padding: 0;
230
+ color: var(--color-content-secondary);
231
+ font-size: @font-size-small;
232
+ line-height: var(--size-24);
233
+ }
234
+
235
+ .popover-content > :last-child {
236
+ margin-bottom: 0;
237
+ }
238
+
239
+ .popover-close {
240
+ .close();
241
+ }
242
+
243
+ [data-toggle='popover'] {
244
+ &:not(.btn) {
245
+ color: inherit !important;
246
+ font-weight: inherit !important;
247
+ text-decoration: none !important;
248
+ cursor: pointer;
249
+
250
+ &:hover,
251
+ &:focus,
252
+ &[aria-describedby] {
253
+ color: var(--color-content-accent-hover) !important;
254
+ outline: 0;
255
+ }
256
+ }
257
+
258
+ .nav > li > a & {
259
+ border-bottom: 0;
260
+ }
261
+ }
262
+
263
+ @media (--screen-md-max) {
264
+ .popover-modal {
265
+ position: fixed;
266
+ top: 0 !important;
267
+ right: 0 !important;
268
+ left: 0 !important;
269
+ width: 272px;
270
+ margin: var(--size-32) auto !important;
271
+ }
272
+
273
+ .popover-modal::before {
274
+ display: none;
275
+ }
276
+ }
277
+
278
+ @media (--screen-lg) {
279
+ .popover-modal.left {
280
+ .margin(right, -var(--size-24)) !important;
281
+ }
282
+
283
+ .popover-modal.right {
284
+ .margin(left, -var(--size-24)) !important;
285
+ }
286
+
287
+ .popover-modal.top {
288
+ margin-bottom: -8px !important;
289
+ }
290
+
291
+ .popover-modal.bottom {
292
+ margin-top: -8px !important;
293
+ }
294
+ }
295
+
296
+ @keyframes cover-fade-in {
297
+ from {
298
+ opacity: 0;
299
+ }
300
+
301
+ to {
302
+ opacity: 0.7;
303
+ }
304
+ }
305
+
306
+ .popover-modal-cover {
307
+ position: fixed;
308
+ top: 0;
309
+ .left(0);
310
+
311
+ z-index: 1060;
312
+ display: none;
313
+ width: 100vw;
314
+ height: 100vh;
315
+ cursor: pointer;
316
+ background-color: var(--color-background-screen);
317
+ opacity: 0.7;
318
+ animation: cover-fade-in 0.35s 0s linear forwards;
319
+ }
320
+
321
+ @media (--screen-md-max) {
322
+ .popover-modal-cover {
323
+ display: block;
324
+ }
325
+ }
326
+
327
+ .popover-promotion {
328
+ text-align: center;
329
+ padding: var(--size-24);
330
+
331
+ @media (max-width: @screen-sm-min) {
332
+ width: auto !important;
333
+ padding: var(--size-24) !important;
334
+ margin: var(--size-16) !important;
335
+ }
336
+
337
+ @media (min-width: (@screen-sm-min - 10px)) and (max-width: @screen-lg-min) {
338
+ width: 540px !important;
339
+ padding: 28px var(--size-32) !important;
340
+ margin: var(--size-32) auto !important;
341
+ }
342
+
343
+ .popover-title {
344
+ font-size: @font-size-h4;
345
+ line-height: @line-height-h4;
346
+
347
+ @media (min-width: @screen-md-min) {
348
+ font-size: @font-size-h3;
349
+ line-height: @line-height-h3;
350
+ }
351
+ }
352
+
353
+ .popover-image {
354
+ @media (max-width: @screen-xs-min) {
355
+ width: 80%;
356
+ }
357
+
358
+ @media (min-width: @screen-xs-min) and (max-width: @screen-lg-min) {
359
+ width: 60%;
360
+ }
361
+
362
+ @media (--screen-lg) {
363
+ width: 80%;
364
+ }
365
+ }
366
+ }
367
+
368
+ @media (max-width: @screen-lg-min) {
369
+ .popover-promotion {
370
+ position: absolute !important;
371
+ }
372
+ }
@@ -1,4 +1,359 @@
1
- // TODO: remove bootstrap dependencies
2
-
3
1
  @import (reference) '../variables/legacy-variables.less';
4
- @import 'bootstrap/less/process.less';
2
+ @import (reference) './mixins/_logical-properties.less';
3
+
4
+ @process-xl-radius: 64px;
5
+ @process-xl-stroke: 3px;
6
+ @process-xl-circumference: (pi() * (2 * (@process-xl-radius - 1)));
7
+ @process-xl-icon-size: 64px;
8
+ @process-xl-icon-stroke: 8px;
9
+
10
+ /*
11
+ // Keep these sizes in case we want to add these back in.
12
+ @process-lg-radius: 48px;
13
+ @process-lg-stroke: 2.7px;
14
+ @process-lg-circumference: (pi() * (2 * (@process-lg-radius - 1)));
15
+ @process-lg-icon-size: 48px;
16
+ @process-lg-icon-stroke: 6px;
17
+
18
+ @process-md-radius: 36px;
19
+ @process-md-circumference: (pi() * (2 * (@process-md-radius - 1)));
20
+ @process-md-stroke: 2.5px;
21
+ @process-md-icon-size: 36px;
22
+ @process-md-icon-stroke: 4px;
23
+ */
24
+ @process-sm-radius: 24px;
25
+ @process-sm-circumference: (pi() * (2 * (@process-sm-radius - 1)));
26
+ @process-sm-stroke: 2.4px;
27
+ @process-sm-icon-size: 24px;
28
+ @process-sm-icon-stroke: 3px;
29
+
30
+ @process-xs-radius: 12px;
31
+ @process-xs-circumference: (pi() * (2 * (@process-xs-radius - 1)));
32
+ @process-xs-stroke: 2px;
33
+ @process-xs-icon-size: 12px;
34
+ @process-xs-icon-stroke: 2px;
35
+
36
+ .process {
37
+ position: relative;
38
+ margin: auto;
39
+ display: block;
40
+
41
+ svg {
42
+ width: 100%;
43
+ height: 100%;
44
+ }
45
+ }
46
+
47
+ .process-circle {
48
+ transform-origin: center center;
49
+ transition: stroke 1s 0.2s linear;
50
+ stroke: var(--color-content-accent);
51
+ stroke-opacity: 1;
52
+ stroke-linecap: round;
53
+ animation-duration: 1.5s;
54
+ animation-timing-function: ease-out;
55
+ animation-iteration-count: infinite;
56
+ }
57
+
58
+ .process-inverse .process-circle {
59
+ stroke: var(--color-background-screen);
60
+ }
61
+
62
+ .process-icon-container {
63
+ position: absolute;
64
+ display: inline-block;
65
+ transform: rotate(45deg);
66
+ height: 50%;
67
+ width: 50%;
68
+ left: 25%;
69
+ top: 25%;
70
+ }
71
+
72
+ .process-icon-horizontal,
73
+ .process-icon-vertical {
74
+ position: absolute;
75
+ display: block;
76
+ width: 0;
77
+ height: 0;
78
+ }
79
+
80
+ .process-success {
81
+ .process-icon-horizontal {
82
+ background-color: var(--color-content-positive);
83
+ bottom: 0;
84
+ left: 0;
85
+ }
86
+
87
+ .process-icon-vertical {
88
+ background-color: var(--color-content-positive);
89
+ top: 100%;
90
+ right: 0;
91
+ }
92
+
93
+ .process-circle {
94
+ stroke: var(--color-content-positive);
95
+ }
96
+ }
97
+
98
+ .process-danger {
99
+ .process-icon-horizontal {
100
+ background-color: var(--color-content-negative);
101
+ left: 0;
102
+ }
103
+
104
+ .process-icon-vertical {
105
+ background-color: var(--color-content-negative);
106
+ top: 0;
107
+ }
108
+
109
+ .process-circle {
110
+ stroke: var(--color-content-negative);
111
+ }
112
+ }
113
+
114
+ .process-success,
115
+ .process-danger {
116
+ .process-circle {
117
+ animation-duration: 1.5s;
118
+ animation-delay: 1ms; // 1 ms delay prevents small glitch on webkit
119
+ animation-timing-function: ease-out;
120
+ animation-fill-mode: forwards;
121
+ animation-iteration-count: 1;
122
+ }
123
+
124
+ .process-icon-horizontal {
125
+ /* Animation over transition, to run once on load */
126
+ animation: process-width 0.3s 1.2s ease forwards;
127
+ }
128
+
129
+ .process-icon-vertical {
130
+ /* Animation over transition, to run once on load */
131
+ animation: process-height 0.3s 1.5s ease forwards;
132
+ }
133
+ }
134
+
135
+ .process-stopped {
136
+ .process-circle {
137
+ animation: none;
138
+ }
139
+
140
+ .process-icon-container {
141
+ display: none;
142
+ }
143
+ }
144
+
145
+ .process-size(@size, @circle-radius, @cirlce-circumference, @circle-stroke, @icon-size, @icon-stroke) {
146
+ .process-@{size} {
147
+ width: (@circle-radius * 2);
148
+ height: (@circle-radius * 2);
149
+
150
+ .process-circle {
151
+ /* Hide before animation to prevent glitching */
152
+ stroke-dashoffset: @cirlce-circumference;
153
+ stroke-dasharray: @cirlce-circumference;
154
+ stroke-width: @circle-stroke;
155
+ }
156
+
157
+ &.process-danger {
158
+ .process-icon-horizontal {
159
+ top: ((@icon-size - @icon-stroke) / 2);
160
+ height: @icon-stroke;
161
+ }
162
+
163
+ .process-icon-vertical {
164
+ left: ((@icon-size - @icon-stroke) / 2);
165
+ width: @icon-stroke;
166
+ }
167
+ }
168
+
169
+ .process-icon-horizontal,
170
+ .process-icon-vertical {
171
+ border-radius: (@icon-stroke / 2);
172
+ }
173
+
174
+ &.process-success {
175
+ .process-icon-container {
176
+ // TODO change to percentages so we don't need to redefine for different widths
177
+ width: ((@icon-size - @icon-stroke) / 2); // 20%
178
+ height: (@icon-size - @icon-stroke); // 42%
179
+ left: (3 * (@icon-size / 4)); // 40%
180
+ }
181
+
182
+ .process-icon-horizontal {
183
+ height: @icon-stroke;
184
+ }
185
+
186
+ .process-icon-vertical {
187
+ width: @icon-stroke;
188
+ }
189
+ }
190
+ }
191
+ }
192
+ .process-size(xs, @process-xs-radius, @process-xs-circumference, @process-xs-stroke, @process-xs-icon-size, @process-xs-icon-stroke);
193
+ .process-size(sm, @process-sm-radius, @process-sm-circumference, @process-sm-stroke, @process-sm-icon-size, @process-sm-icon-stroke);
194
+ .process-size(xl, @process-xl-radius, @process-xl-circumference, @process-xl-stroke, @process-xl-icon-size, @process-xl-icon-stroke);
195
+
196
+ .process-xs {
197
+ .process-circle {
198
+ animation-name: process-chase-circle-xs;
199
+ }
200
+
201
+ &.process-success,
202
+ &.process-danger {
203
+ .process-circle {
204
+ animation-name: process-success-circle-xs;
205
+ }
206
+ }
207
+ }
208
+
209
+ .process-sm {
210
+ .process-circle {
211
+ animation-name: process-chase-circle-sm;
212
+ }
213
+
214
+ &.process-success,
215
+ &.process-danger {
216
+ .process-circle {
217
+ animation-name: process-success-circle-sm;
218
+ }
219
+ }
220
+ }
221
+
222
+ .process-xl {
223
+ .process-circle {
224
+ animation-name: process-chase-circle-xl;
225
+ }
226
+
227
+ &.process-success,
228
+ &.process-danger {
229
+ .process-circle {
230
+ animation-name: process-success-circle-xl;
231
+ }
232
+ }
233
+ }
234
+
235
+ .complete-circle(@process-circumference) {
236
+ 0% {
237
+ transform: rotate(0deg);
238
+ stroke-dashoffset: (@process-circumference - 1);
239
+ stroke-dasharray: @process-circumference;
240
+ }
241
+
242
+ 100% {
243
+ transform: rotate(360deg);
244
+ stroke-dashoffset: 0;
245
+ stroke-dasharray: @process-circumference;
246
+ }
247
+ }
248
+
249
+ .chase-circle(@process-circumference) {
250
+ 0% {
251
+ transform: rotate(0deg);
252
+ stroke-dashoffset: ((3 * @process-circumference) - 1);
253
+ stroke-dasharray: @process-circumference;
254
+ }
255
+
256
+ 25% {
257
+ stroke-dashoffset: (@process-circumference - 1);
258
+ stroke-dasharray: (@process-circumference * 0.5);
259
+ }
260
+
261
+ 75% {
262
+ stroke-dashoffset: (@process-circumference - 1);
263
+ stroke-dasharray: (@process-circumference * 0.75);
264
+ }
265
+
266
+ 100% {
267
+ transform: rotate(360deg);
268
+ stroke-dashoffset: (@process-circumference - 1);
269
+ stroke-dasharray: @process-circumference;
270
+ }
271
+ }
272
+
273
+ @keyframes process-chase-circle-xs {
274
+ .chase-circle(@process-xs-circumference);
275
+ }
276
+
277
+ @keyframes process-success-circle-xs {
278
+ .complete-circle(@process-xs-circumference);
279
+ }
280
+
281
+ @keyframes process-chase-circle-sm {
282
+ .chase-circle(@process-sm-circumference);
283
+ }
284
+
285
+ @keyframes process-success-circle-sm {
286
+ .complete-circle(@process-sm-circumference);
287
+ }
288
+
289
+ @keyframes process-chase-circle-xl {
290
+ .chase-circle(@process-xl-circumference);
291
+ }
292
+
293
+ @keyframes process-success-circle-xl {
294
+ .complete-circle(@process-xl-circumference);
295
+ }
296
+
297
+ @keyframes process-width {
298
+ to {
299
+ width: 100%;
300
+ }
301
+ }
302
+
303
+ @keyframes process-height {
304
+ to {
305
+ top: 0;
306
+ height: 100%;
307
+ }
308
+ }
309
+
310
+ .btn .process:first-child {
311
+ .margin(left, -12px);
312
+
313
+ .margin(right, 12px);
314
+
315
+ .float(left);
316
+ }
317
+
318
+ .btn-block .process:first-child {
319
+ position: absolute;
320
+ }
321
+
322
+ .btn .process-circle {
323
+ transition: stroke 0.5s 0s linear;
324
+ }
325
+
326
+ .btn-primary,
327
+ .btn-success {
328
+ .process-circle {
329
+ stroke: @brand-white;
330
+ }
331
+
332
+ .process-icon-horizontal,
333
+ .process-icon-vertical {
334
+ background-color: @brand-white;
335
+ }
336
+ }
337
+
338
+ .btn:hover,
339
+ .btn:focus {
340
+ .process-circle {
341
+ stroke: @brand-white;
342
+ }
343
+
344
+ .process-icon-horizontal,
345
+ .process-icon-vertical {
346
+ background-color: @brand-white;
347
+ }
348
+ }
349
+
350
+ .btn[disabled] {
351
+ .process-circle {
352
+ stroke: @btn-disabled-color;
353
+ }
354
+
355
+ .process-icon-horizontal,
356
+ .process-icon-vertical {
357
+ background-color: @brand-white;
358
+ }
359
+ }