@gemeentenijmegen/layout-css 0.0.1-alpha.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.
package/package.json ADDED
@@ -0,0 +1,31 @@
1
+ {
2
+ "version": "0.0.1-alpha.1",
3
+ "author": "Gemeente Nijmegen",
4
+ "description": "CSS layout for a design system based on the NL Design System architecture",
5
+ "license": "EUPL-1.2",
6
+ "name": "@gemeentenijmegen/layout-css",
7
+ "keywords": [
8
+ "nl-design-system",
9
+ "css-layout",
10
+ "gemeente-nijmegen"
11
+ ],
12
+ "private": false,
13
+ "publishConfig": {
14
+ "access": "public"
15
+ },
16
+ "repository": {
17
+ "type": "git+ssh",
18
+ "url": "git@github.com:GemeenteNijmegen/design-system.git"
19
+ },
20
+ "scripts": {
21
+ "build": "rollup -c ./rollup.config.mjs",
22
+ "clean": "rimraf dist"
23
+ },
24
+ "devDependencies": {
25
+ "bootstrap": "v5.3.3",
26
+ "postcss-discard-duplicates": "7.0.1",
27
+ "rollup": "4.12.1",
28
+ "rollup-plugin-postcss": "4.0.2"
29
+ },
30
+ "gitHead": "448bf22172dc71330c1c578d6a4b32e07e3b4fd9"
31
+ }
@@ -0,0 +1,63 @@
1
+ import postcss from "rollup-plugin-postcss";
2
+ import discardDuplicates from "postcss-discard-duplicates";
3
+ import { cwd } from "node:process";
4
+ import { basename } from "node:path";
5
+
6
+ let components = [
7
+ {
8
+ input: "src/grid.scss",
9
+ output: "dist/grid.css",
10
+ },
11
+ {
12
+ input: "src/container.scss",
13
+ output: "dist/container.css",
14
+ },
15
+ {
16
+ input: "src/spacing.scss",
17
+ output: "dist/spacing.css",
18
+ },
19
+ {
20
+ input: "src/layout.scss",
21
+ output: "dist/layout.css",
22
+ },
23
+ ];
24
+
25
+ let config = [];
26
+ components.forEach((component) => {
27
+ config.push({
28
+ input: component.input,
29
+ output: {
30
+ file: component.output,
31
+ sourcemap: false,
32
+ format: "esm",
33
+ compact: true,
34
+ },
35
+ plugins: [
36
+ postcss({
37
+ extensions: [".css", ".scss"],
38
+ plugins: [discardDuplicates()],
39
+ extract: true,
40
+ }),
41
+ ],
42
+ });
43
+ });
44
+
45
+ config.push({
46
+ input: "src/layout.scss",
47
+ output: {
48
+ file: "dist/layout.min.css",
49
+ sourcemap: false,
50
+ format: "esm",
51
+ compact: true,
52
+ },
53
+ plugins: [
54
+ postcss({
55
+ extensions: [".css", ".scss"],
56
+ plugins: [discardDuplicates()],
57
+ extract: true,
58
+ minimize: true,
59
+ }),
60
+ ],
61
+ });
62
+
63
+ export default config;
@@ -0,0 +1,12 @@
1
+ @import "~bootstrap/scss/mixins/breakpoints";
2
+ @import "variables";
3
+
4
+ $nijmegen-grid-breakpoints: (
5
+ base: null,
6
+ xs: $nijmegen-breakpoint-xs,
7
+ sm: $nijmegen-breakpoint-sm,
8
+ md: $nijmegen-breakpoint-md,
9
+ lg: $nijmegen-breakpoint-lg,
10
+ xl: $nijmegen-breakpoint-xl,
11
+ xxl: $nijmegen-breakpoint-xxl,
12
+ ) !default;
@@ -0,0 +1,78 @@
1
+ @use "sass:map";
2
+
3
+ // Breakpoints used in by media queries in grid and container
4
+ $nijmegen-breakpoint-xs: 0 !default;
5
+ $nijmegen-breakpoint-sm: 576px !default;
6
+ $nijmegen-breakpoint-md: 768px !default;
7
+ $nijmegen-breakpoint-lg: 992px !default;
8
+ $nijmegen-breakpoint-xl: 1200px !default;
9
+ $nijmegen-breakpoint-xxl: 1400px !default;
10
+
11
+ // Max widths used by media queries in container
12
+ $nijmegen-container-max-width-sm: 540px !default;
13
+ $nijmegen-container-max-width-md: 720px !default;
14
+ $nijmegen-container-max-width-lg: 960px !default;
15
+ $nijmegen-container-max-width-xl: 1140px !default;
16
+ $nijmegen-container-max-width-xxl: 1320px !default;
17
+
18
+ // spacing
19
+ $nijmegen-enable-important-utilities-on-spacing: true !default;
20
+ $nijmegen-space: (
21
+ 0: var(--nijmegen-space-0, 0),
22
+ 12: var(--nijmegen-space-12, 0.125rem),
23
+ 25: var(--nijmegen-space-25, 0.25rem),
24
+ 50: var(--nijmegen-space-50, 0.5rem),
25
+ 75: var(--nijmegen-space-75, 0.75rem),
26
+ 100: var(--nijmegen-space-100, 1rem),
27
+ 125: var(--nijmegen-space-125, 1.25rem),
28
+ 150: var(--nijmegen-space-150, 1.5rem),
29
+ 200: var(--nijmegen-space-200, 2rem),
30
+ 250: var(--nijmegen-space-250, 2.5rem),
31
+ 300: var(--nijmegen-space-300, 3rem),
32
+ 400: var(--nijmegen-space-400, 4rem),
33
+ 500: var(--nijmegen-space-500, 5rem),
34
+ 600: var(--nijmegen-space-600, 6rem),
35
+ ) !default;
36
+
37
+ // deprecated
38
+ $nijmegen-inline-spacers: (
39
+ 3xs: var(--nijmegen-space-inline-3xs, 0.125rem),
40
+ 2xs: var(--nijmegen-space-inline-2xs, 0.25rem),
41
+ xs: var(--nijmegen-space-inline-xs, 0.5rem),
42
+ sm: var(--nijmegen-space-inline-sm, 0.75rem),
43
+ md: var(--nijmegen-space-inline-md, 1rem),
44
+ lg: var(--nijmegen-space-inline-lg, 1.25rem),
45
+ xl: var(--nijmegen-space-inline-xl, 1.5rem),
46
+ 2xl: var(--nijmegen-space-inline-2xl, 2rem),
47
+ 3xl: var(--nijmegen-space-inline-3xl, 2.5rem),
48
+ 4xl: var(--nijmegen-space-inline-4xl, 3rem),
49
+ 5xl: var(--nijmegen-space-inline-5xl, 4rem),
50
+ ) !default;
51
+ $nijmegen-block-spacers: (
52
+ 3xs: var(--nijmegen-space-block-3xs, 0.125rem),
53
+ 2xs: var(--nijmegen-space-block-2xs, 0.25rem),
54
+ xs: var(--nijmegen-space-block-xs, 0.5rem),
55
+ sm: var(--nijmegen-space-block-sm, 0.75rem),
56
+ md: var(--nijmegen-space-block-md, 1rem),
57
+ lg: var(--nijmegen-space-block-lg, 1.25rem),
58
+ xl: var(--nijmegen-space-block-xl, 1.5rem),
59
+ 2xl: var(--nijmegen-space-block-2xl, 2rem),
60
+ 3xl: var(--nijmegen-space-block-3xl, 2.5rem),
61
+ 4xl: var(--nijmegen-space-block-4xl, 3rem),
62
+ 5xl: var(--nijmegen-space-block-5xl, 4rem),
63
+ ) !default;
64
+
65
+ // container
66
+ $nijmegen-container-padding-inline-start: var(
67
+ --nijmegen-container-padding-inline-start,
68
+ map.get($nijmegen-inline-spacers, "sm")
69
+ ) !default;
70
+ $nijmegen-container-padding-inline-end: var(
71
+ --nijmegen-container-padding-inline-end,
72
+ map.get($nijmegen-inline-spacers, "sm")
73
+ ) !default;
74
+
75
+ // grid
76
+ $nijmegen-grid-columns: 12 !default;
77
+ $nijmegen-grid-gap: var(--nijmegen-grid-gap, 1.5rem) !default;
78
+ $nijmegen-grid-rows: var(--nijmegen-grid-rows, 1) !default;
@@ -0,0 +1,56 @@
1
+ /*! Based on Bootstrap v5.1.3 Copyright (c) 2011-2024 The Bootstrap Authors */
2
+ @import "breakpoints";
3
+
4
+ /* stylelint-disable-next-line scss/dollar-variable-pattern */
5
+ $container-max-widths: (
6
+ sm: $nijmegen-container-max-width-sm,
7
+ md: $nijmegen-container-max-width-md,
8
+ lg: $nijmegen-container-max-width-lg,
9
+ xl: $nijmegen-container-max-width-xl,
10
+ xxl: $nijmegen-container-max-width-xxl,
11
+ ) !default;
12
+
13
+ @mixin make-container(
14
+ $nijmegen-container-padding-inline-end: $nijmegen-container-padding-inline-end,
15
+ $nijmegen-container-padding-inline-start: $nijmegen-container-padding-inline-start
16
+ ) {
17
+ margin-inline-end: auto;
18
+ margin-inline-start: auto;
19
+ padding-inline-end: $nijmegen-container-padding-inline-end;
20
+ padding-inline-start: $nijmegen-container-padding-inline-end;
21
+ width: 100%; /* stylelint-disable-line property-disallowed-list */
22
+ }
23
+
24
+ .nijmegen-container,
25
+ // 100% wide container at all breakpoints
26
+ .nijmegen-container-fluid {
27
+ @include make-container;
28
+ }
29
+
30
+ // Responsive containers that are 100% wide until a breakpoint
31
+ @each $breakpoint, $container-max-width in $container-max-widths {
32
+ .nijmegen-container-#{$breakpoint} {
33
+ @extend .nijmegen-container-fluid;
34
+ }
35
+
36
+ @include media-breakpoint-up($breakpoint, $nijmegen-grid-breakpoints) {
37
+ // Extend each breakpoint which is smaller or equal to the current breakpoint
38
+ $extend-breakpoint: true; /* stylelint-disable-line scss/dollar-variable-default, scss/dollar-variable-pattern */
39
+ %responsive-container-#{$breakpoint} {
40
+ max-width: $container-max-width; /* stylelint-disable-line property-disallowed-list */
41
+ }
42
+
43
+ @each $name, $width in $nijmegen-grid-breakpoints {
44
+ @if $extend-breakpoint {
45
+ .nijmegen-container#{breakpoint-infix($name, $nijmegen-grid-breakpoints)} {
46
+ @extend %responsive-container-#{$breakpoint};
47
+ }
48
+
49
+ // Once the current breakpoint is reached, stop extending
50
+ @if $breakpoint == $name {
51
+ $extend-breakpoint: false; /* stylelint-disable-line scss/dollar-variable-default, scss/dollar-variable-pattern */
52
+ }
53
+ }
54
+ }
55
+ }
56
+ }
package/src/grid.scss ADDED
@@ -0,0 +1,34 @@
1
+ @import "breakpoints";
2
+
3
+ @mixin make-cssgrid($columns: $nijmegen-grid-columns, $breakpoints: $nijmegen-grid-breakpoints) {
4
+ @each $breakpoint in map-keys($breakpoints) {
5
+ $nijmegen-infix: breakpoint-infix($breakpoint, $breakpoints); // stylelint-disable-line scss/dollar-variable-default
6
+
7
+ @include media-breakpoint-up($breakpoint, $breakpoints) {
8
+ @if $columns > 0 {
9
+ @for $i from 1 through $columns {
10
+ .nijmegen-g-col#{$nijmegen-infix}-#{$i} {
11
+ grid-column: auto / span $i;
12
+ }
13
+ }
14
+
15
+ // Start with `1` because `0` is an invalid value.
16
+ // Ends with `$columns - 1` because offsetting by the width of an entire row isn't possible.
17
+ @for $i from 1 through ($columns - 1) {
18
+ .nijmegen-g-start#{$nijmegen-infix}-#{$i} {
19
+ grid-column-start: $i;
20
+ }
21
+ }
22
+ }
23
+ }
24
+ }
25
+ }
26
+
27
+ .nijmegen-grid {
28
+ display: grid;
29
+ gap: $nijmegen-grid-gap;
30
+ grid-template-columns: repeat($nijmegen-grid-columns, 1fr);
31
+ grid-template-rows: repeat($nijmegen-grid-rows, 1fr);
32
+
33
+ @include make-cssgrid;
34
+ }
@@ -0,0 +1,3 @@
1
+ @import "container";
2
+ @import "grid";
3
+ @import "spacing";
@@ -0,0 +1,166 @@
1
+ @use "sass:map";
2
+ @import "breakpoints";
3
+ @import "~bootstrap/scss/mixins/utilities";
4
+ @import "~bootstrap/scss/vendor/rfs";
5
+
6
+ /* stylelint-disable-next-line scss/dollar-variable-default, scss/dollar-variable-pattern */
7
+ $enable-important-utilities: $nijmegen-enable-important-utilities-on-spacing;
8
+ /* stylelint-disable-next-line scss/dollar-variable-pattern */
9
+ $grid-breakpoints: (
10
+ xs: $nijmegen-breakpoint-xs,
11
+ sm: $nijmegen-breakpoint-sm,
12
+ md: $nijmegen-breakpoint-md,
13
+ lg: $nijmegen-breakpoint-lg,
14
+ xl: $nijmegen-breakpoint-xl,
15
+ xxl: $nijmegen-breakpoint-xxl,
16
+ ) !default;
17
+
18
+ /* stylelint-disable-next-line scss/dollar-variable-pattern */
19
+ $utilities: (
20
+ "margin-inline": (
21
+ responsive: true,
22
+ property: margin-inline-start margin-inline-end,
23
+ class: nijmegen-margin-inline,
24
+ values:
25
+ map.merge(
26
+ $nijmegen-space,
27
+ (
28
+ auto: auto,
29
+ )
30
+ ),
31
+ ),
32
+ "margin-inline-start": (
33
+ responsive: true,
34
+ property: margin-inline-start,
35
+ class: nijmegen-margin-inline-start,
36
+ values:
37
+ map.merge(
38
+ $nijmegen-space,
39
+ (
40
+ auto: auto,
41
+ )
42
+ ),
43
+ ),
44
+ "margin-inline-end": (
45
+ responsive: true,
46
+ property: margin-inline-end,
47
+ class: nijmegen-margin-inline-end,
48
+ values:
49
+ map.merge(
50
+ $nijmegen-space,
51
+ (
52
+ auto: auto,
53
+ )
54
+ ),
55
+ ),
56
+ "padding-inline": (
57
+ responsive: true,
58
+ property: padding-inline-start padding-inline-end,
59
+ class: nijmegen-padding-inline,
60
+ values:
61
+ map.merge(
62
+ $nijmegen-space,
63
+ (
64
+ auto: auto,
65
+ )
66
+ ),
67
+ ),
68
+ "padding-inline-start": (
69
+ responsive: true,
70
+ property: padding-inline-start,
71
+ class: nijmegen-padding-inline-start,
72
+ values:
73
+ map.merge(
74
+ $nijmegen-space,
75
+ (
76
+ auto: auto,
77
+ )
78
+ ),
79
+ ),
80
+ "padding-inline-end": (
81
+ responsive: true,
82
+ property: padding-inline-end,
83
+ class: nijmegen-padding-inline-end,
84
+ values:
85
+ map.merge(
86
+ $nijmegen-space,
87
+ (
88
+ auto: auto,
89
+ )
90
+ ),
91
+ ),
92
+ "margin-block": (
93
+ responsive: true,
94
+ property: margin-block-start margin-block-end,
95
+ class: nijmegen-margin-block,
96
+ values:
97
+ map.merge(
98
+ $nijmegen-space,
99
+ (
100
+ auto: auto,
101
+ )
102
+ ),
103
+ ),
104
+ "margin-block-start": (
105
+ responsive: true,
106
+ property: margin-block-start,
107
+ class: nijmegen-margin-block-start,
108
+ values:
109
+ map.merge(
110
+ $nijmegen-space,
111
+ (
112
+ auto: auto,
113
+ )
114
+ ),
115
+ ),
116
+ "margin-block-end": (
117
+ responsive: true,
118
+ property: margin-block-end,
119
+ class: nijmegen-margin-block-end,
120
+ values:
121
+ map.merge(
122
+ $nijmegen-space,
123
+ (
124
+ auto: auto,
125
+ )
126
+ ),
127
+ ),
128
+ "padding-block": (
129
+ responsive: true,
130
+ property: padding-block-start padding-block-end,
131
+ class: nijmegen-padding-block,
132
+ values:
133
+ map.merge(
134
+ $nijmegen-space,
135
+ (
136
+ auto: auto,
137
+ )
138
+ ),
139
+ ),
140
+ "padding-block-start": (
141
+ responsive: true,
142
+ property: padding-block-start,
143
+ class: nijmegen-padding-block-start,
144
+ values:
145
+ map.merge(
146
+ $nijmegen-space,
147
+ (
148
+ auto: auto,
149
+ )
150
+ ),
151
+ ),
152
+ "padding-block-end": (
153
+ responsive: true,
154
+ property: padding-block-end,
155
+ class: nijmegen-padding-block-end,
156
+ values:
157
+ map.merge(
158
+ $nijmegen-space,
159
+ (
160
+ auto: auto,
161
+ )
162
+ ),
163
+ ),
164
+ ) !default;
165
+
166
+ @import "~bootstrap/scss/utilities/api";