@channel.io/bezier-react 3.0.0 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. package/dist/cjs/components/AlphaTokenProvider/TokenProvider.js +40 -0
  2. package/dist/cjs/components/AlphaTokenProvider/TokenProvider.js.map +1 -0
  3. package/dist/cjs/components/AppProvider/AppProvider.js +5 -1
  4. package/dist/cjs/components/AppProvider/AppProvider.js.map +1 -1
  5. package/dist/cjs/components/ThemeProvider/ThemeProvider.js +20 -7
  6. package/dist/cjs/components/ThemeProvider/ThemeProvider.js.map +1 -1
  7. package/dist/cjs/index.js +3 -0
  8. package/dist/cjs/index.js.map +1 -1
  9. package/dist/cjs/packages/bezier-tokens/dist/alpha/esm/darkTheme.js +1719 -0
  10. package/dist/cjs/packages/bezier-tokens/dist/alpha/esm/darkTheme.js.map +1 -0
  11. package/dist/cjs/packages/bezier-tokens/dist/alpha/esm/global.js +1260 -0
  12. package/dist/cjs/packages/bezier-tokens/dist/alpha/esm/global.js.map +1 -0
  13. package/dist/cjs/packages/bezier-tokens/dist/alpha/esm/index.js +14 -0
  14. package/dist/cjs/packages/bezier-tokens/dist/alpha/esm/index.js.map +1 -0
  15. package/dist/cjs/packages/bezier-tokens/dist/alpha/esm/lightTheme.js +1719 -0
  16. package/dist/cjs/packages/bezier-tokens/dist/alpha/esm/lightTheme.js.map +1 -0
  17. package/dist/cjs/styles/components/elevation.module.scss.js +1 -1
  18. package/dist/cjs/styles.css +1 -1
  19. package/dist/esm/components/AlphaTokenProvider/TokenProvider.mjs +37 -0
  20. package/dist/esm/components/AlphaTokenProvider/TokenProvider.mjs.map +1 -0
  21. package/dist/esm/components/AppProvider/AppProvider.mjs +5 -1
  22. package/dist/esm/components/AppProvider/AppProvider.mjs.map +1 -1
  23. package/dist/esm/components/ThemeProvider/ThemeProvider.mjs +20 -8
  24. package/dist/esm/components/ThemeProvider/ThemeProvider.mjs.map +1 -1
  25. package/dist/esm/index.mjs +2 -1
  26. package/dist/esm/index.mjs.map +1 -1
  27. package/dist/esm/packages/bezier-tokens/dist/alpha/esm/darkTheme.mjs +1715 -0
  28. package/dist/esm/packages/bezier-tokens/dist/alpha/esm/darkTheme.mjs.map +1 -0
  29. package/dist/esm/packages/bezier-tokens/dist/alpha/esm/global.mjs +1256 -0
  30. package/dist/esm/packages/bezier-tokens/dist/alpha/esm/global.mjs.map +1 -0
  31. package/dist/esm/packages/bezier-tokens/dist/alpha/esm/index.mjs +12 -0
  32. package/dist/esm/packages/bezier-tokens/dist/alpha/esm/index.mjs.map +1 -0
  33. package/dist/esm/packages/bezier-tokens/dist/alpha/esm/lightTheme.mjs +1715 -0
  34. package/dist/esm/packages/bezier-tokens/dist/alpha/esm/lightTheme.mjs.map +1 -0
  35. package/dist/esm/styles/components/elevation.module.scss.mjs +1 -1
  36. package/dist/esm/styles.css +1 -1
  37. package/dist/types/components/AlphaTokenProvider/TokenProvider.d.ts +8 -0
  38. package/dist/types/components/AlphaTokenProvider/TokenProvider.d.ts.map +1 -0
  39. package/dist/types/components/AlphaTokenProvider/TokenProvider.types.d.ts +14 -0
  40. package/dist/types/components/AlphaTokenProvider/TokenProvider.types.d.ts.map +1 -0
  41. package/dist/types/components/AlphaTokenProvider/index.d.ts +3 -0
  42. package/dist/types/components/AlphaTokenProvider/index.d.ts.map +1 -0
  43. package/dist/types/components/AppProvider/AppProvider.d.ts.map +1 -1
  44. package/dist/types/components/ThemeProvider/ThemeProvider.d.ts +5 -0
  45. package/dist/types/components/ThemeProvider/ThemeProvider.d.ts.map +1 -1
  46. package/dist/types/components/ThemeProvider/index.d.ts +1 -1
  47. package/dist/types/components/ThemeProvider/index.d.ts.map +1 -1
  48. package/dist/types/index.d.ts +2 -0
  49. package/dist/types/index.d.ts.map +1 -1
  50. package/dist/types/types/alpha-tokens.d.ts +32 -0
  51. package/dist/types/types/alpha-tokens.d.ts.map +1 -0
  52. package/dist/types/types/tokens.d.ts +1 -4
  53. package/dist/types/types/tokens.d.ts.map +1 -1
  54. package/dist/types/types/utils.d.ts +4 -0
  55. package/dist/types/types/utils.d.ts.map +1 -0
  56. package/package.json +2 -2
  57. package/src/components/AlphaTokenProvider/TokenProvider.tsx +50 -0
  58. package/src/components/AlphaTokenProvider/TokenProvider.types.ts +20 -0
  59. package/src/components/AlphaTokenProvider/index.ts +5 -0
  60. package/src/components/AppProvider/AppProvider.tsx +6 -1
  61. package/src/components/ThemeProvider/ThemeProvider.tsx +22 -8
  62. package/src/components/ThemeProvider/index.ts +1 -0
  63. package/src/index.ts +2 -0
  64. package/src/styles/components/elevation.module.scss +3 -2
  65. package/src/styles/components/radius.module.scss +3 -13
  66. package/src/styles/components/z-index.module.scss +3 -2
  67. package/src/types/alpha-tokens.ts +89 -0
  68. package/src/types/tokens.ts +5 -12
  69. package/src/types/utils.ts +12 -0
@@ -0,0 +1,8 @@
1
+ import { type TokenContextValue, type TokenProviderProps } from './TokenProvider.types';
2
+ declare const useTokenContext: (consumerName: string) => TokenContextValue;
3
+ export { useTokenContext as useAlphaTokenContext };
4
+ /**
5
+ * @private
6
+ */
7
+ export declare function TokenProvider({ themeName, children }: TokenProviderProps): import("react/jsx-runtime").JSX.Element;
8
+ //# sourceMappingURL=TokenProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TokenProvider.d.ts","sourceRoot":"","sources":["../../../../src/components/AlphaTokenProvider/TokenProvider.tsx"],"names":[],"mappings":"AASA,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACxB,MAAM,uBAAuB,CAAA;AAE9B,QAAA,MAA6B,eAAe,6CAEyB,CAAA;AAErE,OAAO,EAAE,eAAe,IAAI,oBAAoB,EAAE,CAAA;AAalD;;GAEG;AACH,wBAAgB,aAAa,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,kBAAkB,2CAcxE"}
@@ -0,0 +1,14 @@
1
+ import { type GlobalToken, type SemanticToken, type ThemeName } from "../../types/alpha-tokens";
2
+ export interface ThemeSpecificTokens {
3
+ global: GlobalToken;
4
+ semantic: SemanticToken;
5
+ }
6
+ export interface TokenContextValue {
7
+ themeName: ThemeName;
8
+ tokens: ThemeSpecificTokens;
9
+ }
10
+ export interface TokenProviderProps {
11
+ themeName: ThemeName;
12
+ children: React.ReactNode;
13
+ }
14
+ //# sourceMappingURL=TokenProvider.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TokenProvider.types.d.ts","sourceRoot":"","sources":["../../../../src/components/AlphaTokenProvider/TokenProvider.types.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,SAAS,EACf,iCAAgC;AAEjC,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,WAAW,CAAA;IACnB,QAAQ,EAAE,aAAa,CAAA;CACxB;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,SAAS,CAAA;IACpB,MAAM,EAAE,mBAAmB,CAAA;CAC5B;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,SAAS,CAAA;IACpB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B"}
@@ -0,0 +1,3 @@
1
+ export { TokenProvider as AlphaTokenProvider, useAlphaTokenContext, } from './TokenProvider';
2
+ export type { TokenProviderProps as AlphaTokenProviderProps } from './TokenProvider.types';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/AlphaTokenProvider/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,IAAI,kBAAkB,EACnC,oBAAoB,GACrB,MAAM,iBAAiB,CAAA;AACxB,YAAY,EAAE,kBAAkB,IAAI,uBAAuB,EAAE,MAAM,uBAAuB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"AppProvider.d.ts","sourceRoot":"","sources":["../../../../src/components/AppProvider/AppProvider.tsx"],"names":[],"mappings":"AAUA,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAI3D;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,WAAW,CAAC,EAC1B,QAAQ,EACR,SAAmB,EACnB,QAAa,EACb,MAAsB,GACvB,EAAE,gBAAgB,2CAoBlB"}
1
+ {"version":3,"file":"AppProvider.d.ts","sourceRoot":"","sources":["../../../../src/components/AppProvider/AppProvider.tsx"],"names":[],"mappings":"AAWA,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAI3D;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,WAAW,CAAC,EAC1B,QAAQ,EACR,SAAmB,EACnB,QAAa,EACb,MAAsB,GACvB,EAAE,gBAAgB,2CAwBlB"}
@@ -7,6 +7,11 @@ export declare function useThemeName(): import("../..").ThemeName;
7
7
  * `useTokens` is a hook that returns the design tokens of the current theme.
8
8
  */
9
9
  export declare function useTokens(): import("../TokenProvider/TokenProvider.types").ThemeSpecificTokens;
10
+ /**
11
+ * `useAlphaTokens` is a hook that returns the alpha tokens of the current theme.
12
+ * @internal
13
+ */
14
+ export declare function useAlphaTokens(): import("../AlphaTokenProvider/TokenProvider.types").ThemeSpecificTokens;
10
15
  /**
11
16
  * `ThemeProvider` is a wrapper component that provides theme context.
12
17
  *
@@ -1 +1 @@
1
- {"version":3,"file":"ThemeProvider.d.ts","sourceRoot":"","sources":["../../../../src/components/ThemeProvider/ThemeProvider.tsx"],"names":[],"mappings":"AAQA,OAAO,EACL,KAAK,uBAAuB,EAC5B,KAAK,kBAAkB,EACxB,MAAM,uBAAuB,CAAA;AAE9B;;GAEG;AACH,wBAAgB,YAAY,8BAE3B;AAED;;GAEG;AACH,wBAAgB,SAAS,uEAExB;AAED;;;;GAIG;AACH,eAAO,MAAM,aAAa,4GAezB,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,iHAa7B,CAAA;AAEF;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,iHAa5B,CAAA;AAEF;;GAEG;AACH,eAAO,MAAM,qBAAqB,iHAahC,CAAA"}
1
+ {"version":3,"file":"ThemeProvider.d.ts","sourceRoot":"","sources":["../../../../src/components/ThemeProvider/ThemeProvider.tsx"],"names":[],"mappings":"AAYA,OAAO,EACL,KAAK,uBAAuB,EAC5B,KAAK,kBAAkB,EACxB,MAAM,uBAAuB,CAAA;AAE9B;;GAEG;AACH,wBAAgB,YAAY,8BAE3B;AAED;;GAEG;AACH,wBAAgB,SAAS,uEAExB;AAED;;;GAGG;AACH,wBAAgB,cAAc,4EAE7B;AAED;;;;GAIG;AACH,eAAO,MAAM,aAAa,4GAiBzB,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,iHAa7B,CAAA;AAEF;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,iHAa5B,CAAA;AAEF;;GAEG;AACH,eAAO,MAAM,qBAAqB,iHAahC,CAAA"}
@@ -1,3 +1,3 @@
1
- export { DarkThemeProvider, InvertedThemeProvider, LightThemeProvider, ThemeProvider, useThemeName, useTokens, } from './ThemeProvider';
1
+ export { DarkThemeProvider, InvertedThemeProvider, LightThemeProvider, ThemeProvider, useThemeName, useTokens, useAlphaTokens, } from './ThemeProvider';
2
2
  export { type FixedThemeProviderProps, type ThemeProviderProps, } from './ThemeProvider.types';
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/ThemeProvider/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,kBAAkB,EAClB,aAAa,EACb,YAAY,EACZ,SAAS,GACV,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,KAAK,uBAAuB,EAC5B,KAAK,kBAAkB,GACxB,MAAM,uBAAuB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/ThemeProvider/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,kBAAkB,EAClB,aAAa,EACb,YAAY,EACZ,SAAS,EACT,cAAc,GACf,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,KAAK,uBAAuB,EAC5B,KAAK,kBAAkB,GACxB,MAAM,uBAAuB,CAAA"}
@@ -1,5 +1,6 @@
1
1
  import '~/src/styles/index.scss';
2
2
  export { tokens } from '@channel.io/bezier-tokens';
3
+ export { tokens as alphaTokens } from '@channel.io/bezier-tokens/alpha';
3
4
  export * from "./components/AlphaAvatar";
4
5
  export * from "./components/AlphaAvatarGroup";
5
6
  export * from "./components/AlphaButton";
@@ -69,4 +70,5 @@ export * from "./components/WindowProvider";
69
70
  export * from "./hooks/useKeyboardActionLockerWhileComposing";
70
71
  export type * from "./types/props";
71
72
  export type * from "./types/tokens";
73
+ export type * as AlphaTokens from "./types/alpha-tokens";
72
74
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,yBAAyB,CAAA;AAGhC,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAGlD,yCAA4C;AAC5C,8CAAiD;AACjD,yCAA4C;AAC5C,kDAAqD;AACrD,iDAAoD;AACpD,qDAAwD;AACxD,6CAAgD;AAChD,yCAA4C;AAC5C,8CAAiD;AACjD,+CAAkD;AAClD,oDAAuD;AACvD,yDAA4D;AAC5D,mDAAsD;AACtD,yCAA4C;AAC5C,uCAA0C;AAC1C,oCAAuC;AACvC,yCAA4C;AAC5C,mCAAsC;AACtC,oCAAuC;AACvC,iCAAoC;AACpC,oCAAuC;AACvC,yCAA4C;AAC5C,oCAAuC;AACvC,6CAAgD;AAChD,sCAAyC;AACzC,0CAA6C;AAC7C,qCAAwC;AACxC,mCAAsC;AACtC,6CAAgD;AAChD,yCAA4C;AAC5C,uCAA0C;AAC1C,4CAA+C;AAC/C,uCAA0C;AAC1C,kCAAqC;AACrC,kCAAqC;AACrC,0CAA6C;AAC7C,wCAA2C;AAC3C,yCAA4C;AAC5C,2CAA8C;AAC9C,sCAAyC;AACzC,mCAAsC;AACtC,sCAAyC;AACzC,qCAAwC;AACxC,yCAA4C;AAC5C,qCAAwC;AACxC,yCAA4C;AAC5C,wCAA2C;AAC3C,0CAA6C;AAC7C,8CAAiD;AACjD,oCAAuC;AACvC,oCAAuC;AACvC,8CAAiD;AACjD,qCAAwC;AACxC,mCAAsC;AACtC,oCAAuC;AACvC,oCAAuC;AACvC,kCAAqC;AACrC,iCAAoC;AACpC,kCAAqC;AACrC,sCAAyC;AACzC,uCAA0C;AAC1C,2CAA8C;AAC9C,mCAAsC;AACtC,qCAAwC;AACxC,4CAA+C;AAC/C,4CAA+C;AAG/C,8DAAiE;AAGjE,mCAAsC;AACtC,oCAAuC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,yBAAyB,CAAA;AAGhC,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAClD,OAAO,EAAE,MAAM,IAAI,WAAW,EAAE,MAAM,iCAAiC,CAAA;AAGvE,yCAA4C;AAC5C,8CAAiD;AACjD,yCAA4C;AAC5C,kDAAqD;AACrD,iDAAoD;AACpD,qDAAwD;AACxD,6CAAgD;AAChD,yCAA4C;AAC5C,8CAAiD;AACjD,+CAAkD;AAClD,oDAAuD;AACvD,yDAA4D;AAC5D,mDAAsD;AACtD,yCAA4C;AAC5C,uCAA0C;AAC1C,oCAAuC;AACvC,yCAA4C;AAC5C,mCAAsC;AACtC,oCAAuC;AACvC,iCAAoC;AACpC,oCAAuC;AACvC,yCAA4C;AAC5C,oCAAuC;AACvC,6CAAgD;AAChD,sCAAyC;AACzC,0CAA6C;AAC7C,qCAAwC;AACxC,mCAAsC;AACtC,6CAAgD;AAChD,yCAA4C;AAC5C,uCAA0C;AAC1C,4CAA+C;AAC/C,uCAA0C;AAC1C,kCAAqC;AACrC,kCAAqC;AACrC,0CAA6C;AAC7C,wCAA2C;AAC3C,yCAA4C;AAC5C,2CAA8C;AAC9C,sCAAyC;AACzC,mCAAsC;AACtC,sCAAyC;AACzC,qCAAwC;AACxC,yCAA4C;AAC5C,qCAAwC;AACxC,yCAA4C;AAC5C,wCAA2C;AAC3C,0CAA6C;AAC7C,8CAAiD;AACjD,oCAAuC;AACvC,oCAAuC;AACvC,8CAAiD;AACjD,qCAAwC;AACxC,mCAAsC;AACtC,oCAAuC;AACvC,oCAAuC;AACvC,kCAAqC;AACrC,iCAAoC;AACpC,kCAAqC;AACrC,sCAAyC;AACzC,uCAA0C;AAC1C,2CAA8C;AAC9C,mCAAsC;AACtC,qCAAwC;AACxC,4CAA+C;AAC/C,4CAA+C;AAG/C,8DAAiE;AAGjE,mCAAsC;AACtC,oCAAuC;AACvC,YAAY,KAAK,WAAW,6BAAgC"}
@@ -0,0 +1,32 @@
1
+ import { type tokens } from '@channel.io/bezier-tokens/alpha';
2
+ import { type ExtractKeys, type RemovePrefix, type StartsWithPrefix } from './utils';
3
+ export type ThemeName = 'light' | 'dark';
4
+ export type GlobalToken = typeof tokens.global;
5
+ /**
6
+ * FIXME: Separate functional and semantic tokens?
7
+ */
8
+ export type SemanticToken = typeof tokens.lightTheme | typeof tokens.darkTheme;
9
+ export type FlattenGlobalToken = ExtractKeys<GlobalToken[keyof GlobalToken]>;
10
+ export type FlattenSemanticToken = ExtractKeys<SemanticToken[keyof SemanticToken]>;
11
+ export type FlattenAllToken = FlattenGlobalToken | FlattenSemanticToken;
12
+ export type GlobalColor = RemovePrefix<'alpha-color', keyof GlobalToken['color']>;
13
+ /**
14
+ * Functional & Semantic color tokens
15
+ */
16
+ export type BaseSemanticColor = RemovePrefix<'alpha-color', keyof SemanticToken['color']>;
17
+ export type BackgroundFunctionalColor = StartsWithPrefix<'bg', BaseSemanticColor>;
18
+ export type ForegroundFunctionalColor = StartsWithPrefix<'fg', BaseSemanticColor>;
19
+ export type SurfaceFunctionalColor = StartsWithPrefix<'surface', BaseSemanticColor>;
20
+ export type ShadowFunctionalColor = StartsWithPrefix<'shadow', BaseSemanticColor>;
21
+ export type DimFunctionalColor = StartsWithPrefix<'dim', BaseSemanticColor>;
22
+ export type FunctionalColor = BackgroundFunctionalColor | ForegroundFunctionalColor | SurfaceFunctionalColor | ShadowFunctionalColor | DimFunctionalColor;
23
+ export type SemanticColor = StartsWithPrefix<'primary' | 'critical' | 'warning' | 'accent' | 'success', BaseSemanticColor>;
24
+ export type Color = GlobalColor | FunctionalColor | SemanticColor;
25
+ export type Radius = RemovePrefix<'alpha-radius', keyof GlobalToken['radius']>;
26
+ export type Opacity = RemovePrefix<'alpha-opacity', keyof GlobalToken['opacity']>;
27
+ export type Font = RemovePrefix<'alpha-font', keyof GlobalToken['font']>;
28
+ export type Typography = RemovePrefix<'alpha-typography', keyof GlobalToken['typography']>;
29
+ export type GlobalGradient = RemovePrefix<'alpha-gradient', keyof GlobalToken['gradient']>;
30
+ export type Shadow = RemovePrefix<'alpha-shadow', keyof SemanticToken['shadow']>;
31
+ export type FunctionalGradient = RemovePrefix<'alpha-gradient', keyof SemanticToken['gradient']>;
32
+ //# sourceMappingURL=alpha-tokens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alpha-tokens.d.ts","sourceRoot":"","sources":["../../../src/types/alpha-tokens.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,iCAAiC,CAAA;AAE7D,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACtB,MAAM,SAAS,CAAA;AAGhB,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,MAAM,CAAA;AAExC,MAAM,MAAM,WAAW,GAAG,OAAO,MAAM,CAAC,MAAM,CAAA;AAC9C;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,OAAO,MAAM,CAAC,UAAU,GAAG,OAAO,MAAM,CAAC,SAAS,CAAA;AAG9E,MAAM,MAAM,kBAAkB,GAAG,WAAW,CAAC,WAAW,CAAC,MAAM,WAAW,CAAC,CAAC,CAAA;AAC5E,MAAM,MAAM,oBAAoB,GAAG,WAAW,CAC5C,aAAa,CAAC,MAAM,aAAa,CAAC,CACnC,CAAA;AACD,MAAM,MAAM,eAAe,GAAG,kBAAkB,GAAG,oBAAoB,CAAA;AAEvE,MAAM,MAAM,WAAW,GAAG,YAAY,CACpC,aAAa,EACb,MAAM,WAAW,CAAC,OAAO,CAAC,CAC3B,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,YAAY,CAC1C,aAAa,EACb,MAAM,aAAa,CAAC,OAAO,CAAC,CAC7B,CAAA;AAED,MAAM,MAAM,yBAAyB,GAAG,gBAAgB,CACtD,IAAI,EACJ,iBAAiB,CAClB,CAAA;AACD,MAAM,MAAM,yBAAyB,GAAG,gBAAgB,CACtD,IAAI,EACJ,iBAAiB,CAClB,CAAA;AACD,MAAM,MAAM,sBAAsB,GAAG,gBAAgB,CACnD,SAAS,EACT,iBAAiB,CAClB,CAAA;AACD,MAAM,MAAM,qBAAqB,GAAG,gBAAgB,CAClD,QAAQ,EACR,iBAAiB,CAClB,CAAA;AACD,MAAM,MAAM,kBAAkB,GAAG,gBAAgB,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAA;AAE3E,MAAM,MAAM,eAAe,GACvB,yBAAyB,GACzB,yBAAyB,GACzB,sBAAsB,GACtB,qBAAqB,GACrB,kBAAkB,CAAA;AAEtB,MAAM,MAAM,aAAa,GAAG,gBAAgB,CAC1C,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,EACzD,iBAAiB,CAClB,CAAA;AAED,MAAM,MAAM,KAAK,GAAG,WAAW,GAAG,eAAe,GAAG,aAAa,CAAA;AAEjE,MAAM,MAAM,MAAM,GAAG,YAAY,CAAC,cAAc,EAAE,MAAM,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAA;AAC9E,MAAM,MAAM,OAAO,GAAG,YAAY,CAChC,eAAe,EACf,MAAM,WAAW,CAAC,SAAS,CAAC,CAC7B,CAAA;AACD,MAAM,MAAM,IAAI,GAAG,YAAY,CAAC,YAAY,EAAE,MAAM,WAAW,CAAC,MAAM,CAAC,CAAC,CAAA;AACxE,MAAM,MAAM,UAAU,GAAG,YAAY,CACnC,kBAAkB,EAClB,MAAM,WAAW,CAAC,YAAY,CAAC,CAChC,CAAA;AACD,MAAM,MAAM,cAAc,GAAG,YAAY,CACvC,gBAAgB,EAChB,MAAM,WAAW,CAAC,UAAU,CAAC,CAC9B,CAAA;AAED,MAAM,MAAM,MAAM,GAAG,YAAY,CAAC,cAAc,EAAE,MAAM,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAA;AAChF,MAAM,MAAM,kBAAkB,GAAG,YAAY,CAC3C,gBAAgB,EAChB,MAAM,aAAa,CAAC,UAAU,CAAC,CAChC,CAAA"}
@@ -1,7 +1,5 @@
1
1
  import { type tokens } from '@channel.io/bezier-tokens';
2
- type RemovePrefix<Prefix extends string, Value extends string> = Value extends `${Prefix}-${infer Rest}` ? Rest : never;
3
- type StartsWithPrefix<Prefix extends string, Value extends string> = Value extends `${Prefix}-${infer Rest}` ? Value : never;
4
- type ExtractKeys<T> = T extends Record<infer K, any> ? K : never;
2
+ import { type ExtractKeys, type RemovePrefix, type StartsWithPrefix } from './utils';
5
3
  export type ThemeName = 'light' | 'dark';
6
4
  export type GlobalToken = typeof tokens.global;
7
5
  export type SemanticToken = typeof tokens.lightTheme | typeof tokens.darkTheme;
@@ -22,5 +20,4 @@ export type BorderSemanticColor = StartsWithPrefix<'bdr', SemanticColor>;
22
20
  export type ShadowSemanticColor = StartsWithPrefix<'shdw', SemanticColor>;
23
21
  export type Elevation = Exclude<RemovePrefix<'ev', keyof SemanticToken['elevation']>, 'base' | 'inner'>;
24
22
  export type InputShadow = RemovePrefix<'input', keyof SemanticToken['input']>;
25
- export {};
26
23
  //# sourceMappingURL=tokens.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../../src/types/tokens.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAEvD,KAAK,YAAY,CACf,MAAM,SAAS,MAAM,EACrB,KAAK,SAAS,MAAM,IAClB,KAAK,SAAS,GAAG,MAAM,IAAI,MAAM,IAAI,EAAE,GAAG,IAAI,GAAG,KAAK,CAAA;AAE1D,KAAK,gBAAgB,CACnB,MAAM,SAAS,MAAM,EACrB,KAAK,SAAS,MAAM,IAElB,KAAK,SAAS,GAAG,MAAM,IAAI,MAAM,IAAI,EAAE,GAAG,KAAK,GAAG,KAAK,CAAA;AAE3D,KAAK,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;AAGhE,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,MAAM,CAAA;AAExC,MAAM,MAAM,WAAW,GAAG,OAAO,MAAM,CAAC,MAAM,CAAA;AAC9C,MAAM,MAAM,aAAa,GAAG,OAAO,MAAM,CAAC,UAAU,GAAG,OAAO,MAAM,CAAC,SAAS,CAAA;AAE9E,MAAM,MAAM,kBAAkB,GAAG,WAAW,CAAC,WAAW,CAAC,MAAM,WAAW,CAAC,CAAC,CAAA;AAC5E,MAAM,MAAM,oBAAoB,GAAG,WAAW,CAC5C,aAAa,CAAC,MAAM,aAAa,CAAC,CACnC,CAAA;AACD,MAAM,MAAM,eAAe,GAAG,kBAAkB,GAAG,oBAAoB,CAAA;AAEvE,MAAM,MAAM,WAAW,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,CAAA;AACpD,MAAM,MAAM,IAAI,GAAG,YAAY,CAAC,MAAM,EAAE,MAAM,WAAW,CAAC,MAAM,CAAC,CAAC,CAAA;AAClE,MAAM,MAAM,OAAO,GAAG,YAAY,CAAC,SAAS,EAAE,MAAM,WAAW,CAAC,SAAS,CAAC,CAAC,CAAA;AAC3E,MAAM,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,EAAE,MAAM,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAA;AACxE,MAAM,MAAM,UAAU,GAAG,YAAY,CACnC,YAAY,EACZ,MAAM,WAAW,CAAC,YAAY,CAAC,CAChC,CAAA;AACD,MAAM,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,EAAE,MAAM,WAAW,CAAC,SAAS,CAAC,CAAC,CAAA;AAE1E,MAAM,MAAM,aAAa,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,CAAA;AACxD,MAAM,MAAM,uBAAuB,GAAG,gBAAgB,CAAC,IAAI,EAAE,aAAa,CAAC,CAAA;AAC3E,MAAM,MAAM,2BAA2B,GAAG,gBAAgB,CACxD,OAAO,EACP,aAAa,CACd,CAAA;AACD,MAAM,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,KAAK,EAAE,aAAa,CAAC,CAAA;AACtE,MAAM,MAAM,mBAAmB,GAAG,gBAAgB,CAAC,KAAK,EAAE,aAAa,CAAC,CAAA;AACxE,MAAM,MAAM,mBAAmB,GAAG,gBAAgB,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;AAEzE,MAAM,MAAM,SAAS,GAAG,OAAO,CAC7B,YAAY,CAAC,IAAI,EAAE,MAAM,aAAa,CAAC,WAAW,CAAC,CAAC,EACpD,MAAM,GAAG,OAAO,CACjB,CAAA;AACD,MAAM,MAAM,WAAW,GAAG,YAAY,CAAC,OAAO,EAAE,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../../src/types/tokens.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAEvD,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACtB,MAAM,SAAS,CAAA;AAGhB,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,MAAM,CAAA;AAExC,MAAM,MAAM,WAAW,GAAG,OAAO,MAAM,CAAC,MAAM,CAAA;AAC9C,MAAM,MAAM,aAAa,GAAG,OAAO,MAAM,CAAC,UAAU,GAAG,OAAO,MAAM,CAAC,SAAS,CAAA;AAE9E,MAAM,MAAM,kBAAkB,GAAG,WAAW,CAAC,WAAW,CAAC,MAAM,WAAW,CAAC,CAAC,CAAA;AAC5E,MAAM,MAAM,oBAAoB,GAAG,WAAW,CAC5C,aAAa,CAAC,MAAM,aAAa,CAAC,CACnC,CAAA;AACD,MAAM,MAAM,eAAe,GAAG,kBAAkB,GAAG,oBAAoB,CAAA;AAEvE,MAAM,MAAM,WAAW,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,CAAA;AACpD,MAAM,MAAM,IAAI,GAAG,YAAY,CAAC,MAAM,EAAE,MAAM,WAAW,CAAC,MAAM,CAAC,CAAC,CAAA;AAClE,MAAM,MAAM,OAAO,GAAG,YAAY,CAAC,SAAS,EAAE,MAAM,WAAW,CAAC,SAAS,CAAC,CAAC,CAAA;AAC3E,MAAM,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,EAAE,MAAM,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAA;AACxE,MAAM,MAAM,UAAU,GAAG,YAAY,CACnC,YAAY,EACZ,MAAM,WAAW,CAAC,YAAY,CAAC,CAChC,CAAA;AACD,MAAM,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,EAAE,MAAM,WAAW,CAAC,SAAS,CAAC,CAAC,CAAA;AAE1E,MAAM,MAAM,aAAa,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,CAAA;AACxD,MAAM,MAAM,uBAAuB,GAAG,gBAAgB,CAAC,IAAI,EAAE,aAAa,CAAC,CAAA;AAC3E,MAAM,MAAM,2BAA2B,GAAG,gBAAgB,CACxD,OAAO,EACP,aAAa,CACd,CAAA;AACD,MAAM,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,KAAK,EAAE,aAAa,CAAC,CAAA;AACtE,MAAM,MAAM,mBAAmB,GAAG,gBAAgB,CAAC,KAAK,EAAE,aAAa,CAAC,CAAA;AACxE,MAAM,MAAM,mBAAmB,GAAG,gBAAgB,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;AAEzE,MAAM,MAAM,SAAS,GAAG,OAAO,CAC7B,YAAY,CAAC,IAAI,EAAE,MAAM,aAAa,CAAC,WAAW,CAAC,CAAC,EACpD,MAAM,GAAG,OAAO,CACjB,CAAA;AACD,MAAM,MAAM,WAAW,GAAG,YAAY,CAAC,OAAO,EAAE,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC,CAAA"}
@@ -0,0 +1,4 @@
1
+ export type RemovePrefix<Prefix extends string, Value extends string> = Value extends `${Prefix}-${infer Rest}` ? Rest : never;
2
+ export type StartsWithPrefix<Prefix extends string, Value extends string> = Value extends `${Prefix}-${infer Rest}` ? Value : never;
3
+ export type ExtractKeys<T> = T extends Record<infer K, any> ? K : never;
4
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/types/utils.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,CACtB,MAAM,SAAS,MAAM,EACrB,KAAK,SAAS,MAAM,IAClB,KAAK,SAAS,GAAG,MAAM,IAAI,MAAM,IAAI,EAAE,GAAG,IAAI,GAAG,KAAK,CAAA;AAE1D,MAAM,MAAM,gBAAgB,CAC1B,MAAM,SAAS,MAAM,EACrB,KAAK,SAAS,MAAM,IAElB,KAAK,SAAS,GAAG,MAAM,IAAI,MAAM,IAAI,EAAE,GAAG,KAAK,GAAG,KAAK,CAAA;AAE3D,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@channel.io/bezier-react",
3
- "version": "3.0.0",
3
+ "version": "3.0.1",
4
4
  "description": "React components library that implements Bezier design system.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -132,7 +132,7 @@
132
132
  }
133
133
  },
134
134
  "dependencies": {
135
- "@channel.io/bezier-tokens": "0.2.13",
135
+ "@channel.io/bezier-tokens": "0.3.0",
136
136
  "@radix-ui/react-checkbox": "^1.1.3",
137
137
  "@radix-ui/react-dialog": "^1.1.3",
138
138
  "@radix-ui/react-radio-group": "^1.2.2",
@@ -0,0 +1,50 @@
1
+ 'use client'
2
+
3
+ import { useMemo } from 'react'
4
+
5
+ import { tokens } from '@channel.io/bezier-tokens/alpha'
6
+
7
+ import { type ThemeName } from '~/src/types/tokens'
8
+ import { createContext } from '~/src/utils/react'
9
+
10
+ import {
11
+ type ThemeSpecificTokens,
12
+ type TokenContextValue,
13
+ type TokenProviderProps,
14
+ } from './TokenProvider.types'
15
+
16
+ const [TokenContextProvider, useTokenContext] =
17
+ // FIXME: (@ed) Remove Alpha prefix after the migration is done
18
+ createContext<TokenContextValue | null>(null, 'AlphaTokenProvider')
19
+
20
+ export { useTokenContext as useAlphaTokenContext }
21
+
22
+ const tokenSet: Record<ThemeName, ThemeSpecificTokens> = Object.freeze({
23
+ light: {
24
+ global: tokens.global,
25
+ semantic: tokens.lightTheme,
26
+ },
27
+ dark: {
28
+ global: tokens.global,
29
+ semantic: tokens.darkTheme,
30
+ },
31
+ })
32
+
33
+ /**
34
+ * @private
35
+ */
36
+ export function TokenProvider({ themeName, children }: TokenProviderProps) {
37
+ return (
38
+ <TokenContextProvider
39
+ value={useMemo(
40
+ () => ({
41
+ themeName,
42
+ tokens: tokenSet[themeName],
43
+ }),
44
+ [themeName]
45
+ )}
46
+ >
47
+ {children}
48
+ </TokenContextProvider>
49
+ )
50
+ }
@@ -0,0 +1,20 @@
1
+ import {
2
+ type GlobalToken,
3
+ type SemanticToken,
4
+ type ThemeName,
5
+ } from '~/src/types/alpha-tokens'
6
+
7
+ export interface ThemeSpecificTokens {
8
+ global: GlobalToken
9
+ semantic: SemanticToken
10
+ }
11
+
12
+ export interface TokenContextValue {
13
+ themeName: ThemeName
14
+ tokens: ThemeSpecificTokens
15
+ }
16
+
17
+ export interface TokenProviderProps {
18
+ themeName: ThemeName
19
+ children: React.ReactNode
20
+ }
@@ -0,0 +1,5 @@
1
+ export {
2
+ TokenProvider as AlphaTokenProvider,
3
+ useAlphaTokenContext,
4
+ } from './TokenProvider'
5
+ export type { TokenProviderProps as AlphaTokenProviderProps } from './TokenProvider.types'
@@ -4,6 +4,7 @@ import { useEffect } from 'react'
4
4
 
5
5
  import { getWindow } from 'ssr-window'
6
6
 
7
+ import { AlphaTokenProvider } from '~/src/components/AlphaTokenProvider'
7
8
  import { FeatureProvider } from '~/src/components/FeatureProvider'
8
9
  import { TokenProvider } from '~/src/components/TokenProvider'
9
10
  import { WindowProvider } from '~/src/components/WindowProvider'
@@ -52,7 +53,11 @@ export function AppProvider({
52
53
  return (
53
54
  <WindowProvider window={window}>
54
55
  <FeatureProvider features={features}>
55
- <TokenProvider themeName={themeName}>{children}</TokenProvider>
56
+ <TokenProvider themeName={themeName}>
57
+ <AlphaTokenProvider themeName={themeName}>
58
+ {children}
59
+ </AlphaTokenProvider>
60
+ </TokenProvider>
56
61
  </FeatureProvider>
57
62
  </WindowProvider>
58
63
  )
@@ -4,6 +4,10 @@ import { forwardRef } from 'react'
4
4
 
5
5
  import { Slot } from '@radix-ui/react-slot'
6
6
 
7
+ import {
8
+ AlphaTokenProvider,
9
+ useAlphaTokenContext,
10
+ } from '~/src/components/AlphaTokenProvider'
7
11
  import { TokenProvider, useTokenContext } from '~/src/components/TokenProvider'
8
12
 
9
13
  import {
@@ -25,6 +29,14 @@ export function useTokens() {
25
29
  return useTokenContext('useTokens').tokens
26
30
  }
27
31
 
32
+ /**
33
+ * `useAlphaTokens` is a hook that returns the alpha tokens of the current theme.
34
+ * @internal
35
+ */
36
+ export function useAlphaTokens() {
37
+ return useAlphaTokenContext('useAlphaTokens').tokens
38
+ }
39
+
28
40
  /**
29
41
  * `ThemeProvider` is a wrapper component that provides theme context.
30
42
  *
@@ -34,14 +46,16 @@ export const ThemeProvider = forwardRef<HTMLElement, ThemeProviderProps>(
34
46
  function ThemeProvider({ themeName, children, ...rest }, forwardedRef) {
35
47
  return (
36
48
  <TokenProvider themeName={themeName}>
37
- <Slot
38
- ref={forwardedRef}
39
- // TODO: Change data attribute constant to import from bezier-tokens
40
- data-bezier-theme={themeName}
41
- {...rest}
42
- >
43
- {children}
44
- </Slot>
49
+ <AlphaTokenProvider themeName={themeName}>
50
+ <Slot
51
+ ref={forwardedRef}
52
+ // TODO: Change data attribute constant to import from bezier-tokens
53
+ data-bezier-theme={themeName}
54
+ {...rest}
55
+ >
56
+ {children}
57
+ </Slot>
58
+ </AlphaTokenProvider>
45
59
  </TokenProvider>
46
60
  )
47
61
  }
@@ -5,6 +5,7 @@ export {
5
5
  ThemeProvider,
6
6
  useThemeName,
7
7
  useTokens,
8
+ useAlphaTokens,
8
9
  } from './ThemeProvider'
9
10
  export {
10
11
  type FixedThemeProviderProps,
package/src/index.ts CHANGED
@@ -3,6 +3,7 @@ import '~/src/styles/index.scss'
3
3
 
4
4
  /* --------------------------------- TOKENS --------------------------------- */
5
5
  export { tokens } from '@channel.io/bezier-tokens'
6
+ export { tokens as alphaTokens } from '@channel.io/bezier-tokens/alpha'
6
7
 
7
8
  /* ------------------------------- COMPONENTS ------------------------------- */
8
9
  export * from '~/src/components/AlphaAvatar'
@@ -78,3 +79,4 @@ export * from '~/src/hooks/useKeyboardActionLockerWhileComposing'
78
79
  /* ---------------------------------- TYPES --------------------------------- */
79
80
  export type * from '~/src/types/props'
80
81
  export type * from '~/src/types/tokens'
82
+ export type * as AlphaTokens from '~/src/types/alpha-tokens'
@@ -1,6 +1,7 @@
1
- $elevations: 1, 2, 3, 4, 5, 6;
1
+ @use 'sass:map';
2
+ @use '../../../../../node_modules/@channel.io/bezier-tokens/dist/scss' as *;
2
3
 
3
- @each $ev in $elevations {
4
+ @each $ev in map.keys(map.get($tokens, 'light-theme', 'ev')) {
4
5
  :where(.elevation-#{$ev}) {
5
6
  /* stylelint-disable-next-line bezier/validate-token */
6
7
  box-shadow: var(--ev-#{$ev});
@@ -1,17 +1,7 @@
1
- $radiuses:
2
- 2,
3
- 3,
4
- 4,
5
- 6,
6
- 8,
7
- 12,
8
- 16,
9
- 20,
10
- 32,
11
- 44,
12
- 42-p;
1
+ @use 'sass:map';
2
+ @use '../../../../../node_modules/@channel.io/bezier-tokens/dist/scss' as *;
13
3
 
14
- @each $radius in $radiuses {
4
+ @each $radius in map.keys(map.get($tokens, 'global', 'radius')) {
15
5
  :where(.radius-#{$radius}) {
16
6
  /* stylelint-disable-next-line bezier/validate-token */
17
7
  border-radius: var(--radius-#{$radius});
@@ -1,6 +1,7 @@
1
- $z-indices: hidden, base, floating, overlay, modal, toast, tooltip, important;
1
+ @use 'sass:map';
2
+ @use '../../../../../node_modules/@channel.io/bezier-tokens/dist/scss' as *;
2
3
 
3
- @each $z-index in $z-indices {
4
+ @each $z-index in map.keys(map.get($tokens, 'global', 'z-index')) {
4
5
  :where(.z-index-#{$z-index}) {
5
6
  /* stylelint-disable-next-line bezier/validate-token */
6
7
  z-index: var(--z-index-#{$z-index});
@@ -0,0 +1,89 @@
1
+ import { type tokens } from '@channel.io/bezier-tokens/alpha'
2
+
3
+ import {
4
+ type ExtractKeys,
5
+ type RemovePrefix,
6
+ type StartsWithPrefix,
7
+ } from './utils'
8
+
9
+ // TODO: Change theme name constant to import from bezier-tokens
10
+ export type ThemeName = 'light' | 'dark'
11
+
12
+ export type GlobalToken = typeof tokens.global
13
+ /**
14
+ * FIXME: Separate functional and semantic tokens?
15
+ */
16
+ export type SemanticToken = typeof tokens.lightTheme | typeof tokens.darkTheme
17
+
18
+ // NOTE: (@ed) Do not remove alpha- prefix to match CSS variable names
19
+ export type FlattenGlobalToken = ExtractKeys<GlobalToken[keyof GlobalToken]>
20
+ export type FlattenSemanticToken = ExtractKeys<
21
+ SemanticToken[keyof SemanticToken]
22
+ >
23
+ export type FlattenAllToken = FlattenGlobalToken | FlattenSemanticToken
24
+
25
+ export type GlobalColor = RemovePrefix<
26
+ 'alpha-color',
27
+ keyof GlobalToken['color']
28
+ >
29
+
30
+ /**
31
+ * Functional & Semantic color tokens
32
+ */
33
+ export type BaseSemanticColor = RemovePrefix<
34
+ 'alpha-color',
35
+ keyof SemanticToken['color']
36
+ >
37
+
38
+ export type BackgroundFunctionalColor = StartsWithPrefix<
39
+ 'bg',
40
+ BaseSemanticColor
41
+ >
42
+ export type ForegroundFunctionalColor = StartsWithPrefix<
43
+ 'fg',
44
+ BaseSemanticColor
45
+ >
46
+ export type SurfaceFunctionalColor = StartsWithPrefix<
47
+ 'surface',
48
+ BaseSemanticColor
49
+ >
50
+ export type ShadowFunctionalColor = StartsWithPrefix<
51
+ 'shadow',
52
+ BaseSemanticColor
53
+ >
54
+ export type DimFunctionalColor = StartsWithPrefix<'dim', BaseSemanticColor>
55
+
56
+ export type FunctionalColor =
57
+ | BackgroundFunctionalColor
58
+ | ForegroundFunctionalColor
59
+ | SurfaceFunctionalColor
60
+ | ShadowFunctionalColor
61
+ | DimFunctionalColor
62
+
63
+ export type SemanticColor = StartsWithPrefix<
64
+ 'primary' | 'critical' | 'warning' | 'accent' | 'success',
65
+ BaseSemanticColor
66
+ >
67
+
68
+ export type Color = GlobalColor | FunctionalColor | SemanticColor
69
+
70
+ export type Radius = RemovePrefix<'alpha-radius', keyof GlobalToken['radius']>
71
+ export type Opacity = RemovePrefix<
72
+ 'alpha-opacity',
73
+ keyof GlobalToken['opacity']
74
+ >
75
+ export type Font = RemovePrefix<'alpha-font', keyof GlobalToken['font']>
76
+ export type Typography = RemovePrefix<
77
+ 'alpha-typography',
78
+ keyof GlobalToken['typography']
79
+ >
80
+ export type GlobalGradient = RemovePrefix<
81
+ 'alpha-gradient',
82
+ keyof GlobalToken['gradient']
83
+ >
84
+
85
+ export type Shadow = RemovePrefix<'alpha-shadow', keyof SemanticToken['shadow']>
86
+ export type FunctionalGradient = RemovePrefix<
87
+ 'alpha-gradient',
88
+ keyof SemanticToken['gradient']
89
+ >
@@ -1,17 +1,10 @@
1
1
  import { type tokens } from '@channel.io/bezier-tokens'
2
2
 
3
- type RemovePrefix<
4
- Prefix extends string,
5
- Value extends string,
6
- > = Value extends `${Prefix}-${infer Rest}` ? Rest : never
7
-
8
- type StartsWithPrefix<
9
- Prefix extends string,
10
- Value extends string,
11
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
12
- > = Value extends `${Prefix}-${infer Rest}` ? Value : never
13
-
14
- type ExtractKeys<T> = T extends Record<infer K, any> ? K : never
3
+ import {
4
+ type ExtractKeys,
5
+ type RemovePrefix,
6
+ type StartsWithPrefix,
7
+ } from './utils'
15
8
 
16
9
  // TODO: Change theme name constant to import from bezier-tokens
17
10
  export type ThemeName = 'light' | 'dark'
@@ -0,0 +1,12 @@
1
+ export type RemovePrefix<
2
+ Prefix extends string,
3
+ Value extends string,
4
+ > = Value extends `${Prefix}-${infer Rest}` ? Rest : never
5
+
6
+ export type StartsWithPrefix<
7
+ Prefix extends string,
8
+ Value extends string,
9
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
10
+ > = Value extends `${Prefix}-${infer Rest}` ? Value : never
11
+
12
+ export type ExtractKeys<T> = T extends Record<infer K, any> ? K : never