geist-ui icon indicating copy to clipboard operation
geist-ui copied to clipboard

Allow extending palettes

Open BasixKOR opened this issue 3 years ago • 2 comments

Feature request 🚀

  • [ ] I will create Pull Request
  • [x] It's just a suggestion

Expected

It would be nice to use more colors other than the defined names on Geist. Nice example would be brand colors, which currently doesn't really fit in current theme model.

Examples

const myTheme = {
  type: 'Custom',
  palette: {
    twitter: '#1DA1F2',
  },
};

// and use it like 

function Login() {
  return <Button type="twitter">Log in with Twitter</Button>;
}

Programme (Optional)

Others (Optional)

BasixKOR avatar May 09 '21 14:05 BasixKOR

The current value (or types) of type is fixed and not inferred from palette, to implement this feature may require changes to all components.

On the other hand, some components need to provide multiple color values, such as background, foreground, border color, color in the hover state, color in the disabled state, etc.

But I think the proposal is still very good, maybe we can specify the hue object for each component:

<Button palette={{
  primar: '#fff',
  secondary: '#000',
}} />

Each component contains at least A and may be extended with more. Manual definition and assembly when the developer wants to extend the component:

const myTheme = {
  type: 'Custom',
  palette: {
    twitter: '#1DA1F2',
  },
};

const MyButton = () => {
  const theme = useTheme()
  return <Button palette={{ primar: theme.palette.twitter }} />
}

This allows users to change just one component or customize the global. For single components, if the definition of a color is missing, the color value is automatically supplemented by inference based on the primary color.

This is going to be a big change and I would like to hear all the ideas.

unix avatar Jun 25 '21 15:06 unix

@unix

Going to bump this one intead of opennig a new one since its very similar currently the types are very defined but it would be nice to include the gradients of the default palletes

ex: <Card type="successLight" >

it would be a nice addition

Xariwey avatar Nov 28 '22 19:11 Xariwey