@neko-os/ui 0.0.12 → 0.1.0

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 (143) hide show
  1. package/dist/abstractions/KeyboardAvoidingView.js +1 -0
  2. package/dist/abstractions/KeyboardAvoidingView.native.js +1 -0
  3. package/dist/components/actions/ActionsDrawer.js +1 -0
  4. package/dist/components/actions/Button.js +1 -1
  5. package/dist/components/actions/Dropdown.js +1 -1
  6. package/dist/components/actions/FloatingMenu.js +1 -0
  7. package/dist/components/actions/index.js +1 -1
  8. package/dist/components/actions/menu/VerticalMenu.js +1 -1
  9. package/dist/components/animations/AnimatedTopBar.js +1 -0
  10. package/dist/components/animations/AnimatedTopBar.native.js +1 -0
  11. package/dist/components/animations/AnimatedTopBar.web.js +1 -0
  12. package/dist/components/animations/ParallaxHeader.js +1 -0
  13. package/dist/components/animations/ParallaxHeader.native.js +1 -0
  14. package/dist/components/animations/ParallaxHeader.web.js +1 -0
  15. package/dist/components/animations/ReanimatedScrollHandler.js +1 -0
  16. package/dist/components/animations/ReanimatedScrollHandler.native.js +1 -0
  17. package/dist/components/animations/ReanimatedScrollHandler.web.js +1 -0
  18. package/dist/components/animations/index.js +1 -1
  19. package/dist/components/form/FormItem.js +1 -1
  20. package/dist/components/form/FormList.js +1 -1
  21. package/dist/components/form/SubmitButton.js +1 -1
  22. package/dist/components/form/index.js +1 -1
  23. package/dist/components/form/useNewForm.js +1 -1
  24. package/dist/components/form/validation/defaultMessages.js +1 -0
  25. package/dist/components/form/validation/index.js +1 -0
  26. package/dist/components/form/validation/normalizeRules.js +1 -0
  27. package/dist/components/form/validation/shouldValidateOn.js +1 -0
  28. package/dist/components/form/validation/validateRules.js +1 -0
  29. package/dist/components/form/validation/validators.js +1 -0
  30. package/dist/components/index.js +1 -1
  31. package/dist/components/inputs/InputWrapper.js +1 -1
  32. package/dist/components/inputs/NumberInput.js +1 -1
  33. package/dist/components/inputs/Picker.js +1 -1
  34. package/dist/components/inputs/Select.js +1 -1
  35. package/dist/components/presentation/Avatar.js +1 -1
  36. package/dist/components/presentation/AvatarLabel.js +1 -1
  37. package/dist/components/presentation/LabelValue.js +1 -1
  38. package/dist/components/presentation/Result.js +1 -1
  39. package/dist/components/presentation/Tooltip.js +1 -1
  40. package/dist/components/sections/Section.js +1 -0
  41. package/dist/components/sections/SectionItem.js +1 -0
  42. package/dist/components/sections/SectionItemLink.js +1 -0
  43. package/dist/components/sections/index.js +1 -0
  44. package/dist/components/state/StatePresenter.js +1 -0
  45. package/dist/components/state/index.js +1 -1
  46. package/dist/components/structure/BlurView.js +1 -1
  47. package/dist/components/structure/KeyboardAvoidingView.js +1 -0
  48. package/dist/components/structure/TopBar.js +1 -0
  49. package/dist/components/structure/bottomDrawer/index.js +1 -1
  50. package/dist/components/structure/bottomDrawer/index.native.js +1 -1
  51. package/dist/components/structure/bottomDrawer/index.web.js +1 -1
  52. package/dist/components/structure/bottomDrawer/native/BottomDrawer.js +1 -1
  53. package/dist/components/structure/bottomDrawer/native/DrawerScrollView.js +1 -1
  54. package/dist/components/structure/bottomDrawer/native/createDrawerScrollComponent.js +1 -0
  55. package/dist/components/structure/drawer/Drawer.web.js +1 -0
  56. package/dist/components/structure/index.js +1 -1
  57. package/dist/components/text/DateText.js +1 -0
  58. package/dist/components/text/index.js +1 -1
  59. package/dist/components/theme/ThemePicker.js +1 -1
  60. package/dist/helpers/index.js +1 -1
  61. package/dist/helpers/storage.js +1 -1
  62. package/dist/responsive/responsiveHooks.js +1 -1
  63. package/dist/theme/ThemeHandler.js +1 -1
  64. package/dist/theme/default/base.js +1 -1
  65. package/dist/theme/default/blackTheme.js +1 -1
  66. package/dist/theme/default/cyberpunkTheme.js +1 -1
  67. package/dist/theme/default/darkTheme.js +1 -1
  68. package/dist/theme/default/hackerTheme.js +1 -1
  69. package/dist/theme/default/lightTheme.js +1 -1
  70. package/dist/theme/default/msdosTheme.js +1 -1
  71. package/dist/theme/default/paperTheme.js +1 -1
  72. package/package.json +1 -1
  73. package/src/abstractions/KeyboardAvoidingView.js +3 -0
  74. package/src/abstractions/KeyboardAvoidingView.native.js +3 -0
  75. package/src/components/actions/ActionsDrawer.js +68 -0
  76. package/src/components/actions/Button.js +2 -1
  77. package/src/components/actions/Dropdown.js +11 -8
  78. package/src/components/actions/FloatingMenu.js +39 -0
  79. package/src/components/actions/index.js +2 -0
  80. package/src/components/actions/menu/VerticalMenu.js +1 -2
  81. package/src/components/animations/AnimatedTopBar.js +10 -0
  82. package/src/components/animations/AnimatedTopBar.native.js +34 -0
  83. package/src/components/animations/AnimatedTopBar.web.js +1 -0
  84. package/src/components/animations/ParallaxHeader.js +9 -0
  85. package/src/components/animations/ParallaxHeader.native.js +32 -0
  86. package/src/components/animations/ParallaxHeader.web.js +32 -0
  87. package/src/components/animations/ReanimatedScrollHandler.js +8 -0
  88. package/src/components/animations/ReanimatedScrollHandler.native.js +24 -0
  89. package/src/components/animations/ReanimatedScrollHandler.web.js +1 -0
  90. package/src/components/animations/index.js +3 -0
  91. package/src/components/form/FormItem.js +42 -5
  92. package/src/components/form/FormList.js +23 -4
  93. package/src/components/form/SubmitButton.js +4 -2
  94. package/src/components/form/index.js +1 -0
  95. package/src/components/form/useNewForm.js +108 -15
  96. package/src/components/form/validation/defaultMessages.js +20 -0
  97. package/src/components/form/validation/index.js +5 -0
  98. package/src/components/form/validation/normalizeRules.js +22 -0
  99. package/src/components/form/validation/shouldValidateOn.js +21 -0
  100. package/src/components/form/validation/validateRules.js +83 -0
  101. package/src/components/form/validation/validators.js +82 -0
  102. package/src/components/index.js +1 -0
  103. package/src/components/inputs/InputWrapper.js +1 -1
  104. package/src/components/inputs/NumberInput.js +6 -5
  105. package/src/components/inputs/Picker.js +3 -2
  106. package/src/components/inputs/Select.js +31 -15
  107. package/src/components/presentation/Avatar.js +2 -2
  108. package/src/components/presentation/AvatarLabel.js +2 -0
  109. package/src/components/presentation/LabelValue.js +7 -5
  110. package/src/components/presentation/Result.js +2 -2
  111. package/src/components/presentation/Tooltip.js +1 -1
  112. package/src/components/sections/Section.js +50 -0
  113. package/src/components/sections/SectionItem.js +24 -0
  114. package/src/components/sections/SectionItemLink.js +33 -0
  115. package/src/components/sections/index.js +3 -0
  116. package/src/components/state/StatePresenter.js +41 -0
  117. package/src/components/state/index.js +1 -0
  118. package/src/components/structure/BlurView.js +1 -0
  119. package/src/components/structure/KeyboardAvoidingView.js +52 -0
  120. package/src/components/structure/TopBar.js +45 -0
  121. package/src/components/structure/bottomDrawer/index.js +2 -0
  122. package/src/components/structure/bottomDrawer/index.native.js +2 -1
  123. package/src/components/structure/bottomDrawer/index.web.js +2 -1
  124. package/src/components/structure/bottomDrawer/native/BottomDrawer.js +14 -20
  125. package/src/components/structure/bottomDrawer/native/DrawerScrollView.js +4 -82
  126. package/src/components/structure/bottomDrawer/native/createDrawerScrollComponent.js +131 -0
  127. package/src/components/structure/drawer/Drawer.web.js +3 -0
  128. package/src/components/structure/index.js +2 -0
  129. package/src/components/text/DateText.js +11 -0
  130. package/src/components/text/index.js +1 -0
  131. package/src/components/theme/ThemePicker.js +1 -2
  132. package/src/helpers/index.js +1 -0
  133. package/src/helpers/storage.js +32 -9
  134. package/src/responsive/responsiveHooks.js +6 -0
  135. package/src/theme/ThemeHandler.js +6 -3
  136. package/src/theme/default/base.js +16 -4
  137. package/src/theme/default/blackTheme.js +1 -0
  138. package/src/theme/default/cyberpunkTheme.js +10 -0
  139. package/src/theme/default/darkTheme.js +1 -0
  140. package/src/theme/default/hackerTheme.js +17 -3
  141. package/src/theme/default/lightTheme.js +1 -0
  142. package/src/theme/default/msdosTheme.js +9 -10
  143. package/src/theme/default/paperTheme.js +10 -0
@@ -0,0 +1,131 @@
1
+ import { Gesture, GestureDetector } from 'react-native-gesture-handler'
2
+ import Animated, {
3
+ useSharedValue,
4
+ useAnimatedScrollHandler,
5
+ useAnimatedRef,
6
+ scrollTo,
7
+ withSpring,
8
+ runOnJS,
9
+ } from 'react-native-reanimated'
10
+ import React from 'react'
11
+
12
+ import { findClosestSnapPoint, clamp } from './utils'
13
+ import { useDrawerContext } from './DrawerContext'
14
+
15
+ export function createDrawerScrollComponent(Component) {
16
+ const AnimatedComponent = Animated.createAnimatedComponent(Component)
17
+
18
+ function DrawerScrollComponent({ ref, onScroll, ...props }) {
19
+ const {
20
+ translateY,
21
+ panRef,
22
+ normalizedSnapPoints,
23
+ SCREEN_HEIGHT,
24
+ maxSnapPoint,
25
+ minSnapPoint,
26
+ handleClose,
27
+ animationConfig,
28
+ snapIndex,
29
+ } = useDrawerContext()
30
+
31
+ const scrollRef = useAnimatedRef()
32
+ const scrollOffset = useSharedValue(0)
33
+ const prevTranslationY = useSharedValue(0)
34
+ const drawerMoved = useSharedValue(false)
35
+
36
+ React.useImperativeHandle(ref, () => scrollRef.current)
37
+
38
+ const maxPosition = SCREEN_HEIGHT - maxSnapPoint
39
+
40
+ const panGesture = React.useMemo(() => {
41
+ return Gesture.Pan()
42
+ .activeOffsetY([-10, 10])
43
+ .blocksExternalGesture(panRef)
44
+ .onStart(() => {
45
+ prevTranslationY.value = 0
46
+ drawerMoved.value = false
47
+ })
48
+ .onUpdate((event) => {
49
+ const delta = event.translationY - prevTranslationY.value
50
+ prevTranslationY.value = event.translationY
51
+
52
+ const currentY = translateY.value
53
+ const atMaxSnap = currentY <= maxPosition + 1
54
+ const atScrollTop = scrollOffset.value <= 0
55
+
56
+ if (drawerMoved.value) {
57
+ const newY = clamp(currentY + delta, maxPosition, SCREEN_HEIGHT)
58
+ translateY.value = newY
59
+ scrollTo(scrollRef, 0, 0, false)
60
+
61
+ if (newY <= maxPosition + 1 && delta < 0) {
62
+ drawerMoved.value = false
63
+ }
64
+ } else if (!atMaxSnap) {
65
+ drawerMoved.value = true
66
+ const newY = clamp(currentY + delta, maxPosition, SCREEN_HEIGHT)
67
+ translateY.value = newY
68
+ scrollTo(scrollRef, 0, 0, false)
69
+ } else if (atScrollTop && delta > 0) {
70
+ drawerMoved.value = true
71
+ const newY = clamp(currentY + delta, maxPosition, SCREEN_HEIGHT)
72
+ translateY.value = newY
73
+ scrollTo(scrollRef, 0, 0, false)
74
+ }
75
+ })
76
+ .onEnd((event) => {
77
+ if (!drawerMoved.value) return
78
+
79
+ const currentPosition = SCREEN_HEIGHT - translateY.value
80
+ const velocity = event.velocityY
81
+
82
+ const shouldClose =
83
+ !!handleClose &&
84
+ (velocity > 1500 ||
85
+ (velocity > 800 && currentPosition < minSnapPoint) ||
86
+ currentPosition < minSnapPoint * 0.35)
87
+
88
+ if (shouldClose) {
89
+ runOnJS(handleClose)()
90
+ } else {
91
+ const closestSnapIndex = findClosestSnapPoint(currentPosition, normalizedSnapPoints, velocity)
92
+ const targetSnapPoint = normalizedSnapPoints[closestSnapIndex]
93
+ translateY.value = withSpring(SCREEN_HEIGHT - targetSnapPoint, animationConfig)
94
+ snapIndex.value = closestSnapIndex
95
+ }
96
+ })
97
+ }, [panRef, maxPosition, normalizedSnapPoints, minSnapPoint, handleClose, animationConfig])
98
+
99
+ const nativeGesture = React.useMemo(() => Gesture.Native(), [])
100
+
101
+ const composedGesture = React.useMemo(
102
+ () => Gesture.Simultaneous(panGesture, nativeGesture),
103
+ [panGesture, nativeGesture]
104
+ )
105
+
106
+ const animatedScrollHandler = useAnimatedScrollHandler({
107
+ onScroll: (event) => {
108
+ scrollOffset.value = event.contentOffset.y
109
+ if (onScroll) {
110
+ runOnJS(onScroll)(event)
111
+ }
112
+ },
113
+ })
114
+
115
+ return (
116
+ <GestureDetector gesture={composedGesture}>
117
+ <AnimatedComponent
118
+ ref={scrollRef}
119
+ style={{ flex: 1 }}
120
+ onScroll={animatedScrollHandler}
121
+ scrollEventThrottle={16}
122
+ bounces={false}
123
+ overScrollMode="never"
124
+ {...props}
125
+ />
126
+ </GestureDetector>
127
+ )
128
+ }
129
+
130
+ return DrawerScrollComponent
131
+ }
@@ -0,0 +1,3 @@
1
+ import { BottomDrawer } from '../bottomDrawer/native/BottomDrawer'
2
+
3
+ export const Drawer = BottomDrawer
@@ -12,3 +12,5 @@ export * from './drawer'
12
12
  export * from './bottomDrawer'
13
13
  export * from './popover/Popover'
14
14
  export * from './Segment'
15
+ export * from './TopBar'
16
+ export * from './KeyboardAvoidingView'
@@ -0,0 +1,11 @@
1
+ import { is } from 'ramda'
2
+ import dayjs from 'dayjs'
3
+
4
+ import { Text } from '../text'
5
+
6
+ export function DateText({ format = 'DD MMM YYYY', value, children, ...props }) {
7
+ value = is(String, children) ? children : value
8
+ // TODO: Get format from i18n
9
+
10
+ return <Text {...props}>{dayjs(value).format(format)}</Text>
11
+ }
@@ -1,2 +1,3 @@
1
1
  export * from './Text'
2
2
  export * from './VerticalText'
3
+ export * from './DateText'
@@ -7,7 +7,7 @@ import { Picker } from '../inputs'
7
7
  import { ThemeThumb } from './ThemeThumb'
8
8
 
9
9
  export function ThemePicker({ onChange, onlyKeys, hideKeys }) {
10
- const { activeThemeKey, setActiveThemeKey, themes, onChangeTheme } = useThemeHandler()
10
+ const { activeThemeKey, themes, onChangeTheme } = useThemeHandler()
11
11
 
12
12
  let options = pipe(
13
13
  mergeDeepRight(DEFAULT_THEMES),
@@ -27,7 +27,6 @@ export function ThemePicker({ onChange, onlyKeys, hideKeys }) {
27
27
  gap="lg"
28
28
  value={activeThemeKey}
29
29
  onChange={(key) => {
30
- setActiveThemeKey(key)
31
30
  onChangeTheme?.(key)
32
31
  onChange?.(key)
33
32
  }}
@@ -2,3 +2,4 @@ export * from './debounce'
2
2
  export * from './string'
3
3
  export * from './random'
4
4
  export * from './storage'
5
+ export * from './../abstractions/helpers/useSafeAreaInsets'
@@ -2,22 +2,42 @@ import React from 'react'
2
2
 
3
3
  import { AbsStorage } from '../abstractions/helpers/storage'
4
4
 
5
+ // Pub/Sub listener registry for cross-component sync
6
+ const listeners = {}
7
+
8
+ function notify(key, value) {
9
+ if (listeners[key]) {
10
+ listeners[key].forEach((cb) => cb(value))
11
+ }
12
+ }
13
+
14
+ function subscribe(key, cb) {
15
+ if (!listeners[key]) listeners[key] = []
16
+ listeners[key].push(cb)
17
+ return () => {
18
+ listeners[key] = listeners[key].filter((fn) => fn !== cb)
19
+ }
20
+ }
21
+
5
22
  function set(key, value) {
6
- return AbsStorage.set(key, JSON.stringify(value))
23
+ AbsStorage.set(key, JSON.stringify(value))
24
+ notify(key, value)
7
25
  }
8
26
 
9
27
  function setAsync(key, value) {
10
- return AbsStorage.setAsync(key, JSON.stringify(value))
28
+ return AbsStorage.setAsync(key, JSON.stringify(value)).then(() => {
29
+ notify(key, value)
30
+ })
11
31
  }
12
32
 
13
- function get(key) {
33
+ function get(key, defaultValue) {
14
34
  const value = AbsStorage.get(key)
15
- return formatStoragedValue(value)
35
+ return formatStoragedValue(value) ?? defaultValue
16
36
  }
17
37
 
18
- function getAsync(key) {
19
- return AbsStorage.setAsync(key).then((value) => {
20
- return formatStoragedValue(value)
38
+ function getAsync(key, defaultValue) {
39
+ return AbsStorage.getAsync(key).then((value) => {
40
+ return formatStoragedValue(value) ?? defaultValue
21
41
  })
22
42
  }
23
43
 
@@ -34,11 +54,14 @@ function formatStoragedValue(value) {
34
54
  }
35
55
 
36
56
  function useState(key, defaultValue) {
37
- const [value, setValue] = React.useState(get(key) || defaultValue)
57
+ const [value, setValue] = React.useState(() => get(key) ?? defaultValue)
58
+
59
+ React.useEffect(() => {
60
+ return subscribe(key, setValue)
61
+ }, [key])
38
62
 
39
63
  const handleChange = (newValue) => {
40
64
  set(key, newValue)
41
- setValue(newValue)
42
65
  }
43
66
 
44
67
  return [value, handleChange]
@@ -17,6 +17,12 @@ export function useGetResponsiveValue() {
17
17
  const isWeb = value?.web !== undefined && Platform.OS === 'web'
18
18
  if (isWeb) return value?.web
19
19
 
20
+ const isIOS = value?.ios !== undefined && Platform.OS === 'ios'
21
+ if (isIOS) return value?.ios
22
+
23
+ const isAndroid = value?.android !== undefined && Platform.OS === 'android'
24
+ if (isAndroid) return value?.android
25
+
20
26
  const isObj = is(Object, value)
21
27
 
22
28
  if (!isObj) return value
@@ -57,18 +57,21 @@ export function ThemeHandler({ breakpoints, themes, initTheme, onChangeTheme, ch
57
57
  const [themePickerOpen, setThemePickerOpen] = React.useState(false)
58
58
  const openThemePicker = () => setThemePickerOpen(true)
59
59
  const [activeThemeKey, setActiveThemeKey] = React.useState(initTheme || 'light')
60
- const toggleTheme = () => setActiveThemeKey(activeThemeKey === 'light' ? 'dark' : 'light')
60
+ const handleChangeTheme = (key) => {
61
+ setActiveThemeKey(key)
62
+ onChangeTheme?.(key)
63
+ }
64
+ const toggleTheme = () => handleChangeTheme(activeThemeKey === 'light' ? 'dark' : 'light')
61
65
  const theme = useFormattedTheme(themes, activeThemeKey)
62
66
 
63
67
  const value = {
64
68
  theme,
65
69
  themes,
66
70
  activeThemeKey,
67
- setActiveThemeKey,
68
71
  toggleTheme,
69
72
  themePickerOpen,
70
73
  setThemePickerOpen,
71
- onChangeTheme,
74
+ onChangeTheme: handleChangeTheme,
72
75
  openThemePicker,
73
76
  toggleTheme,
74
77
  breakpoints: breakpoints || DEFAULT_BREAKPOINTS,
@@ -36,13 +36,25 @@ export const BASE_THEME = {
36
36
  },
37
37
 
38
38
  // Buttons, inputs, etc.
39
+ // elementHeights: {
40
+ // xxxs: 10,
41
+ // xxs: 15,
42
+ // xs: 20,
43
+ // sm: 30,
44
+ // md: 35,
45
+ // lg: 40,
46
+ // xl: 50,
47
+ // xxl: 60,
48
+ // xxxl: 70,
49
+ // },
50
+
39
51
  elementHeights: {
40
52
  xxxs: 10,
41
53
  xxs: 15,
42
- xs: 20,
43
- sm: 30,
44
- md: 35,
45
- lg: 40,
54
+ xs: 25,
55
+ sm: 35,
56
+ md: 40,
57
+ lg: 45,
46
58
  xl: 50,
47
59
  xxl: 60,
48
60
  xxxl: 70,
@@ -16,6 +16,7 @@ export const DEFAULT_BLACK_THEME = mergeDeepRight(BASE_THEME, {
16
16
  overlayBG: '#000000',
17
17
  backdrop: '#1f1f1f',
18
18
  shadow: 'rgba(216, 210, 203, 0.1)',
19
+ transparent: 'rgba(0, 0, 0, 0)',
19
20
  divider: '#383E44',
20
21
 
21
22
  blue: '#4DA3FF',
@@ -31,4 +31,14 @@ export const CYBERPUNK_DARK_THEME = mergeDeepRight(BASE_THEME, {
31
31
  lylac: '#B388FF',
32
32
  pink: '#FF80AB',
33
33
  },
34
+
35
+ components: {
36
+ Card: {
37
+ border: true,
38
+ },
39
+
40
+ Section: {
41
+ border: true,
42
+ },
43
+ },
34
44
  })
@@ -15,6 +15,7 @@ export const DEFAULT_DARK_THEME = mergeDeepRight(BASE_THEME, {
15
15
  overlayBG: '#272D34',
16
16
  backdrop: '#383E44',
17
17
  shadow: 'rgba(216, 210, 203, 0.1)',
18
+ transparent: 'rgba(0, 0, 0, 0)',
18
19
  divider: '#383E44',
19
20
 
20
21
  blue: '#4DA3FF',
@@ -33,11 +33,25 @@ export const DEFAULT_MATRIX_THEME = mergeDeepRight(BASE_THEME, {
33
33
  pink: '#C51162',
34
34
  },
35
35
 
36
+ radius: {
37
+ xxxs: 0,
38
+ xxs: 1,
39
+ xs: 2,
40
+ sm: 3,
41
+ md: 4,
42
+ lg: 5,
43
+ xl: 6,
44
+ xxl: 7,
45
+ xxxl: 8,
46
+ },
47
+
36
48
  components: {
37
49
  Card: {
38
- border: 1,
39
- br: 5,
40
- borderColor: 'divider',
50
+ border: true,
51
+ },
52
+
53
+ Section: {
54
+ border: true,
41
55
  },
42
56
  },
43
57
  })
@@ -15,6 +15,7 @@ export const DEFAULT_LIGHT_THEME = mergeDeepRight(BASE_THEME, {
15
15
  overlayBG: '#FFFFFF',
16
16
  backdrop: '#383E44',
17
17
  shadow: 'rgba(39, 45, 52, 0.15)',
18
+ transparent: 'rgba(255, 255, 255, 0)',
18
19
  divider: '#e0e0e0',
19
20
 
20
21
  blue: '#4DA3FF',
@@ -34,21 +34,20 @@ export const DEFAULT_MSDOS_THEME = mergeDeepRight(BASE_THEME, {
34
34
  },
35
35
 
36
36
  radius: {
37
- xxxs: 1,
38
- xxs: 2,
39
- xs: 3,
40
- sm: 4,
41
- md: 6,
42
- lg: 8,
43
- xl: 10,
44
- xxl: 12,
45
- xxxl: 14,
37
+ xxxs: 0,
38
+ xxs: 1,
39
+ xs: 2,
40
+ sm: 3,
41
+ md: 4,
42
+ lg: 5,
43
+ xl: 6,
44
+ xxl: 7,
45
+ xxxl: 8,
46
46
  },
47
47
 
48
48
  components: {
49
49
  Card: {
50
50
  border: 1,
51
- br: 5,
52
51
  borderColor: 'divider',
53
52
  },
54
53
  },
@@ -32,4 +32,14 @@ export const DEFAULT_PAPER_THEME = mergeDeepRight(BASE_THEME, {
32
32
  lylac: '#C7B7D4',
33
33
  pink: '#E4A1B2',
34
34
  },
35
+
36
+ components: {
37
+ Card: {
38
+ border: true,
39
+ },
40
+
41
+ Section: {
42
+ border: true,
43
+ },
44
+ },
35
45
  })