@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/LICENSE.md +288 -0
- package/README.md +278 -0
- package/dist/container.css +51 -0
- package/dist/grid.css +430 -0
- package/dist/layout.css +4275 -0
- package/dist/layout.min.css +1 -0
- package/dist/spacing.css +3793 -0
- package/package.json +31 -0
- package/rollup.config.mjs +63 -0
- package/src/_breakpoints.scss +12 -0
- package/src/_variables.scss +78 -0
- package/src/container.scss +56 -0
- package/src/grid.scss +34 -0
- package/src/layout.scss +3 -0
- package/src/spacing.scss +166 -0
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
|
+
}
|
package/src/layout.scss
ADDED
package/src/spacing.scss
ADDED
|
@@ -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";
|