feat!: use a giant multiselect instead of individual toggles for features (#695)
As we are adding more features, the number of toggles is getting out of hand. A multiselect could save a few keystrokes for most users.
I also take this opportunity to change the prompts library to `@clack/prompts`.
(For context: `create-astro`, `sv`, `create-preact`, `create-solid`, `create-qwik` all use `@clack/prompts`, `create-vite` recently switched to `@clack/prompts` too, while `create-next-app` uses `prompts`)
The color library is changed to `picocolors`. IMO `kleur` is still the smaller library because of treeshaking. But `@clack/prompts` already comes with `picocolors` as a dependency, so by not adding `kleur`, we save a few bytes.
---
This is a proof-of-concept PR. I haven't put much consideration into the code style yet. Nor have I updated the i18n messages. I will do that if this change is accepted.
See the result in a screen recording:
[](https://asciinema.org/a/Aq334bHe0tJBpuxLNQyVAyzXb)
---
TODOs:
- [x] Clean up the code (wrap the `isCancel` condition; update the `needsEslint` type, etc.)
- [ ] I think we should remove the `packageName` related logic but it can be postponed into another PR
- [ ] Get the message translations reviewed
* chore: small formatting improvements to the intro/outro message [skip ci]
Still much work to do. But it's acceptable for now.
* chore: unselect -> deselect
* refactor: update English prompts
* docs: update all the locales with the new prompts
* refactor: remove some duplicated or redundant code
* refactor: further cleanup of codebase
* build: remove alias for `prompts` package
* docs: Update fr-FR.json [skip ci]
* i18n: add translations for the "should not be empty" message