@amsterdam/design-system-tokens 2.1.0 → 3.0.0

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/CHANGELOG.md CHANGED
@@ -3,6 +3,33 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [3.0.0](https://github.com/Amsterdam/design-system/compare/design-system-tokens-v2.2.0...design-system-tokens-v3.0.0) (2026-01-09)
7
+
8
+
9
+ ### Deprecations
10
+
11
+ The following tokens will be removed in release 5.0.0:
12
+
13
+ - `ams.field-set.legend.margin-block-end`
14
+ - `ams.field.gap`
15
+
16
+ ### Features
17
+
18
+ * Change our shade of black to improve contrast ([#2346](https://github.com/Amsterdam/design-system/issues/2346)) ([3ad6b78](https://github.com/Amsterdam/design-system/commit/3ad6b78b52d97c739a0847d212aa6715caa7b2e0))
19
+ * Change our shades of green to improve contrast ([#2347](https://github.com/Amsterdam/design-system/issues/2347)) ([c3f6157](https://github.com/Amsterdam/design-system/commit/c3f61573f5821bf63ffa1500f9722ac70210f8cc))
20
+ * **Field, Field Set:** Change spacing between elements ([#2358](https://github.com/Amsterdam/design-system/issues/2358)) ([6bcace7](https://github.com/Amsterdam/design-system/commit/6bcace7930b1e1247601380a4e5bff1c318bbbcf))
21
+ * **Page Header:** Add vertical space to Mega Menu in Spacious Mode ([#2298](https://github.com/Amsterdam/design-system/issues/2298)) ([3ae1729](https://github.com/Amsterdam/design-system/commit/3ae17299853fc6f35e639dfc8d9f7f97476bdbac))
22
+ * **Paragraph:** Balance line lengths of lead paragraphs ([#2309](https://github.com/Amsterdam/design-system/issues/2309)) ([afeab6e](https://github.com/Amsterdam/design-system/commit/afeab6ebe7da883fb984e23cd9d0661f3524bb60))
23
+
24
+ ## [2.2.0](https://github.com/Amsterdam/design-system/compare/design-system-tokens-v2.1.0...design-system-tokens-v2.2.0) (2025-11-21)
25
+
26
+
27
+ ### Features
28
+
29
+ * **Label, Field Set:** Add a lighter variant to Label and Legend to clarify form hierarchy in nested Field Sets ([#2291](https://github.com/Amsterdam/design-system/issues/2291)) ([3bcc039](https://github.com/Amsterdam/design-system/commit/3bcc03901cbe1b37183d774b26367a914e3bda79))
30
+ * **Page Header:** Allow adding an icon to a menu item ([#2285](https://github.com/Amsterdam/design-system/issues/2285)) ([15a830b](https://github.com/Amsterdam/design-system/commit/15a830b6068bb98c405da0013e90ac6697b20f5b))
31
+ * **Page:** Add support for a layout with a Menu ([#2263](https://github.com/Amsterdam/design-system/issues/2263)) ([51a289f](https://github.com/Amsterdam/design-system/commit/51a289fe3012981fff1bfc223a0689b9be3760a7))
32
+
6
33
  ## [2.1.0](https://github.com/Amsterdam/design-system/compare/design-system-tokens-v2.0.0...design-system-tokens-v2.1.0) (2025-10-31)
7
34
 
8
35
 
package/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  # Amsterdam Design System: Tokens
4
4
 
5
5
  This package provides all design tokens from the [Amsterdam Design System](https://designsystem.amsterdam).
6
- Use it to apply its visual design to your website or application.
6
+ Use it to apply its visual design to your websites.
7
7
  The tokens are exported in multiple formats, including CSS custom properties and JSON, making them compatible with most, if not all, technology stacks.
8
8
 
9
9
  **Note** that the values of the tokens in this package implement the branding of the City of Amsterdam.
@@ -57,11 +57,12 @@ import "@amsterdam/design-system-tokens/dist/index.theme.css"
57
57
  </body>
58
58
  ```
59
59
 
60
- ### Compact mode
60
+ ### Compact overrides
61
61
 
62
- Our branding is rather spacious for websites.
63
- The main stylesheet implements this ‘spacious mode’ as the default.
64
- A compact stylesheet is available for applications that require less white space and smaller text.
62
+ Our visual style is quite spacious.
63
+ This works well for public websites.
64
+ The main stylesheet implements this ‘Spacious Mode’ as the default.
65
+ A compact stylesheet is available for internal websites that require a high-density layout with reduced white space and smaller text.
65
66
 
66
67
  Note that the compact stylesheet is not independent – it only contains overrides.
67
68
  Import it after the main stylesheet for the correct result.
@@ -154,8 +155,8 @@ Find the [list of component tokens](https://github.com/Amsterdam/design-system/t
154
155
  This package allows the creation of a theme to reuse our components for a different brand.
155
156
  This is a key feature of [NL Design System](https://nldesignsystem.nl/) of which we are part.
156
157
 
157
- However, websites and applications for the City of Amsterdam must follow the design system as closely as possible.
158
- We repeat: websites and applications for the City of Amsterdam must follow the design system as closely as possible.
158
+ However, websites for the City of Amsterdam must follow the design system as closely as possible.
159
+ We repeat: websites for the City of Amsterdam must follow the design system as closely as possible.
159
160
 
160
161
  At the same time, we are aware that adopting a design system can pose challenges in practice.
161
162
  If there is a good reason to (temporarily) adapt a component, do so by overriding the values of its appropriate tokens in a separate stylesheet.
package/dist/compact.css CHANGED
@@ -28,6 +28,7 @@
28
28
  --ams-typography-heading-3-line-height: 1.3;
29
29
  --ams-typography-heading-4-line-height: 1.4;
30
30
  --ams-typography-heading-5-line-height: 1.4;
31
+ --ams-page-header-mega-menu-padding-block: 0;
31
32
  --ams-typography-heading-2-font-size: var(--ams-typography-body-text-x-large-font-size);
32
33
  --ams-typography-heading-3-font-size: var(--ams-typography-body-text-large-font-size);
33
34
  --ams-typography-heading-4-font-size: var(--ams-typography-body-text-font-size);
package/dist/compact.d.ts CHANGED
@@ -86,6 +86,9 @@ declare const tokens: {
86
86
  "font-size": DesignToken;
87
87
  "line-height": DesignToken;
88
88
  };
89
+ "mega-menu": {
90
+ "padding-block": DesignToken;
91
+ };
89
92
  };
90
93
  };
91
94
  };
package/dist/compact.json CHANGED
@@ -69,6 +69,9 @@
69
69
  "brand-name": {
70
70
  "font-size": "clamp(1.25rem, 1.1964rem + 0.2679vw, 1.4375rem)",
71
71
  "line-height": "1.3"
72
+ },
73
+ "mega-menu": {
74
+ "padding-block": "0"
72
75
  }
73
76
  }
74
77
  }
package/dist/compact.mjs CHANGED
@@ -43,3 +43,4 @@ export const amsGridPaddingInline =
43
43
  export const amsPageHeaderBrandNameFontSize =
44
44
  "clamp(1.25rem, 1.1964rem + 0.2679vw, 1.4375rem)";
45
45
  export const amsPageHeaderBrandNameLineHeight = "1.3";
46
+ export const amsPageHeaderMegaMenuPaddingBlock = "0";
package/dist/compact.scss CHANGED
@@ -26,6 +26,7 @@ $ams-typography-heading-2-line-height: 1.3;
26
26
  $ams-typography-heading-3-line-height: 1.3;
27
27
  $ams-typography-heading-4-line-height: 1.4;
28
28
  $ams-typography-heading-5-line-height: 1.4;
29
+ $ams-page-header-mega-menu-padding-block: 0;
29
30
  $ams-typography-heading-2-font-size: $ams-typography-body-text-x-large-font-size;
30
31
  $ams-typography-heading-3-font-size: $ams-typography-body-text-large-font-size;
31
32
  $ams-typography-heading-4-font-size: $ams-typography-body-text-font-size;
@@ -28,6 +28,7 @@
28
28
  --ams-typography-heading-3-line-height: 1.3;
29
29
  --ams-typography-heading-4-line-height: 1.4;
30
30
  --ams-typography-heading-5-line-height: 1.4;
31
+ --ams-page-header-mega-menu-padding-block: 0;
31
32
  --ams-typography-heading-2-font-size: var(--ams-typography-body-text-x-large-font-size);
32
33
  --ams-typography-heading-3-font-size: var(--ams-typography-body-text-large-font-size);
33
34
  --ams-typography-heading-4-font-size: var(--ams-typography-body-text-font-size);
package/dist/index.css CHANGED
@@ -13,8 +13,8 @@
13
13
  --ams-border-width-m: 0.125rem;
14
14
  --ams-border-width-l: 0.1875rem;
15
15
  --ams-border-width-xl: 0.25rem;
16
- --ams-color-interactive-secondary: #181818; /** Use `currentColor` instead */
17
- --ams-color-interactive-contrast: #181818;
16
+ --ams-color-interactive-secondary: #202020; /** Use `currentColor` instead */
17
+ --ams-color-interactive-contrast: #202020;
18
18
  --ams-color-interactive: #004699;
19
19
  --ams-color-interactive-disabled: #767676;
20
20
  --ams-color-interactive-hover: #003677;
@@ -24,17 +24,17 @@
24
24
  --ams-color-background: #ffffff;
25
25
  --ams-color-feedback-error: #ec0000;
26
26
  --ams-color-feedback-info: #009de6;
27
- --ams-color-feedback-success: #00a03c;
27
+ --ams-color-feedback-success: #00893c;
28
28
  --ams-color-feedback-warning: #ff9100;
29
29
  --ams-color-highlight-azure: #009de6;
30
- --ams-color-highlight-green: #00a03c;
30
+ --ams-color-highlight-green: #00893c;
31
31
  --ams-color-highlight-lime: #bed200;
32
32
  --ams-color-highlight-magenta: #e50082;
33
33
  --ams-color-highlight-orange: #ff9100;
34
34
  --ams-color-highlight-purple: #a00078;
35
35
  --ams-color-highlight-yellow: #ffe600;
36
36
  --ams-color-separator: #d1d1d1;
37
- --ams-color-text: #181818;
37
+ --ams-color-text: #202020;
38
38
  --ams-color-text-inverse: #ffffff;
39
39
  --ams-color-text-secondary: #767676;
40
40
  --ams-cursor-disabled: not-allowed;
@@ -91,8 +91,8 @@
91
91
  --ams-button-tertiary-background-color: transparent;
92
92
  --ams-button-tertiary-border-color: transparent;
93
93
  --ams-button-tertiary-hover-border-color: currentColor;
94
- --ams-call-to-action-link-background-color: #00a03c;
95
- --ams-call-to-action-link-hover-background-color: #007c2e;
94
+ --ams-call-to-action-link-background-color: #00893c;
95
+ --ams-call-to-action-link-hover-background-color: #10552b;
96
96
  --ams-date-input-disabled-calender-picker-indicator-background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 36 36' fill='%23767676'><path d='M28 6V2h-4v4H12V2H8v4H2v28h32V6zm2 24H6V14h24z'/><path d='M10 17h4v4h-4zm6 0h4v4h-4zm6 0h4v4h-4zm-12 6h4v4h-4zm6 0h4v4h-4z'/></svg>"); /** Use the token with ‘calendar’ spelled correctly instead */
97
97
  --ams-date-input-disabled-calendar-picker-indicator-background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 36 36' fill='%23767676'><path d='M28 6V2h-4v4H12V2H8v4H2v28h32V6zm2 24H6V14h24z'/><path d='M10 17h4v4h-4zm6 0h4v4h-4zm6 0h4v4h-4zm-12 6h4v4h-4zm6 0h4v4h-4z'/></svg>");
98
98
  --ams-date-input-hover-calender-picker-indicator-background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 36 36' fill='%23003677'><path d='M28 6V2h-4v4H12V2H8v4H2v28h32V6zm2 24H6V14h24z'/><path d='M10 17h4v4h-4zm6 0h4v4h-4zm6 0h4v4h-4zm-12 6h4v4h-4zm6 0h4v4h-4z'/></svg>"); /** Use the token with ‘calendar’ spelled correctly instead */
@@ -132,6 +132,8 @@
132
132
  --ams-ordered-list-ordered-list-item-padding-inline-start: 0.25rem; /** The total level >=2 indentation for Amsterdam is 28 pixels, or 1.75rem. */
133
133
  --ams-page-footer-spotlight-background-color: #004699;
134
134
  --ams-page-max-inline-size: 90rem;
135
+ --ams-page-with-menu-max-inline-size: 120rem;
136
+ --ams-paragraph-large-text-wrap: balance;
135
137
  --ams-search-field-input-cancel-button-background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'><path fill='%23004699' fill-rule='evenodd' d='M29.333 5.47 26.53 2.668 16 13.187 5.47 2.666 2.668 5.47 13.187 16 2.666 26.53l2.804 2.803L16 18.813l10.53 10.52 2.803-2.804L18.813 16z'/></svg>");
136
138
  --ams-select-background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'><path fill='%23004699' fill-rule='evenodd' d='m16 25.757-16-16 2.91-2.9L16 19.937l13.09-13.08 2.91 2.9z'/></svg>");
137
139
  --ams-select-disabled-background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'><path fill='%23767676' fill-rule='evenodd' d='m16 25.757-16-16 2.91-2.9L16 19.937l13.09-13.08 2.91 2.9z'/></svg>");
@@ -413,15 +415,22 @@
413
415
  --ams-error-message-font-weight: var(--ams-typography-body-text-font-weight);
414
416
  --ams-error-message-gap: var(--ams-space-xs);
415
417
  --ams-error-message-line-height: var(--ams-typography-body-text-line-height);
416
- --ams-field-set-invalid-border-inline-start: var(--ams-border-width-l) solid var(--ams-color-feedback-error);
417
- --ams-field-set-invalid-padding-inline-start: var(--ams-space-m);
418
+ --ams-field-set-legend-margin-block-end: var(--ams-space-s);
418
419
  --ams-field-set-legend-color: var(--ams-color-text);
419
420
  --ams-field-set-legend-font-family: var(--ams-typography-font-family);
420
421
  --ams-field-set-legend-font-weight: var(--ams-typography-heading-font-weight);
421
422
  --ams-field-set-legend-line-height: var(--ams-typography-heading-3-line-height);
422
- --ams-field-set-legend-margin-block-end: var(--ams-space-s);
423
423
  --ams-field-set-legend-text-wrap: var(--ams-typography-heading-text-wrap);
424
+ --ams-field-set-legend-in-fieldset-font-weight: var(--ams-typography-body-text-font-weight);
425
+ --ams-field-set-child-margin-block-end: var(--ams-space-xs);
426
+ --ams-field-set-child-before-error-message-margin-block-end: var(--ams-space-s);
427
+ --ams-field-set-child-before-field-or-field-set-margin-block-end: var(--ams-space-m);
428
+ --ams-field-set-child-between-fields-and-field-sets-margin-block-end: var(--ams-space-l);
429
+ --ams-field-set-invalid-border-inline-start: var(--ams-border-width-l) solid var(--ams-color-feedback-error);
430
+ --ams-field-set-invalid-padding-inline-start: var(--ams-space-m);
424
431
  --ams-field-gap: var(--ams-space-s);
432
+ --ams-field-child-margin-block-end: var(--ams-space-xs);
433
+ --ams-field-child-before-error-message-margin-block-end: var(--ams-space-s);
425
434
  --ams-field-invalid-border-inline-start: var(--ams-border-width-l) solid var(--ams-color-feedback-error);
426
435
  --ams-field-invalid-padding-inline-start: var(--ams-space-m);
427
436
  --ams-figure-gap: var(--ams-space-s);
@@ -471,6 +480,7 @@
471
480
  --ams-heading-text-wrap: var(--ams-typography-heading-text-wrap);
472
481
  --ams-heading-inverse-color: var(--ams-color-text-inverse);
473
482
  --ams-hint-font-weight: var(--ams-typography-body-text-font-weight);
483
+ --ams-hint-in-fieldset-color: var(--ams-color-text-secondary);
474
484
  --ams-icon-button-color: var(--ams-color-interactive);
475
485
  --ams-icon-button-cursor: var(--ams-cursor-interactive);
476
486
  --ams-icon-button-outline-offset: var(--ams-focus-outline-offset);
@@ -515,6 +525,7 @@
515
525
  --ams-label-font-weight: var(--ams-typography-heading-font-weight);
516
526
  --ams-label-line-height: var(--ams-typography-heading-3-line-height);
517
527
  --ams-label-text-wrap: var(--ams-typography-heading-text-wrap);
528
+ --ams-label-in-fieldset-font-weight: var(--ams-typography-body-text-font-weight);
518
529
  --ams-link-list-gap: var(--ams-space-s);
519
530
  --ams-link-list-link-font-family: var(--ams-typography-font-family);
520
531
  --ams-link-list-link-font-size: var(--ams-typography-body-text-font-size);
@@ -588,6 +599,7 @@
588
599
  --ams-page-header-brand-name-font-weight: var(--ams-typography-heading-font-weight);
589
600
  --ams-page-header-brand-name-line-height: var(--ams-typography-heading-3-line-height);
590
601
  --ams-page-header-brand-name-text-wrap: var(--ams-typography-heading-text-wrap);
602
+ --ams-page-header-mega-menu-padding-block: var(--ams-space-l);
591
603
  --ams-page-header-mega-menu-button-cursor: var(--ams-cursor-interactive);
592
604
  --ams-page-header-mega-menu-button-label-open-font-weight: var(--ams-typography-body-text-bold-font-weight);
593
605
  --ams-page-header-menu-column-gap: var(--ams-space-l);
@@ -599,12 +611,13 @@
599
611
  --ams-page-header-menu-item-line-height: var(--ams-typography-body-text-line-height);
600
612
  --ams-page-header-menu-item-outline-offset: var(--ams-focus-outline-offset);
601
613
  --ams-page-header-menu-item-padding-block: var(--ams-space-xs);
614
+ --ams-page-header-menu-link-gap: var(--ams-space-xs);
602
615
  --ams-page-header-menu-link-text-decoration-line: var(--ams-links-subtle-text-decoration-line);
603
616
  --ams-page-header-menu-link-text-decoration-thickness: var(--ams-links-text-decoration-thickness);
604
617
  --ams-page-header-menu-link-text-underline-offset: var(--ams-links-text-underline-offset);
605
618
  --ams-page-header-menu-link-hover-text-decoration-line: var(--ams-links-subtle-hover-text-decoration-line);
606
619
  --ams-page-header-navigation-column-gap: var(--ams-space-l);
607
- --ams-page-header-navigation-row-gap: var(--ams-space-s);
620
+ --ams-page-header-navigation-row-gap: var(--ams-space-l);
608
621
  --ams-page-heading-color: var(--ams-color-text);
609
622
  --ams-page-heading-font-family: var(--ams-typography-font-family);
610
623
  --ams-page-heading-font-size: var(--ams-typography-heading-0-font-size);
@@ -880,6 +893,7 @@
880
893
  --ams-page-header-brand-name-font-size: var(--ams-typography-heading-3-font-size);
881
894
  --ams-page-header-menu-item-color: var(--ams-links-color);
882
895
  --ams-page-header-menu-item-hover-color: var(--ams-links-hover-color);
896
+ --ams-page-with-menu-area-skip-link-margin-inline-end: var(--ams-grid-padding-inline); /** Must be the Grid inline padding, to make sure Skip Link and Grid line up */
883
897
  --ams-pagination-link-color: var(--ams-links-color);
884
898
  --ams-pagination-link-hover-color: var(--ams-links-hover-color);
885
899
  --ams-password-input-background-color: var(--ams-inputs-background-color);
package/dist/index.d.ts CHANGED
@@ -719,22 +719,43 @@ declare const tokens: {
719
719
  "line-height": DesignToken;
720
720
  };
721
721
  "field-set": {
722
- invalid: {
723
- "border-inline-start": DesignToken;
724
- "padding-inline-start": DesignToken;
725
- };
726
722
  legend: {
723
+ "margin-block-end": DesignToken;
727
724
  color: DesignToken;
728
725
  "font-family": DesignToken;
729
726
  "font-size": DesignToken;
730
727
  "font-weight": DesignToken;
731
728
  "line-height": DesignToken;
732
- "margin-block-end": DesignToken;
733
729
  "text-wrap": DesignToken;
730
+ "in-fieldset": {
731
+ "font-weight": DesignToken;
732
+ };
733
+ };
734
+ child: {
735
+ "margin-block-end": DesignToken;
736
+ "before-error-message": {
737
+ "margin-block-end": DesignToken;
738
+ };
739
+ "before-field-or-field-set": {
740
+ "margin-block-end": DesignToken;
741
+ };
742
+ "between-fields-and-field-sets": {
743
+ "margin-block-end": DesignToken;
744
+ };
745
+ };
746
+ invalid: {
747
+ "border-inline-start": DesignToken;
748
+ "padding-inline-start": DesignToken;
734
749
  };
735
750
  };
736
751
  field: {
737
752
  gap: DesignToken;
753
+ child: {
754
+ "margin-block-end": DesignToken;
755
+ "before-error-message": {
756
+ "margin-block-end": DesignToken;
757
+ };
758
+ };
738
759
  invalid: {
739
760
  "border-inline-start": DesignToken;
740
761
  "padding-inline-start": DesignToken;
@@ -867,6 +888,9 @@ declare const tokens: {
867
888
  };
868
889
  hint: {
869
890
  "font-weight": DesignToken;
891
+ "in-fieldset": {
892
+ color: DesignToken;
893
+ };
870
894
  };
871
895
  "icon-button": {
872
896
  color: DesignToken;
@@ -981,6 +1005,9 @@ declare const tokens: {
981
1005
  "font-weight": DesignToken;
982
1006
  "line-height": DesignToken;
983
1007
  "text-wrap": DesignToken;
1008
+ "in-fieldset": {
1009
+ "font-weight": DesignToken;
1010
+ };
984
1011
  };
985
1012
  "link-list": {
986
1013
  gap: DesignToken;
@@ -1193,6 +1220,7 @@ declare const tokens: {
1193
1220
  "text-wrap": DesignToken;
1194
1221
  };
1195
1222
  "mega-menu": {
1223
+ "padding-block": DesignToken;
1196
1224
  button: {
1197
1225
  cursor: DesignToken;
1198
1226
  label: {
@@ -1219,6 +1247,7 @@ declare const tokens: {
1219
1247
  };
1220
1248
  };
1221
1249
  link: {
1250
+ gap: DesignToken;
1222
1251
  "text-decoration-line": DesignToken;
1223
1252
  "text-decoration-thickness": DesignToken;
1224
1253
  "text-underline-offset": DesignToken;
@@ -1246,6 +1275,12 @@ declare const tokens: {
1246
1275
  page: {
1247
1276
  "background-color": DesignToken;
1248
1277
  "max-inline-size": DesignToken;
1278
+ "with-menu": {
1279
+ "max-inline-size": DesignToken;
1280
+ "area-skip-link": {
1281
+ "margin-inline-end": DesignToken;
1282
+ };
1283
+ };
1249
1284
  };
1250
1285
  pagination: {
1251
1286
  "font-family": DesignToken;
@@ -1285,6 +1320,7 @@ declare const tokens: {
1285
1320
  large: {
1286
1321
  "font-size": DesignToken;
1287
1322
  "line-height": DesignToken;
1323
+ "text-wrap": DesignToken;
1288
1324
  };
1289
1325
  };
1290
1326
  "password-input": {