Hey; as Pinceau has grown into the theming engine for @nuxt-themes org, I would like it to be a bit more modulable in its usage and project dependencies impact.
The plan for me is to convert the big Vite plugin that Pinceau is right now into a set of smaller plugins splitted that way:
@pinceau/theme
Would offer all the theming and design tokens layer without any bundle size impact except the generated CSS
=> any project that want to uses Pinceau solely for https://nuxt.studio compatibility or theming management purposes to not be bothered with heavier dependencies.
=> improves Pinceau compatibility with other CSS engines or frameworks
@pinceau/static
Would handle all the css() static features and transforms, still allowing to use Pinceau with 0kb of JavaScript code added to your project
@pinceau/runtime
Would handle all runtime features like computedStyles, variants and cssProp and add the Pinceau runtime engine to your project
Rescoping this part will also be a great opportunity to rewrite the engine from all the learnings of previous iterations, I've spotted a lot of things to improve there
@pinceau/nuxt
Would continue handling first-class integration with Nuxt
pinceau
For convenience, this package will still be released and include all the previous ones as dependencies, that way Pinceau always stays 1 dependency away
There would probably be a @pinceau/shared package in between all these "user-facing" ones that would share bits of codes and typings between all these other packages.
Also, this is a very great opportunity to add a test suite for each package, that will improve the stability of Pinceau and the coherence of its feature set by a lot.
Hey; as Pinceau has grown into the theming engine for
@nuxt-themes
org, I would like it to be a bit more modulable in its usage and project dependencies impact.The plan for me is to convert the big Vite plugin that Pinceau is right now into a set of smaller plugins splitted that way:
@pinceau/theme
@pinceau/static
css()
static features and transforms, still allowing to use Pinceau with 0kb of JavaScript code added to your project@pinceau/runtime
computedStyles
,variants
andcssProp
and add the Pinceau runtime engine to your project@pinceau/nuxt
pinceau
There would probably be a
@pinceau/shared
package in between all these "user-facing" ones that would share bits of codes and typings between all these other packages.Also, this is a very great opportunity to add a test suite for each package, that will improve the stability of Pinceau and the coherence of its feature set by a lot.
This indeed is a big piece work, that already has started in the https://github.com/Tahul/pinceau/tree/feat/rewrite-engine branch :)