Skip to content

Commit 66c7a8f

Browse files
committed
feat: add and export alpha tokens
1 parent 7908274 commit 66c7a8f

File tree

4 files changed

+88
-12
lines changed

4 files changed

+88
-12
lines changed

packages/bezier-react/src/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import '~/src/styles/index.scss'
33

44
/* --------------------------------- TOKENS --------------------------------- */
55
export { tokens } from '@channel.io/bezier-tokens'
6+
export { tokens as alphaTokens } from '@channel.io/bezier-tokens/alpha'
67

78
/* ------------------------------- COMPONENTS ------------------------------- */
89
export * from '~/src/components/AlphaAvatar'
@@ -78,3 +79,4 @@ export * from '~/src/hooks/useKeyboardActionLockerWhileComposing'
7879
/* ---------------------------------- TYPES --------------------------------- */
7980
export type * from '~/src/types/props'
8081
export type * from '~/src/types/tokens'
82+
export type * as AlphaTokens from '~/src/types/alpha-tokens'
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
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+
export type ThemeToken = typeof tokens.lightTheme | typeof tokens.darkTheme
14+
15+
// NOTE: (@ed) Do not remove alpha- prefix to match CSS variable names
16+
export type FlattenGlobalToken = ExtractKeys<GlobalToken[keyof GlobalToken]>
17+
export type FlattenThemeToken = ExtractKeys<ThemeToken[keyof ThemeToken]>
18+
export type FlattenAllToken = FlattenGlobalToken | FlattenThemeToken
19+
20+
export type GlobalColor = RemovePrefix<
21+
'alpha-color',
22+
keyof GlobalToken['color']
23+
>
24+
25+
/**
26+
* Functional & Semantic color tokens
27+
*/
28+
export type ThemeColor = RemovePrefix<'alpha-color', keyof ThemeToken['color']>
29+
30+
export type BackgroundFunctionalColor = StartsWithPrefix<'bg', ThemeColor>
31+
export type ForegroundFunctionalColor = StartsWithPrefix<'fg', ThemeColor>
32+
export type SurfaceFunctionalColor = StartsWithPrefix<'surface', ThemeColor>
33+
export type ShadowFunctionalColor = StartsWithPrefix<'shadow', ThemeColor>
34+
export type DimFunctionalColor = StartsWithPrefix<'dim', ThemeColor>
35+
36+
export type FunctionalColor =
37+
| BackgroundFunctionalColor
38+
| ForegroundFunctionalColor
39+
| SurfaceFunctionalColor
40+
| ShadowFunctionalColor
41+
| DimFunctionalColor
42+
43+
export type SemanticColor = StartsWithPrefix<
44+
'primary' | 'critical' | 'warning' | 'accent' | 'success',
45+
ThemeColor
46+
>
47+
48+
export type Color = GlobalColor | FunctionalColor | SemanticColor
49+
50+
export type Radius = RemovePrefix<'alpha-radius', keyof GlobalToken['radius']>
51+
export type Opacity = RemovePrefix<
52+
'alpha-opacity',
53+
keyof GlobalToken['opacity']
54+
>
55+
export type Font = RemovePrefix<'alpha-font', keyof GlobalToken['font']>
56+
export type Typography = RemovePrefix<
57+
'alpha-typography',
58+
keyof GlobalToken['typography']
59+
>
60+
export type GlobalGradient = RemovePrefix<
61+
'alpha-gradient',
62+
keyof GlobalToken['gradient']
63+
>
64+
65+
export type Shadow = RemovePrefix<'alpha-shadow', keyof ThemeToken['shadow']>
66+
export type FunctionalGradient = RemovePrefix<
67+
'alpha-gradient',
68+
keyof ThemeToken['gradient']
69+
>

packages/bezier-react/src/types/tokens.ts

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,10 @@
11
import { type tokens } from '@channel.io/bezier-tokens'
22

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'
158

169
// TODO: Change theme name constant to import from bezier-tokens
1710
export type ThemeName = 'light' | 'dark'
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

0 commit comments

Comments
 (0)