Open cchaos opened 4 years ago
css
prop on an object prop apply as expectedcreateElement
usages, replace with emotion’s createElement equivalent?css
is applied on a custom component which element gets the style? What if there's a fragment at the top level?See https://github.com/elastic/eui/issues/5685
Can we create a EuiThemeCharts similar to EuiThemeDefault that can be used primarily as a React hook to pass the theme down to an elastic-charts implementation? And it know the light/dark color mode automatically.
Will EUI theme be compatible with the theme specification used in theme-ui and styled system?
👋 Hi @lightwave, we aren't explicitly building our themes to be compatible, but from the looks at that documentation, it's just a way to store your own theme tokens to then provide it to the UI library of your choice. Our tokens will be specifically designed to how we use them in our components. We're continuing to build out the docs but you can start taking a look at what our JSON theming object looks like here: https://elastic.github.io/eui/#/theming/global-values
👋 Hi @lightwave, we aren't explicitly building our themes to be compatible, but from the looks at that documentation, it's just a way to store your own theme tokens to then provide it to the UI library of your choice. Our tokens will be specifically designed to how we use them in our components. We're continuing to build out the docs but you can start taking a look at what our JSON theming object looks like here: https://elastic.github.io/eui/#/theming/global-values
You're correct that theme-ui uses its own token, but there are name conflict since both eui and theme-ui uses the underlying emotion theme provider. theme-ui expects the breakpoints attribute to be an array while eui expects the breakpoints in the theme object to be an object. After eui inject its theme object into emotion, it broke the processing in theme-ui where it expects it to be an array.
@lightwave I've converted your questions to a discussion to keep this Meta issue centered around tasks. https://github.com/elastic/eui/discussions/5351
Keen to help out with the implementation and rollout for this. Our use case:
"primary"
, "primaryText"
colors at runtime using the EuiThemeProvider
@elastic/eui/dist/eui_theme_amsterdam_light.css
css file in our bundle.It seems that we're blocked by this PR https://github.com/elastic/eui/pull/4575 which will outline the game plan for moving forward & converting all other components from sass to emotion. What is the current status of this - and how can we help move this PR closer to alpha/beta/production?
👋 Hey @jlalmes, that's exciting and we'd absolutely love the help during the conversion. You are correct about #4575 being the next step in the process. We like to put a lot of thinking up front in the endeavors so it's less likely that we look back and wish we had done it differently 😄 . We've tentatively given ourselves the typically slow month of December to figure that part out and have a final plan hopefully by the beginning of 2022. We totally understand your pain points and we hope this will solve most of them. Mostly we've been having to juggle prioritizing this work in tandem with other consumer priorities.
This is a meta ticket to discuss the rollout plan of the CSS in JS solution (Emotion). It is for documenting the expected upgrade process both within EUI and by consuming applications, and being transparent about our timeline.
(Tentative) Timeline & tasks
Spring 2021:
Get the contexts built out and (partially) used in the EUI components and docs, as well as thoroughly tested in downstream applications like Kibana and Cloud. Figure out all the dependencies, hooks and possible state management that go with it.
themeName
colorMode: ‘light’ | ‘dark’
{ colors: {primar, secondary, etc} }
<ColorMode>
aka:<DarkMode>{component}</DarkMode>
for switching of themes at the component level (#4440)Summer 2021:
Fall 2021:
Start shifting component styles from SASS to JS. This part will probably take a full year and probably means phasing out the old 'legacy' theme, making Amsterdam default.
@emotion/react
(#5121) from this point forward using only the generated CSS is not supported, EUI must be used through ReactBeyond component conversions:
styled-components
to EmotionNeeds discussion
ghost
andink
in favor ofEuiThemeProvider
+colorMode
(see discussion)className
s was something Caroline and Greg were pushing for. I'm not convinced that it's even feasible considering Kibana however.