@draftbit/core 43.4.10 → 43.4.11-ca8fc3.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 (198) hide show
  1. package/lib/commonjs/components/Accordion/AccordionItem.js +21 -5
  2. package/lib/commonjs/components/Accordion/AccordionItem.js.map +1 -1
  3. package/lib/commonjs/components/Elevation.js +14 -3
  4. package/lib/commonjs/components/Elevation.js.map +1 -1
  5. package/lib/commonjs/components/FAB.js +19 -5
  6. package/lib/commonjs/components/FAB.js.map +1 -1
  7. package/lib/commonjs/components/Justification.js +3 -0
  8. package/lib/commonjs/components/ResizeMode.js +3 -0
  9. package/lib/commonjs/mappings/Icon.js +3 -1
  10. package/lib/commonjs/mappings/Icon.js.map +1 -1
  11. package/lib/commonjs/mappings/KeyboardAwareScrollView.js +48 -0
  12. package/lib/commonjs/mappings/KeyboardAwareScrollView.js.map +1 -0
  13. package/lib/commonjs/mappings/RowBodyIcon.js.map +1 -1
  14. package/lib/commonjs/mappings/RowHeadlineImageCaption.js.map +1 -1
  15. package/lib/module/components/Justification.js +1 -1
  16. package/lib/module/components/Picker/PickerTypes.js.map +1 -1
  17. package/lib/module/components/ResizeMode.js +1 -1
  18. package/lib/module/components/Typography.js.map +1 -1
  19. package/lib/module/mappings/Icon.js +3 -1
  20. package/lib/module/mappings/Icon.js.map +1 -1
  21. package/lib/module/mappings/KeyboardAwareScrollView.js +39 -0
  22. package/lib/module/mappings/KeyboardAwareScrollView.js.map +1 -0
  23. package/lib/typescript/src/mappings/Icon.d.ts +1 -1
  24. package/lib/typescript/src/mappings/KeyboardAwareScrollView.d.ts +82 -0
  25. package/package.json +2 -2
  26. package/src/Provider.js +9 -0
  27. package/src/components/Accordion/AccordionGroup.js +44 -0
  28. package/src/components/Accordion/AccordionItem.js +32 -0
  29. package/src/components/Accordion/index.js +2 -0
  30. package/src/components/ActionSheet/ActionSheet.js +45 -0
  31. package/src/components/ActionSheet/ActionSheetCancel.js +6 -0
  32. package/src/components/ActionSheet/ActionSheetItem.js +30 -0
  33. package/src/components/ActionSheet/index.js +3 -0
  34. package/src/components/AnimatedCircularProgress.js +43 -0
  35. package/src/components/AspectRatio.js +18 -0
  36. package/src/components/AvatarEdit.js +30 -0
  37. package/src/components/Button.js +112 -0
  38. package/src/components/Card.js +57 -0
  39. package/src/components/CardBlock.js +54 -0
  40. package/src/components/CardContainer.js +69 -0
  41. package/src/components/CardContainerRating.js +79 -0
  42. package/src/components/CardContainerShortImage.js +33 -0
  43. package/src/components/CardInline.js +36 -0
  44. package/src/components/Carousel.js +66 -0
  45. package/src/components/Checkbox/Checkbox.js +63 -0
  46. package/src/components/Checkbox/CheckboxGroup.js +21 -0
  47. package/src/components/Checkbox/CheckboxRow.js +77 -0
  48. package/src/components/Checkbox/context.js +14 -0
  49. package/src/components/Checkbox/index.js +3 -0
  50. package/src/components/CircleImage.js +8 -0
  51. package/src/components/CircularProgress.js +78 -0
  52. package/src/components/Config.js +63 -0
  53. package/src/components/Container.js +44 -0
  54. package/src/components/DatePicker/DatePicker.js +370 -0
  55. package/src/components/DatePicker/DatePickerComponent.js +13 -0
  56. package/src/components/DatePicker/DatePickerComponent.web.js +30 -0
  57. package/src/components/DatePicker/DatePickerComponentType.js +1 -0
  58. package/src/components/DeprecatedButton.js +95 -0
  59. package/src/components/DeprecatedCardWrapper.js +18 -0
  60. package/src/components/DeprecatedFAB.js +115 -0
  61. package/src/components/Divider.js +13 -0
  62. package/src/components/Elevation.js +20 -0
  63. package/src/components/FAB.js +46 -0
  64. package/src/components/FieldSearchBarFull.js +53 -0
  65. package/src/components/FormRow.js +19 -0
  66. package/src/components/Header.js +44 -0
  67. package/src/components/HeaderLarge.js +7 -0
  68. package/src/components/HeaderMedium.js +7 -0
  69. package/src/components/HeaderOverline.js +7 -0
  70. package/src/components/IconButton.js +35 -0
  71. package/src/components/Image.js +47 -0
  72. package/src/components/Justification.js +1 -0
  73. package/src/components/Layout.js +50 -0
  74. package/src/components/NumberInput.js +50 -0
  75. package/src/components/Picker/Picker.js +56 -0
  76. package/src/components/Picker/PickerComponent.android.js +68 -0
  77. package/src/components/Picker/PickerComponent.ios.js +78 -0
  78. package/src/components/Picker/PickerComponent.web.js +69 -0
  79. package/src/components/Picker/PickerTypes.js +1 -0
  80. package/src/components/Portal/Portal.js +35 -0
  81. package/src/components/Portal/PortalConsumer.js +28 -0
  82. package/src/components/Portal/PortalHost.js +105 -0
  83. package/src/components/Portal/PortalManager.js +29 -0
  84. package/src/components/ProgressBar.js +118 -0
  85. package/src/components/ProgressCircle.js +13 -0
  86. package/src/components/ProgressIndicator.js +27 -0
  87. package/src/components/RadioButton/RadioButton.js +17 -0
  88. package/src/components/RadioButton/RadioButtonFieldGroup.js +17 -0
  89. package/src/components/RadioButton/RadioButtonGroup.js +39 -0
  90. package/src/components/RadioButton/RadioButtonRow.js +76 -0
  91. package/src/components/RadioButton/context.js +14 -0
  92. package/src/components/RadioButton/index.js +4 -0
  93. package/src/components/ResizeMode.js +1 -0
  94. package/src/components/Row.js +48 -0
  95. package/src/components/RowBodyIcon.js +8 -0
  96. package/src/components/RowHeadlineImageCaption.js +12 -0
  97. package/src/components/RowHeadlineImageIcon.js +14 -0
  98. package/src/components/ScreenContainer.js +35 -0
  99. package/src/components/Slider.js +63 -0
  100. package/src/components/StarRating.js +50 -0
  101. package/src/components/StepIndicator.js +346 -0
  102. package/src/components/Stepper.js +53 -0
  103. package/src/components/Surface.js +23 -0
  104. package/src/components/Swiper/Swiper.js +18 -0
  105. package/src/components/Swiper/SwiperItem.js +9 -0
  106. package/src/components/Swiper/index.js +2 -0
  107. package/src/components/Switch.js +56 -0
  108. package/src/components/Text.js +28 -0
  109. package/src/components/TextField.js +419 -0
  110. package/src/components/ToggleButton.js +39 -0
  111. package/src/components/Touchable.js +12 -0
  112. package/src/components/Touchable.web.js +2 -0
  113. package/src/components/Typography.js +36 -0
  114. package/src/components/useAuthState.js +31 -0
  115. package/src/constants.js +10 -0
  116. package/src/hooks.js +12 -0
  117. package/src/index.js +50 -0
  118. package/src/interfaces/Icon.js +8 -0
  119. package/src/mappings/Accordion.js +37 -0
  120. package/src/mappings/AccordionItem.js +16 -0
  121. package/src/mappings/ActionSheet.js +13 -0
  122. package/src/mappings/ActionSheetCancel.js +19 -0
  123. package/src/mappings/ActionSheetItem.js +22 -0
  124. package/src/mappings/ActivityIndicator.js +53 -0
  125. package/src/mappings/AudioPlayer.js +20 -0
  126. package/src/mappings/AvatarEdit.js +37 -0
  127. package/src/mappings/BlurView.js +41 -0
  128. package/src/mappings/Button.js +56 -0
  129. package/src/mappings/Card.js +52 -0
  130. package/src/mappings/CardBlock.js +122 -0
  131. package/src/mappings/CardContainer.js +102 -0
  132. package/src/mappings/CardContainerRating.js +124 -0
  133. package/src/mappings/CardContainerShortImage.js +118 -0
  134. package/src/mappings/CardInline.js +51 -0
  135. package/src/mappings/Carousel.js +18 -0
  136. package/src/mappings/Checkbox.js +45 -0
  137. package/src/mappings/CheckboxGroup.js +25 -0
  138. package/src/mappings/CheckboxRow.js +37 -0
  139. package/src/mappings/CircleImage.js +24 -0
  140. package/src/mappings/Container.js +29 -0
  141. package/src/mappings/CustomCode.js +8 -0
  142. package/src/mappings/DatePicker.js +146 -0
  143. package/src/mappings/Divider.js +26 -0
  144. package/src/mappings/FAB.js +36 -0
  145. package/src/mappings/Fetch.js +12 -0
  146. package/src/mappings/FieldSearchBarFull.js +49 -0
  147. package/src/mappings/FlatList.js +19 -0
  148. package/src/mappings/HeaderLarge.js +28 -0
  149. package/src/mappings/HeaderMedium.js +54 -0
  150. package/src/mappings/HeaderOverline.js +54 -0
  151. package/src/mappings/Icon.js +25 -0
  152. package/src/mappings/Icon.ts +4 -1
  153. package/src/mappings/IconButton.js +30 -0
  154. package/src/mappings/Image.js +15 -0
  155. package/src/mappings/ImageBackground.js +28 -0
  156. package/src/mappings/KeyboardAvoidingView.js +40 -0
  157. package/src/mappings/KeyboardAwareScrollView.js +38 -0
  158. package/src/mappings/KeyboardAwareScrollView.ts +48 -0
  159. package/src/mappings/Layout.js +195 -0
  160. package/src/mappings/LinearGradient.js +77 -0
  161. package/src/mappings/MapCallout.js +19 -0
  162. package/src/mappings/MapMarker.js +46 -0
  163. package/src/mappings/Modal.js +41 -0
  164. package/src/mappings/Picker.js +137 -0
  165. package/src/mappings/ProgressBar.js +100 -0
  166. package/src/mappings/ProgressCircle.js +108 -0
  167. package/src/mappings/ProgressIndicator.js +180 -0
  168. package/src/mappings/RadioButton.js +50 -0
  169. package/src/mappings/RadioButtonGroup.js +16 -0
  170. package/src/mappings/RadioButtonRow.js +37 -0
  171. package/src/mappings/RowBodyIcon.js +75 -0
  172. package/src/mappings/RowHeadlineImageCaption.js +167 -0
  173. package/src/mappings/RowHeadlineImageIcon.js +99 -0
  174. package/src/mappings/SafeAreaView.js +33 -0
  175. package/src/mappings/ScrollView.js +30 -0
  176. package/src/mappings/Slider.js +59 -0
  177. package/src/mappings/StarRating.js +46 -0
  178. package/src/mappings/Stepper.js +28 -0
  179. package/src/mappings/Surface.js +13 -0
  180. package/src/mappings/Swiper.js +60 -0
  181. package/src/mappings/SwiperItem.js +8 -0
  182. package/src/mappings/Switch.js +75 -0
  183. package/src/mappings/Text.js +227 -0
  184. package/src/mappings/TextArea.js +52 -0
  185. package/src/mappings/TextField.js +158 -0
  186. package/src/mappings/TextInput.js +208 -0
  187. package/src/mappings/ToggleButton.js +50 -0
  188. package/src/mappings/Touchable.js +12 -0
  189. package/src/mappings/Video.js +74 -0
  190. package/src/mappings/View.js +206 -0
  191. package/src/mappings/WebView.js +13 -0
  192. package/src/styles/DarkTheme.js +26 -0
  193. package/src/styles/DefaultTheme.js +111 -0
  194. package/src/styles/fonts.js +62 -0
  195. package/src/styles/overlay.js +60 -0
  196. package/src/styles/shadow.js +51 -0
  197. package/src/theming.js +3 -0
  198. package/src/utilities.js +54 -0
@@ -0,0 +1,111 @@
1
+ import { systemWeights } from "react-native-typography";
2
+ import configureFonts from "./fonts";
3
+ const DefaultTheme = {
4
+ disabledOpacity: 0.5,
5
+ roundness: 8,
6
+ dark: false,
7
+ mode: "exact",
8
+ borderRadius: {
9
+ global: 6,
10
+ button: 24,
11
+ },
12
+ colors: {
13
+ primary: "rgba(90, 69, 255, 1)",
14
+ secondary: "rgba(59, 201, 234, 1)",
15
+ surface: "rgba(255, 255, 255, 1)",
16
+ background: "rgba(251, 252, 253, 1)",
17
+ error: "rgba(255, 69, 100, 1)",
18
+ divider: "rgba(200, 200, 200, 1)",
19
+ strong: "rgba(18, 20, 44, 1)",
20
+ medium: "rgba(70, 78, 88, 1)",
21
+ strongInverse: "rgba(255, 255, 255, 1)",
22
+ mediumInverse: "rgba(255, 255, 255, 0.87)",
23
+ lightInverse: "rgba(255, 255, 255, 0.68)",
24
+ light: "rgba(165, 173, 183, 1)",
25
+ text: "#000",
26
+ placeholder: "#333",
27
+ disabled: "rgba(0, 0, 0, 0.25)",
28
+ },
29
+ fonts: configureFonts(),
30
+ typography: {
31
+ headline1: {
32
+ ...systemWeights.regular,
33
+ fontSize: 60,
34
+ letterSpacing: 0,
35
+ lineHeight: 71,
36
+ },
37
+ headline2: {
38
+ ...systemWeights.regular,
39
+ fontSize: 48,
40
+ letterSpacing: 0,
41
+ lineHeight: 58,
42
+ },
43
+ headline3: {
44
+ ...systemWeights.regular,
45
+ fontSize: 34,
46
+ letterSpacing: 0,
47
+ lineHeight: 40,
48
+ },
49
+ headline4: {
50
+ ...systemWeights.regular,
51
+ fontSize: 24,
52
+ letterSpacing: 0,
53
+ lineHeight: 34,
54
+ },
55
+ headline5: {
56
+ ...systemWeights.regular,
57
+ fontSize: 20,
58
+ letterSpacing: 0,
59
+ lineHeight: 26,
60
+ },
61
+ subtitle1: {
62
+ ...systemWeights.regular,
63
+ fontSize: 16,
64
+ letterSpacing: 0,
65
+ lineHeight: 26,
66
+ },
67
+ subtitle2: {
68
+ ...systemWeights.regular,
69
+ fontSize: 14,
70
+ letterSpacing: 0,
71
+ lineHeight: 22,
72
+ },
73
+ body1: {
74
+ ...systemWeights.regular,
75
+ fontSize: 16,
76
+ letterSpacing: 0,
77
+ lineHeight: 26,
78
+ },
79
+ body2: {
80
+ ...systemWeights.regular,
81
+ fontSize: 14,
82
+ letterSpacing: 0,
83
+ lineHeight: 22,
84
+ },
85
+ button: {
86
+ ...systemWeights.regular,
87
+ fontSize: 14,
88
+ letterSpacing: 0,
89
+ lineHeight: 16,
90
+ },
91
+ caption: {
92
+ ...systemWeights.regular,
93
+ fontSize: 12,
94
+ letterSpacing: 0,
95
+ lineHeight: 16,
96
+ },
97
+ overline: {
98
+ ...systemWeights.regular,
99
+ fontSize: 12,
100
+ letterSpacing: 2,
101
+ lineHeight: 16,
102
+ },
103
+ headline6: {
104
+ ...systemWeights.regular,
105
+ fontSize: 16,
106
+ letterSpacing: 0,
107
+ lineHeight: 24,
108
+ },
109
+ },
110
+ };
111
+ export default DefaultTheme;
@@ -0,0 +1,62 @@
1
+ /* https://github.com/callstack/react-native-paper/blob/main/src/styles/fonts.tsx */
2
+ import { Platform } from "react-native";
3
+ const fontConfig = {
4
+ web: {
5
+ regular: {
6
+ fontFamily: 'Roboto, "Helvetica Neue", Helvetica, Arial, sans-serif',
7
+ fontWeight: "400",
8
+ },
9
+ medium: {
10
+ fontFamily: 'Roboto, "Helvetica Neue", Helvetica, Arial, sans-serif',
11
+ fontWeight: "500",
12
+ },
13
+ light: {
14
+ fontFamily: 'Roboto, "Helvetica Neue", Helvetica, Arial, sans-serif',
15
+ fontWeight: "300",
16
+ },
17
+ thin: {
18
+ fontFamily: 'Roboto, "Helvetica Neue", Helvetica, Arial, sans-serif',
19
+ fontWeight: "100",
20
+ },
21
+ },
22
+ ios: {
23
+ regular: {
24
+ fontFamily: "System",
25
+ fontWeight: "400",
26
+ },
27
+ medium: {
28
+ fontFamily: "System",
29
+ fontWeight: "500",
30
+ },
31
+ light: {
32
+ fontFamily: "System",
33
+ fontWeight: "300",
34
+ },
35
+ thin: {
36
+ fontFamily: "System",
37
+ fontWeight: "100",
38
+ },
39
+ },
40
+ default: {
41
+ regular: {
42
+ fontFamily: "sans-serif",
43
+ fontWeight: "normal",
44
+ },
45
+ medium: {
46
+ fontFamily: "sans-serif-medium",
47
+ fontWeight: "normal",
48
+ },
49
+ light: {
50
+ fontFamily: "sans-serif-light",
51
+ fontWeight: "normal",
52
+ },
53
+ thin: {
54
+ fontFamily: "sans-serif-thin",
55
+ fontWeight: "normal",
56
+ },
57
+ },
58
+ };
59
+ export default function configureFonts(config) {
60
+ const fonts = Platform.select({ ...fontConfig, ...config });
61
+ return fonts;
62
+ }
@@ -0,0 +1,60 @@
1
+ /* Copied from https://github.com/callstack/react-native-paper/blob/main/src/styles/overlay.tsx */
2
+ import color from "color";
3
+ import { Animated } from "react-native";
4
+ import DarkTheme from "./DarkTheme";
5
+ const isAnimatedValue = (it) => it instanceof Animated.Value;
6
+ export default function overlay(elevation, surfaceColor = DarkTheme.colors.surface) {
7
+ if (isAnimatedValue(elevation)) {
8
+ const inputRange = [0, 1, 2, 3, 8, 24];
9
+ // @ts-expect-error: TS doesn't seem to refine the type correctly
10
+ return elevation.interpolate({
11
+ inputRange,
12
+ outputRange: inputRange.map((e) => {
13
+ return calculateColor(surfaceColor, e);
14
+ }),
15
+ });
16
+ }
17
+ // @ts-expect-error: TS doesn't seem to refine the type correctly
18
+ return calculateColor(surfaceColor, elevation);
19
+ }
20
+ function calculateColor(surfaceColor, elevation = 1) {
21
+ let overlayTransparency;
22
+ if (elevation >= 1 && elevation <= 24) {
23
+ overlayTransparency = elevationOverlayTransparency[elevation];
24
+ }
25
+ else if (elevation > 24) {
26
+ overlayTransparency = elevationOverlayTransparency[24];
27
+ }
28
+ else {
29
+ overlayTransparency = elevationOverlayTransparency[1];
30
+ }
31
+ return color(surfaceColor)
32
+ .mix(color("white"), overlayTransparency * 0.01)
33
+ .hex();
34
+ }
35
+ const elevationOverlayTransparency = {
36
+ 1: 5,
37
+ 2: 7,
38
+ 3: 8,
39
+ 4: 9,
40
+ 5: 10,
41
+ 6: 11,
42
+ 7: 11.5,
43
+ 8: 12,
44
+ 9: 12.5,
45
+ 10: 13,
46
+ 11: 13.5,
47
+ 12: 14,
48
+ 13: 14.25,
49
+ 14: 14.5,
50
+ 15: 14.75,
51
+ 16: 15,
52
+ 17: 15.12,
53
+ 18: 15.24,
54
+ 19: 15.36,
55
+ 20: 15.48,
56
+ 21: 15.6,
57
+ 22: 15.72,
58
+ 23: 15.84,
59
+ 24: 16,
60
+ };
@@ -0,0 +1,51 @@
1
+ import { Animated } from "react-native";
2
+ const SHADOW_COLOR = "#000";
3
+ const SHADOW_OPACITY = 0.24;
4
+ export default function shadow(elevation = 0) {
5
+ if (elevation instanceof Animated.Value) {
6
+ const inputRange = [0, 1, 2, 3, 8, 24];
7
+ return {
8
+ shadowColor: SHADOW_COLOR,
9
+ shadowOffset: {
10
+ width: new Animated.Value(0),
11
+ height: elevation.interpolate({
12
+ inputRange,
13
+ outputRange: [0, 0.5, 0.75, 2, 7, 23],
14
+ }),
15
+ },
16
+ shadowOpacity: new Animated.Value(SHADOW_OPACITY),
17
+ shadowRadius: elevation.interpolate({
18
+ inputRange,
19
+ outputRange: [0, 0.75, 1.5, 3, 8, 24],
20
+ }),
21
+ };
22
+ }
23
+ else {
24
+ if (elevation === 0) {
25
+ return {};
26
+ }
27
+ let height, radius;
28
+ switch (elevation) {
29
+ case 1:
30
+ height = 0.5;
31
+ radius = 0.75;
32
+ break;
33
+ case 2:
34
+ height = 0.75;
35
+ radius = 1.5;
36
+ break;
37
+ default:
38
+ height = elevation - 1;
39
+ radius = elevation;
40
+ }
41
+ return {
42
+ shadowColor: SHADOW_COLOR,
43
+ shadowOffset: {
44
+ width: 0,
45
+ height,
46
+ },
47
+ shadowOpacity: SHADOW_OPACITY,
48
+ shadowRadius: radius,
49
+ };
50
+ }
51
+ }
package/src/theming.js ADDED
@@ -0,0 +1,3 @@
1
+ import { createTheming } from "@draftbit/react-theme-provider";
2
+ import DefaultTheme from "./styles/DefaultTheme";
3
+ export const { ThemeProvider, withTheme, useTheme } = createTheming(DefaultTheme);
@@ -0,0 +1,54 @@
1
+ import { StyleSheet } from "react-native";
2
+ import { isString, isNumber } from "lodash";
3
+ export function extractStyles(style) {
4
+ const { color, fontFamily, fontWeight, fontSize, lineHeight, letterSpacing, textTransform, textAlign, textDecorationLine, textDecorationColor, textDecorationStyle, ...viewStyles } = StyleSheet.flatten(style || {});
5
+ const textStyles = {
6
+ color,
7
+ fontFamily,
8
+ fontWeight,
9
+ fontSize,
10
+ lineHeight,
11
+ letterSpacing,
12
+ textTransform,
13
+ textAlign,
14
+ textDecorationLine,
15
+ textDecorationColor,
16
+ textDecorationStyle,
17
+ };
18
+ return { viewStyles, textStyles };
19
+ }
20
+ /**
21
+ * Merges a style object on top of another style object. In React Native,
22
+ * keys with undefined values in a style object will still override styles
23
+ * that appear earlier in a sequence. This avoids that problem.
24
+ *
25
+ * This lets us avoid the `...(something ? { something } : {})` pattern.
26
+ * There doesn't seem to be a better way to do this. These all seem to not
27
+ * work (i.e. they all result in `{ color: undefined }`:
28
+ * `const mergedStyles = [{ color: "red" }, { color: undefined }]`
29
+ * `const mergedStyles = StyleSheet.compose({ color: "red" }, { color: undefined })`
30
+ * `const mergedStyles = StyleSheet.flatten([{ color: "red" }, { color: undefined }])`
31
+ */
32
+ export function applyStyles(baseStyles, stylesToApply) {
33
+ if (!stylesToApply) {
34
+ return;
35
+ }
36
+ const flattenedStyles = StyleSheet.flatten(baseStyles);
37
+ for (const [key, value] of Object.entries(stylesToApply)) {
38
+ if (value != null) {
39
+ flattenedStyles[key] = value;
40
+ }
41
+ }
42
+ return flattenedStyles;
43
+ }
44
+ export function getValueForRadioButton(value) {
45
+ if (isString(value)) {
46
+ return value;
47
+ }
48
+ else if (isNumber(value)) {
49
+ return String(value);
50
+ }
51
+ else {
52
+ throw new Error(`Invalid value: ${value}`);
53
+ }
54
+ }