@chem-po/react-native 0.0.39 → 0.0.41
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/lib/commonjs/components/button/ActionButton.js +103 -38
- package/lib/commonjs/components/button/ActionButton.js.map +1 -1
- package/lib/commonjs/components/button/ButtonText.js +52 -0
- package/lib/commonjs/components/button/ButtonText.js.map +1 -0
- package/lib/commonjs/components/button/DeleteButton.js +27 -81
- package/lib/commonjs/components/button/DeleteButton.js.map +1 -1
- package/lib/commonjs/components/button/LoadingButton.js +8 -107
- package/lib/commonjs/components/button/LoadingButton.js.map +1 -1
- package/lib/commonjs/components/button/hooks.js +56 -0
- package/lib/commonjs/components/button/hooks.js.map +1 -0
- package/lib/commonjs/components/button/index.js +11 -0
- package/lib/commonjs/components/button/index.js.map +1 -1
- package/lib/commonjs/components/form/input/hooks/useInputStyles.js +3 -15
- package/lib/commonjs/components/form/input/hooks/useInputStyles.js.map +1 -1
- package/lib/commonjs/components/form/input/index.js +22 -0
- package/lib/commonjs/components/form/input/index.js.map +1 -1
- package/lib/commonjs/components/loading/CircularProgress.js.map +1 -1
- package/lib/commonjs/components/loading/LoadingOverlay.js +8 -5
- package/lib/commonjs/components/loading/LoadingOverlay.js.map +1 -1
- package/lib/commonjs/contexts/fonts.js +29 -0
- package/lib/commonjs/contexts/fonts.js.map +1 -0
- package/lib/commonjs/contexts/root.js +40 -33
- package/lib/commonjs/contexts/root.js.map +1 -1
- package/lib/commonjs/hooks/index.js +22 -0
- package/lib/commonjs/hooks/index.js.map +1 -1
- package/lib/commonjs/hooks/useFadeIn.js +1 -1
- package/lib/commonjs/hooks/useFadeIn.js.map +1 -1
- package/lib/commonjs/hooks/useFont.js +26 -0
- package/lib/commonjs/hooks/useFont.js.map +1 -0
- package/lib/module/components/button/ActionButton.js +100 -35
- package/lib/module/components/button/ActionButton.js.map +1 -1
- package/lib/module/components/button/ButtonText.js +44 -0
- package/lib/module/components/button/ButtonText.js.map +1 -0
- package/lib/module/components/button/DeleteButton.js +29 -83
- package/lib/module/components/button/DeleteButton.js.map +1 -1
- package/lib/module/components/button/LoadingButton.js +10 -109
- package/lib/module/components/button/LoadingButton.js.map +1 -1
- package/lib/module/components/button/hooks.js +45 -0
- package/lib/module/components/button/hooks.js.map +1 -0
- package/lib/module/components/button/index.js +1 -0
- package/lib/module/components/button/index.js.map +1 -1
- package/lib/module/components/form/input/hooks/useInputStyles.js +3 -15
- package/lib/module/components/form/input/hooks/useInputStyles.js.map +1 -1
- package/lib/module/components/form/input/index.js +2 -0
- package/lib/module/components/form/input/index.js.map +1 -1
- package/lib/module/components/loading/CircularProgress.js.map +1 -1
- package/lib/module/components/loading/LoadingOverlay.js +8 -5
- package/lib/module/components/loading/LoadingOverlay.js.map +1 -1
- package/lib/module/contexts/fonts.js +20 -0
- package/lib/module/contexts/fonts.js.map +1 -0
- package/lib/module/contexts/root.js +41 -34
- package/lib/module/contexts/root.js.map +1 -1
- package/lib/module/hooks/index.js +2 -0
- package/lib/module/hooks/index.js.map +1 -1
- package/lib/module/hooks/useFadeIn.js +1 -1
- package/lib/module/hooks/useFadeIn.js.map +1 -1
- package/lib/module/hooks/useFont.js +19 -0
- package/lib/module/hooks/useFont.js.map +1 -0
- package/lib/typescript/components/button/ActionButton.d.ts +14 -5
- package/lib/typescript/components/button/ActionButton.d.ts.map +1 -1
- package/lib/typescript/components/button/ButtonText.d.ts +14 -0
- package/lib/typescript/components/button/ButtonText.d.ts.map +1 -0
- package/lib/typescript/components/button/DeleteButton.d.ts +4 -6
- package/lib/typescript/components/button/DeleteButton.d.ts.map +1 -1
- package/lib/typescript/components/button/LoadingButton.d.ts +4 -17
- package/lib/typescript/components/button/LoadingButton.d.ts.map +1 -1
- package/lib/typescript/components/button/hooks.d.ts +7 -0
- package/lib/typescript/components/button/hooks.d.ts.map +1 -0
- package/lib/typescript/components/button/index.d.ts +1 -0
- package/lib/typescript/components/button/index.d.ts.map +1 -1
- package/lib/typescript/components/form/input/hooks/useInputStyles.d.ts +0 -9
- package/lib/typescript/components/form/input/hooks/useInputStyles.d.ts.map +1 -1
- package/lib/typescript/components/form/input/index.d.ts +2 -0
- package/lib/typescript/components/form/input/index.d.ts.map +1 -1
- package/lib/typescript/components/loading/CircularProgress.d.ts +3 -2
- package/lib/typescript/components/loading/CircularProgress.d.ts.map +1 -1
- package/lib/typescript/components/loading/LoadingOverlay.d.ts +5 -2
- package/lib/typescript/components/loading/LoadingOverlay.d.ts.map +1 -1
- package/lib/typescript/contexts/fonts.d.ts +9 -0
- package/lib/typescript/contexts/fonts.d.ts.map +1 -0
- package/lib/typescript/contexts/root.d.ts +3 -2
- package/lib/typescript/contexts/root.d.ts.map +1 -1
- package/lib/typescript/hooks/index.d.ts +2 -0
- package/lib/typescript/hooks/index.d.ts.map +1 -1
- package/lib/typescript/hooks/useFont.d.ts +6 -0
- package/lib/typescript/hooks/useFont.d.ts.map +1 -0
- package/package.json +3 -3
- package/src/components/button/ActionButton.tsx +131 -45
- package/src/components/button/ButtonText.tsx +60 -0
- package/src/components/button/DeleteButton.tsx +50 -116
- package/src/components/button/LoadingButton.tsx +10 -156
- package/src/components/button/hooks.ts +66 -0
- package/src/components/button/index.ts +1 -0
- package/src/components/form/input/hooks/useInputStyles.ts +3 -16
- package/src/components/form/input/index.ts +2 -0
- package/src/components/loading/CircularProgress.tsx +7 -5
- package/src/components/loading/LoadingOverlay.tsx +13 -4
- package/src/contexts/fonts.tsx +23 -0
- package/src/contexts/root.tsx +64 -49
- package/src/hooks/index.ts +2 -0
- package/src/hooks/useFadeIn.ts +1 -1
- package/src/hooks/useFont.ts +25 -0
package/src/contexts/root.tsx
CHANGED
|
@@ -1,15 +1,21 @@
|
|
|
1
1
|
import { BackendAdapterInterface, ColorMode, Theme } from '@chem-po/core'
|
|
2
|
-
import { ChempoProps, ChempoProvider,
|
|
2
|
+
import { ChempoProps, ChempoProvider, defaultTheme } from '@chem-po/react'
|
|
3
3
|
import React, { FC, PropsWithChildren, useMemo } from 'react'
|
|
4
4
|
import { GestureHandlerRootView } from 'react-native-gesture-handler'
|
|
5
5
|
import { NotifierWrapper } from 'react-native-notifier'
|
|
6
|
-
import {
|
|
6
|
+
import {
|
|
7
|
+
configureFonts,
|
|
8
|
+
MD3TypescaleKey,
|
|
9
|
+
PaperProvider,
|
|
10
|
+
Props as PaperProviderProps,
|
|
11
|
+
} from 'react-native-paper'
|
|
7
12
|
import { en, registerTranslation } from 'react-native-paper-dates'
|
|
8
|
-
import { MD3Type,
|
|
13
|
+
import { MD3Type, MD3Typescale, ThemeProp } from 'react-native-paper/lib/typescript/types'
|
|
9
14
|
import { SafeAreaProvider, useSafeAreaInsets } from 'react-native-safe-area-context'
|
|
10
15
|
import { nativeToast } from '../constants/toast'
|
|
11
16
|
import { UseThemeProps, useThemeState } from '../hooks/useThemeState'
|
|
12
17
|
import { initializeScreen } from '../store/useScreen'
|
|
18
|
+
import { ChempoFontsProvider } from './fonts'
|
|
13
19
|
|
|
14
20
|
registerTranslation('en', en)
|
|
15
21
|
|
|
@@ -25,13 +31,30 @@ export interface ChempoNativeProviderProps<BackendAdapter extends BackendAdapter
|
|
|
25
31
|
insetNotifier?: boolean
|
|
26
32
|
}
|
|
27
33
|
const createPaperTheme = (
|
|
28
|
-
|
|
29
|
-
|
|
34
|
+
themeConfig: Theme,
|
|
35
|
+
font: FontConfig | undefined,
|
|
30
36
|
colorMode: ColorMode,
|
|
31
|
-
): PaperProviderProps['theme'] => {
|
|
32
|
-
const { colors } =
|
|
33
|
-
|
|
34
|
-
|
|
37
|
+
): { theme: PaperProviderProps['theme']; fonts: MD3Typescale } => {
|
|
38
|
+
const { colors } = themeConfig
|
|
39
|
+
|
|
40
|
+
const fonts = configureFonts({
|
|
41
|
+
config: {
|
|
42
|
+
...font,
|
|
43
|
+
bodyLarge: {
|
|
44
|
+
fontSize: 18,
|
|
45
|
+
...font?.bodyLarge,
|
|
46
|
+
},
|
|
47
|
+
bodyMedium: {
|
|
48
|
+
fontSize: 17,
|
|
49
|
+
...font?.bodyMedium,
|
|
50
|
+
},
|
|
51
|
+
bodySmall: {
|
|
52
|
+
fontSize: 16,
|
|
53
|
+
...font?.bodySmall,
|
|
54
|
+
},
|
|
55
|
+
},
|
|
56
|
+
})
|
|
57
|
+
const theme = {
|
|
35
58
|
dark: colorMode === 'dark',
|
|
36
59
|
colors: {
|
|
37
60
|
primary: colors.accent[300],
|
|
@@ -86,45 +109,30 @@ const createPaperTheme = (
|
|
|
86
109
|
animation: {
|
|
87
110
|
scale: 1.0,
|
|
88
111
|
},
|
|
89
|
-
fonts
|
|
90
|
-
config: {
|
|
91
|
-
...fonts,
|
|
92
|
-
bodyLarge: {
|
|
93
|
-
fontSize: 18,
|
|
94
|
-
...fonts?.bodyLarge,
|
|
95
|
-
},
|
|
96
|
-
bodyMedium: {
|
|
97
|
-
fontSize: 17,
|
|
98
|
-
...fonts?.bodyMedium,
|
|
99
|
-
},
|
|
100
|
-
bodySmall: {
|
|
101
|
-
fontSize: 16,
|
|
102
|
-
...fonts?.bodySmall,
|
|
103
|
-
},
|
|
104
|
-
},
|
|
105
|
-
}),
|
|
112
|
+
fonts,
|
|
106
113
|
}
|
|
114
|
+
return { theme, fonts }
|
|
107
115
|
}
|
|
108
116
|
|
|
109
|
-
const ChempoPaperProvider = ({
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
() => createPaperTheme(theme, fonts, colorMode),
|
|
114
|
-
[theme, fonts, colorMode],
|
|
115
|
-
)
|
|
117
|
+
const ChempoPaperProvider = ({
|
|
118
|
+
children,
|
|
119
|
+
paperTheme,
|
|
120
|
+
}: PropsWithChildren<{ paperTheme: ThemeProp | undefined }>) => {
|
|
116
121
|
return <PaperProvider theme={paperTheme}>{children}</PaperProvider>
|
|
117
122
|
}
|
|
118
123
|
|
|
119
124
|
const ProviderBody = ({
|
|
120
125
|
children,
|
|
121
|
-
fonts,
|
|
122
126
|
insetNotifier,
|
|
123
|
-
|
|
127
|
+
paperTheme,
|
|
128
|
+
}: PropsWithChildren<{
|
|
129
|
+
insetNotifier?: boolean
|
|
130
|
+
paperTheme: ThemeProp | undefined
|
|
131
|
+
}>) => {
|
|
124
132
|
const { top } = useSafeAreaInsets()
|
|
125
133
|
|
|
126
134
|
return (
|
|
127
|
-
<ChempoPaperProvider
|
|
135
|
+
<ChempoPaperProvider paperTheme={paperTheme}>
|
|
128
136
|
<NotifierWrapper containerStyle={{ paddingTop: insetNotifier ? top : 0 }}>
|
|
129
137
|
{children}
|
|
130
138
|
</NotifierWrapper>
|
|
@@ -136,7 +144,7 @@ export const ChempoNativeProvider = <BackendAdapter extends BackendAdapterInterf
|
|
|
136
144
|
theme: themeProp,
|
|
137
145
|
initialColorMode,
|
|
138
146
|
children,
|
|
139
|
-
fonts,
|
|
147
|
+
fonts: fontConfig,
|
|
140
148
|
colorModeProp,
|
|
141
149
|
middlewareProvider: Middleware,
|
|
142
150
|
insetNotifier,
|
|
@@ -148,23 +156,30 @@ export const ChempoNativeProvider = <BackendAdapter extends BackendAdapterInterf
|
|
|
148
156
|
)
|
|
149
157
|
const theme = useThemeState(useThemeProps)
|
|
150
158
|
|
|
159
|
+
const { theme: paperTheme, fonts } = useMemo(
|
|
160
|
+
() => createPaperTheme(theme.theme ?? defaultTheme, fontConfig, theme.colorMode),
|
|
161
|
+
[theme, fontConfig],
|
|
162
|
+
)
|
|
163
|
+
|
|
151
164
|
const body = (
|
|
152
|
-
<ProviderBody insetNotifier={insetNotifier}
|
|
165
|
+
<ProviderBody insetNotifier={insetNotifier} paperTheme={paperTheme}>
|
|
153
166
|
{children}
|
|
154
167
|
</ProviderBody>
|
|
155
168
|
)
|
|
156
169
|
|
|
157
170
|
return (
|
|
158
|
-
<
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
<
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
171
|
+
<ChempoFontsProvider fonts={fonts}>
|
|
172
|
+
<ChempoProvider
|
|
173
|
+
toast={nativeToast}
|
|
174
|
+
theme={theme}
|
|
175
|
+
initializeScreen={initializeScreen}
|
|
176
|
+
{...props}>
|
|
177
|
+
<SafeAreaProvider>
|
|
178
|
+
<GestureHandlerRootView>
|
|
179
|
+
{Middleware ? <Middleware>{body}</Middleware> : body}
|
|
180
|
+
</GestureHandlerRootView>
|
|
181
|
+
</SafeAreaProvider>
|
|
182
|
+
</ChempoProvider>
|
|
183
|
+
</ChempoFontsProvider>
|
|
169
184
|
)
|
|
170
185
|
}
|
package/src/hooks/index.ts
CHANGED
package/src/hooks/useFadeIn.ts
CHANGED
|
@@ -24,7 +24,7 @@ export const useFadeIn = (active: boolean, opts?: FadeInOptions) => {
|
|
|
24
24
|
enterDelay = 0,
|
|
25
25
|
exitDelay = 0,
|
|
26
26
|
} = opts ?? defaultFadeInOptions
|
|
27
|
-
const opacity = useRef(new Animated.Value(
|
|
27
|
+
const opacity = useRef(new Animated.Value(active ? activeOpacity : inactiveOpacity))
|
|
28
28
|
|
|
29
29
|
useEffect(() => {
|
|
30
30
|
if (active) {
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { useChempoFonts } from '../contexts/fonts'
|
|
2
|
+
|
|
3
|
+
export type FontFamilyType = 'display' | 'body' | 'label' | 'headline' | 'title'
|
|
4
|
+
export type FontSize = 'lg' | 'md' | 'sm'
|
|
5
|
+
export type FontSizeKey = 'Small' | 'Medium' | 'Large'
|
|
6
|
+
export type FontKey = `${FontFamilyType}${FontSizeKey}`
|
|
7
|
+
|
|
8
|
+
const getFontKeySize = (fontSize: FontSize): FontSizeKey => {
|
|
9
|
+
switch (fontSize) {
|
|
10
|
+
case 'lg':
|
|
11
|
+
return 'Large'
|
|
12
|
+
case 'md':
|
|
13
|
+
return 'Medium'
|
|
14
|
+
default:
|
|
15
|
+
return 'Small'
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
const getFontKey = (fontFamily: FontFamilyType, fontSize: FontSize): FontKey =>
|
|
20
|
+
`${fontFamily}${getFontKeySize(fontSize)}`
|
|
21
|
+
|
|
22
|
+
export const useFont = (fontFamily: FontFamilyType, fontSize: FontSize) => {
|
|
23
|
+
const { fonts } = useChempoFonts()
|
|
24
|
+
return fonts[getFontKey(fontFamily, fontSize)]
|
|
25
|
+
}
|