Skip to content

[DX][Components] Twig components case sensitivity / HTML syntax #2118

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
smnandre opened this issue Sep 1, 2024 · 8 comments
Open

[DX][Components] Twig components case sensitivity / HTML syntax #2118

smnandre opened this issue Sep 1, 2024 · 8 comments
Labels

Comments

@smnandre
Copy link
Member

smnandre commented Sep 1, 2024

TL;DR; ⏲️

  • Should we adopt a naming convention for component names in UX packages and documentation? If so, which one?
  • Should all component names be case-sensitive?

Context 🔠

While working on UX Map, @Kocal raised a question during the discussion:

Should it be <twig:ux:map /> or <twig:UX:Map />? (I noticed you used UX:Map in the twig.component tag). Or is it case-insensitive?

During the development and early stages of UX Icons, @kbond and I decided to switch from <twig:Ux:Icon /> to <twig:ux:icon /> both in the code and in the documentation.

This change felt more natural for typing and reading in the documentation. Additionally, since "<twig" is lowercase, "<twig:ux" seemed more consistent to me. As a result, we made it case-insensitive.

However, this is the only place where it works this way, as user-land component names are still case-sensitive.

Suggestions 🗳️

I’d like to gather feedback from the team and community on the following points:

Symfony UX Components

  • A0: Symfony UX component names (e.g., Map, Icon, and future ones) should be case-insensitive (in HTML syntax).
  • A1: Symfony UX components should adopt a consistent casing style in documentation, code blocks, and social media.
  • A2: Symfony UX components should use lowercase casing style in documentation, code blocks, and social media.

App/User-Land/Bundle Components

  • B0: Twig/Live Component names should be case-sensitive (as these names may be used in events, logs, etc.).
  • B1: [NEW] Twig/Live Component names should be unique in a case-insensitive form (preventing Acme:Foo and acMe:foo from being registered simultaneously).
  • B2: [NEW] We could (later) suggest the correct name when a user misspells it, or even automatically map it to the correct one.

.

I’m inclined to answer "yes" to all these points.

Let’s discuss them and hear from you if there are any concerns. :)

@smnandre
Copy link
Member Author

smnandre commented Sep 2, 2024

cc @Kocal @kbond @WebMamba :)

@Kocal
Copy link
Member

Kocal commented Sep 6, 2024

Hey Simon, thanks for opening the discussion! 🙏🏻

Symfony UX Components

Personally I prefer the form <twig:UX:Map> over <twig:ux:map>, I find it more visually distinctive between native HTML tags. I may be biased by Vue.js style guide for components naming, but I've always preferred to use PascalCase over kebab-case for components usage. For React, I didn't find anything but the AirBnb's styleguide for React, and they use PascalCase aswell.

For me:

  • A0: yes
  • A1: yes
  • A2: small no, as I prefer PascaleCase, but if everyone here prefer kebab case, let's go for kebab-case! EDIT: go for kebab-case!

App/User-Land/Bundle Components

  • B0: yeah, why not
  • B1: yes!
  • B2: yes aswell

Thanks!

@seb-jean
Copy link
Contributor

seb-jean commented Jan 1, 2025

I answer like @Kocal for the 6 points. And for my part, I prefer PascalCase to lower-case.

@Kocal
Copy link
Member

Kocal commented Feb 22, 2025

Updated A2, let's keep using kebab-case

@smnandre
Copy link
Member Author

After some though, i see no problem we use both, as user can use both. So as long we do not change again for icon ( 😅 ) if you want to change for Map, or add some Kebad case in the documentation, I agree and am ok to give a hand if you want

After all..... we are not that many to contribute here, I think we can have double vote 😅

@smnandre
Copy link
Member Author

Primer use PascalCase too, but i'm sure you now understand why i'd like to avoid it (now)

@kbond
Copy link
Member

kbond commented Feb 23, 2025

So, is the consensus that we'll use kebab for "official" components, but promote PascalCase for user-land ones?

And if this is the consensus, should #2481 be changed to kebab-case?

@smnandre
Copy link
Member Author

As you want guys, as long we do not need to refactor doc / website twice a year haha

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

5 participants