@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.
- package/dist/cjs/components/AlphaTokenProvider/TokenProvider.js +40 -0
- package/dist/cjs/components/AlphaTokenProvider/TokenProvider.js.map +1 -0
- package/dist/cjs/components/AppProvider/AppProvider.js +5 -1
- package/dist/cjs/components/AppProvider/AppProvider.js.map +1 -1
- package/dist/cjs/components/ThemeProvider/ThemeProvider.js +20 -7
- package/dist/cjs/components/ThemeProvider/ThemeProvider.js.map +1 -1
- package/dist/cjs/index.js +3 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/packages/bezier-tokens/dist/alpha/esm/darkTheme.js +1719 -0
- package/dist/cjs/packages/bezier-tokens/dist/alpha/esm/darkTheme.js.map +1 -0
- package/dist/cjs/packages/bezier-tokens/dist/alpha/esm/global.js +1260 -0
- package/dist/cjs/packages/bezier-tokens/dist/alpha/esm/global.js.map +1 -0
- package/dist/cjs/packages/bezier-tokens/dist/alpha/esm/index.js +14 -0
- package/dist/cjs/packages/bezier-tokens/dist/alpha/esm/index.js.map +1 -0
- package/dist/cjs/packages/bezier-tokens/dist/alpha/esm/lightTheme.js +1719 -0
- package/dist/cjs/packages/bezier-tokens/dist/alpha/esm/lightTheme.js.map +1 -0
- package/dist/cjs/styles/components/elevation.module.scss.js +1 -1
- package/dist/cjs/styles.css +1 -1
- package/dist/esm/components/AlphaTokenProvider/TokenProvider.mjs +37 -0
- package/dist/esm/components/AlphaTokenProvider/TokenProvider.mjs.map +1 -0
- package/dist/esm/components/AppProvider/AppProvider.mjs +5 -1
- package/dist/esm/components/AppProvider/AppProvider.mjs.map +1 -1
- package/dist/esm/components/ThemeProvider/ThemeProvider.mjs +20 -8
- package/dist/esm/components/ThemeProvider/ThemeProvider.mjs.map +1 -1
- package/dist/esm/index.mjs +2 -1
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/packages/bezier-tokens/dist/alpha/esm/darkTheme.mjs +1715 -0
- package/dist/esm/packages/bezier-tokens/dist/alpha/esm/darkTheme.mjs.map +1 -0
- package/dist/esm/packages/bezier-tokens/dist/alpha/esm/global.mjs +1256 -0
- package/dist/esm/packages/bezier-tokens/dist/alpha/esm/global.mjs.map +1 -0
- package/dist/esm/packages/bezier-tokens/dist/alpha/esm/index.mjs +12 -0
- package/dist/esm/packages/bezier-tokens/dist/alpha/esm/index.mjs.map +1 -0
- package/dist/esm/packages/bezier-tokens/dist/alpha/esm/lightTheme.mjs +1715 -0
- package/dist/esm/packages/bezier-tokens/dist/alpha/esm/lightTheme.mjs.map +1 -0
- package/dist/esm/styles/components/elevation.module.scss.mjs +1 -1
- package/dist/esm/styles.css +1 -1
- package/dist/types/components/AlphaTokenProvider/TokenProvider.d.ts +8 -0
- package/dist/types/components/AlphaTokenProvider/TokenProvider.d.ts.map +1 -0
- package/dist/types/components/AlphaTokenProvider/TokenProvider.types.d.ts +14 -0
- package/dist/types/components/AlphaTokenProvider/TokenProvider.types.d.ts.map +1 -0
- package/dist/types/components/AlphaTokenProvider/index.d.ts +3 -0
- package/dist/types/components/AlphaTokenProvider/index.d.ts.map +1 -0
- package/dist/types/components/AppProvider/AppProvider.d.ts.map +1 -1
- package/dist/types/components/ThemeProvider/ThemeProvider.d.ts +5 -0
- package/dist/types/components/ThemeProvider/ThemeProvider.d.ts.map +1 -1
- package/dist/types/components/ThemeProvider/index.d.ts +1 -1
- package/dist/types/components/ThemeProvider/index.d.ts.map +1 -1
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/types/alpha-tokens.d.ts +32 -0
- package/dist/types/types/alpha-tokens.d.ts.map +1 -0
- package/dist/types/types/tokens.d.ts +1 -4
- package/dist/types/types/tokens.d.ts.map +1 -1
- package/dist/types/types/utils.d.ts +4 -0
- package/dist/types/types/utils.d.ts.map +1 -0
- package/package.json +2 -2
- package/src/components/AlphaTokenProvider/TokenProvider.tsx +50 -0
- package/src/components/AlphaTokenProvider/TokenProvider.types.ts +20 -0
- package/src/components/AlphaTokenProvider/index.ts +5 -0
- package/src/components/AppProvider/AppProvider.tsx +6 -1
- package/src/components/ThemeProvider/ThemeProvider.tsx +22 -8
- package/src/components/ThemeProvider/index.ts +1 -0
- package/src/index.ts +2 -0
- package/src/styles/components/elevation.module.scss +3 -2
- package/src/styles/components/radius.module.scss +3 -13
- package/src/styles/components/z-index.module.scss +3 -2
- package/src/types/alpha-tokens.ts +89 -0
- package/src/types/tokens.ts +5 -12
- 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 @@
|
|
|
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":"
|
|
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":"
|
|
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,
|
|
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"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -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;
|
|
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
|
-
|
|
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,
|
|
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.
|
|
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.
|
|
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
|
+
}
|
|
@@ -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}>
|
|
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
|
-
<
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
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
|
}
|
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
|
-
|
|
1
|
+
@use 'sass:map';
|
|
2
|
+
@use '../../../../../node_modules/@channel.io/bezier-tokens/dist/scss' as *;
|
|
2
3
|
|
|
3
|
-
@each $ev in $
|
|
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
|
-
|
|
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 $
|
|
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
|
-
|
|
1
|
+
@use 'sass:map';
|
|
2
|
+
@use '../../../../../node_modules/@channel.io/bezier-tokens/dist/scss' as *;
|
|
2
3
|
|
|
3
|
-
@each $z-index in $z-
|
|
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
|
+
>
|
package/src/types/tokens.ts
CHANGED
|
@@ -1,17 +1,10 @@
|
|
|
1
1
|
import { type tokens } from '@channel.io/bezier-tokens'
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
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
|