@chem-po/react-native 0.0.39 → 0.0.40

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 (88) hide show
  1. package/lib/commonjs/components/button/ActionButton.js +103 -38
  2. package/lib/commonjs/components/button/ActionButton.js.map +1 -1
  3. package/lib/commonjs/components/button/ButtonText.js +52 -0
  4. package/lib/commonjs/components/button/ButtonText.js.map +1 -0
  5. package/lib/commonjs/components/button/DeleteButton.js +26 -80
  6. package/lib/commonjs/components/button/DeleteButton.js.map +1 -1
  7. package/lib/commonjs/components/button/LoadingButton.js +8 -107
  8. package/lib/commonjs/components/button/LoadingButton.js.map +1 -1
  9. package/lib/commonjs/components/button/hooks.js +56 -0
  10. package/lib/commonjs/components/button/hooks.js.map +1 -0
  11. package/lib/commonjs/components/button/index.js +11 -0
  12. package/lib/commonjs/components/button/index.js.map +1 -1
  13. package/lib/commonjs/components/form/input/hooks/useInputStyles.js +3 -15
  14. package/lib/commonjs/components/form/input/hooks/useInputStyles.js.map +1 -1
  15. package/lib/commonjs/components/loading/CircularProgress.js.map +1 -1
  16. package/lib/commonjs/components/loading/LoadingOverlay.js +8 -5
  17. package/lib/commonjs/components/loading/LoadingOverlay.js.map +1 -1
  18. package/lib/commonjs/contexts/fonts.js +29 -0
  19. package/lib/commonjs/contexts/fonts.js.map +1 -0
  20. package/lib/commonjs/contexts/root.js +35 -24
  21. package/lib/commonjs/contexts/root.js.map +1 -1
  22. package/lib/commonjs/hooks/useFadeIn.js +1 -1
  23. package/lib/commonjs/hooks/useFadeIn.js.map +1 -1
  24. package/lib/commonjs/hooks/useFont.js +26 -0
  25. package/lib/commonjs/hooks/useFont.js.map +1 -0
  26. package/lib/module/components/button/ActionButton.js +100 -35
  27. package/lib/module/components/button/ActionButton.js.map +1 -1
  28. package/lib/module/components/button/ButtonText.js +44 -0
  29. package/lib/module/components/button/ButtonText.js.map +1 -0
  30. package/lib/module/components/button/DeleteButton.js +28 -82
  31. package/lib/module/components/button/DeleteButton.js.map +1 -1
  32. package/lib/module/components/button/LoadingButton.js +10 -109
  33. package/lib/module/components/button/LoadingButton.js.map +1 -1
  34. package/lib/module/components/button/hooks.js +45 -0
  35. package/lib/module/components/button/hooks.js.map +1 -0
  36. package/lib/module/components/button/index.js +1 -0
  37. package/lib/module/components/button/index.js.map +1 -1
  38. package/lib/module/components/form/input/hooks/useInputStyles.js +3 -15
  39. package/lib/module/components/form/input/hooks/useInputStyles.js.map +1 -1
  40. package/lib/module/components/loading/CircularProgress.js.map +1 -1
  41. package/lib/module/components/loading/LoadingOverlay.js +8 -5
  42. package/lib/module/components/loading/LoadingOverlay.js.map +1 -1
  43. package/lib/module/contexts/fonts.js +20 -0
  44. package/lib/module/contexts/fonts.js.map +1 -0
  45. package/lib/module/contexts/root.js +35 -24
  46. package/lib/module/contexts/root.js.map +1 -1
  47. package/lib/module/hooks/useFadeIn.js +1 -1
  48. package/lib/module/hooks/useFadeIn.js.map +1 -1
  49. package/lib/module/hooks/useFont.js +19 -0
  50. package/lib/module/hooks/useFont.js.map +1 -0
  51. package/lib/typescript/components/button/ActionButton.d.ts +14 -5
  52. package/lib/typescript/components/button/ActionButton.d.ts.map +1 -1
  53. package/lib/typescript/components/button/ButtonText.d.ts +14 -0
  54. package/lib/typescript/components/button/ButtonText.d.ts.map +1 -0
  55. package/lib/typescript/components/button/DeleteButton.d.ts +4 -6
  56. package/lib/typescript/components/button/DeleteButton.d.ts.map +1 -1
  57. package/lib/typescript/components/button/LoadingButton.d.ts +4 -17
  58. package/lib/typescript/components/button/LoadingButton.d.ts.map +1 -1
  59. package/lib/typescript/components/button/hooks.d.ts +7 -0
  60. package/lib/typescript/components/button/hooks.d.ts.map +1 -0
  61. package/lib/typescript/components/button/index.d.ts +1 -0
  62. package/lib/typescript/components/button/index.d.ts.map +1 -1
  63. package/lib/typescript/components/form/input/hooks/useInputStyles.d.ts +0 -9
  64. package/lib/typescript/components/form/input/hooks/useInputStyles.d.ts.map +1 -1
  65. package/lib/typescript/components/loading/CircularProgress.d.ts +3 -2
  66. package/lib/typescript/components/loading/CircularProgress.d.ts.map +1 -1
  67. package/lib/typescript/components/loading/LoadingOverlay.d.ts +5 -2
  68. package/lib/typescript/components/loading/LoadingOverlay.d.ts.map +1 -1
  69. package/lib/typescript/contexts/fonts.d.ts +9 -0
  70. package/lib/typescript/contexts/fonts.d.ts.map +1 -0
  71. package/lib/typescript/contexts/root.d.ts +2 -1
  72. package/lib/typescript/contexts/root.d.ts.map +1 -1
  73. package/lib/typescript/hooks/useFont.d.ts +6 -0
  74. package/lib/typescript/hooks/useFont.d.ts.map +1 -0
  75. package/package.json +3 -3
  76. package/src/components/button/ActionButton.tsx +131 -45
  77. package/src/components/button/ButtonText.tsx +60 -0
  78. package/src/components/button/DeleteButton.tsx +49 -115
  79. package/src/components/button/LoadingButton.tsx +10 -156
  80. package/src/components/button/hooks.ts +66 -0
  81. package/src/components/button/index.ts +1 -0
  82. package/src/components/form/input/hooks/useInputStyles.ts +3 -16
  83. package/src/components/loading/CircularProgress.tsx +7 -5
  84. package/src/components/loading/LoadingOverlay.tsx +13 -4
  85. package/src/contexts/fonts.tsx +23 -0
  86. package/src/contexts/root.tsx +45 -30
  87. package/src/hooks/useFadeIn.ts +1 -1
  88. package/src/hooks/useFont.ts +25 -0
@@ -3,13 +3,19 @@ import { ChempoProps, ChempoProvider, useTheme } 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 { configureFonts, PaperProvider, Props as PaperProviderProps } from 'react-native-paper'
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, MD3TypescaleKey } from 'react-native-paper/lib/typescript/types'
13
+ import { MD3Type, MD3Typescale } 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
- theme: Theme,
29
- fonts: FontConfig | undefined,
34
+ themeConfig: Theme,
35
+ font: FontConfig | undefined,
30
36
  colorMode: ColorMode,
31
- ): PaperProviderProps['theme'] => {
32
- const { colors } = theme
33
-
34
- return {
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,34 +109,26 @@ const createPaperTheme = (
86
109
  animation: {
87
110
  scale: 1.0,
88
111
  },
89
- fonts: configureFonts({
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 = ({ children, fonts }: PropsWithChildren<{ fonts?: FontConfig }>) => {
117
+ const ChempoPaperProvider = ({
118
+ children,
119
+ fonts: fontConfig,
120
+ }: PropsWithChildren<{ fonts?: FontConfig }>) => {
110
121
  const { theme, colorMode } = useTheme()
111
122
 
112
- const paperTheme = useMemo(
113
- () => createPaperTheme(theme, fonts, colorMode),
114
- [theme, fonts, colorMode],
123
+ const { theme: paperTheme, fonts } = useMemo(
124
+ () => createPaperTheme(theme, fontConfig, colorMode),
125
+ [theme, fontConfig, colorMode],
126
+ )
127
+ return (
128
+ <ChempoFontsProvider fonts={fonts}>
129
+ <PaperProvider theme={paperTheme}>{children}</PaperProvider>
130
+ </ChempoFontsProvider>
115
131
  )
116
- return <PaperProvider theme={paperTheme}>{children}</PaperProvider>
117
132
  }
118
133
 
119
134
  const ProviderBody = ({
@@ -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(0))
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
+ }