Skip to content

Conversation

@anuraghazra
Copy link
Contributor

On the userland, create a declaration file and copy paste this code:

// global.d.ts
import {
  DeepMerge,
  DefaultTheme,
  Renderlesskit,
} from "@renderlesskit/react-tailwind";
import tailwindConfig from "./tailwind.config";

type UserTheme = typeof tailwindConfig.components.extend;

declare module "@renderlesskit/react-tailwind" {
  declare namespace Renderlesskit {
    interface Theme {
      components: DeepMerge<DefaultTheme, UserTheme>;
    }
  }
}

@vercel
Copy link

vercel bot commented Jan 8, 2021

This pull request is being automatically deployed with Vercel (learn more).
To see the status of your deployment, click below or on the icon next to each commit.

🔍 Inspect: https://vercel.com/timelessco/renderlesskit-react-tailwind/fyf0sbb29
✅ Preview: https://renderlesskit-react-tailwind-git-typesafe-theme-extend.timelessco.vercel.app

@anuraghazra
Copy link
Contributor Author

anuraghazra commented Jan 11, 2021

Instead of local module augmentation, converted to use global namespace.. much cleaner and easier to access the Theme type and also solves the problem where doing module augmentation on the whole module overwrites the internal types in the Renderlesskit namespace

declaration file will look like this

import { DefaultTheme } from "@renderlesskit/react-tailwind";
import tailwindConfig from "./tailwind.config";

type UserTheme = typeof tailwindConfig.components.extend;

declare global {
  namespace Renderlesskit {
    interface Theme {
      components: MergeTheme<DefaultTheme, UserTheme>;
    }
  }
}

* feat: theme presert support for end users

* chore: use generics to get the tailwind type from userland

* chore: resolve default tailwindconfig from userland

* feat: improved preset support
Copy link
Contributor

@navin-moorthy navin-moorthy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM 🎉

@anuraghazra anuraghazra merged commit 915cf82 into simple-forward-refs Jan 12, 2021
@anuraghazra anuraghazra deleted the typesafe-theme-extend branch January 12, 2021 10:03
navin-moorthy added a commit that referenced this pull request Jan 18, 2021
* chore: improved storybook performance

* chore: migrate rest of the components to forwardRefAsSimple

* chore: added jsdoc comments in forwardRefWithAsSimple

* build(purge): 💚  fix storybook missing styles

* feat: added support for typesafe theming (#34)

* feat: added support for typesafe theming

* chore: global namespace instead of local, migrated all components to use getThemeValue

* chore: added MergeTheme utility

* feat: added theme preset support (#35)

* feat: theme presert support for end users

* chore: use generics to get the tailwind type from userland

* chore: resolve default tailwindconfig from userland

* feat: improved preset support

* chore: fix test utils render types

* chore: added tailwind default autocomplete support in preset

* chore: migrate components to forwardRefWithAs

* build(purge): 💚  update purge & improve variant generation

* style(tag): matched tag styles to figma file

* chore(deps): ⬆️  update deps & refactor storybook preview

* test(icon): added test for Icon  (#36)

* test(icon): added tests for icon

* chore: update snapshots

* test: removed snapshot tests

* build(styles): 💚  fix build by moving tailwind css to src

Co-authored-by: Navin <[email protected]>
navin-moorthy added a commit that referenced this pull request Jan 18, 2021
* feat(context): ✨  add themecontext exp

* feat(theme): ✨  finish theme provider experiment

* chore: remove themeType file and added ts types for extend

* test: fixed all tests

* feat(theme): ✨  provide ocx through context by getting the properties generated

* build(theme): 👷  fix build error & variant override issue

* feat: added typescript support for extended theme values

* feat(theme): ✨  add support for overridding pseudo variants aswell

* feat(cli): ✨  add a cli for generating tailwind propertie

npx https://gist.github.com/navin-moorthy/3f9dabd6b6c3aa0f8808a15883df7737

* fix(cli): 🐛  fix cli silent bug in window because of unix command

* refactor(theme): ♻️  update types for theme file

* feat(variant): ✨  add base `lib` variant (#32)

* test(avatar): added avatar image loading/error tests (#27)

* feat(avatar): initial avatar api

* feat(avatar): added badge & fallback support both

* chore: remove rfc file

* chore: remove extra div layer

* chore: types refactor & export all types

* feat(avatar): added initial AvatarGroup

* feat(avatar): added AvatarGroup component

* refactor(avatar): extracted out AvatarImage

* chore: added tooltip storybook to avatar

* test(avatar): added test for avatar component

* test(avatar): added test for AvatarGroup

* style(avatar): match avatar size with figma file

* chore(avatar): fix avatar icon prop

* feat(avatar): added responsive badges and statuses

* test(avatar): added avatar image load tests

* chore: cleanups

* test: added common test utils (#29)

* test: added a11y test util

* chore: test naming change

* test: improved & extracted out mockImage

* feat(variant): ✨  add before variant

* feat(stack): ✨  stack with other variants

* feat(variants): ✨  add missing variants with proper variant order

* refactor(variants): ✨  use the base variants in the themes with pseudo classes

* chore: theme css fixes

* refactor(variants): ♻️  simplify config file

* refactor(override): ♻️  remove overrides & fix tests

* refactor(config): ♻️  remove attention seeking comments

Co-authored-by: Anurag Hazra <[email protected]>

* feat(button): ✨  improved the button with latest design

* fix(scripts): 🐛  remove scripts

* build(purge): 💚  add purge to the storybook

* Improved storybook performance & migrate to forwardRefSimple (#33)

* chore: improved storybook performance

* chore: migrate rest of the components to forwardRefAsSimple

* chore: added jsdoc comments in forwardRefWithAsSimple

* build(purge): 💚  fix storybook missing styles

* feat: added support for typesafe theming (#34)

* feat: added support for typesafe theming

* chore: global namespace instead of local, migrated all components to use getThemeValue

* chore: added MergeTheme utility

* feat: added theme preset support (#35)

* feat: theme presert support for end users

* chore: use generics to get the tailwind type from userland

* chore: resolve default tailwindconfig from userland

* feat: improved preset support

* chore: fix test utils render types

* chore: added tailwind default autocomplete support in preset

* chore: migrate components to forwardRefWithAs

* build(purge): 💚  update purge & improve variant generation

* style(tag): matched tag styles to figma file

* chore(deps): ⬆️  update deps & refactor storybook preview

* test(icon): added test for Icon  (#36)

* test(icon): added tests for icon

* chore: update snapshots

* test: removed snapshot tests

* build(styles): 💚  fix build by moving tailwind css to src

Co-authored-by: Navin <[email protected]>

Co-authored-by: Anurag <[email protected]>
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

Successfully merging this pull request may close these issues.

3 participants