@ilo-org/styles 0.0.1

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 (55) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +74 -0
  3. package/build/css/components/index.css +5924 -0
  4. package/build/css/components/index.css.map +1 -0
  5. package/build/css/index.css +6183 -0
  6. package/build/css/index.css.map +1 -0
  7. package/package.json +35 -0
  8. package/scss/_animations.scss +29 -0
  9. package/scss/_config.scss +6 -0
  10. package/scss/_functions.scss +126 -0
  11. package/scss/_mixins.scss +331 -0
  12. package/scss/_reset.scss +166 -0
  13. package/scss/_tokens.scss +5 -0
  14. package/scss/_typography.scss +72 -0
  15. package/scss/components/_accordion.scss +102 -0
  16. package/scss/components/_breadcrumb.scss +258 -0
  17. package/scss/components/_button.scss +272 -0
  18. package/scss/components/_callout.scss +151 -0
  19. package/scss/components/_card.scss +667 -0
  20. package/scss/components/_cardgroup.scss +45 -0
  21. package/scss/components/_checkbox.scss +124 -0
  22. package/scss/components/_contextmenu.scss +75 -0
  23. package/scss/components/_credit.scss +82 -0
  24. package/scss/components/_datepicker.scss +19 -0
  25. package/scss/components/_dropdown.scss +115 -0
  26. package/scss/components/_empty.scss +33 -0
  27. package/scss/components/_fieldset.scss +74 -0
  28. package/scss/components/_file-upload.scss +130 -0
  29. package/scss/components/_footer.scss +329 -0
  30. package/scss/components/_formgroup.scss +20 -0
  31. package/scss/components/_heading.scss +74 -0
  32. package/scss/components/_hero.scss +445 -0
  33. package/scss/components/_image.scss +42 -0
  34. package/scss/components/_input.scss +71 -0
  35. package/scss/components/_link.scss +6 -0
  36. package/scss/components/_linklist.scss +148 -0
  37. package/scss/components/_list.scss +79 -0
  38. package/scss/components/_loading.scss +93 -0
  39. package/scss/components/_modal.scss +84 -0
  40. package/scss/components/_notification.scss +162 -0
  41. package/scss/components/_pagination.scss +238 -0
  42. package/scss/components/_profile.scss +138 -0
  43. package/scss/components/_radio.scss +121 -0
  44. package/scss/components/_readmore.scss +53 -0
  45. package/scss/components/_richtext.scss +390 -0
  46. package/scss/components/_searchfield.scss +66 -0
  47. package/scss/components/_table.scss +177 -0
  48. package/scss/components/_tableofcontents.scss +98 -0
  49. package/scss/components/_tabs.scss +194 -0
  50. package/scss/components/_tag.scss +103 -0
  51. package/scss/components/_textarea.scss +89 -0
  52. package/scss/components/_tooltip.scss +198 -0
  53. package/scss/components/_video.scss +674 -0
  54. package/scss/components/index.scss +39 -0
  55. package/scss/index.scss +11 -0
@@ -0,0 +1,124 @@
1
+ @use "../tokens" as *;
2
+ @use "../functions" as *;
3
+ @import "../mixins";
4
+
5
+ .ilo--checkbox {
6
+ -webkit-appearance: none;
7
+ -moz-appearance: none;
8
+ border: none;
9
+ display: grid;
10
+ height: px-to-rem(24px);
11
+ margin: 0;
12
+ order: 1;
13
+ position: relative;
14
+ place-content: center;
15
+ width: px-to-rem(24px);
16
+ transform: none;
17
+
18
+ &:before {
19
+ content: "";
20
+ background-color: $color-base-neutrals-light;
21
+ border: px-to-rem(4px) solid $color-base-neutrals-light;
22
+ height: px-to-rem(18px);
23
+ left: px-to-rem(3px);
24
+ position: absolute;
25
+ top: px-to-rem(3px);
26
+ width: px-to-rem(18px);
27
+ z-index: 1;
28
+ }
29
+
30
+ &:after {
31
+ content: "";
32
+ background-color: $color-base-neutrals-light;
33
+ height: px-to-rem(24px);
34
+ left: 0;
35
+ position: absolute;
36
+ top: 0;
37
+ width: px-to-rem(24px);
38
+ z-index: 0;
39
+ }
40
+
41
+ &:checked {
42
+ &:before {
43
+ background-color: $color-base-blue-dark;
44
+ background-repeat: no-repeat;
45
+ background-size: cover;
46
+ background-position: center center;
47
+ border-color: $color-base-blue-dark;
48
+ @include dataurlicon("checkmark", $color-base-neutrals-lighter);
49
+ }
50
+
51
+ &:after {
52
+ background-color: $color-base-blue-dark;
53
+ }
54
+ }
55
+
56
+ &:hover {
57
+ cursor: pointer;
58
+
59
+ &:after {
60
+ background-color: $color-base-yellow;
61
+ }
62
+
63
+ &:checked {
64
+ &:before {
65
+ border-color: $color-base-blue-dark;
66
+ }
67
+ }
68
+ }
69
+
70
+ &:focus {
71
+ &:after {
72
+ background-color: $color-base-yellow;
73
+ }
74
+
75
+ &:checked {
76
+ &:before {
77
+ border-color: $color-base-blue-dark;
78
+ }
79
+ }
80
+
81
+ outline: none;
82
+ }
83
+
84
+ &:disabled {
85
+ opacity: 45%;
86
+ pointer-events: none;
87
+ }
88
+
89
+ &:invalid,
90
+ &.error,
91
+ .error & {
92
+ &:after {
93
+ background-color: $color-base-red-medium;
94
+ }
95
+
96
+ &:checked {
97
+ &:before {
98
+ border-color: $color-base-blue-dark;
99
+ }
100
+ }
101
+ }
102
+ }
103
+
104
+ .ilo--fieldset--input--checkbox {
105
+ align-items: center;
106
+ clear: both;
107
+ display: flex;
108
+ flex-wrap: wrap;
109
+ justify-content: flex-start;
110
+ margin-bottom: px-to-rem(22px);
111
+
112
+ .ilo--fieldset--label {
113
+ font-weight: 400;
114
+ margin-left: px-to-rem($spacing-padding-1);
115
+ margin-top: 2px;
116
+ order: 2;
117
+ }
118
+
119
+ .ilo--fieldset--error,
120
+ .ilo--fieldset--helper {
121
+ order: 3;
122
+ width: 100%;
123
+ }
124
+ }
@@ -0,0 +1,75 @@
1
+ @use "../tokens" as *;
2
+ @use "../functions" as *;
3
+ @import "../mixins";
4
+
5
+ .ilo--context-menu {
6
+ border-radius: px-to-rem(2px);
7
+ background-color: $color-ux-background-highlight;
8
+ display: inline-block;
9
+ position: relative;
10
+ width: auto;
11
+
12
+ &:before {
13
+ background-position: top center;
14
+ background-repeat: no-repeat;
15
+ background-size: contain;
16
+ @include dataurlicon("halfsquaretriangle", $color-ux-background-highlight);
17
+ content: "";
18
+ height: px-to-rem($spacing-padding-1-5);
19
+ position: absolute;
20
+ left: 50%;
21
+ top: -#{px-to-rem(6px)};
22
+ transform: translateX(-50%) rotate(135deg);
23
+ width: px-to-rem($spacing-padding-1-5);
24
+ }
25
+
26
+ &--item {
27
+ padding: 0 px-to-rem($spacing-padding-1);
28
+
29
+ &:last-of-type a {
30
+ border-bottom: none;
31
+ }
32
+
33
+ &:hover,
34
+ &:focus {
35
+ background-color: $color-base-blue-light;
36
+ }
37
+
38
+ &.endsection {
39
+ border-bottom: px-to-rem($borders-base) solid $color-base-neutrals-white;
40
+
41
+ .ilo--context-menu--link {
42
+ border-bottom: none;
43
+ }
44
+ }
45
+ }
46
+
47
+ &--link {
48
+ border-bottom: px-to-rem($borders-base) solid $color-base-neutrals-white;
49
+ color: map-get($color, "link", "text", "default");
50
+ display: inline-block;
51
+ font-family: $fonts-copy;
52
+ font-weight: map-get($type, "weights", "section");
53
+ padding: px-to-rem($spacing-padding-2) 0;
54
+ text-decoration: none;
55
+ width: 100%;
56
+ @include font-styles("body-xxs");
57
+
58
+ &:visited {
59
+ color: map-get($color, "link", "text", "default");
60
+ }
61
+
62
+ &:active {
63
+ color: map-get($color, "link", "text", "active");
64
+ outline: none;
65
+ }
66
+
67
+ &:hover,
68
+ &:focus {
69
+ color: map-get($color, "link", "text", "hover");
70
+ outline: none;
71
+ text-decoration: underline;
72
+ text-decoration-thickness: px-to-rem($borders-base);
73
+ }
74
+ }
75
+ }
@@ -0,0 +1,82 @@
1
+ @use "../tokens" as *;
2
+ @import "../functions";
3
+ @import "../mixins";
4
+ @import "../animations";
5
+
6
+ .ilo--credit {
7
+ color: #ffffff;
8
+ display: inline-block;
9
+ height: px-to-rem($spacing-ux-credit-height);
10
+ padding: 0;
11
+ position: relative;
12
+ @include font-styles("image-credit");
13
+
14
+ &--label {
15
+ background-color: $color-ux-credit-background;
16
+ @include boxpadding("credit", "large");
17
+ }
18
+
19
+ &:after {
20
+ background-position: top right;
21
+ background-repeat: no-repeat;
22
+ background-size: contain;
23
+ @include dataurlicon("halfsquaretriangle", $color-ux-credit-background);
24
+ content: "";
25
+ height: px-to-rem($spacing-ux-credit-height);
26
+ position: absolute;
27
+ left: 100%;
28
+ top: -#{px-to-rem(map-get($spacing, "padding-0-5"))};
29
+ width: px-to-rem($spacing-ux-credit-height);
30
+ }
31
+
32
+ @include breakpoint("large", true) {
33
+ width: 75%;
34
+
35
+ &--label {
36
+ bottom: calc(100% + 1px);
37
+ display: none;
38
+ left: 0;
39
+ margin-bottom: px-to-rem(map-get($spacing, "padding-1-5"));
40
+ position: absolute;
41
+
42
+ &:after {
43
+ background-position: top left;
44
+ background-repeat: no-repeat;
45
+ background-size: contain;
46
+ @include dataurlicon("equilateraltriangle", $color-base-neutrals-dark);
47
+ content: "";
48
+ height: px-to-rem(map-get($spacing, "padding-1-5"));
49
+ position: absolute;
50
+ left: calc(#{px-to-rem(map-get($spacing, "padding-1-5"))} / 2);
51
+ bottom: -#{px-to-rem(map-get($spacing, "padding-1-5"))};
52
+ width: px-to-rem(map-get($spacing, "padding-1-5"));
53
+ }
54
+ }
55
+
56
+ &:before {
57
+ background-color: $color-base-neutrals-dark;
58
+ background-position: calc(100% - 4px) center;
59
+ background-repeat: no-repeat;
60
+ background-size: px-to-rem(map-get($spacing, "padding-1-5"))
61
+ px-to-rem(map-get($spacing, "padding-1-5"));
62
+ @include dataurlicon("copyright", $color-base-neutrals-white);
63
+ content: "";
64
+ height: px-to-rem(map-get($spacing, "padding-3"));
65
+ position: absolute;
66
+ left: 0;
67
+ top: 0;
68
+ width: px-to-rem(29px);
69
+ }
70
+
71
+ &:after {
72
+ left: px-to-rem(29px);
73
+ top: 0;
74
+ }
75
+
76
+ &:hover {
77
+ .ilo--credit--label {
78
+ display: inline-block;
79
+ }
80
+ }
81
+ }
82
+ }
@@ -0,0 +1,19 @@
1
+ @use "../tokens" as *;
2
+ @use "../functions" as *;
3
+ @import "../mixins";
4
+
5
+ .ilo--datepicker {
6
+ &--range {
7
+ display: flex;
8
+
9
+ & > .ilo--fieldset {
10
+ width: 50%;
11
+
12
+ &:nth-of-type(1) {
13
+ .ilo--input {
14
+ border-right: none;
15
+ }
16
+ }
17
+ }
18
+ }
19
+ }
@@ -0,0 +1,115 @@
1
+ @use "../tokens" as *;
2
+ @use "../functions" as *;
3
+ @import "../mixins";
4
+
5
+ .ilo--dropdown {
6
+ -webkit-appearance: none;
7
+ -moz-appearance: none;
8
+ appearance: none;
9
+ background-color: map-get(
10
+ $color,
11
+ "formelements",
12
+ "input",
13
+ "default",
14
+ "background"
15
+ );
16
+ @include bordervalues("input", "formelements");
17
+ border-radius: 0;
18
+ box-sizing: content-box;
19
+ font-family: $fonts-display;
20
+ font-weight: map-get($type, "weights", "section");
21
+ @include font-styles("label-medium");
22
+ height: px-to-rem(
23
+ map-get($spacing, "formelements", "input", "default", "height")
24
+ );
25
+ @include spacingvalues("margin", "input", "formelements");
26
+ outline: none;
27
+ overflow: hidden;
28
+ padding-left: 16px;
29
+ padding-right: 56px;
30
+ padding-bottom: 0;
31
+ padding-top: 0;
32
+ text-overflow: ellipsis;
33
+ white-space: nowrap;
34
+ width: calc(100% - 78px);
35
+
36
+ background-position: calc(100% - 14px) center;
37
+ background-repeat: no-repeat;
38
+ background-size: 24px 24px, 72px 100%;
39
+ background-image: url("#{colortodataurlicon("arrow", $color-ux-labels-actionable)}"),
40
+ linear-gradient(
41
+ to right,
42
+ transparent 0%,
43
+ transparent calc(50% - 0.81px),
44
+ $color-formelements-input-default-border-left calc(50% - 0.8px),
45
+ $color-formelements-input-default-border-left calc(50% + 0.8px),
46
+ transparent calc(50% + 0.81px),
47
+ transparent 100%
48
+ );
49
+
50
+ option {
51
+ width: calc(100% - 48px);
52
+ text-overflow: ellipsis;
53
+ overflow: hidden;
54
+ }
55
+
56
+ &:hover {
57
+ background-color: map-get(
58
+ $color,
59
+ "formelements",
60
+ "input",
61
+ "hover",
62
+ "background"
63
+ );
64
+ @include bordervalues("input", "formelements", "hover");
65
+ background-image: url("#{colortodataurlicon("arrow", $color-ux-labels-hover)}"),
66
+ linear-gradient(
67
+ to right,
68
+ transparent 0%,
69
+ transparent calc(50% - 0.81px),
70
+ $color-formelements-input-default-border-left calc(50% - 0.8px),
71
+ $color-formelements-input-default-border-left calc(50% + 0.8px),
72
+ transparent calc(50% + 0.81px),
73
+ transparent 100%
74
+ );
75
+ }
76
+
77
+ &:focus {
78
+ background-color: map-get(
79
+ $color,
80
+ "formelements",
81
+ "input",
82
+ "focus",
83
+ "background"
84
+ );
85
+ @include bordervalues("input", "formelements", "focus");
86
+ background-image: url("#{colortodataurlicon("arrow", $color-ux-labels-hover)}"),
87
+ linear-gradient(
88
+ to right,
89
+ transparent 0%,
90
+ transparent calc(50% - 0.81px),
91
+ $color-formelements-input-default-border-left calc(50% - 0.8px),
92
+ $color-formelements-input-default-border-left calc(50% + 0.8px),
93
+ transparent calc(50% + 0.81px),
94
+ transparent 100%
95
+ );
96
+ }
97
+
98
+ &:disabled {
99
+ opacity: 45%;
100
+ pointer-events: none;
101
+ }
102
+
103
+ &:invalid,
104
+ &.error,
105
+ .error & {
106
+ background-color: map-get(
107
+ $color,
108
+ "formelements",
109
+ "input",
110
+ "error",
111
+ "background"
112
+ );
113
+ @include bordervalues("input", "formelements", "error");
114
+ }
115
+ }
@@ -0,0 +1,33 @@
1
+ @use "../tokens" as *;
2
+ @import "../mixins";
3
+ @import "../animations";
4
+
5
+ .ilo--empty {
6
+ background: linear-gradient(108.07deg, #b8c4cc 0.17%, #ebf5fd 75.36%);
7
+ border-radius: 4px;
8
+ height: 100%;
9
+ position: relative;
10
+ width: 100%;
11
+
12
+ &:before {
13
+ animation-duration: 2s;
14
+ animation-name: emptygradient;
15
+ animation-iteration-count: infinite;
16
+ animation-direction: alternate;
17
+ background: linear-gradient(108.07deg, #b8c4cc 0.17%, #ebf5fd 75.36%);
18
+ border-radius: 4px;
19
+ content: "";
20
+ height: 100%;
21
+ left: 0;
22
+ position: absolute;
23
+ top: 0;
24
+ transform: rotate(-180deg);
25
+ width: 100%;
26
+ z-index: 1;
27
+ }
28
+
29
+ &.storybook {
30
+ height: 400px;
31
+ width: 600px;
32
+ }
33
+ }
@@ -0,0 +1,74 @@
1
+ @use "../tokens" as *;
2
+ @use "../functions" as *;
3
+ @import "../mixins";
4
+
5
+ .ilo--fieldset {
6
+ -webkit-appearance: none;
7
+ -moz-appearance: none;
8
+ appearance: none;
9
+ @include textmargin("margin-bottom", 34px, "label-medium", "display", 0, 0);
10
+
11
+ &--label {
12
+ display: inline-flex;
13
+ float: left;
14
+ font-family: $fonts-display;
15
+ font-weight: map-get($type, "weights", "label");
16
+ @include font-styles("label-medium");
17
+ @include textmargin("margin-bottom", 14px, "label-medium", "display", 0, 0);
18
+ }
19
+
20
+ &--helper {
21
+ font-family: $fonts-copy;
22
+ @include font-styles("body-xxs");
23
+ @include textmargin(
24
+ "margin-top",
25
+ map-get($spacing, "padding-1-5"),
26
+ "body-xxs",
27
+ "copy",
28
+ 0,
29
+ 0
30
+ );
31
+ }
32
+
33
+ &--error {
34
+ color: $color-base-red-dark;
35
+ font-family: $fonts-copy;
36
+ @include font-styles("body-xxs");
37
+ @include textmargin(
38
+ "margin-top",
39
+ map-get($spacing, "padding-1-5"),
40
+ "body-xxs",
41
+ "copy",
42
+ 0,
43
+ 0
44
+ );
45
+ }
46
+
47
+ &.ilo--choice-group {
48
+ .ilo--fieldset--legend {
49
+ display: inline-flex;
50
+ float: left;
51
+ font-family: $fonts-display;
52
+ font-weight: map-get($type, "weights", "label");
53
+ @include font-styles("label-medium");
54
+ margin: 0;
55
+
56
+ & + .ilo--fieldset--helper,
57
+ & + .ilo--fieldset--error {
58
+ clear: both;
59
+ display: block;
60
+ }
61
+ }
62
+
63
+ div[class^="ilo--fieldset--input"]:first-of-type,
64
+ div[class*=" ilo--fieldset--input"]:first-of-type {
65
+ clear: both;
66
+ padding-top: px-to-rem($spacing-padding-3);
67
+ }
68
+ }
69
+
70
+ .ilo--tooltip--wrapper {
71
+ margin-left: 8px;
72
+ margin-top: 3px;
73
+ }
74
+ }
@@ -0,0 +1,130 @@
1
+ @use "../tokens" as *;
2
+ @use "../functions" as *;
3
+ @import "../mixins";
4
+
5
+ .ilo--file-upload {
6
+ color: transparent;
7
+ order: 3;
8
+
9
+ &::-webkit-file-upload-button {
10
+ visibility: hidden;
11
+ }
12
+
13
+ &:before {
14
+ background-color: map-get($color, "ux", "background", "default");
15
+ border: map-get($borders, "small")
16
+ map-get($color, "ux", "borders", "default") solid;
17
+ color: map-get($color, "ux", "labels", "actionable");
18
+ content: attr(data-label);
19
+ display: inline-block;
20
+ font-family: $fonts-display;
21
+ font-weight: map-get($type, "weights", "label");
22
+ padding: 0;
23
+ @include borderradius("button");
24
+ @include boxpadding("button", "medium");
25
+ @include font-styles("label-medium");
26
+ }
27
+
28
+ &:hover {
29
+ &:before {
30
+ background-color: map-get($color, "ux", "background", "hover");
31
+ border: map-get($borders, "small")
32
+ map-get($color, "ux", "borders", "hover") solid;
33
+ cursor: pointer;
34
+ color: map-get($color, "ux", "labels", "hover");
35
+ outline: none;
36
+ }
37
+ }
38
+
39
+ &:focus {
40
+ &:before {
41
+ background-color: map-get($color, "ux", "background", "focus");
42
+ border: map-get($borders, "small")
43
+ map-get($color, "ux", "borders", "hover") solid;
44
+ color: map-get($color, "ux", "labels", "focus");
45
+ outline: none;
46
+ }
47
+ }
48
+
49
+ &:focus-visible {
50
+ outline: none;
51
+ }
52
+
53
+ &:active {
54
+ &:before {
55
+ background-color: map-get($color, "ux", "background", "active");
56
+ border: map-get($borders, "base")
57
+ map-get($color, "ux", "borders", "active") solid;
58
+ color: map-get($color, "ux", "labels", "active");
59
+ }
60
+ }
61
+
62
+ &:disabled {
63
+ opacity: 45%;
64
+ pointer-events: none;
65
+ }
66
+
67
+ &:invalid,
68
+ &.error,
69
+ .error & {
70
+ &:before {
71
+ background-color: map-get(
72
+ $color,
73
+ "formelements",
74
+ "input",
75
+ "error",
76
+ "background"
77
+ );
78
+ @include bordervalues("input", "formelements", "error");
79
+ }
80
+ }
81
+
82
+ &--list {
83
+ order: 4;
84
+ }
85
+
86
+ &--list-item {
87
+ background-color: $color-formelements-uploadedfile-default-background;
88
+ @include bordervalues("uploadedfile", "formelements", "default");
89
+ box-sizing: border-box;
90
+ font-family: $fonts-display;
91
+ font-weight: map-get($type, "weights", "section");
92
+ @include font-styles("label-medium");
93
+ height: px-to-rem(
94
+ map-get($spacing, "formelements", "uploadedfile", "default", "height")
95
+ );
96
+ @include spacingvalues("margin", "uploadedfile", "formelements");
97
+ outline: none;
98
+ @include spacingvalues("padding", "uploadedfile", "formelements");
99
+ width: map-get(
100
+ $spacing,
101
+ "formelements",
102
+ "uploadedfile",
103
+ "default",
104
+ "width"
105
+ );
106
+ }
107
+ }
108
+
109
+ .file-upload div {
110
+ display: flex;
111
+ flex-direction: column;
112
+
113
+ .ilo--fieldset--label {
114
+ order: 1;
115
+ }
116
+
117
+ .ilo--fieldset--helper,
118
+ .ilo--fieldset--error {
119
+ margin-top: 0;
120
+ @include textmargin(
121
+ "margin-bottom",
122
+ map-get($spacing, "padding-3"),
123
+ "label-small",
124
+ "display",
125
+ 0,
126
+ 0
127
+ );
128
+ order: 2;
129
+ }
130
+ }