Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve Palette Types #77

Open
blainemuri opened this issue Jan 17, 2020 · 0 comments
Open

Improve Palette Types #77

blainemuri opened this issue Jan 17, 2020 · 0 comments

Comments

@blainemuri
Copy link

blainemuri commented Jan 17, 2020

Bug In Documentation

As of now it lists that the second argument for palette is always any, but when there are three arguments the type interfaces enforces the second argument to be of type number. This can be better labeled in the documentation/readme
Screen Shot 2020-01-16 at 4 23 09 PM

Feature Request

It seems a bit weird to switch on the expected types, where the second value can be either the index or the default value. A possible extension of this could be to actually allow for string | number for both the first and second arguments and to declare the default as the prop within the component.

palette(arg1) => props.theme.palette[arg1] || defaultColor
palette(arg1, arg2) => props.theme.palette[arg1][arg2] || defaultColor
palette(arg1, arg2, arg3) => props.theme.palette[arg1]?.[arg2] || arg3

<ThemeProvider>
  <SomeElement defaultColor="#000000" />
</ThemeProvider>

What this allows is for each argument to be either a string or number, and to access either an array or an object in the same way. This gives for some nicer formatting of palette when there are several different color organization options, in addition to extending the model to support more options.

const theme = {
  palette: {
    solids: {
      black: '#000000',
      white: '#FFFFFF',
    },
    gradients: {
      blue: 'linear-gradient(135deg, #75F094 0%, #75B2F0 100%)',
    }
  }
}

If going with the latter solution, the documentation issue is moot and can be ignored.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant