Comments (5)
Nailed it! I've been thinking about doing the exact same thing you proposed. It would be backwards compatible and solves the issue. I had this very issue with Dropdown Component in react toolbox. It uses an Input
under the covers and defines the same classes for label
, error
, etc. This would make this lib way better than it is right now since this is the most important caveat I see by now.
Do you want to PR? It shouldn't be difficult
from react-css-themr.
I'm still thinking about this... What about namespacing with an attribute instead of mapping? Less flexible but cleaner API. For example:
/* Section.css */
.content {
& .buttonContent{
color: red;
}
}
And assuming that your Button
has a classname API with a content
node:
import React from 'react';
import Button from './ThemedButton.js';
import theme from './section.css';
const Section = () => (
<section className={theme.content}>
<Button theme={theme} namespace="button" />
</section>
);
We can even support this namespace setup from the themr
factory function (even falling back to the component identifier)so a button can have by default a namespace that could be enabled using a simple prop namespace:
const ThemedButton = themr('button', style)(Button);
// Or... themr('ContextIdButton', style, { namespace: 'button' })(Button);
<ThemeButton theme={theme} namespaced />
Or using recompose under the hood as you do now. Thoughts?
from react-css-themr.
Namespacing looks good. Not so obvious as mapping but you don't have to list all classes manually. I like to use namespace as a second prop with the theme as you can see the namespace's name at the same place where you use it (in your parent component, not button itself.)
from react-css-themr.
Great!
from react-css-themr.
Here how I see it. namespace
and theme
props should be used together. I don't know if it makes sense to add support of the namespace with default/context styles.
from react-css-themr.
Related Issues (20)
- Receiving/passing ref HOT 7
- When using ExtractTextPlugin it break the app HOT 3
- Default theming example HOT 2
- Possible drop of support of using themr as decorator with TypeScript HOT 3
- Allow a theme composition function as option HOT 2
- Typescript compiler fails when using react css themr with error Default export of the module has or is using private name 'TReactCSSThemrTheme' HOT 3
- Backport switch to `prop-types` package to the v1 branch to add compat with react 16 HOT 5
- Publish a new version with React 16 on npm HOT 3
- Do context theme support tree shaking ?
- Context theming works when app is run but not working when app is built
- mismatch dependancy
- Themr with pure functions HOT 1
- Update to be react 16 compitable HOT 2
- how to override styling in default css for a themed component
- Has this project been abandoned? HOT 1
- Css selector with attribute not working
- Multiple class not working HOT 5
- [QUESTION] Move to Friends of React HOT 5
- Warning on console when using react v16.4 HOT 4
- React-css-themr worked perfectly locally but not worked when used it after publishing it and used it as component lib into other project 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 react-css-themr.