@bpmn-io/form-js-viewer 1.26.1 → 2.0.0-alpha.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.
@@ -1,81 +1,94 @@
1
1
  /**
2
2
  * Theming
3
3
  */
4
+ /**
5
+ * Semantic tokens, copied from `@bpmn-io/theme` to style the components
6
+ * according to this theme.
7
+ *
8
+ * Names and values of the tokens should stay intact with the `@bpmn-io/theme`
9
+ * source of truth, to ensure matching styles and allow overrides with an
10
+ * alternative theme.
11
+ */
12
+ .bio-theme-parent {
13
+ --bio-surface: hsl(0, 0%, 100%);
14
+ --bio-surface-medium: hsl(225, 10%, 95%);
15
+ --bio-surface-strong: hsl(225, 10%, 90%);
16
+ --bio-text: hsl(225, 10%, 15%);
17
+ --bio-text-subtle: hsl(225, 10%, 35%);
18
+ --bio-text-subtlest: hsl(225, 10%, 55%);
19
+ --bio-text-on-primary: hsl(0, 0%, 100%);
20
+ --bio-border: hsl(225, 10%, 75%);
21
+ --bio-border-input: hsl(225, 10%, 75%);
22
+ --bio-border-subtle: hsl(225, 10%, 85%);
23
+ --bio-border-disabled: hsl(225, 10%, 90%);
24
+ --bio-primary: hsl(205, 100%, 40%);
25
+ --bio-focus: hsl(205, 100%, 40%);
26
+ --bio-focus-ring: hsla(205, 100%, 40%, 0.35);
27
+ --bio-focus-ring-danger: hsla(360, 100%, 45%, 0.35);
28
+ --bio-neutral-subtle: hsl(225, 10%, 80%);
29
+ --bio-neutral-subtle-hover: hsl(225, 10%, 75%);
30
+ --bio-danger: hsl(360, 100%, 45%);
31
+ --bio-danger-surface: hsl(360, 100%, 92%);
32
+ --bio-danger-surface-subtle: hsl(360, 100%, 97%);
33
+ --bio-shadow: hsla(0, 0%, 0%, 30%);
34
+ --bio-radius-sm: 2px;
35
+ --bio-radius-md: 3px;
36
+ --bio-radius-lg: 4px;
37
+ }
38
+
4
39
  .fjs-container {
5
- --color-grey-225-10-15: hsl(225, 10%, 15%);
6
- --color-grey-225-10-35: hsl(225, 10%, 35%);
7
- --color-grey-225-10-45: hsl(225, 10%, 45%);
8
- --color-grey-225-10-55: hsl(225, 10%, 55%);
9
- --color-grey-225-10-75: hsl(225, 10%, 75%);
10
- --color-grey-225-10-80: hsl(225, 10%, 80%);
11
- --color-grey-225-10-85: hsl(225, 10%, 85%);
12
- --color-grey-225-10-90: hsl(225, 10%, 90%);
13
- --color-grey-225-10-93: hsl(225, 10%, 93%);
14
- --color-grey-225-10-95: hsl(225, 10%, 95%);
15
- --color-grey-225-10-97: hsl(225, 10%, 97%);
16
- --color-grey-0-0-88: hsl(0, 0%, 88%);
17
-
18
- --color-blue-219-100-53: hsl(219, 99%, 53%);
19
- --color-blue-219-100-53-05: hsla(219, 99%, 53%, 0.5);
20
- --color-blue-205-100-40: hsl(205, 100%, 40%);
21
- --color-blue-205-100-45: hsl(205, 100%, 45%);
22
- --color-blue-205-100-50: hsl(205, 100%, 50%);
23
- --color-blue-205-100-80: hsl(205, 100%, 80%);
24
- --color-blue-205-100-95: hsl(205, 100%, 95%);
25
-
26
- --color-green-150-86-44: hsl(150, 86%, 44%);
27
-
28
- --color-red-360-100-40: hsl(360, 100%, 40%);
29
- --color-red-360-100-45: hsl(360, 100%, 45%);
30
- --color-red-360-100-92: hsl(360, 100%, 92%);
31
- --color-red-360-100-95: hsl(360, 100%, 95%);
32
- --color-red-360-100-97: hsl(360, 100%, 97%);
33
-
34
- --color-white: hsl(0, 0%, 100%);
35
- --color-black: hsl(0, 0%, 0%);
36
-
37
- /**
38
- * Specify color variables in the following schema:
39
- * 1 - use specified layer
40
- * 2 - use layer one
41
- * 3 - use fallback
42
- */
43
- --color-background: var(--cds-field, var(--cds-field-01, var(--color-white)));
44
- --color-background-disabled: var(--cds-background, var(--color-grey-225-10-95));
45
- --color-background-readonly: var(--cds-background, var(--color-grey-225-10-95));
46
- --color-background-adornment: var(--cds-field, var(--cds-field-01, var(--color-grey-225-10-95)));
47
- --color-background-inverted: var(--cds-background-inverse, var(--color-grey-225-10-90));
48
- --color-background-inverted-hover: var(--cds-background-inverse-hover, var(--color-grey-225-10-93));
49
- --color-background-active: var(--cds-background-active, var(--color-grey-225-10-75));
50
- --color-layer: var(--cds-layer, var(--cds-layer-01, var(--color-white)));
51
- --color-layer-accent: var(--cds-layer-accent, var(--color-grey-0-0-88));
52
- --color-background-pre: var(--cds-layer, var(--cds-layer-01, var(--color-white)));
53
-
54
- --color-icon-base: var(--cds-icon-primary, var(--color-black));
55
- --color-icon-inverted: var(--cds-icon-inverse, var(--color-black));
56
- --color-text: var(--cds-text-primary, var(--color-grey-225-10-15));
57
- --color-text-light: var(--cds-text-secondary, var(--color-grey-225-10-35));
58
- --color-text-lighter: var(--cds-text-secondary, var(--color-grey-225-10-45));
59
- --color-text-lightest: var(--cds-text-placeholder, var(--color-grey-225-10-55));
60
- --color-text-inverted: var(--cds-text-inverse, var(--color-text));
61
- --color-text-disabled: var(--cds-text-disabled, var(--color-text-light));
62
-
63
- --color-borders: var(--cds-border-strong, var(--cds-border-strong-01, var(--color-grey-225-10-55)));
64
- --color-borders-group: var(--cds-border-subtle, var(--color-grey-225-10-85));
40
+
41
+ --color-background: var(--bio-surface);
42
+ --color-background-disabled: var(--bio-surface-medium);
43
+ --color-background-readonly: var(--bio-surface-medium);
44
+ --color-background-adornment: var(--bio-surface-medium);
45
+ --color-background-inverted: var(--bio-surface-strong);
46
+ --color-background-inverted-hover: var(--bio-surface-medium);
47
+ /* despite the name, form-js applies this on `:hover` and `:focus-visible` */
48
+ --color-background-active: var(--bio-neutral-subtle-hover);
49
+ --color-layer: var(--bio-surface);
50
+ --color-layer-accent: var(--bio-surface-strong);
51
+ --color-background-pre: var(--bio-surface);
52
+
53
+ --color-icon-base: var(--bio-text);
54
+ --color-icon-inverted: var(--bio-text);
55
+ --color-text: var(--bio-text);
56
+ --color-text-light: var(--bio-text-subtle);
57
+ --color-text-lighter: var(--bio-text-subtlest);
58
+ --color-text-inverted: var(--color-text);
59
+ --color-text-disabled: var(--color-text-lighter);
60
+ --color-text-on-primary: var(--bio-text-on-primary);
61
+ --color-text-placeholder: var(--bio-text-subtle);
62
+ --color-focus: var(--bio-focus);
63
+
64
+ --button-border-radius: var(--bio-radius-md);
65
+ --input-border-radius: var(--bio-radius-sm);
66
+ --surface-border-radius: var(--bio-radius-lg);
67
+ --color-borders: var(--bio-border-input);
68
+ --color-borders-group: var(--bio-border-subtle);
65
69
  --color-borders-table: var(--color-borders-group);
66
- --color-borders-documentPreview: var(--cds-border-subtle, var(--color-grey-225-10-85));
67
- --color-borders-disabled: var(--cds-border-disabled, var(--color-grey-225-10-75));
68
- --color-borders-adornment: var(--cds-border-subtle, var(--cds-border-subtle-01, var(--color-grey-225-10-85)));
69
- --color-borders-readonly: var(--cds-border-subtle, var(--color-grey-225-10-75));
70
- --color-borders-inverted: var(--cds-border-inverse, var(--color-grey-225-10-90));
71
- --color-borders-pre: var(--cds-border-subtle, var(--color-grey-225-10-85));
72
-
73
- --color-warning: var(--cds-text-error, var(--color-red-360-100-45));
74
- --color-warning-light: var(--cds-text-error, var(--color-red-360-100-92));
75
- --color-accent: var(--cds-link-primary, var(--color-blue-205-100-40));
76
- --color-accent-readonly: var(--cds-border-strong, var(--cds-border-strong-01, var(--color-grey-225-10-55)));
77
- --color-datepicker-focused-day: var(--cds-button-primary, var(--color-grey-225-10-55));
78
- --color-shadow: var(--cds-shadow, var(--color-grey-225-10-85));
70
+ --color-borders-documentPreview: var(--bio-border-subtle);
71
+ --color-borders-disabled: var(--bio-border);
72
+ --color-borders-adornment: var(--bio-border-subtle);
73
+ --color-borders-readonly: var(--bio-border);
74
+ --color-borders-inverted: var(--bio-border-disabled);
75
+ --color-borders-pre: var(--bio-border-subtle);
76
+
77
+ --color-warning: var(--bio-danger);
78
+ --color-warning-light: var(--bio-danger-surface);
79
+ --color-accent: var(--bio-primary);
80
+ --color-accent-readonly: var(--bio-text-subtlest);
81
+ --color-shadow: var(--bio-shadow);
82
+
83
+ --color-datepicker-background: var(--bio-surface);
84
+ --color-datepicker-border: var(--bio-border);
85
+ --color-datepicker-header-background: var(--bio-surface-medium);
86
+ --color-datepicker-header-color: var(--bio-text-subtle);
87
+ --color-datepicker-day-color: var(--bio-text);
88
+ --color-datepicker-day-hover-background: var(--bio-surface-strong);
89
+ --color-datepicker-day-disabled-color: var(--bio-text-subtlest);
90
+ --color-datepicker-range-background: var(--bio-surface-medium);
91
+ --color-datepicker-focused-day: var(--bio-text-subtlest);
79
92
 
80
93
  --font-family: 'IBM Plex Sans', sans-serif;
81
94
 
@@ -96,7 +109,7 @@
96
109
 
97
110
  --border-definition: 1px solid var(--color-borders);
98
111
  --border-definition-adornment: 1px solid var(--color-borders-adornment);
99
- --outline-definition: 1px solid var(--cds-focus, var(--color-borders));
112
+ --outline-definition: 2px solid var(--bio-focus-ring);
100
113
  --button-warning-outline-definition: 2px solid var(--color-warning);
101
114
  --border-definition-disabled: 1px solid var(--color-borders-disabled);
102
115
  --border-definition-readonly: 1px solid var(--color-borders-readonly);
@@ -104,42 +117,6 @@
104
117
  height: 100%;
105
118
  }
106
119
 
107
- .fjs-no-theme {
108
- --cds-field: initial;
109
- --cds-field-01: initial;
110
- --cds-background: initial;
111
- --cds-background-inverse: initial;
112
- --cds-background-inverse-hover: initial;
113
- --cds-background-active: initial;
114
- --cds-layer: initial;
115
- --cds-layer-01: initial;
116
- --cds-layer-02: initial;
117
- --cds-icon-primary: initial;
118
- --cds-icon-secondary: initial;
119
- --cds-icon-inverse: initial;
120
- --cds-text-primary: initial;
121
- --cds-text-secondary: initial;
122
- --cds-text-placeholder: initial;
123
- --cds-text-inverse: initial;
124
- --cds-text-disabled: initial;
125
- --cds-border-strong: initial;
126
- --cds-border-strong-01: initial;
127
- --cds-border-disabled: initial;
128
- --cds-border-subtle: initial;
129
- --cds-border-subtle-01: initial;
130
- --cds-border-inverse: initial;
131
- --cds-text-error: initial;
132
- --cds-link-primary: initial;
133
- --cds-button-primary: initial;
134
- --cds-shadow: initial;
135
- --cds-focus: initial;
136
- --cds-interactive: initial;
137
- --cds-border-interactive: initial;
138
- --cds-highlight: initial;
139
- --cds-field-02: initial;
140
- --cds-field-hover-02: initial;
141
- --cds-toggle-off: initial;
142
- }
143
120
 
144
121
  /**
145
122
  * Layout styles
@@ -277,7 +254,7 @@
277
254
  .fjs-container .fjs-select [disabled],
278
255
  .fjs-container .fjs-select > option:read-only,
279
256
  .fjs-container .fjs-select [read-only] {
280
- color: var(--color-text-lightest);
257
+ color: var(--color-text-light);
281
258
  font-size: var(--font-size-input);
282
259
  line-height: var(--line-height-input);
283
260
  letter-spacing: var(--letter-spacing-input);
@@ -290,12 +267,16 @@
290
267
  display: flex;
291
268
  }
292
269
 
270
+ .fjs-container .fjs-inline-label > .fjs-form-field-label {
271
+ margin-top: 3px;
272
+ }
273
+
293
274
  .fjs-container .fjs-form-field-label {
294
275
  display: flex;
295
276
  align-items: center;
296
277
  white-space: nowrap;
297
278
  overflow: hidden;
298
- color: var(--color-text-light);
279
+ color: var(--color-text);
299
280
  }
300
281
 
301
282
  .fjs-container .fjs-incollapsible-label {
@@ -311,7 +292,7 @@
311
292
  }
312
293
 
313
294
  .fjs-container .fjs-form-field-description {
314
- color: var(--color-text-lighter);
295
+ color: var(--color-text-light);
315
296
  }
316
297
 
317
298
  .fjs-container .fjs-form-field-grouplike {
@@ -427,7 +408,7 @@
427
408
  border-color: var(--color-borders-adornment);
428
409
  background-color: var(--color-background-adornment);
429
410
  line-height: var(--line-height-input);
430
- color: var(--color-text-lighter);
411
+ color: var(--color-text-light);
431
412
  padding: 8px;
432
413
  width: auto !important;
433
414
  min-width: min(34px, 20%);
@@ -477,7 +458,7 @@
477
458
  padding: 8px;
478
459
  margin: 4px 0;
479
460
  border: var(--border-definition);
480
- border-radius: 3px;
461
+ border-radius: var(--input-border-radius);
481
462
  }
482
463
 
483
464
  .fjs-container .fjs-input-group .fjs-input[type='text'],
@@ -521,7 +502,8 @@
521
502
  height: var(--form-field-height);
522
503
  margin: 4px 0;
523
504
  border: var(--border-definition);
524
- border-radius: 3px;
505
+ border-radius: var(--input-border-radius);
506
+ background-color: var(--color-background);
525
507
  }
526
508
 
527
509
  .fjs-container .fjs-input-group .fjs-input[type='text'],
@@ -555,7 +537,7 @@
555
537
  .fjs-container .fjs-input-group .fjs-select-display.fjs-select-placeholder,
556
538
  .fjs-container .fjs-disabled .fjs-input-group .fjs-select-display,
557
539
  .fjs-container .fjs-readonly .fjs-input-group .fjs-select-display {
558
- color: var(--color-text-lighter);
540
+ color: var(--color-text-light);
559
541
  line-height: var(--line-height-input);
560
542
  }
561
543
 
@@ -572,15 +554,15 @@
572
554
  }
573
555
 
574
556
  .fjs-container .fjs-input-group .fjs-input-adornment.border-radius-right {
575
- border-radius: 0 3px 3px 0;
557
+ border-radius: 0 var(--input-border-radius) var(--input-border-radius) 0;
576
558
  }
577
559
 
578
560
  .fjs-container .fjs-input-group .fjs-input-adornment.border-radius-left {
579
- border-radius: 3px 0 0 3px;
561
+ border-radius: var(--input-border-radius) 0 0 var(--input-border-radius);
580
562
  }
581
563
 
582
564
  .fjs-container .fjs-input-group .fjs-input {
583
- border-radius: 3px;
565
+ border-radius: var(--input-border-radius);
584
566
  }
585
567
 
586
568
  .fjs-container .flatpickr-wrapper {
@@ -598,13 +580,16 @@
598
580
 
599
581
  .fjs-container .fjs-select-cross,
600
582
  .fjs-container .fjs-select-arrow {
583
+ display: flex;
584
+ align-items: center;
585
+ justify-content: center;
601
586
  padding: 6px 10px;
602
587
  }
603
588
 
604
589
  .fjs-container .fjs-number-arrow-container {
605
590
  display: flex;
606
591
  flex-direction: column;
607
- border-radius: 0 2px 2px 0;
592
+ border-radius: 0 var(--input-border-radius) var(--input-border-radius) 0;
608
593
  width: clamp(16px, 40%, 23px);
609
594
  overflow: clip;
610
595
  border-left: var(--border-definition-adornment);
@@ -618,6 +603,9 @@
618
603
  .fjs-container .fjs-number-arrow-container button {
619
604
  border: none;
620
605
  flex: 1;
606
+ display: flex;
607
+ align-items: center;
608
+ justify-content: center;
621
609
  color: var(--color-text);
622
610
  background-color: var(--color-background);
623
611
  font-weight: bold;
@@ -627,7 +615,7 @@
627
615
 
628
616
  .fjs-container .fjs-number-arrow-container button:hover {
629
617
  background-color: var(--color-background-inverted-hover);
630
- color: var(--cds-text-inverse, var(--color-text));
618
+ color: var(--color-text-inverted);
631
619
  }
632
620
 
633
621
  .fjs-container .fjs-form-field-number.fjs-readonly .fjs-number-arrow-container {
@@ -642,11 +630,14 @@
642
630
  .fjs-container .fjs-input[type='checkbox'],
643
631
  .fjs-container .fjs-input[type='radio'] {
644
632
  margin: 6px 10px 6px 4px;
633
+
634
+ /* native controls take their checked fill from the browser accent otherwise */
635
+ accent-color: var(--color-accent);
645
636
  }
646
637
 
647
638
  .fjs-container .fjs-button[type='submit'],
648
639
  .fjs-container .fjs-button[type='button'] {
649
- color: var(--cds-text-inverse, var(--color-white));
640
+ color: var(--color-text-on-primary);
650
641
  background-color: var(--color-accent);
651
642
  border-color: var(--color-accent);
652
643
  }
@@ -662,6 +653,7 @@
662
653
  .fjs-container .fjs-button[type='reset'] {
663
654
  min-width: 100px;
664
655
  width: auto;
656
+ border-radius: var(--button-border-radius);
665
657
  }
666
658
 
667
659
  .fjs-container .fjs-button[type='submit'],
@@ -681,6 +673,7 @@
681
673
  .fjs-container .fjs-textarea:focus,
682
674
  .fjs-container .fjs-select:focus {
683
675
  outline: var(--outline-definition);
676
+ border-color: var(--color-focus);
684
677
  }
685
678
 
686
679
  .fjs-container .fjs-input-group .fjs-input,
@@ -705,12 +698,12 @@
705
698
  .fjs-container .fjs-taglist.fjs-disabled,
706
699
  .fjs-container .fjs-disabled .fjs-input-group {
707
700
  color: var(--color-text-disabled);
708
- background-color: var(--cds-field, var(--color-background-disabled));
701
+ background-color: var(--color-background-disabled);
709
702
  border-color: var(--color-borders-disabled);
710
703
  }
711
704
 
712
705
  .fjs-container .fjs-number-arrow-container.fjs-disabled button {
713
- background-color: var(--cds-toggle-off, var(--color-background-disabled));
706
+ background-color: var(--color-background-disabled);
714
707
  }
715
708
 
716
709
  .fjs-container .fjs-readonly .fjs-input:read-only:not(:disabled),
@@ -739,19 +732,11 @@
739
732
  .fjs-container .fjs-button[type='submit']:disabled,
740
733
  .fjs-container .fjs-button[type='button']:disabled,
741
734
  .fjs-container .fjs-button[type='reset']:disabled {
742
- color: var(--cds-text-on-color-disabled, var(--color-text-light));
735
+ color: var(--color-text-disabled);
743
736
  background-color: var(--color-background-disabled);
744
737
  border-color: var(--color-borders-disabled);
745
738
  }
746
739
 
747
- .fjs-container .fjs-button[type='submit']:read-only,
748
- .fjs-container .fjs-button[type='button']:read-only,
749
- .fjs-container .fjs-button[type='reset']:read-only {
750
- color: var(--text-light);
751
- background-color: var(--color-background-readonly);
752
- border-color: var(--color-borders-readonly);
753
- }
754
-
755
740
  .fjs-container .fjs-disabled .fjs-input-group .fjs-input-adornment,
756
741
  .fjs-container .fjs-disabled .fjs-input-group .fjs-number-arrow-container,
757
742
  .fjs-container .fjs-disabled .fjs-input-group .fjs-number-arrow-separator {
@@ -776,23 +761,23 @@
776
761
  .fjs-container .fjs-form-field.fjs-has-errors .fjs-input-group,
777
762
  .fjs-container .fjs-form-field.fjs-has-errors .fjs-input-group .fjs-input {
778
763
  border-color: var(--color-warning);
779
- outline-color: var(--color-warning);
764
+ outline-color: var(--bio-focus-ring-danger);
780
765
  }
781
766
 
782
767
  .fjs-container .fjs-form-field.fjs-has-errors .fjs-number-arrow-container {
783
- border-color: var(--color-red-360-100-92);
768
+ border-color: var(--bio-danger-surface);
784
769
  }
785
770
 
786
771
  .fjs-container .fjs-form-field.fjs-has-errors .fjs-number-arrow-separator {
787
- background-color: var(--color-red-360-100-92);
772
+ background-color: var(--bio-danger-surface);
788
773
  }
789
774
 
790
775
  .fjs-container .fjs-form-field.fjs-has-errors .fjs-number-arrow-container button {
791
- background-color: var(--color-red-360-100-97);
776
+ background-color: var(--bio-danger-surface-subtle);
792
777
  }
793
778
 
794
779
  .fjs-container .fjs-form-field.fjs-has-errors .fjs-number-arrow-container button:hover {
795
- background-color: var(--color-red-360-100-95);
780
+ background-color: var(--bio-danger-surface);
796
781
  }
797
782
 
798
783
  .fjs-container .fjs-form-field.fjs-has-errors .fjs-input-adornment {
@@ -860,6 +845,10 @@
860
845
  border: 1px solid var(--color-borders-pre);
861
846
  background: var(--color-background-pre);
862
847
  padding: 4px;
848
+
849
+ /* `pre` does not wrap, so a long line escapes the form instead of reflowing */
850
+ white-space: pre-wrap;
851
+ overflow-wrap: anywhere;
863
852
  }
864
853
 
865
854
  .fjs-container .fjs-taglist-anchor,
@@ -887,7 +876,7 @@
887
876
  flex-wrap: wrap;
888
877
  gap: 5px;
889
878
  border: var(--color-borders) solid 1px;
890
- border-radius: 3px;
879
+ border-radius: var(--input-border-radius);
891
880
  margin: 4px 0;
892
881
  padding: 5px;
893
882
  background-color: var(--color-background);
@@ -919,7 +908,7 @@
919
908
  user-select: none;
920
909
  color: var(--color-text-inverted);
921
910
  background-color: var(--color-background-inverted);
922
- border-radius: 2px;
911
+ border-radius: var(--button-border-radius);
923
912
  }
924
913
 
925
914
  .fjs-container .fjs-taglist.fjs-disabled .fjs-taglist-tag,
@@ -946,15 +935,15 @@
946
935
  overflow: clip;
947
936
  width: 24px;
948
937
  height: 24px;
949
- text-align: center;
950
- line-height: 28px;
951
- background-color: var(--cds-background-inverse, var(--color-grey-225-10-80));
938
+ display: flex;
939
+ align-items: center;
940
+ justify-content: center;
941
+ background-color: var(--bio-neutral-subtle);
952
942
  border: none;
953
- padding: 1px 0;
943
+ padding: 0;
954
944
  }
955
945
 
956
946
  .fjs-container .fjs-taglist .fjs-taglist-tag .fjs-taglist-tag-remove > svg {
957
- margin-bottom: 4px;
958
947
  opacity: 0.6;
959
948
  color: var(--color-icon-inverted);
960
949
  }
@@ -988,7 +977,7 @@
988
977
  user-select: none;
989
978
  overflow-y: auto;
990
979
  width: 100%;
991
- border-radius: 3px;
980
+ border-radius: var(--surface-border-radius);
992
981
  margin-top: 3px;
993
982
  box-shadow: 0px 0px 5px var(--color-shadow);
994
983
  background-color: var(--color-layer);
@@ -1011,7 +1000,7 @@
1011
1000
 
1012
1001
  .fjs-container .fjs-dropdownlist .fjs-dropdownlist-empty {
1013
1002
  padding: 6px 8px;
1014
- color: var(--color-text-lightest);
1003
+ color: var(--color-text-light);
1015
1004
  }
1016
1005
 
1017
1006
  .fjs-container .fjs-image-container {
@@ -1072,7 +1061,7 @@
1072
1061
  flex-direction: column;
1073
1062
  overflow-x: hidden;
1074
1063
  border: 1px solid var(--color-borders-group);
1075
- border-radius: 3px;
1064
+ border-radius: var(--surface-border-radius);
1076
1065
  }
1077
1066
 
1078
1067
  .fjs-container .fjs-table-middle-container.fjs-table-empty {
@@ -1089,7 +1078,8 @@
1089
1078
 
1090
1079
  .fjs-container .fjs-table {
1091
1080
  overflow-y: auto;
1092
- border-collapse: collapse;
1081
+ border-collapse: separate;
1082
+ border-spacing: 0;
1093
1083
  }
1094
1084
 
1095
1085
  .fjs-container .fjs-table-head {
@@ -1101,6 +1091,15 @@
1101
1091
  cursor: pointer;
1102
1092
  }
1103
1093
 
1094
+ /* match the container radius, minus its border, so the focus outline is not clipped */
1095
+ .fjs-container .fjs-table-th:first-child {
1096
+ border-top-left-radius: calc(var(--surface-border-radius) - 1px);
1097
+ }
1098
+
1099
+ .fjs-container .fjs-table-th:last-child {
1100
+ border-top-right-radius: calc(var(--surface-border-radius) - 1px);
1101
+ }
1102
+
1104
1103
  .fjs-container .fjs-table-th-label {
1105
1104
  user-select: none;
1106
1105
  display: flex;
@@ -1111,7 +1110,7 @@
1111
1110
 
1112
1111
  .fjs-container .fjs-table-th:focus {
1113
1112
  outline: var(--outline-definition);
1114
- outline-offset: -1px;
1113
+ outline-offset: -2px;
1115
1114
  }
1116
1115
 
1117
1116
  .fjs-container .fjs-table-th,
@@ -1122,7 +1121,7 @@
1122
1121
  vertical-align: center;
1123
1122
  }
1124
1123
 
1125
- .fjs-container .fjs-table-body .fjs-table-tr:not(:last-child) {
1124
+ .fjs-container .fjs-table-body .fjs-table-tr:not(:last-child) .fjs-table-td {
1126
1125
  border-bottom: 1px solid var(--color-borders-group);
1127
1126
  }
1128
1127
 
@@ -1150,9 +1149,13 @@
1150
1149
  margin-left: 16px;
1151
1150
  }
1152
1151
 
1152
+ .fjs-container .fjs-table-nav-button:last-of-type {
1153
+ border-bottom-right-radius: calc(var(--surface-border-radius) - 1px);
1154
+ }
1155
+
1153
1156
  .fjs-container .fjs-table-nav-button:focus {
1154
1157
  outline: var(--outline-definition);
1155
- outline-offset: -1px;
1158
+ outline-offset: -2px;
1156
1159
  }
1157
1160
 
1158
1161
  .fjs-container .fjs-table-nav-button svg {
@@ -1178,7 +1181,7 @@
1178
1181
  align-items: center;
1179
1182
  justify-content: center;
1180
1183
  border: 1px solid var(--color-borders-documentPreview);
1181
- border-radius: 3px;
1184
+ border-radius: var(--surface-border-radius);
1182
1185
 
1183
1186
  .fjs-form-field-error {
1184
1187
  align-self: flex-start;
@@ -1216,7 +1219,7 @@
1216
1219
  display: inline-flex;
1217
1220
  align-items: center;
1218
1221
  justify-content: center;
1219
- border-radius: 3px;
1222
+ border-radius: var(--button-border-radius);
1220
1223
  border: 1px solid var(--color-borders-documentPreview);
1221
1224
  background: var(--color-layer);
1222
1225
  padding: 0;
@@ -1269,7 +1272,7 @@
1269
1272
  display: flex;
1270
1273
  width: 24px;
1271
1274
  height: 24px;
1272
- border-radius: 2px;
1275
+ border-radius: var(--button-border-radius);
1273
1276
  align-items: center;
1274
1277
  justify-content: center;
1275
1278
  }
@@ -1358,11 +1361,16 @@
1358
1361
  }
1359
1362
 
1360
1363
  .fjs-container .flatpickr-days,
1361
- .flatpickr-weekdays {
1364
+ .fjs-container .flatpickr-weekdays {
1362
1365
  padding: 10px;
1363
1366
  width: 100%;
1364
1367
  }
1365
1368
 
1369
+ .fjs-container .flatpickr-calendar.open,
1370
+ .fjs-container .dayContainer {
1371
+ height: auto;
1372
+ }
1373
+
1366
1374
  .fjs-container .flatpickr-calendar.hasTime.noCalendar {
1367
1375
  width: auto;
1368
1376
  max-width: 250px;
@@ -1372,6 +1380,124 @@
1372
1380
  width: 326px;
1373
1381
  }
1374
1382
 
1383
+ /* the vendored flatpickr theme hard-codes its palette, so the picker is themed here instead */
1384
+ .fjs-container .flatpickr-calendar,
1385
+ .fjs-container .flatpickr-innerContainer,
1386
+ .fjs-container .flatpickr-time {
1387
+ background: var(--color-datepicker-background);
1388
+ }
1389
+
1390
+ .fjs-container .flatpickr-calendar {
1391
+ box-shadow: 0 3px 13px var(--color-shadow);
1392
+ }
1393
+
1394
+ .fjs-container .flatpickr-days,
1395
+ .fjs-container .flatpickr-weekwrapper .flatpickr-weeks,
1396
+ .fjs-container .flatpickr-innerContainer,
1397
+ .fjs-container .flatpickr-calendar.hasTime .flatpickr-time,
1398
+ .fjs-container .numInputWrapper span {
1399
+ border-color: var(--color-datepicker-border);
1400
+ }
1401
+
1402
+ .fjs-container .flatpickr-calendar:not(.hasTime) .flatpickr-innerContainer {
1403
+ border-bottom: 0;
1404
+ }
1405
+
1406
+ .fjs-container .flatpickr-days {
1407
+ border-left: 0;
1408
+ border-right: 0;
1409
+ }
1410
+
1411
+ .fjs-container .flatpickr-calendar.arrowTop::before,
1412
+ .fjs-container .flatpickr-calendar.arrowTop::after {
1413
+ border-bottom-color: var(--color-datepicker-header-background);
1414
+ }
1415
+
1416
+ .fjs-container .flatpickr-calendar.arrowBottom::before,
1417
+ .fjs-container .flatpickr-calendar.arrowBottom::after {
1418
+ border-top-color: var(--color-datepicker-header-background);
1419
+ }
1420
+
1421
+ .fjs-container .flatpickr-months .flatpickr-month,
1422
+ .fjs-container .flatpickr-weekdays,
1423
+ .fjs-container span.flatpickr-weekday,
1424
+ .fjs-container .flatpickr-current-month .flatpickr-monthDropdown-months {
1425
+ background: var(--color-datepicker-header-background);
1426
+ color: var(--color-datepicker-header-color);
1427
+ fill: var(--color-datepicker-header-color);
1428
+ }
1429
+
1430
+ .fjs-container .flatpickr-months .flatpickr-prev-month,
1431
+ .fjs-container .flatpickr-months .flatpickr-next-month {
1432
+ color: var(--color-datepicker-header-color);
1433
+ fill: var(--color-datepicker-header-color);
1434
+ }
1435
+
1436
+ .fjs-container .flatpickr-months .flatpickr-prev-month:hover svg,
1437
+ .fjs-container .flatpickr-months .flatpickr-next-month:hover svg {
1438
+ fill: var(--color-datepicker-day-color);
1439
+ }
1440
+
1441
+ .fjs-container .flatpickr-day {
1442
+ color: var(--color-datepicker-day-color);
1443
+ }
1444
+
1445
+ .fjs-container .flatpickr-day:hover,
1446
+ .fjs-container .flatpickr-day:focus {
1447
+ background: var(--color-datepicker-day-hover-background);
1448
+ border-color: var(--color-datepicker-day-hover-background);
1449
+ }
1450
+
1451
+ .fjs-container .flatpickr-day.prevMonthDay,
1452
+ .fjs-container .flatpickr-day.nextMonthDay,
1453
+ .fjs-container .flatpickr-day.flatpickr-disabled {
1454
+ color: var(--color-datepicker-day-disabled-color);
1455
+ }
1456
+
1457
+ .fjs-container .flatpickr-day.inRange {
1458
+ background: var(--color-datepicker-range-background);
1459
+ border-color: var(--color-datepicker-range-background);
1460
+ box-shadow:
1461
+ -5px 0 0 var(--color-datepicker-range-background),
1462
+ 5px 0 0 var(--color-datepicker-range-background);
1463
+ }
1464
+
1465
+ .fjs-container .flatpickr-time input,
1466
+ .fjs-container .flatpickr-time .flatpickr-time-separator,
1467
+ .fjs-container .flatpickr-time .flatpickr-am-pm {
1468
+ color: var(--color-datepicker-day-color);
1469
+ }
1470
+
1471
+ .fjs-container .flatpickr-time input:hover,
1472
+ .fjs-container .flatpickr-time .flatpickr-am-pm:hover {
1473
+ background: var(--color-datepicker-day-hover-background);
1474
+ }
1475
+
1476
+ .fjs-container .numInputWrapper:hover,
1477
+ .fjs-container .numInputWrapper span:hover {
1478
+ background: var(--color-datepicker-day-hover-background);
1479
+ }
1480
+
1481
+ .fjs-container .numInputWrapper span svg path {
1482
+ fill: var(--color-datepicker-header-color);
1483
+ }
1484
+
1485
+ .fjs-container .flatpickr-current-month .numInputWrapper span.arrowUp::after {
1486
+ border-bottom-color: var(--color-datepicker-header-color);
1487
+ }
1488
+
1489
+ .fjs-container .flatpickr-current-month .numInputWrapper span.arrowDown::after {
1490
+ border-top-color: var(--color-datepicker-header-color);
1491
+ }
1492
+
1493
+ .fjs-container .flatpickr-time .numInputWrapper span.arrowUp::after {
1494
+ border-bottom-color: var(--color-datepicker-day-color);
1495
+ }
1496
+
1497
+ .fjs-container .flatpickr-time .numInputWrapper span.arrowDown::after {
1498
+ border-top-color: var(--color-datepicker-day-color);
1499
+ }
1500
+
1375
1501
  .fjs-hidden {
1376
1502
  display: none;
1377
1503
  }