superdesk-ui-framework 3.0.38 → 3.0.40

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.
package/.eslintignore CHANGED
@@ -1,3 +1,4 @@
1
1
  *.generated.js
2
2
  missing-translations-strings.js
3
3
  language-mapping-list.js
4
+ globals.d.ts
@@ -0,0 +1,24 @@
1
+ .drag-handle {
2
+ height: 30px;
3
+ width: 8px;
4
+ opacity: 0.85;
5
+ }
6
+
7
+ .drag-handle-wrapper {
8
+ padding: 6px;
9
+ display: inline-flex;
10
+ justify-content: center;
11
+ align-items: center;
12
+ background-color: var(--sd-colour-line--medium);
13
+ border-start-start-radius: 3px;
14
+ border-end-start-radius: 3px;
15
+ &:hover {
16
+ background-color: var(--sd-colour-line--strong);
17
+ cursor: grab;
18
+ }
19
+ &:active {
20
+ background-color: var(--sd-colour-interactive);
21
+ cursor: grabbing;
22
+ opacity: 1;
23
+ }
24
+ }
@@ -628,7 +628,7 @@ h1, h2, h3, h4, h5, h6 {
628
628
 
629
629
  .sd-text__info {
630
630
  font-weight: 300;
631
- color: $grayText;
631
+ color: var(--color-text-light);
632
632
  }
633
633
 
634
634
  .sd-text-icon {
@@ -91,7 +91,7 @@ $sd-tableBorderColor: var(--sd-colour-line--medium);
91
91
 
92
92
  .sd-display-table__cell {
93
93
  font-weight: 600;
94
- border-bottom: 2px solid rgba(0, 0, 0, 0.15);
94
+ border-bottom: 2px solid var(--sd-colour-line--light);
95
95
  }
96
96
  }
97
97
  .sd-display-table__body {
@@ -103,7 +103,7 @@ $sd-tableBorderColor: var(--sd-colour-line--medium);
103
103
  .sd-display-table__cell {
104
104
  display: table-cell;
105
105
  padding: 1.2rem 0.8rem;
106
- border-bottom: 1px solid rgba(0, 0, 0, 0.15);
106
+ border-bottom: 1px solid var(--sd-colour-line--light);
107
107
  font-weight: 500;
108
108
  text-align: start;
109
109
 
@@ -127,12 +127,12 @@ $sd-tableBorderColor: var(--sd-colour-line--medium);
127
127
  flex-wrap: nowrap;
128
128
  justify-content: center;
129
129
  padding: 1.2rem 0.8rem;
130
- border-bottom: 1px solid rgba(0, 0, 0, 0.15);
130
+ border-bottom: 1px solid var(--sd-colour-line--light);
131
131
  font-weight: 500;
132
132
  text-align: start;
133
133
  min-width: 120px;
134
134
  }
135
135
  .sd-flex-table--head .sd-flex-table__cell {
136
136
  font-weight: 600;
137
- border-bottom: 2px solid rgba(0, 0, 0, 0.15);
137
+ border-bottom: 2px solid var(--sd-colour-line--light);
138
138
  }
@@ -2,25 +2,25 @@
2
2
  // ----
3
3
 
4
4
  .nav-tabs-vertical {
5
- width: 2rem;
6
- border-right: 1px solid #ccc;
5
+ width: 3rem;
6
+ border-right: 1px solid var(--sd-colour-line--medium);
7
7
  transition: all .2s ease-out .3s;
8
8
  opacity: 1;
9
9
 
10
10
  &__list {
11
- width: 2rem;
11
+ width: 3rem;
12
12
  list-style: none;
13
13
  margin: 0;
14
14
  padding: 0;
15
15
  }
16
16
  &__tab {
17
17
  display: inline-block;
18
- width: 2rem;
19
- line-height: 2rem;
18
+ width: 3rem;
19
+ line-height: 1;
20
20
 
21
21
  &--active {
22
22
  .nav-tabs-vertical__link {
23
- color: $grayDarker;
23
+ color: var(--color-text);
24
24
  }
25
25
  }
26
26
  }
@@ -28,7 +28,7 @@
28
28
  display: inline-block;
29
29
  font-size: 1.1rem;
30
30
  font-weight: 500;
31
- color: $grayText;
31
+ color: var(--color-text-light);
32
32
  text-transform: uppercase;
33
33
  white-space: nowrap;
34
34
  margin: 10px 0;
@@ -38,7 +38,7 @@
38
38
  transform-origin: 0 0;
39
39
 
40
40
  &:hover {
41
- color: $grayDarker;
41
+ color: var(--color-text);
42
42
  }
43
43
  &:after {
44
44
  content: "";
@@ -2,15 +2,15 @@
2
2
  // ---------------------------------------------
3
3
 
4
4
  //color variables
5
- $card-item-header-bg-normal: hsl(200, 18%, 46%);
6
- $card-item-header-bg-inactive: hsl(0, 0%, 69%);
7
- $card-item-header-bg-active: $sd-blueMedium;
8
- $card-item-header-bg-light: var(--sd-colour-panel-bg--300);
9
- $card-item-header-bg-gradient-1: linear-gradient(180deg, rgba(96,184,194,1) 2%, rgba(30,176,108,1) 90%);
10
- $card-item-header-bg-secondary: $subnav-background-blue-grey-darker;
5
+ $card-item-header-bg-normal: var(--sd-card-header-bg-color--normal);
6
+ $card-item-header-bg-inactive: var(--sd-card-header-bg-color--inactive);
7
+ $card-item-header-bg-active: var(--sd-card-header-bg-color--active);
8
+ $card-item-header-bg-light: var(--sd-card-header-bg-color--light);
9
+ $card-item-header-bg-secondary: var(--sd-card-header-bg-color--secondary);
10
+ $card-item-header-bg-gradient-1: var(--sd-card-header-bg-color--gradient-1);
11
11
  $card-item-top-border-height: 0.4rem;
12
- $card-item-rounded-radius: $border-radius__base--large;
13
- $card-item-default-radius: $border-radius__base--medium;
12
+ $card-item-rounded-radius: var(--b-radius--large);
13
+ $card-item-default-radius: var(--b-radius--medium);
14
14
 
15
15
  //shadows
16
16
  $card-item-shadow: 0 1px 4px rgba(0,0,0,.1), 0 1px 5px rgba(0,0,0,.16);
@@ -73,11 +73,8 @@ $card-item-shadow-hover-light: 0 1px 6px rgba(0,0,0,.1), 0 2px 12px rgba(31, 17,
73
73
  .sd-card__actions-group {
74
74
  display: flex;
75
75
  align-items: center;
76
- margin-right: .3rem;
77
-
78
- a + a {
79
- margin-left: .6rem;
80
- }
76
+ margin-inline-end: var(--gap--x-small);
77
+ gap: var(--gap--x-small);
81
78
  }
82
79
  .sd-card__header {
83
80
  position: relative;
@@ -165,7 +162,7 @@ $card-item-shadow-hover-light: 0 1px 6px rgba(0,0,0,.1), 0 2px 12px rgba(31, 17,
165
162
  // sd-card__heading should go inside sd-card__header
166
163
  .sd-card__heading {
167
164
  @include sd-padding('1-5', 'x');
168
- padding-top: $card-item-top-border-height;
165
+ padding-block-start: $card-item-top-border-height;
169
166
  flex-grow: 1;
170
167
  font-size: 1.2rem;
171
168
  line-height: 100%;
@@ -176,18 +173,31 @@ $card-item-shadow-hover-light: 0 1px 6px rgba(0,0,0,.1), 0 2px 12px rgba(31, 17,
176
173
  overflow: hidden;
177
174
  color: inherit;
178
175
  &--editable {
179
- padding: 1rem 1.6rem 1rem;
180
- text-transform: initial;
181
- &:hover {
182
- cursor: text;
183
- }
184
- > input {
185
- margin-top: 6px;
176
+ padding: var(--gap--small) var(--gap--small) var(--gap--small);
177
+ text-transform: initial !important;
178
+ .sd-card__heading-dummy-input {
179
+ display: flex;
180
+ align-items: center;
181
+ height: 3.2rem;
182
+ border: 2px solid transparent;
183
+ border-radius: var(--b-radius--medium);
184
+ padding: 0 0.8rem;
185
+ transition: all 0.2s ease;
186
+ text-transform: initial !important;
187
+ font-size: 1.4rem;
188
+ font-weight: 400;
189
+ letter-spacing: 0;
190
+ line-height: 1;
191
+ &:hover {
192
+ border-color: var(--color-input-border);
193
+ cursor: text;
194
+ }
186
195
  }
187
196
  }
197
+
188
198
  }
189
199
  .sd-card__sub-header {
190
- background-color: #9daeb7;
200
+ background-color: hsl(201, 15%, 67%);
191
201
  display: flex;
192
202
  align-items: center;
193
203
  color: $white;
@@ -223,7 +233,7 @@ $card-item-shadow-hover-light: 0 1px 6px rgba(0,0,0,.1), 0 2px 12px rgba(31, 17,
223
233
  }
224
234
  }
225
235
  .sd-card__thumbnail {
226
- margin-top: 0.4rem;
236
+ margin-block-start: 0.4rem;
227
237
  line-height: 0;
228
238
  background-color: var(--sd-item__thumb-Bg);
229
239
  & + .sd-card__heading {
@@ -244,9 +254,9 @@ $card-item-shadow-hover-light: 0 1px 6px rgba(0,0,0,.1), 0 2px 12px rgba(31, 17,
244
254
  font-size: 11px;
245
255
  color: rgba(0,0,0,.5);
246
256
  letter-spacing: 0.04em;
247
- margin-bottom: 4px;
257
+ margin-block-end: 4px;
248
258
  &.with-value {
249
- margin-bottom: 0;
259
+ margin-block-end: 0;
250
260
  }
251
261
  .label {
252
262
  float: right;
@@ -276,19 +286,20 @@ $card-item-shadow-hover-light: 0 1px 6px rgba(0,0,0,.1), 0 2px 12px rgba(31, 17,
276
286
  }
277
287
  &--scrollable {
278
288
  min-height: 20vh;
279
- max-height: 30vh;
289
+ max-height: 34vh;
280
290
  overflow-y: auto;
281
291
  }
282
292
  &--padd-10 {
283
293
  padding: 1rem;
284
294
  }
285
295
  }
286
- .sd-card__content-heading, h4.sd-card__content-heading {
296
+ .sd-card__content-heading,
297
+ h4.sd-card__content-heading {
287
298
  text-transform: none;
288
299
  color: inherit;
289
300
  font-size: 1.6rem;
290
301
  letter-spacing: initial;
291
- padding-bottom: $sd-base-increment;
302
+ padding-block-end: $sd-base-increment;
292
303
  }
293
304
  .sd-card__placeholder {
294
305
  padding: 16px;
@@ -311,8 +322,9 @@ $card-item-shadow-hover-light: 0 1px 6px rgba(0,0,0,.1), 0 2px 12px rgba(31, 17,
311
322
  padding: 0;
312
323
  list-style: none;
313
324
 
314
- li, .sd-card__content-list-item {
315
- padding: 16px;
325
+ li,
326
+ .sd-card__content-list-item {
327
+ padding: var(--gap--medium);
316
328
  border-bottom: 1px solid var(--sd-colour-line--light);
317
329
  &--inline {
318
330
  display: flex;
@@ -334,7 +346,7 @@ $card-item-shadow-hover-light: 0 1px 6px rgba(0,0,0,.1), 0 2px 12px rgba(31, 17,
334
346
  }
335
347
  }
336
348
  &--small {
337
- padding: 7px 16px;
349
+ padding: var(--gap--small) var(--gap--small) var(--gap--small) var(--gap--medium);
338
350
  h4 {
339
351
  margin: 0;
340
352
  }
@@ -350,23 +362,23 @@ $card-item-shadow-hover-light: 0 1px 6px rgba(0,0,0,.1), 0 2px 12px rgba(31, 17,
350
362
  i {
351
363
  display: inline-block;
352
364
  opacity: 0.5;
353
- margin-top: -2px;
365
+ margin-block-start: -2px;
354
366
  }
355
367
  }
356
368
  .button__view-all {
357
- border-bottom: 1px dotted #5598B4;
358
- color: #5598B4;
369
+ border-bottom: 1px dotted var(--sd-colour-interactive);
370
+ color: var(--sd-colour-interactive);
359
371
  cursor: pointer;
360
372
  }
361
373
 
362
374
  .sd-card__content-list-block-link {
363
375
  display: block;
364
376
  padding: .8rem 1.6rem;
365
- color: $gray;
377
+ color: var(--color-text);
366
378
  text-decoration: none;
367
379
 
368
380
  &:hover {
369
- color: $grayDarker;
381
+ color: var(--color-text);
370
382
  }
371
383
 
372
384
  &--icon-hover {
@@ -377,7 +389,7 @@ $card-item-shadow-hover-light: 0 1px 6px rgba(0,0,0,.1), 0 2px 12px rgba(31, 17,
377
389
  display: none;
378
390
  }
379
391
  &:hover {
380
- background-color: rgba(94,169,200, .15);
392
+ background-color: var(--sd-colour-interactive--alpha-20);
381
393
 
382
394
  i {
383
395
  display: inline-flex;
@@ -392,10 +404,10 @@ $card-item-shadow-hover-light: 0 1px 6px rgba(0,0,0,.1), 0 2px 12px rgba(31, 17,
392
404
  }
393
405
  .sd-card__time-date {
394
406
  font-size: 11px;
395
- color: #ababab;
407
+ color: var(--color-text-light);
396
408
  font-weight: 300;
397
409
  &--reverse-color {
398
- color: rgba(255,255,255, 0.6);
410
+ color: hsla(0, 0%, 100%, 0.7);
399
411
  }
400
412
  }
401
413
 
@@ -428,7 +440,7 @@ $card-item-shadow-hover-light: 0 1px 6px rgba(0,0,0,.1), 0 2px 12px rgba(31, 17,
428
440
  width: 100%;
429
441
  position: relative;
430
442
  height: 0;
431
- padding-bottom: 75%;
443
+ padding-block-end: 75%;
432
444
  overflow: hidden;
433
445
  text-align: center;
434
446
  img {
@@ -436,28 +448,28 @@ $card-item-shadow-hover-light: 0 1px 6px rgba(0,0,0,.1), 0 2px 12px rgba(31, 17,
436
448
  height: auto;
437
449
  }
438
450
  &--size-xs {
439
- padding-bottom: 35%;
451
+ padding-block-end: 35%;
440
452
  .sd-card__thumbnail-heading {
441
453
  font-size: 18px;
442
454
  }
443
455
  }
444
456
  &--size-xxs {
445
- padding-bottom: 16%;
457
+ padding-block-end: 16%;
446
458
  .sd-card__thumbnail-heading {
447
459
  font-size: 18px;
448
460
  }
449
461
  }
450
462
  &--size-s {
451
- padding-bottom: 50%;
463
+ padding-block-end: 50%;
452
464
  }
453
465
  &--size-m {
454
- padding-bottom: 75%; // default value;
466
+ padding-block-end: 75%; // default value;
455
467
  }
456
468
  &--size-l {
457
- padding-bottom: 100%; // default value;
469
+ padding-block-end: 100%; // default value;
458
470
  }
459
471
  &--size-xl {
460
- padding-bottom: 125%; // default value;
472
+ padding-block-end: 125%; // default value;
461
473
  }
462
474
  }
463
475
  .sd-card__file-type-icn {
@@ -696,14 +696,15 @@ $sd-grid-item-shadow-activated: 0 0 0 2px var(--sd-colour-interactive--
696
696
  .sd-grid-item-header {
697
697
  padding: 4px 0;
698
698
  margin-bottom: 6px;
699
- border-bottom: 5px solid #4d4d4d;
699
+ border-bottom: 5px solid var(--sd-colour-neutral);
700
700
  display: flex;
701
701
 
702
- &__heading {
702
+ .sd-grid-item-header__heading {
703
703
  color: var(--color-text);
704
704
  font-size: 15px;
705
705
  font-weight: 500;
706
706
  flex-grow: 1;
707
+ min-height: 32px;
707
708
 
708
709
  & + div {
709
710
  margin-inline-start: 8px;
@@ -714,12 +715,12 @@ $sd-grid-item-shadow-activated: 0 0 0 2px var(--sd-colour-interactive--
714
715
  color: inherit;
715
716
 
716
717
  span {
717
- border-bottom: 1px dotted $sd-blueMedium;
718
+ border-bottom: 1px dotted var(--sd-colour-interactive);
718
719
  }
719
720
 
720
721
  [class^="icon-"],
721
722
  [class*=" icon-"] {
722
- color: $sd-blueMedium;
723
+ color: var(--sd-colour-interactive);
723
724
  margin-inline-start: 8px;
724
725
  }
725
726
 
@@ -374,6 +374,9 @@
374
374
 
375
375
  [data-theme="dark-ui"] {
376
376
 
377
+ // COMPONENT: SD CARD
378
+ --sd-card-header-bg-color--secondary: hsla(214, 30%, 30%, 1);
379
+
377
380
  // INTERACTIVE PRIMARY
378
381
  --sd-colour-interactive-hs: 160, 50%;
379
382
  //--sd-colour-interactive-hs: 198, 50%;
@@ -581,21 +584,25 @@
581
584
 
582
585
  :root, [data-theme="light-ui"] {
583
586
 
584
- //--color-background-topmenu: hsla(0, 0%, 17%, 1);
587
+ // COMPONENT: SD CARD
588
+ --sd-card-header-bg-color--normal: hsla(214, 20%, 42%, 1);
589
+ --sd-card-header-bg-color--secondary: hsla(214, 30%, 20%, 1);
590
+ --sd-card-header-bg-color--inactive: hsla(214, 13%, 74%, 1);
591
+ --sd-card-header-bg-color--active: hsla(214, 40%, 50%, 1);
592
+ --sd-card-header-bg-color--light: var(--sd-colour-panel-bg--300);
593
+ --sd-card-header-bg-color--gradient-1: linear-gradient(180deg, rgba(96,184,194,1) 2%, rgba(30,176,108,1) 90%);
594
+
585
595
 
586
596
  --sd-colour-test-1: hsl(308 71% 40% / 50%);
587
597
  --sd-colour-test-2: hsl(9 59% 49% / 0.5);
588
598
 
589
599
  --sd-colour-background__main-list: hsla(0, 0%, 97%, 1);
590
600
 
591
-
592
-
593
601
  --sd-colour-background__base--00: hsla(0, 0%, 100%, 1);
594
602
  --sd-colour-background__base--10: hsla(0, 0%, 90%, 1);
595
603
  --sd-colour-background__base--20: hsla(0, 0%, 80%, 1);
596
604
  --sd-colour-background__base--30: hsla(0, 0%, 70%, 1);
597
605
 
598
-
599
606
  --color-text: hsla(214, 13%, 20%, 1);
600
607
  --color-text--inverse: hsla(214, 13%, 98%, 1);
601
608
  --color-text-light: hsla(214, 13%, 40%, 1);
@@ -681,7 +688,7 @@
681
688
  --color-text: hsla(0, 0%, 96%, 1);
682
689
  --color-text-light: hsla(214, 13%, 76%, 1);
683
690
  --color-text-lighter: hsla(214, 13%, 56%, 1);
684
- --color-icon-default: hsla(214, 13%, 64%, 1);
691
+ --color-icon-default: hsla(214, 13%, 90%, 1);
685
692
  --sd-slugline-color: hsla(197, 60%, 75%, 1) !important;
686
693
  --sd-time-schedule-color: hsla(268, 60%, 65%, 1);
687
694
  --sd-navy-color: hsla(240, 90%, 75%, 1);
@@ -550,13 +550,13 @@ $planningEditor-width: 53rem;
550
550
 
551
551
  .sd-content-navigation-panel {
552
552
  width: 20rem;
553
- background-color: #f0f0f0;
553
+ background-color: var(--sd-colour-background__left-nav);
554
554
  flex-shrink: 0;
555
555
  display: flex;
556
556
  flex-direction: column;
557
557
  overflow: auto;
558
558
  overflow-x: hidden;
559
- border-right-color: $grayLight;
559
+ border-right-color: var(--sd-colour-line--light);
560
560
  border-right-style: solid;
561
561
  border-right-width: 0;
562
562
  transition: all .2s ease-out .1s;
@@ -437,9 +437,6 @@ $side-panel-Bg-200: var(--sd-colour-panel-bg--200);
437
437
  }
438
438
  &.side-panel--transparent {
439
439
  background-color: transparent;
440
- .side-panel__header {
441
- background-color: rgba(255, 255, 255, 0.2);
442
- }
443
440
  }
444
441
  &--bg-000, &--light {
445
442
  background-color: $side-panel-Bg-000;
@@ -1,8 +1,6 @@
1
1
  // CONTENT NAVIGATION
2
2
  // ----
3
3
 
4
- $sd-contentNavBtn-bgHoverColor: rgba(94,169,200,0.2);
5
- $sd-contentNavBtn-bgActiveColor: rgba(255,255,255,1);
6
4
  $sd-contentNavBtn-transition: background-color 0.2s ease-out, color 0.1s ease-out;
7
5
 
8
6
  .sd-content-nav {
@@ -18,24 +16,29 @@ $sd-contentNavBtn-transition: background-color 0.2s ease-out, color 0.1s ease-ou
18
16
  font-size: 1.4rem;
19
17
  line-height: 100%;
20
18
  text-decoration: none;
21
- color: $grayDarker;
19
+ color: var(--color-text);
22
20
  padding: 1.6rem 2rem;
23
21
  transition: $sd-contentNavBtn-transition;
22
+ border-inline-end: 4px solid transparent;
24
23
  &:hover {
25
- background-color: $sd-contentNavBtn-bgHoverColor;
26
- color: $sd-text;
24
+ background-color: var(--sd-colour-interactive--alpha-20);
25
+ color: var(--color-text);
27
26
  text-decoration: none;
28
27
  }
29
- &:active, &--active {
30
- background-color: $sd-contentNavBtn-bgActiveColor;
31
- color: $sd-colour-interactive;
28
+ &:active,
29
+ &.sd-content-nav__btn--active {
30
+ background-color: var(--sd-colour-interactive--alpha-10);
31
+ color: var(--sd-colour-interactive);
32
+ }
33
+ &.sd-content-nav__btn--active {
34
+ border-color: var(--sd-colour-interactive--active);
32
35
  }
33
36
  }
34
37
  .sd-content-nav-title {
35
38
  font-size: 1.5rem;
36
39
  font-weight: 300;
37
40
 
38
- &--uppercase {
41
+ &.sd-content-nav-title--uppercase {
39
42
  font-size: 1.3rem;
40
43
  font-weight: 400;
41
44
  text-transform: uppercase;
@@ -0,0 +1,13 @@
1
+ import * as React from 'react';
2
+ import '../../app/styles/_drag-handle.scss';
3
+ import dragHandleImg from '../../app/img/dots.svg';
4
+
5
+ export class DragHandle extends React.PureComponent {
6
+ render() {
7
+ return (
8
+ <div className="drag-handle-wrapper">
9
+ <img src={dragHandleImg} className="drag-handle" />
10
+ </div>
11
+ );
12
+ }
13
+ }
@@ -97,6 +97,7 @@ export { MultiSelect } from './components/MultiSelect';
97
97
  export { ResizablePanels } from './components/ResizablePanels';
98
98
  export { WithPopover } from './components/WithPopover';
99
99
  export { Spacer, SpacerBlock } from './components/Spacer';
100
+ export { DragHandle } from './components/DragHandle';
100
101
 
101
102
  // declare non-typescript exports to prevent errors
102
103
  export declare const ToggleBoxNext: any;
@@ -12064,6 +12064,26 @@ doc-react-playground {
12064
12064
  .side-panel__top-tools--dark-blue-grey .icn-mix__icn {
12065
12065
  color: inherit;
12066
12066
  opacity: 1; }
12067
+ .drag-handle {
12068
+ height: 30px;
12069
+ width: 8px;
12070
+ opacity: 0.85; }
12071
+
12072
+ .drag-handle-wrapper {
12073
+ padding: 6px;
12074
+ display: inline-flex;
12075
+ justify-content: center;
12076
+ align-items: center;
12077
+ background-color: var(--sd-colour-line--medium);
12078
+ border-start-start-radius: 3px;
12079
+ border-end-start-radius: 3px; }
12080
+ .drag-handle-wrapper:hover {
12081
+ background-color: var(--sd-colour-line--strong);
12082
+ cursor: grab; }
12083
+ .drag-handle-wrapper:active {
12084
+ background-color: var(--sd-colour-interactive);
12085
+ cursor: grabbing;
12086
+ opacity: 1; }
12067
12087
  @charset "UTF-8";
12068
12088
  .red--100 {
12069
12089
  background-color: #fde4e2; }