Comments (6)
@ncknuna This should be fixed in release 1.1.3. The issue was that macaron tries to extract every call of styled functions, but it was unable to do so because of a variable reference that it couldn't resolve. In this case you want to opt out of macaron's extraction since you know you will only call it inside macaron$
and it will be extracted later. So you can add a leading comment to the function calls with macaron-ignore
like
const Component = /* macaron-ignore */ styled("button", {});
/* macaron-ignore */ globalStyle(selector, styles)
macaron will skip extracting these functions and will directly extract where you've called macaron$
. Just add these comments inside sampleFn
and it should work
from macaron.
Another thing, you can't return a styled component from macaron$()
because the return value needs to be serialised and component declarations are functions and can't be serialised.
from macaron.
Thanks for the quick fix! I forked and modified the previous stackblitz and now it works: https://stackblitz.com/edit/macaron-css-macaron-tj3yss?file=src/App.tsx
The main concern I have now is that it's a bit verbose, needing to be wrapped by both macaron$
and sampleFn
:
const MyComponent = getStyledPrimativeComponent(
'div',
macaron$(() =>
sampleFn({
fontSize: 24,
backgroundColor: 'green',
'& .inner': {
backgroundColor: 'blue',
},
})
)
);
Can you think of any way to make this a bit more elegant? Also happy to take this to a discussion now that the original issue was fixed, and close this one.
from macaron.
I have a few ideas on how this can be made less verbose. Lets move this to a discussion
from macaron.
Vanilla-extract also has a concept of function serialisers that it uses to serialise recipes etc, which allow them to be returned from macaron$
. Maybe styled
can also be made into a serialisable function, so you can just return it directly
from macaron.
Started disccusion here: #26
Closing this as completed
from macaron.
Related Issues (20)
- Composing Components Type Error "... is not assignable to parameter of type 'string'" HOT 6
- Shipping native Macaron functions along with design system HOT 1
- Svelte/general vite support? HOT 4
- Sprinkles-like API HOT 4
- Esbuild example with .html HOT 1
- [plugin:vite:import-analysis] Failed to parse source for import analysis because the content contains invalid JS syntax. If you are using JSX, make sure to name the file with the .jsx or .tsx extension. HOT 4
- Question: is it possible to use child selectors?
- styled first parameter needs extended typing HOT 2
- Dynamic styling example in docs doesn't work HOT 4
- Forward prop types when styling a custom component HOT 7
- Ability to extend babel config in Vite? HOT 2
- Prop "as" of styled components can be a component HOT 4
- Console warning when sourcemaps are enabled HOT 2
- Integration of Kobalte or Ark with Macaron: Is it Possible to Combine Them? HOT 2
- Vite build watch doesn't work with Macaron HOT 7
- Is it possible to support the responsive variants approach from Stitches? HOT 1
- styled components don't overwrite their parent when they come from another file
- qwik js support HOT 3
- Dynamic styling example in docs (still) doesn't work HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from macaron.