chasefleming/elem-go

gen the whole html5 model

Opened this issue · 15 comments

https://github.com/delaneyj/gostar is a htmx style system that has strong typing support for all the of the html5 standard:

Its generated to here: https://github.com/delaneyj/gostar/tree/main/elements

It looks like its not that hard to reuse this as a basis to gen into https://github.com/chasefleming/elem-go/blob/main/elements.go

Then every possible html5 element and attribute is covered and strongly typed.

cc @delaneyj

I agree @gedw99 strong typing on the elements would be nice. I have been thinking about how to do it without burdening the user to know many different types given this library follows a different pattern. It would be a breaking change though so I'm delaying implementing it most likely until a v1 or near that.

I build off the HTML/SVG specs... If you have ideas around this @chasefleming I'm happy to collab

I'll put together my thoughts on what I was thinking for the pattern and post it soon to get feedback from you all.

No movement in n this yet @chasefleming

I have been playing with fully component libs that’s are already baked to make it easy to build projects.

https://daisyui.com etc

@gedw99 just to clarify regarding this issue so I can address it properly, are you looking for the elements to have type safety in terms attributes or looking for a component library on top of this library?

component lib on top of it would be highly popular I think.

what do you think ?

Yep, I agree. Funny you should mention that @gedw99 , because I'm actually working on a separate component library with this library as its base. It's not ready yet, but I can make it public early if you want to start using it in its early form. If anyone else is reading this though, I highly encourage as many component libraries as possible to be built on top of this one. The more the merrier.

thats wonderful.
Yes I would love to see the community start to build reusable components like your doing. I hope that this gets traction.

Please if you can let me see this repo , even if not finished that would be great. I will see what I can add / help.

Maybe also worth eventually making a TODO of components needed. A bit like what the DaisyUI web site has.

@gedw99 sounds good. I'll post something as soon I have it ready to use in an alpha state. Will speed up my development now that I know someone needs it :)

Will be happy to help ..

there are a ton of golang htmx devs that need something like this. Not just me. I am going to use it to build high quality forum software that will be open .

https://github.com/Depado/pb-templ-htmx-tailwind Is one of many. They use templ as do many but I think there is definitely some that want full control of the html like what go-elem does.

Having full control is always best if you need flexibility

So, @gedw99, would you prefer an elem-go component library that has simple-to-use components—you just pass in your arguments and receive updates and bug fixes, similar to Chakra UI—or a tool like Shadcn that generates the component files for you and allows complete customization because you have the code, but doesn't provide updates and bug fixes?

Shadcn seems like a great one, because it will provide a base to get going quickly for devs.

I think that we should aim to provide bug fixes by using elem-go to build the Shadcn at runtime, so that we avoid fragmentation, and build a strong base and then many devs will use it and also help fix things.

Style Customisations

elem-go styles and attributes should be enough for devs to alter the styles. You even have a style manage. SO then a dev can pass that in.

I am really curious what you think too.

The component library I'm building is built on top of elem-go, with the overriding of styles and attributes available through the component props, but I guess I don't see a need a CLI or component library have to be separate. Once one is built, the other can write them into files if a developer prefers that approach.

This sound great . When you have the basics setup I would be very happy to contribute.

Takes ages to fill out a decent library of components . Luckily Shadcn has done all the really hard work

Feel free to grab me on telegram if you need to also