@gemeentenijmegen/components-css 0.0.1-alpha.11 → 0.0.1-alpha.111

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 (48) hide show
  1. package/accordion/index.scss +9 -0
  2. package/action-card/index.scss +37 -0
  3. package/blockquote/index.scss +54 -0
  4. package/breadcrumb/index.scss +130 -0
  5. package/button/index.scss +10 -0
  6. package/card/index.scss +152 -0
  7. package/dist/header.css +229 -0
  8. package/dist/index.min.css +152 -2
  9. package/dropdown-menu/index.scss +65 -0
  10. package/footer/index.scss +116 -0
  11. package/header/_mixin.scss +25 -0
  12. package/header/index.scss +235 -0
  13. package/hero/index.scss +108 -0
  14. package/image/index.scss +17 -0
  15. package/image-text-block/index.scss +48 -0
  16. package/index.scss +27 -0
  17. package/link/index.scss +10 -9
  18. package/link-list/_mixin.scss +8 -1
  19. package/link-list/index.scss +17 -4
  20. package/listbox/index.scss +81 -0
  21. package/mega-menu/index.scss +61 -0
  22. package/menu.scss +5 -0
  23. package/metadata/index.scss +31 -0
  24. package/mobile-menu/_mixin.scss +11 -0
  25. package/mobile-menu/index.scss +180 -0
  26. package/package.json +9 -4
  27. package/pagination/_mixin.scss +41 -0
  28. package/pagination/index.scss +191 -0
  29. package/rollup.config.mjs +26 -0
  30. package/search/index.scss +141 -0
  31. package/search-results/index.scss +56 -0
  32. package/skip-link/index.scss +41 -0
  33. package/spacing/getSpacing.mjs +116 -0
  34. package/spacing/semantic-spacing-matrix.json +156 -0
  35. package/spacing/spacing-matrix.json +1056 -0
  36. package/spacing/src/_mixin.scss +1968 -0
  37. package/spacing/src/_nested.scss +47 -0
  38. package/spacing/src/index.scss +36 -0
  39. package/spacing/src/semantic/_mixin.scss +311 -0
  40. package/spacing/src/semantic/index.scss +17 -0
  41. package/steplist/index.scss +114 -0
  42. package/table/_mixin.scss +98 -0
  43. package/table/index.scss +33 -0
  44. package/table-of-contents/index.scss +21 -0
  45. package/toolbar-button/_mixin.scss +21 -0
  46. package/toolbar-button/index.js +29 -0
  47. package/toolbar-button/index.scss +51 -0
  48. package/top-task-card/index.scss +57 -0
@@ -0,0 +1,191 @@
1
+ /* stylelint-disable no-descending-specificity */
2
+
3
+ @import "~@utrecht/link-css/src/mixin";
4
+ @import "~@utrecht/focus-ring-css/src/mixin";
5
+ @import "./mixin";
6
+
7
+ .nijmegen-pagination {
8
+ font-family: var(--nijmegen-pagination-font-family);
9
+ font-size: var(--nijmegen-pagination-font-size, 1.125rem);
10
+ line-height: var(--nijmegen-pagination-line-height, 150%);
11
+ margin-block-end: var(--nijmegen-pagination-margin-block-end);
12
+
13
+ .nijmegen-sr-only {
14
+ @include invisible-but-accessible;
15
+ }
16
+ }
17
+
18
+ .nijmegen-pagination-list {
19
+ all: unset;
20
+ display: flex;
21
+ list-style: none;
22
+ }
23
+
24
+ .nijmegen-pagination__ellipses {
25
+ @include nijmegen-pagination-link;
26
+
27
+ color: var(--nijmegen-pagination-ellipses-color);
28
+ font-weight: var(--nijmegen-pagination-ellipses-font-weight);
29
+ min-block-size: var(--nijmegen-pagination-ellipses-min-block-size, 3rem);
30
+ padding-block-end: var(--nijmegen-pagination-ellipses-padding-block-end, 0.75rem);
31
+ padding-block-start: var(--nijmegen-pagination-ellipses-padding-block-start, 0.75rem);
32
+ padding-inline-end: var(--nijmegen-pagination-ellipses-padding-inline-end, 0.75rem);
33
+ padding-inline-start: var(--nijmegen-pagination-ellipses-padding-inline-start, 0.75rem);
34
+ }
35
+
36
+ .nijmegen-pagination__page-link {
37
+ @include utrecht-link;
38
+ @include nijmegen-pagination-link;
39
+
40
+ background-color: var(--nijmegen-pagination-page-link-background-color);
41
+ border-color: var(--nijmegen-pagination-page-link-border-color);
42
+ border-radius: var(--nijmegen-pagination-page-link-border-radius);
43
+ border-width: var(--nijmegen-pagination-page-link-border-width);
44
+ color: var(--nijmegen-pagination-page-link-color);
45
+ font-weight: var(--nijmegen-pagination-page-link-font-weight);
46
+ min-block-size: var(--nijmegen-pagination-page-link-min-block-size, 3rem);
47
+ min-inline-size: var(--nijmegen-pagination-page-link-min-inline-size, 3rem);
48
+ padding-block-end: var(--nijmegen-pagination-page-link-padding-block-end, 0.75rem);
49
+ padding-block-start: var(--nijmegen-pagination-page-link-padding-block-start, 0.75rem);
50
+ padding-inline-end: var(--nijmegen-pagination-page-link-padding-inline-end);
51
+ padding-inline-start: var(--nijmegen-pagination-page-link-padding-inline-start);
52
+ text-decoration: var(--nijmegen-pagination-page-link-text-decoration);
53
+
54
+ &:hover,
55
+ &.nijmegen-pagination__page-link--hover {
56
+ background-color: var(--nijmegen-pagination-page-link-hover-background-color);
57
+ border-color: var(--nijmegen-pagination-page-link-hover-border-color);
58
+ color: var(--nijmegen-pagination-page-link-hover-color);
59
+ text-decoration: var(--nijmegen-pagination-page-link-hover-text-decoration);
60
+ }
61
+
62
+ &:active,
63
+ &.nijmegen-pagination__page-link--active {
64
+ background-color: var(--nijmegen-pagination-page-link-active-background-color);
65
+ border-color: var(--nijmegen-pagination-page-link-active-border-color);
66
+ color: var(--nijmegen-pagination-page-link-active-color);
67
+ text-decoration: var(--nijmegen-pagination-page-link-active-text-decoration);
68
+ }
69
+
70
+ &:focus,
71
+ &.nijmegen-pagination__page-link--focus {
72
+ @include utrecht-link--focus;
73
+
74
+ background-color: var(--nijmegen-pagination-page-link-focus-visible-background-color);
75
+ color: var(--nijmegen-pagination-page-link-focus-visible-color);
76
+ text-decoration: var(--nijmegen-pagination-page-link-focus-visible-text-decoration);
77
+ }
78
+
79
+ &:focus-visible,
80
+ &.nijmegen-pagination__page-link--focus-visible {
81
+ @include utrecht-link--focus;
82
+ @include utrecht-link--focus-visible;
83
+
84
+ background-color: var(--nijmegen-pagination-page-link-focus-visible-background-color);
85
+ color: var(--nijmegen-pagination-page-link-focus-visible-color);
86
+ text-decoration: var(--nijmegen-pagination-page-link-focus-visible-text-decoration);
87
+ }
88
+
89
+ &.nijmegen-pagination__page-link--current {
90
+ background-color: var(--nijmegen-pagination-page-link-current-background-color);
91
+ border-color: var(--nijmegen-pagination-page-link-current-border-color);
92
+ color: var(--nijmegen-pagination-page-link-current-color);
93
+ font-weight: var(--nijmegen-pagination-page-link-current-font-weight);
94
+ text-decoration: var(--nijmegen-pagination-page-link-current-text-decoration);
95
+ }
96
+ }
97
+
98
+ .nijmegen-pagination__relative-link {
99
+ @include utrecht-link;
100
+ @include nijmegen-pagination-link;
101
+
102
+ background-color: var(--nijmegen-pagination-page-link-background-color);
103
+ border-color: var(--nijmegen-pagination-relative-link-border-color);
104
+ border-radius: var(--nijmegen-pagination-relative-link-border-radius);
105
+ border-width: var(--nijmegen-pagination-relative-link-border-width);
106
+ color: var(--nijmegen-pagination-relative-link-color);
107
+ font-weight: var(--nijmegen-pagination-relative-link-font-weight);
108
+ gap: 0.25rem;
109
+ min-block-size: var(--nijmegen-pagination-relative-link-min-block-size, 3rem);
110
+ min-inline-size: var(--nijmegen-pagination-relative-link-min-inline-size, 3rem);
111
+ padding-block-end: var(--nijmegen-pagination-relative-link-padding-block-end, 0.75rem);
112
+ padding-block-start: var(--nijmegen-pagination-relative-link-padding-block-start, 0.75rem);
113
+ padding-inline-end: var(--nijmegen-pagination-relative-link-padding-inline-end);
114
+ padding-inline-start: var(--nijmegen-pagination-relative-link-padding-inline-start);
115
+ text-decoration: var(--nijmegen-pagination-relative-link-text-decoration);
116
+
117
+ @media (width <576px) {
118
+ span {
119
+ display: none;
120
+ }
121
+ }
122
+
123
+ &.nijmegen-pagination__relative-link--disabled {
124
+ background-color: var(--nijmegen-pagination-relative-link-disabled-background-color);
125
+ border-color: var(--nijmegen-pagination-relative-link-disabled-border-color);
126
+ color: var(--nijmegen-pagination-relative-link-disabled-color);
127
+ }
128
+
129
+ &.nijmegen-pagination__relative-link--prev {
130
+ @media (width >=576px) {
131
+ &:has(span) {
132
+ margin-inline-end: var(--nijmegen-space-100);
133
+ }
134
+ }
135
+
136
+ &::before {
137
+ @include nijmegen-pagination-link-chevron;
138
+
139
+ transform: scale(-1, 1);
140
+ }
141
+ }
142
+
143
+ &.nijmegen-pagination__relative-link--next {
144
+ @media (width >=576px) {
145
+ &:has(span) {
146
+ margin-inline-start: var(--nijmegen-space-100);
147
+ }
148
+ }
149
+
150
+ &::after {
151
+ @include nijmegen-pagination-link-chevron;
152
+ }
153
+ }
154
+
155
+ &:focus,
156
+ &.nijmegen-pagination__relative-link--focus {
157
+ @include utrecht-link--focus;
158
+
159
+ background-color: var(--nijmegen-pagination-relative-link-focus-visible-background-color);
160
+ color: var(--nijmegen-pagination-relative-link-focus-visible-color);
161
+ text-decoration: var(--nijmegen-pagination-relative-link-focus-visible-text-decoration);
162
+ }
163
+
164
+ &:focus-visible,
165
+ &.nijmegen-pagination_relative-link--focus-visible {
166
+ @include utrecht-link--focus;
167
+ @include utrecht-link--focus-visible;
168
+
169
+ background-color: var(--nijmegen-pagination-relative-link-focus-visible-background-color);
170
+ color: var(--nijmegen-pagination-relative-link-focus-visible-color);
171
+ text-decoration: var(--nijmegen-pagination-relative-link-focus-visible-text-decoration);
172
+ }
173
+
174
+ &:is(a) {
175
+ &:hover,
176
+ &.nijmegen-pagination__relative-link--hover {
177
+ background-color: var(--nijmegen-pagination-relative-link-hover-background-color);
178
+ border-color: var(--nijmegen-pagination-relative-link-hover-border-color);
179
+ color: var(--nijmegen-pagination-relative-link-hover-color);
180
+ text-decoration: var(--nijmegen-pagination-relative-link-hover-text-decoration);
181
+ }
182
+
183
+ &:active,
184
+ &.nijmegen-pagination__relative-link--active {
185
+ background-color: var(--nijmegen-pagination-relative-link-active-background-color);
186
+ border-color: var(--nijmegen-pagination-relative-link-active-border-color);
187
+ color: var(--nijmegen-pagination-relative-link-active-color);
188
+ text-decoration: var(--nijmegen-pagination-relative-link-active-text-decoration);
189
+ }
190
+ }
191
+ }
package/rollup.config.mjs CHANGED
@@ -2,8 +2,34 @@ import postcss from "rollup-plugin-postcss";
2
2
  import discardDuplicates from "postcss-discard-duplicates";
3
3
  import { cwd } from "node:process";
4
4
  import { basename } from "node:path";
5
+ import terser from "@rollup/plugin-terser";
6
+
7
+ let components = [
8
+ {
9
+ input: "header/index.scss",
10
+ output: "dist/header.css",
11
+ },
12
+ ];
5
13
 
6
14
  let config = [];
15
+ components.forEach((component) => {
16
+ config.push({
17
+ input: component.input,
18
+ output: {
19
+ file: component.output,
20
+ sourcemap: false,
21
+ format: "esm",
22
+ compact: true,
23
+ },
24
+ plugins: [
25
+ postcss({
26
+ extensions: [".css", ".scss"],
27
+ plugins: [discardDuplicates()],
28
+ extract: true,
29
+ }),
30
+ ],
31
+ });
32
+ });
7
33
 
8
34
  config.push({
9
35
  input: "index.scss",
@@ -0,0 +1,141 @@
1
+ @import "~@utrecht/focus-ring-css/src/mixin";
2
+ @import "~@utrecht/textbox-css/src/mixin";
3
+
4
+ .nijmegen-search {
5
+ inline-size: var(--nijmegen-search-input-max-inline-size);
6
+ max-inline-size: 100%;
7
+ position: relative;
8
+
9
+ &.nijmegen-search--full-width {
10
+ inline-size: 100%;
11
+ }
12
+ }
13
+
14
+ .nijmegen-search__container {
15
+ display: flex;
16
+ gap: var(--nijmegen-search-input-column-gap);
17
+
18
+ .utrecht-button {
19
+ max-block-size: 51px;
20
+ min-block-size: 51px;
21
+ }
22
+ }
23
+
24
+ .nijmegen-search__input-holder {
25
+ flex: 1;
26
+ position: relative;
27
+ }
28
+
29
+ .nijmegen-search__search-button {
30
+ &.nijmegen-search__search-button--dark {
31
+ border-color: var(--nijmegen-search-input-button-border-color) !important;
32
+ }
33
+
34
+ @media (width <576px) {
35
+ svg {
36
+ display: none;
37
+ }
38
+ }
39
+ }
40
+
41
+ .nijmegen-search__clear-button {
42
+ align-items: center;
43
+ aspect-ratio: 1/1;
44
+ background-color: transparent;
45
+ border: 0;
46
+ cursor: pointer;
47
+ display: flex;
48
+ height: 100%; /* stylelint-disable-line property-disallowed-list */
49
+ justify-content: center;
50
+ position: absolute;
51
+ right: 0; /* stylelint-disable-line property-disallowed-list */
52
+ top: 0; /* stylelint-disable-line property-disallowed-list */
53
+
54
+ &.nijmegen-search__clear-button--hide {
55
+ display: none;
56
+ }
57
+
58
+ svg {
59
+ stroke: var(--nijmegen-interaction-color);
60
+ }
61
+ }
62
+
63
+ .nijmegen-search__input {
64
+ background-color: var(--nijmegen-search-input-background-color);
65
+ border-color: var(--nijmegen-search-input-border-color);
66
+ border-radius: var(--nijmegen-search-input-border-radius);
67
+ border-style: solid;
68
+ border-width: var(--nijmegen-search-input-border-width);
69
+ box-sizing: border-box;
70
+ color: var(--nijmegen-search-input-color);
71
+ font-family: var(--nijmegen-search-input-font-family);
72
+ font-size: var(--nijmegen-search-input-font-size);
73
+ font-weight: var(--nijmegen-search-input-font-weight);
74
+ line-height: var(--nijmegen-search-input-line-height);
75
+ min-block-size: var(--nijmegen-search-input-min-block-size);
76
+ padding-block-end: var(--nijmegen-search-input-padding-block-end);
77
+ padding-block-start: var(--nijmegen-search-input-padding-block-start);
78
+ padding-inline-end: var(--nijmegen-search-input-padding-inline-end);
79
+ padding-inline-start: var(--nijmegen-search-input-padding-inline-start);
80
+ width: 100%; /* stylelint-disable-line property-disallowed-list */
81
+
82
+ &:hover,
83
+ &.nijmegen-search__input--hover {
84
+ background-color: var(--nijmegen-search-input-hover-background-color);
85
+ border-color: var(--nijmegen-search-input-hover-border-color);
86
+ color: var(--nijmegen-search-input-hover-color);
87
+ }
88
+
89
+ &:focus,
90
+ &.nijmegen-search__input--focus {
91
+ @include utrecht-focus;
92
+
93
+ background-color: var(--nijmegen-search-input-focus-background-color);
94
+ border-color: var(--nijmegen-search-input-focus-border-color);
95
+ color: var(--nijmegen-search-input-focus-color);
96
+ }
97
+
98
+ &:focus-visible,
99
+ &.nijmegen-search__input--focus {
100
+ @include utrecht-focus;
101
+ @include utrecht-focus-ring;
102
+
103
+ background-color: var(--nijmegen-search-input-focus-background-color);
104
+ border-color: var(--nijmegen-search-input-focus-border-color);
105
+ color: var(--nijmegen-search-input-focus-color);
106
+ }
107
+
108
+ &:read-only,
109
+ &.nijmegen-search__input-read-only {
110
+ background-color: var(--nijmegen-search-input-read-only-background-color);
111
+ border-color: var(--nijmegen-search-input-read-only-border-color);
112
+ color: var(--nijmegen-search-input-read-only-color);
113
+ }
114
+
115
+ &.nijmegen-search__input--disabled {
116
+ background-color: var(--nijmegen-search-input-disabled-background-color);
117
+ border-color: var(--nijmegen-search-input-disabled-border-color);
118
+ color: var(--nijmegen-search-input-disabled-color);
119
+ cursor: var(--utrecht-action-disabled-cursor, not-allowed);
120
+ }
121
+
122
+ &::placeholder {
123
+ color: var(--nijmegen-search-input-placeholder-color);
124
+ }
125
+ }
126
+
127
+ .nijmegen-search__autocomplete-results {
128
+ display: none;
129
+ margin-block-start: var(--nijmegen-search-input-autocomplete-offset, 8px);
130
+ position: absolute;
131
+ top: var(--nijmegen-search-input-min-block-size); /* stylelint-disable-line property-disallowed-list */
132
+ width: 100%; /* stylelint-disable-line property-disallowed-list */
133
+
134
+ &--show-results {
135
+ display: block;
136
+ }
137
+
138
+ &--static {
139
+ position: static;
140
+ }
141
+ }
@@ -0,0 +1,56 @@
1
+ @import "~@utrecht/link-css/src/mixin";
2
+ @import "~@utrecht/focus-ring-css/src/mixin";
3
+
4
+ .nijmegen-search-results {
5
+ border-block-color: var(--nijmegen-search-result-border-color);
6
+ border-block-end-style: solid;
7
+ border-block-end-width: var(--nijmegen-search-result-border-block-end-width, 1px);
8
+ display: flex;
9
+ flex-direction: column;
10
+ gap: var(--nijmegen-search-result-row-gap);
11
+ padding-block-end: var(--nijmegen-search-result-padding-block-end);
12
+ padding-block-start: var(--nijmegen-search-result-padding-block-start);
13
+ padding-inline-end: var(--nijmegen-search-result-padding-inline-end);
14
+ padding-inline-start: var(--nijmegen-search-result-padding-inline-start);
15
+ }
16
+
17
+ .nijmegen-search-results__content {
18
+ align-items: flex-start;
19
+ display: flex;
20
+ flex-direction: column;
21
+ gap: var(--nijmegen-search-result-content-row-gap);
22
+
23
+ @media (width < 576px) {
24
+ .nijmegen-metadata {
25
+ flex-direction: column;
26
+ }
27
+ }
28
+ }
29
+
30
+ .nijmegen-search-results__summary {
31
+ display: flex;
32
+ flex-direction: column;
33
+ gap: var(--nijmegen-search-result-content-row-gap);
34
+ }
35
+
36
+ .nijmegen-search-results__heading {
37
+ color: inherit;
38
+ text-decoration: var(--nijmegen-search-result-heading-text-decoration, none);
39
+
40
+ &:hover {
41
+ color: var(--nijmegen-search-result-heading-hover-color);
42
+ text-decoration: var(--nijmegen-search-result-heading-hover-text-decoration, underline);
43
+ }
44
+
45
+ &:focus,
46
+ &.nijmegen-search-results__heading--focus {
47
+ @include utrecht-link--focus;
48
+ @include utrecht-link--focus-visible;
49
+ }
50
+
51
+ &:focus-visible,
52
+ &.nijmegen-search-results__heading--focus-visible {
53
+ @include utrecht-link--focus;
54
+ @include utrecht-link--focus-visible;
55
+ }
56
+ }
@@ -0,0 +1,41 @@
1
+ @import "~@utrecht/link-css/src/mixin";
2
+ @import "~@utrecht/focus-ring-css/src/mixin";
3
+
4
+ .nijmegen-skip-link {
5
+ @include utrecht-link;
6
+
7
+ background-color: var(--nijmegen-focus-background-color);
8
+ box-sizing: border-box;
9
+ color: var(--nijmegen-focus-color);
10
+ display: inline-block;
11
+ font-size: var(--utrecht-document-font-size);
12
+ line-height: var(--utrecht-document-line-height);
13
+ margin-block-end: var(--nijmegen-skip-link-margin-block-end);
14
+ min-block-size: var(--utrecht-pointer-target-min-size);
15
+ min-inline-size: var(--utrecht-pointer-target-min-size);
16
+ padding-block: var(--nijmegen-space-75);
17
+ padding-inline: var(--nijmegen-space-100);
18
+ text-align: center;
19
+
20
+ &:not(:active, :focus, .nijmegen-skip-link--focus) {
21
+ block-size: 1px;
22
+ clip: rect(0 0 0 0);
23
+ clip-path: inset(50%);
24
+ inline-size: 1px;
25
+ overflow: hidden;
26
+ position: absolute;
27
+ white-space: nowrap;
28
+ }
29
+
30
+ &:focus,
31
+ &.nijmegen-skip-link--focus {
32
+ @include utrecht-link--focus;
33
+ @include utrecht-link--focus-visible;
34
+ }
35
+
36
+ &:focus-visible,
37
+ &.nijmegen-skip-link--focus-visible {
38
+ @include utrecht-link--focus;
39
+ @include utrecht-link--focus-visible;
40
+ }
41
+ }
@@ -0,0 +1,116 @@
1
+ import fs from "fs";
2
+ import path from "path";
3
+ import spacingMatrix from "./spacing-matrix.json" assert { type: "json" };
4
+ import semanticSpacingMatrix from "./semantic-spacing-matrix.json" assert { type: "json" };
5
+
6
+ const spaceMap = {
7
+ NVT: undefined,
8
+ Onbekenden: "stranger",
9
+ Kennissen: "acquaintance",
10
+ Vrienden: "friend",
11
+ Besties: "best-friend",
12
+ Kind: "confidant",
13
+ };
14
+
15
+ const getSpacings = (spacingMatrix) => {
16
+ return spacingMatrix
17
+ .map((spacing) => {
18
+ const entries = Object.entries(spacing);
19
+ const [, component] = entries.shift();
20
+ return entries
21
+ .map(([sibling, space]) => {
22
+ const spacing = spaceMap[space];
23
+ return spacing && { component, sibling, spacing };
24
+ })
25
+ .filter(Boolean);
26
+ })
27
+ .filter((arr) => arr.length);
28
+ };
29
+
30
+ const getSpacingMixins = (components) =>
31
+ components.map((mixinGroup) => {
32
+ const componentName = mixinGroup[0].component;
33
+
34
+ const mixins = mixinGroup.map(
35
+ ({ component, sibling, spacing }) =>
36
+ `.${component}:has(+ .${sibling}) {
37
+ --${component}-margin-block-end: var(--utrecht-rich-text-${spacing}-margin-block-end);
38
+ }`,
39
+ );
40
+ return `@mixin spacing-${componentName} {
41
+ .${componentName}:first-child {
42
+ --${componentName}-margin-block-start: 0;
43
+ }
44
+ ${mixins.join(";\n")}
45
+ }`;
46
+ });
47
+
48
+ const getSpacingMixinsSemantic = (components) =>
49
+ components.map((mixinGroup) => {
50
+ var componentName = mixinGroup[0].component;
51
+ componentName = componentName.replace(/^\./, "");
52
+
53
+ const mixins = mixinGroup.map(({ component, sibling, spacing }) => {
54
+ let resp = `${component}:has(+ ${sibling}) {
55
+ margin-block-end: var(--utrecht-rich-text-${spacing}-margin-block-end);`;
56
+ if (component == "button" && component == sibling) {
57
+ resp += `
58
+ margin-inline-end: var(--utrecht-rich-text-${spacing}-margin-block-end);
59
+ }`;
60
+ } else {
61
+ resp += `
62
+ }`;
63
+ }
64
+ return resp;
65
+ });
66
+ return `@mixin spacing-${componentName} {
67
+ ${componentName}:first-child {
68
+ --${componentName}-margin-block-start: 0;
69
+ }
70
+ ${mixins.join(";\n")}
71
+ }`;
72
+ });
73
+
74
+ const getRichTextStyles = (components, parentclass = "nijmegen-spacing") => `
75
+ @import "./mixin";
76
+
77
+ .${parentclass} .utrecht-page-body__content {
78
+ --utrecht-space-around: 1;
79
+ ${components.map((mixinGroup) => `@include spacing-${mixinGroup[0].component}`).join(";\n")}
80
+ }
81
+ @import "./nested";`;
82
+
83
+ const spacings = getSpacings(spacingMatrix);
84
+ const semanticSpacings = getSpacings(semanticSpacingMatrix);
85
+
86
+ fs.writeFileSync(
87
+ path.resolve("./spacing/src/_mixin.scss"),
88
+ getSpacingMixins(spacings).join("\n"),
89
+ {
90
+ override: true,
91
+ },
92
+ );
93
+
94
+ fs.writeFileSync(
95
+ path.resolve("./spacing/src/semantic/_mixin.scss"),
96
+ getSpacingMixinsSemantic(semanticSpacings).join("\n"),
97
+ {
98
+ override: true,
99
+ },
100
+ );
101
+
102
+ fs.writeFileSync(
103
+ path.resolve("./spacing/src/index.scss"),
104
+ getRichTextStyles(spacings),
105
+ {
106
+ override: true,
107
+ },
108
+ );
109
+
110
+ fs.writeFileSync(
111
+ path.resolve("./spacing/src/semantic/index.scss"),
112
+ getRichTextStyles(semanticSpacings, "nijmegen-html"),
113
+ {
114
+ override: true,
115
+ },
116
+ );