Design System for the City of Amsterdam http://designsystem.amsterdam
  • TypeScript 74%
  • MDX 16.1%
  • SCSS 5.5%
  • JavaScript 3.1%
  • CSS 1.1%
  • Other 0.2%
Find a file
Ruben Sibon e77c7d9f7a
fix(Storybook): Correct two contradictions on the Character Count page (#2946)
<!-- @license CC0-1.0 -->

# Correct two contradictions on the Character Count page

## Links

- [Character Count docs on this
branch](https://designsystem.amsterdam/demo-DES-1996-char-counter-docs-contradictions/?path=/docs/components-forms-character-count--docs#accessibility)
- [#2796](https://github.com/Amsterdam/design-system/pull/2796) — added
`formatText` and the six locale formatters.
- [#2841](https://github.com/Amsterdam/design-system/pull/2841) — wrote
the Design and Accessibility prose a week earlier.

## What

Corrects two statements on the Character Count documentation page that
contradict other statements on the same page.

- Features said the user "are told they've entered too many characters".
- Accessibility said the text "is fixed Dutch … and cannot be
configured".

## Why

Both were true when written and are not true now.

`formatText` and six locale formatters (`ar`, `de`, `en`, `fr`, `nl`,
`tr`) arrived in #2796 on 5 August. The Design and Accessibility
sections came from #2841 on 27 July and were never revisited, so the
page documents `formatText` under Examples and denies it exists under
Accessibility.

The Features claim was never true. Nothing tells the user in words that
they are over the limit — that is exactly the WCAG 1.4.1 shortcoming the
Accessibility section reports, and the claim talked readers out of
noticing it.

An accessibility section that overstates what a component does is worse
than no section: it is the part a reader is most likely to take on
trust.

## How

Prose only, three lines changed in one file.

Features now says what actually happens over the limit: the count keeps
counting, so it reads '12 van 10 tekens'. The surrounding sentences
about not restricting input and editing down are unchanged.

Accessibility now describes `formatText`, what the function receives,
and why that leaves word order and plural rules to the caller. A third
sentence covers setting `lang` to match, which is the part that affects
pronunciation.

The Design section and the "signalled by colour alone" paragraph are
untouched. Both are accurate, and the second describes the shortcoming
that DES-1958 fixes by replacing this component with Form Field Status.

## Checklist

- [x] Add or update unit tests
- [x] Add or update documentation
- [x] Add or update stories
- [x] Add or update exports in index.\* files
- [x] Comment `/chromatic test` and verify visual regression tests pass
- [x] Start the PR title with a Conventional Commit prefix, [as
explained
here](https://github.com/Amsterdam/design-system/blob/main/documentation/publishing.md?plain=1#L11)

## Additional notes

- This lands ahead of DES-1958, which replaces Character Count with Form
Field Status and rewrites this page. It is split out because a false
accessibility claim should not sit on `develop` for the length of that
ticket.

---------

Co-authored-by: Vincent Smedinga <v.smedinga@amsterdam.nl>
2026-09-01 16:53:06 +02:00
.github chore: Warn instead of failing when cleanup hits the delete cap (#2942) 2026-09-01 16:42:27 +02:00
.husky chore(deps): Adopt nano-staged instead of lint-staged (#2740) 2026-07-02 17:56:36 +02:00
documentation chore: Warn instead of failing when cleanup hits the delete cap (#2942) 2026-09-01 16:42:27 +02:00
packages chore(deps-dev): Bump the patch-and-minor-dev-dependencies group with 10 updates (#2956) 2026-09-01 16:34:24 +02:00
packages-proprietary chore(deps-dev): Bump the patch-and-minor-dev-dependencies group with 10 updates (#2956) 2026-09-01 16:34:24 +02:00
plop-templates feat(Metadata): Add the Metadata component (#2912) 2026-08-07 20:57:18 +02:00
storybook fix(Storybook): Correct two contradictions on the Character Count page (#2946) 2026-09-01 16:53:06 +02:00
stylelint chore(deps-dev): Bump the patch-and-minor-dev-dependencies group with 10 updates (#2950) 2026-08-21 12:57:15 +00:00
.editorconfig Initial commit 2022-11-18 11:19:08 +01:00
.gitattributes Initial commit 2022-11-18 11:19:08 +01:00
.gitignore chore(deps): Upgrade TypeScript to 6.0.3 (#2790) 2026-07-12 22:16:29 +02:00
.nano-staged.json chore(deps-dev): Bump npm-package-json-lint from 10.5.1 to 11.0.0 (#2951) 2026-08-21 13:21:24 +00:00
.npmpackagejsonlintrc.json chore: Apply the full package.json lint rule set to the proprietary packages (#2917) 2026-08-08 14:27:53 +02:00
.nvmrc chore: Use npm trusted publishing (#2278) 2025-10-31 12:18:37 +00:00
.prettierignore chore: Add instructions for AI coding agents (#2511) 2026-04-24 13:40:27 +02:00
.prettierrc.json Fix prettier issues (#462) 2023-08-03 16:48:09 +02:00
.release-please-manifest.json chore: release main (#2926) 2026-08-08 23:38:30 +02:00
.stylelintignore chore: Remove unnecessary entries from ignore files, use pnpm in contributor docs (#2489) 2026-03-27 15:35:02 +01:00
.stylelintrc.json fix(Description List): Let tokenised grid tracks shrink below the minimum content size (#2806) 2026-07-18 16:10:48 +02:00
AGENTS.md chore: Shorten agent instructions by a fifth (#2941) 2026-09-01 16:50:46 +02:00
CONTRIBUTING.md chore(pnpm): Post-v11 cleanup and explicit build step (#2639) 2026-05-22 13:58:43 +00:00
eslint.config.mjs chore: Update minor dependencies and drop the obsolete :has() feature detection (#2860) 2026-07-30 22:30:26 +02:00
eslint.rules.mjs chore(storybook): introduce #storybook and #tokens path aliases 2026-06-16 14:41:39 +02:00
LICENSE.md chore: Translate all documentation to English (#1054) 2024-01-26 15:55:19 +01:00
LICENSE.txt Initial commit 2022-11-18 11:19:08 +01:00
NOTICE.md chore(docs): Improve documentation on Spacious and Compact Mode (#2289) 2025-11-21 12:34:52 +01:00
package.json chore(deps-dev): Bump the patch-and-minor-dev-dependencies group with 10 updates (#2956) 2026-09-01 16:34:24 +02:00
plopfile.mjs chore: Insert scaffolded index entries in sorted order (#2743) 2026-07-03 01:17:16 +02:00
pnpm-lock.yaml chore(deps-dev): Bump the patch-and-minor-dev-dependencies group with 10 updates (#2956) 2026-09-01 16:34:24 +02:00
pnpm-workspace.yaml chore(deps): Install minor updates (#2938) 2026-08-18 09:08:08 +00:00
publiccode.yml chore: Enable indexing on oss.developer.overheid.nl (#2737) 2026-07-10 22:40:29 +02:00
README.md chore(Storybook): Merge and tidy the Designer and Developer guides into Guidelines (#2930) 2026-08-09 21:28:17 +02:00
release-please-config.json chore: Rename ‘proprietary’ directory to ‘packages-proprietary’ (#1969) 2025-04-04 11:42:07 +02:00
tsconfig.json chore: Raise the TypeScript lib to ES2023 (#2863) 2026-07-31 00:55:19 +02:00

Amsterdam Design System

This is the guide for the user interfaces of all digital products and services provided by the City of Amsterdam.

We offer reusable components, patterns and guides for teams that work on our websites. This helps everyone work faster and better, with more time to create value. To our citizens and businesses, all our channels look the same and work similarly; they are broadly accessible and evoke trust.

We aim to create libraries for, or support otherwise, Figma, CSS, React, React Native, Mendix, and Drupal.

A Storybook portal demonstrates our components and documentation.

Our Figma Library contains the design of our components and patterns.

Getting started

See the getting started documentation for developers on how to use our React components.

AI assistance

If you build with an AI coding assistant, connect it to our Model Context Protocol (MCP) server. Your assistant then works with real Amsterdam Design System components and their correct properties, instead of inventing markup. See connecting AI assistants to set it up.

Contributing

See the documentation for contributors.

Code of conduct

We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community. Read our Code of Conduct if you havent already.

NL Design System

This project is part of a community initiative to use NL Design System components for websites that comply with the Amsterdam Design System.

Join the #nl-design-system Slack via praatmee.codefor.nl for more information and to learn about things happening in our open-source community.

Thanks

Thanks to Chromatic for providing the visual testing platform that helps us review UI changes and catch visual regressions.

Licence

This project is free and open-source software licenced under the European Union Public License (EUPL) v1.2 or higher. Documentation is licenced as Creative Commons Zero 1.0 Universal (CC0-1.0).

The open-source licences do not cover the assets in the packages-proprietary directory. Each directory in the packages-proprietary directory specifies the applicable licence for that directory. Please read the notice for more information about proprietary assets.