@oslokommune/punkt-css 0.18.2

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 (77) hide show
  1. package/CHANGELOG.md +260 -0
  2. package/CONTRIBUTING.md +116 -0
  3. package/LICENSE +23 -0
  4. package/README.md +221 -0
  5. package/dist/css/components/alert.css +111 -0
  6. package/dist/css/components/alert.min.css +1 -0
  7. package/dist/css/components/backlink.css +38 -0
  8. package/dist/css/components/backlink.min.css +1 -0
  9. package/dist/css/components/badge.css +52 -0
  10. package/dist/css/components/badge.min.css +1 -0
  11. package/dist/css/components/breadcrumbs.css +116 -0
  12. package/dist/css/components/breadcrumbs.min.css +1 -0
  13. package/dist/css/components/footer.css +48 -0
  14. package/dist/css/components/footer.min.css +1 -0
  15. package/dist/css/components/header.css +123 -0
  16. package/dist/css/components/header.min.css +1 -0
  17. package/dist/css/components/icon.css +63 -0
  18. package/dist/css/components/icon.min.css +1 -0
  19. package/dist/css/components/teaserlist.css +53 -0
  20. package/dist/css/components/teaserlist.min.css +1 -0
  21. package/dist/css/pkt-base.css +9721 -0
  22. package/dist/css/pkt-base.min.css +1 -0
  23. package/dist/css/pkt-components.css +611 -0
  24. package/dist/css/pkt-components.min.css +1 -0
  25. package/dist/css/pkt-elements.css +881 -0
  26. package/dist/css/pkt-elements.min.css +1 -0
  27. package/dist/css/pkt-normalise.css +221 -0
  28. package/dist/css/pkt-normalise.min.css +1 -0
  29. package/dist/css/pkt.css +11415 -0
  30. package/dist/css/pkt.min.css +1 -0
  31. package/dist/scss/abstracts/_index.scss +3 -0
  32. package/dist/scss/abstracts/functions/_index.scss +65 -0
  33. package/dist/scss/abstracts/mixins/_breakpoints.scss +60 -0
  34. package/dist/scss/abstracts/mixins/_index.scss +2 -0
  35. package/dist/scss/abstracts/mixins/_typography.scss +45 -0
  36. package/dist/scss/abstracts/placeholders/_index.scss +19 -0
  37. package/dist/scss/abstracts/variables/_breakpoints.scss +8 -0
  38. package/dist/scss/abstracts/variables/_colors.scss +55 -0
  39. package/dist/scss/abstracts/variables/_index.scss +24 -0
  40. package/dist/scss/abstracts/variables/_spacing.scss +22 -0
  41. package/dist/scss/abstracts/variables/_typography.scss +430 -0
  42. package/dist/scss/base/_accessibility.scss +11 -0
  43. package/dist/scss/base/_colors.scss +24 -0
  44. package/dist/scss/base/_containers.scss +75 -0
  45. package/dist/scss/base/_defaults.scss +48 -0
  46. package/dist/scss/base/_grid.scss +114 -0
  47. package/dist/scss/base/_index.scss +9 -0
  48. package/dist/scss/base/_oslo-sans.scss +21 -0
  49. package/dist/scss/base/_spacing.scss +109 -0
  50. package/dist/scss/base/_typography.scss +102 -0
  51. package/dist/scss/base/_visibility.scss +28 -0
  52. package/dist/scss/components/_alert.scss +153 -0
  53. package/dist/scss/components/_backlink.scss +50 -0
  54. package/dist/scss/components/_badge.scss +59 -0
  55. package/dist/scss/components/_breadcrumbs.scss +130 -0
  56. package/dist/scss/components/_footer.scss +52 -0
  57. package/dist/scss/components/_header.scss +125 -0
  58. package/dist/scss/components/_icon.scss +83 -0
  59. package/dist/scss/components/_index.scss +8 -0
  60. package/dist/scss/components/_teaserlist.scss +56 -0
  61. package/dist/scss/elements/_button.scss +412 -0
  62. package/dist/scss/elements/_form.scss +190 -0
  63. package/dist/scss/elements/_hr.scss +8 -0
  64. package/dist/scss/elements/_image.scss +32 -0
  65. package/dist/scss/elements/_index.scss +8 -0
  66. package/dist/scss/elements/_list.scss +104 -0
  67. package/dist/scss/elements/_section.scss +98 -0
  68. package/dist/scss/elements/_select.scss +82 -0
  69. package/dist/scss/elements/_table.scss +80 -0
  70. package/dist/scss/normalise/_index.scss +241 -0
  71. package/dist/scss/pkt-base.scss +4 -0
  72. package/dist/scss/pkt-components.scss +4 -0
  73. package/dist/scss/pkt-elements.scss +4 -0
  74. package/dist/scss/pkt-normalise.scss +4 -0
  75. package/dist/scss/pkt.scss +13 -0
  76. package/index.js +1 -0
  77. package/package.json +40 -0
@@ -0,0 +1,59 @@
1
+ /*
2
+ * Badge element
3
+ */
4
+
5
+ @use 'sass:map';
6
+ @use '../abstracts/variables';
7
+
8
+ .pkt-badge {
9
+ display: inline-flex;
10
+ height: 1.5em;
11
+ margin-left: 0.4em;
12
+ padding: 0.25em 0.4em;
13
+ color: black;
14
+ font-weight: 500;
15
+ font-size: 0.75em;
16
+ line-height: 1em;
17
+ background: map.get(variables.$colors, 'color-blue-light');
18
+ border-radius: 1px;
19
+ }
20
+
21
+ .pkt-btn > .pkt-badge.pkt-badge--strong,
22
+ .pkt-badge--strong {
23
+ color: map.get(variables.$colors, 'color-blue-light');
24
+ background: map.get(variables.$colors, 'color-blue-dark');
25
+ }
26
+
27
+ .pkt-btn > .pkt-badge.pkt-badge--info,
28
+ .pkt-badge--info {
29
+ background: map.get(variables.$colors, 'color-yellow');
30
+ }
31
+
32
+ // Reduce size when used inside headings
33
+ .pkt-badge.pkt-badge--small,
34
+ .pkt-h1 > .pkt-badge,
35
+ .pkt-h2 > .pkt-badge,
36
+ .pkt-h3 > .pkt-badge {
37
+ font-size: 0.5em;
38
+ transform: translateY(-0.25em);
39
+ }
40
+
41
+ // Badges for buttons
42
+ .pkt-btn:not(.pkt-btn--ter) > .pkt-badge {
43
+ color: inherit;
44
+ background: transparent;
45
+ border: 1px solid map.get(variables.$colors, 'color-blue-dark');
46
+ border-radius: 4px;
47
+ }
48
+
49
+ .pkt-btn--pri:not(.pkt-btn--neg) > .pkt-badge,
50
+ .pkt-btn--neg.pkt-btn--ter > .pkt-badge,
51
+ .pkt-btn--neg.pkt-btn--ghost > .pkt-badge {
52
+ border-color: white;
53
+ }
54
+
55
+ // Hack to fix pixel alignment on small buttons
56
+ .pkt-btn--small > .pkt-badge {
57
+ padding-top: 0.28em;
58
+ transform: translateY(-0.1em);
59
+ }
@@ -0,0 +1,130 @@
1
+ /*
2
+ * Breadcrumbs component
3
+ */
4
+
5
+ @use 'sass:map';
6
+ @use '../abstracts/variables';
7
+ @use '../abstracts/mixins/breakpoints' as *;
8
+
9
+ .pkt-breadcrumbs {
10
+ position: relative;
11
+ font-size: map.get(variables.$font-size, 'size-14');
12
+ padding: 0 map.get(variables.$spacing, 'size-16');
13
+
14
+ @include bp('tablet-up') {
15
+ margin-bottom: map.get(variables.$spacing, 'size-16');
16
+ }
17
+
18
+ @include bp('laptop-up') {
19
+ padding: 0 map.get(variables.$spacing, 'size-64');
20
+ }
21
+
22
+ &__list {
23
+ display: flex;
24
+ flex-direction: column;
25
+ height: auto;
26
+ overflow: hidden;
27
+ list-style-type: none;
28
+ border-bottom: 1px solid transparent;
29
+ transition: all 0.4s ease-in-out;
30
+
31
+ @include bp('phablet-up') {
32
+ flex-direction: row;
33
+ padding: 0 1rem;
34
+ border-bottom-color: transparent !important;
35
+ }
36
+
37
+ &.expanded {
38
+ align-items: flex-start;
39
+ max-height: 25rem;
40
+ border-bottom-color: var(--color-gray);
41
+ transition: all 0.4s ease-in-out;
42
+
43
+ & > .pkt-breadcrumbs__item {
44
+ display: block;
45
+ }
46
+
47
+ & > .pkt-breadcrumbs__item:last-child {
48
+ display: block;
49
+ }
50
+ }
51
+ }
52
+
53
+ &__item {
54
+ position: relative;
55
+ display: none;
56
+ width: 100%;
57
+
58
+ @include bp('phablet-up') {
59
+ display: block;
60
+ width: auto;
61
+ }
62
+
63
+ &:last-child {
64
+ display: block;
65
+
66
+ @include bp('tablet-up') {
67
+ max-width: 300px;
68
+ }
69
+
70
+ .pkt-breadcrumbs__text {
71
+ max-width: 200px;
72
+ }
73
+ }
74
+ }
75
+
76
+ &__link {
77
+ text-decoration: none;
78
+ color: var(--color-blue-dark);
79
+
80
+ &:visited,
81
+ &:focus,
82
+ &:hover,
83
+ &:active {
84
+ color: var(--color-blue-dark);
85
+ }
86
+
87
+ &:hover {
88
+ text-decoration: underline;
89
+ }
90
+ }
91
+
92
+ &__label {
93
+ display: flex;
94
+ align-items: center;
95
+ justify-content: flex-start;
96
+ width: 100%;
97
+ white-space: nowrap;
98
+ padding: map.get(variables.$spacing, 'size-12')
99
+ map.get(variables.$spacing, 'size-16')
100
+ map.get(variables.$spacing, 'size-16') 0;
101
+ }
102
+
103
+ &__text {
104
+ display: block;
105
+ max-width: 300px;
106
+ overflow: hidden;
107
+ text-overflow: ellipsis;
108
+ font-weight: map.get(variables.$font-weight, 'light');
109
+
110
+ @include bp('phablet-up') {
111
+ max-width: 120px;
112
+ }
113
+ @include bp('tablet-up') {
114
+ max-width: 200px;
115
+ }
116
+ @include bp('tablet-big-up') {
117
+ max-width: 300px;
118
+ }
119
+ }
120
+
121
+ &__icon {
122
+ width: 1rem;
123
+ height: 1rem;
124
+ margin-right: map.get(variables.$spacing, 'size-12');
125
+ }
126
+
127
+ &__icon-svg {
128
+ vertical-align: top;
129
+ }
130
+ }
@@ -0,0 +1,52 @@
1
+ /*
2
+ * Footer element
3
+ */
4
+
5
+ @use 'sass:map';
6
+ @use '../abstracts/variables';
7
+ @use '../abstracts/mixins/breakpoints' as *;
8
+ @use '../abstracts/mixins/typography';
9
+
10
+ .pkt-footer {
11
+ background-color: var(--color-blue-dark);
12
+ padding: map.get(variables.$spacing, 'size-40') 0;
13
+ @include typography.get-text('pkt-txt-18-light');
14
+
15
+ &__list-item {
16
+ @include bp('phablet-up') {
17
+ display: inline-flex;
18
+ }
19
+ }
20
+
21
+ &__link {
22
+ color: currentColor;
23
+ display: flex;
24
+ padding: map.get(variables.$spacing, 'size-12') 0;
25
+ text-decoration: none;
26
+ align-items: flex-start;
27
+
28
+ @include bp('phablet-up') {
29
+ padding: map.get(variables.$spacing, 'size-12')
30
+ map.get(variables.$spacing, 'size-32')
31
+ map.get(variables.$spacing, 'size-12') 0;
32
+ align-items: center;
33
+ }
34
+ &:visited .pkt-footer__link-icon {
35
+ --fg-color: currentColor;
36
+ }
37
+ &:hover .pkt-footer__link-icon {
38
+ --fg-color: currentColor;
39
+ }
40
+ }
41
+ &__link-icon {
42
+ --fg-color: currentColor;
43
+ width: 24px;
44
+ height: 24px;
45
+ margin-right: map.get(variables.$spacing, 'size-12');
46
+ flex-shrink: 0;
47
+ margin-top: 3px;
48
+ @include bp('phablet-up') {
49
+ margin-top: 0;
50
+ }
51
+ }
52
+ }
@@ -0,0 +1,125 @@
1
+ /*
2
+ * Header component
3
+ */
4
+
5
+ @use 'sass:map';
6
+ @use '../abstracts/variables';
7
+ @use '../abstracts/mixins/' as *;
8
+
9
+ $-header-height: 56px;
10
+ $-header-height-phablet-up: 60px;
11
+ $-logo-width: calc($-header-height * 60 / 31);
12
+ $-logo-width-phablet-up: calc($-header-height-phablet-up * 60 / 31);
13
+
14
+ .pkt-header {
15
+ background-color: var(--color-white);
16
+ border-bottom: 1px solid var(--color-gray);
17
+ display: grid;
18
+ gap: 0 0;
19
+ grid-template-areas: 'header-logo header-actions';
20
+ grid-template-columns: minmax($-logo-width, $-logo-width-phablet-up) 1fr;
21
+ padding: map.get(variables.$spacing, 'size-16')
22
+ map.get(variables.$spacing, 'size-16');
23
+ align-items: center;
24
+
25
+ @include bp('laptop-up') {
26
+ padding: map.get(variables.$spacing, 'size-24')
27
+ map.get(variables.$spacing, 'size-40');
28
+ }
29
+
30
+ &__logo {
31
+ grid-area: header-logo;
32
+
33
+ &-link {
34
+ display: block;
35
+ }
36
+
37
+ &-svg {
38
+ height: $-header-height;
39
+ width: calc($-header-height * 60 / 31);
40
+
41
+ @include bp('phablet-up') {
42
+ height: $-header-height-phablet-up;
43
+ width: calc($-header-height-phablet-up * 60 / 31);
44
+ }
45
+ }
46
+ }
47
+ &__actions {
48
+ grid-area: header-actions;
49
+ display: flex;
50
+ justify-content: flex-end;
51
+ align-items: center;
52
+ }
53
+
54
+ &__action {
55
+ align-items: center;
56
+ display: inline-flex;
57
+ flex-direction: row;
58
+ margin: 0 0 0 map.get(variables.$spacing, 'size-16');
59
+
60
+ @include bp('phablet-up') {
61
+ height: $-header-height-phablet-up;
62
+ margin: 0 0 0 map.get(variables.$spacing, 'size-32');
63
+ }
64
+
65
+ &-text {
66
+ @include get-text('pkt-txt-18-light');
67
+ display: inline-flex;
68
+ align-items: center;
69
+ max-width: 3.125rem;
70
+ white-space: nowrap;
71
+
72
+ @include bp('phablet-up') {
73
+ max-width: none;
74
+ }
75
+ }
76
+ &-textrow {
77
+ display: inline-flex;
78
+ @include get-text('pkt-txt-18-light');
79
+ max-width: 3.125rem;
80
+
81
+ @include bp('phablet-up') {
82
+ max-width: none;
83
+ }
84
+ &.text-row-inline {
85
+ display: inline;
86
+ }
87
+ }
88
+ &-change {
89
+ margin-left: map.get(variables.$spacing, 'size-12');
90
+ }
91
+
92
+ &-icon {
93
+ --fg-color: var(--color-blue-dark);
94
+ height: 1.5rem;
95
+ line-height: 1rem;
96
+ width: 1.5rem;
97
+ margin-left: map.get(variables.$spacing, 'size-4');
98
+
99
+ @include bp('tablet-up') {
100
+ height: 1.5rem;
101
+ margin-left: 0.5rem;
102
+ width: 1.5rem;
103
+ }
104
+ }
105
+ }
106
+
107
+ & .pkt-btn {
108
+ @include get-text('pkt-txt-18-medium');
109
+ margin: 0 0 0 map.get(variables.$spacing, 'size-4');
110
+ padding: map.get(variables.$spacing, 'size-12')
111
+ map.get(variables.$spacing, 'size-12');
112
+
113
+ @include bp('tablet-up') {
114
+ margin: 0 0 0 map.get(variables.$spacing, 'size-32');
115
+ padding: map.get(variables.$spacing, 'size-12')
116
+ map.get(variables.$spacing, 'size-16');
117
+ }
118
+ &:hover .pkt-header__action-icon {
119
+ --fg-color: var(--color-hover);
120
+ }
121
+ &__text--representing {
122
+ @include get-text('pkt-txt-18-light');
123
+ }
124
+ }
125
+ }
@@ -0,0 +1,83 @@
1
+ /*
2
+ * Icons
3
+ *
4
+ * TODO: use SVG icons instead
5
+ */
6
+
7
+ @use 'sass:map';
8
+ @use '../abstracts/variables';
9
+
10
+ .pkt-icon {
11
+ display: inline-flex;
12
+ height: 2rem;
13
+ width: 2rem;
14
+
15
+ &.small {
16
+ height: 1rem;
17
+ width: 1rem;
18
+ }
19
+
20
+ &.medium {
21
+ height: 1.5rem;
22
+ width: 1.5rem;
23
+ }
24
+
25
+ &.large {
26
+ height: 4rem;
27
+ width: 4rem;
28
+ }
29
+ }
30
+
31
+ .pkt-font-icon {
32
+ display: inline-block;
33
+ font-size: map.get(variables.$font-size, 'large');
34
+ font-family: #{map.get(variables.$font-family, 'icon')};
35
+
36
+ &--chevron-left::before {
37
+ content: '\E907';
38
+ }
39
+
40
+ &--chevron-right::before {
41
+ content: '\E908';
42
+ }
43
+
44
+ &--chevron-up::before {
45
+ content: '\E909';
46
+ }
47
+
48
+ &--chevron-down::before {
49
+ content: '\E906';
50
+ }
51
+
52
+ &--user::before {
53
+ content: '\E921';
54
+ }
55
+
56
+ &--menu::before {
57
+ content: '\E917';
58
+ }
59
+
60
+ &--close::before {
61
+ content: '\E923';
62
+ }
63
+
64
+ &--search::before {
65
+ content: '\E915';
66
+ }
67
+
68
+ &--trash::before {
69
+ content: '\E92D';
70
+ }
71
+
72
+ &--edit::before {
73
+ content: '\E949';
74
+ }
75
+
76
+ &--filter::before {
77
+ content: '\E910';
78
+ }
79
+
80
+ &--envelope::before {
81
+ content: '\E929';
82
+ }
83
+ }
@@ -0,0 +1,8 @@
1
+ @forward 'alert';
2
+ @forward 'badge';
3
+ @forward 'backlink';
4
+ @forward 'breadcrumbs';
5
+ @forward 'footer';
6
+ @forward 'header';
7
+ @forward 'icon';
8
+ @forward 'teaserlist';
@@ -0,0 +1,56 @@
1
+ /*
2
+ * Header element
3
+ */
4
+
5
+ @use 'sass:map';
6
+ @use '../abstracts/variables';
7
+ @use '../abstracts/mixins/breakpoints' as *;
8
+
9
+ .pkt-teaserlist {
10
+ display: grid;
11
+ grid-template-columns: auto;
12
+ grid-template-rows: auto auto;
13
+ justify-items: center;
14
+ position: relative;
15
+ row-gap: 30px;
16
+
17
+ @include bp('tablet-up') {
18
+ column-gap: 30px;
19
+ grid-template-columns: 200px auto;
20
+ grid-template-rows: auto;
21
+ justify-items: normal;
22
+ }
23
+
24
+ @include bp('tablet-big-up') {
25
+ grid-template-columns: 300px auto;
26
+ }
27
+
28
+ &.flip {
29
+ @include bp('tablet-up') {
30
+ grid-template-columns: auto 200px;
31
+ }
32
+ @include bp('tablet-big-up') {
33
+ grid-template-columns: auto 300px;
34
+ }
35
+ }
36
+
37
+ &.flip > &__img {
38
+ @include bp('tablet-up') {
39
+ grid-column: 2;
40
+ }
41
+ }
42
+ &.flip > &__txt {
43
+ @include bp('tablet-up') {
44
+ grid-column: 1;
45
+ grid-row: 1;
46
+ }
47
+ }
48
+
49
+ &__img {
50
+ width: 150px;
51
+
52
+ @include bp('tablet-up') {
53
+ width: 100%;
54
+ }
55
+ }
56
+ }