From 2d810305326e82e78fd17f385a534fa04bb8b6ae Mon Sep 17 00:00:00 2001
From: ntorionbearstudio <53612278+ntorionbearstudio@users.noreply.github.com>
Date: Thu, 24 Oct 2024 17:47:40 -0400
Subject: [PATCH] Init new docs examples (#36)
---
docs/components/code-editor.jsx | 21 +++
docs/middleware.js | 2 +-
docs/package.json | 2 +
.../docs/Components/Inputs/checkbox.en-US.mdx | 70 ++++++++-
.../docs/Components/Inputs/input.en-US.mdx | 62 +++++++-
.../docs/Components/Inputs/pininput.en-US.mdx | 91 +++++++++++-
.../docs/Components/Inputs/radio.en-US.mdx | 61 +++++++-
.../docs/Components/Inputs/select.en-US.mdx | 127 +++++++++++++++-
.../docs/Components/Inputs/slider.en-US.mdx | 33 ++++-
.../docs/Components/Inputs/switch.en-US.mdx | 27 +++-
.../docs/Components/Inputs/textarea.en-US.mdx | 15 +-
.../docs/Components/Layout/box.en-US.mdx | 96 +++++++++++--
.../docs/Components/Layout/center.en-US.mdx | 23 ++-
.../docs/Components/Layout/flex.en-US.mdx | 9 +-
.../docs/Components/Layout/hstack.en-US.mdx | 17 ++-
.../Components/Layout/safeareabox.en-US.mdx | 15 +-
.../Components/Layout/scrollbox.en-US.mdx | 41 +++++-
.../docs/Components/Layout/stack.en-US.mdx | 17 ++-
.../docs/Components/Layout/tabs.en-US.mdx | 135 +++++++++++++++++-
.../docs/Components/Layout/vstack.en-US.mdx | 17 ++-
.../docs/Components/Lists/list.en-US.mdx | 29 +++-
.../Components/Lists/sectionlist.en-US.mdx | 35 ++++-
.../Components/Touchables/button.en-US.mdx | 115 ++++++++++++++-
.../Touchables/icon-button.en-US.mdx | 104 +++++++++++++-
.../Components/Touchables/pressable.en-US.mdx | 14 +-
.../Touchables/touchable-highlight.en-US.mdx | 21 ++-
.../Touchables/touchable-opacity.en-US.mdx | 19 ++-
.../touchable-without-feedback.en-US.mdx | 19 ++-
docs/pages/docs/Components/avatar.en-US.mdx | 115 ++++++++++++++-
docs/pages/docs/Components/badge.en-US.mdx | 52 ++++++-
docs/pages/docs/Components/divider.en-US.mdx | 44 +++++-
docs/pages/docs/Components/icon.en-US.mdx | 37 ++++-
docs/pages/docs/Components/image.en-US.mdx | 15 +-
docs/pages/docs/Components/modal.en-US.mdx | 38 ++++-
docs/pages/docs/Components/spinner.en-US.mdx | 13 +-
docs/pages/docs/Components/text.en-US.mdx | 46 +++++-
docs/pnpm-lock.yaml | 60 ++++++--
docs/public/fonts/AntDesign.ttf | Bin 0 -> 70344 bytes
docs/public/fonts/Entypo.ttf | Bin 0 -> 66200 bytes
docs/public/fonts/EvilIcons.ttf | Bin 0 -> 13456 bytes
docs/public/fonts/Feather.ttf | Bin 0 -> 56228 bytes
docs/public/fonts/FontAwesome.ttf | Bin 0 -> 165548 bytes
docs/public/fonts/FontAwesome5_Brands.ttf | Bin 0 -> 134040 bytes
docs/public/fonts/FontAwesome5_Regular.ttf | Bin 0 -> 33736 bytes
docs/public/fonts/FontAwesome5_Solid.ttf | Bin 0 -> 202744 bytes
docs/public/fonts/FontAwesome6_Brands.ttf | Bin 0 -> 209376 bytes
docs/public/fonts/FontAwesome6_Regular.ttf | Bin 0 -> 67976 bytes
docs/public/fonts/FontAwesome6_Solid.ttf | Bin 0 -> 423676 bytes
docs/public/fonts/Fontisto.ttf | Bin 0 -> 313528 bytes
docs/public/fonts/Foundation.ttf | Bin 0 -> 56976 bytes
docs/public/fonts/Ionicons.ttf | Bin 0 -> 442604 bytes
docs/public/fonts/MaterialCommunityIcons.ttf | Bin 0 -> 1147844 bytes
docs/public/fonts/MaterialIcons.ttf | Bin 0 -> 356840 bytes
docs/public/fonts/Octicons.ttf | Bin 0 -> 49404 bytes
docs/public/fonts/SimpleLineIcons.ttf | Bin 0 -> 54056 bytes
docs/public/fonts/Zocial.ttf | Bin 0 -> 25788 bytes
docs/styles.css | 35 +++++
docs/theme.config.tsx | 3 +-
src/components/avatar/avatar.component.tsx | 1 +
src/components/badge/badge.style.tsx | 32 ++++-
src/components/button/button.style.tsx | 5 +-
.../icon-button/icon-button.component.tsx | 18 ++-
src/theme/theme.default.tsx | 12 +-
src/theme/type.ts | 2 +-
64 files changed, 1564 insertions(+), 201 deletions(-)
create mode 100644 docs/components/code-editor.jsx
create mode 100644 docs/public/fonts/AntDesign.ttf
create mode 100644 docs/public/fonts/Entypo.ttf
create mode 100644 docs/public/fonts/EvilIcons.ttf
create mode 100644 docs/public/fonts/Feather.ttf
create mode 100644 docs/public/fonts/FontAwesome.ttf
create mode 100644 docs/public/fonts/FontAwesome5_Brands.ttf
create mode 100644 docs/public/fonts/FontAwesome5_Regular.ttf
create mode 100644 docs/public/fonts/FontAwesome5_Solid.ttf
create mode 100644 docs/public/fonts/FontAwesome6_Brands.ttf
create mode 100644 docs/public/fonts/FontAwesome6_Regular.ttf
create mode 100644 docs/public/fonts/FontAwesome6_Solid.ttf
create mode 100644 docs/public/fonts/Fontisto.ttf
create mode 100644 docs/public/fonts/Foundation.ttf
create mode 100644 docs/public/fonts/Ionicons.ttf
create mode 100644 docs/public/fonts/MaterialCommunityIcons.ttf
create mode 100644 docs/public/fonts/MaterialIcons.ttf
create mode 100644 docs/public/fonts/Octicons.ttf
create mode 100644 docs/public/fonts/SimpleLineIcons.ttf
create mode 100644 docs/public/fonts/Zocial.ttf
diff --git a/docs/components/code-editor.jsx b/docs/components/code-editor.jsx
new file mode 100644
index 0000000..4ef81ee
--- /dev/null
+++ b/docs/components/code-editor.jsx
@@ -0,0 +1,21 @@
+import React from 'react';
+import { LiveProvider, LiveEditor, LivePreview, LiveError } from "react-live";
+import * as ReactNative from 'react-native';
+import * as FicusUI from 'react-native-ficus-ui';
+
+const scope = { React, ...ReactNative, ReactNative, ...FicusUI };
+
+export function CodeEditor({ code, ...rest }) {
+ return (
+
+
+
+
+
EDITABLE EXAMPLE
+
+
+
+
+
+ );
+}
diff --git a/docs/middleware.js b/docs/middleware.js
index 90dabc7..d5dd78b 100644
--- a/docs/middleware.js
+++ b/docs/middleware.js
@@ -3,7 +3,7 @@ import { locales } from 'nextra/locales'
export const middleware = request => {
const { nextUrl } = request
- if (nextUrl.pathname.startsWith('/remote/')) {
+ if (nextUrl.pathname.startsWith('/remote/') || nextUrl.pathname.startsWith('/fonts/')) {
// The middleware must not handle dynamic routes.
return
}
diff --git a/docs/package.json b/docs/package.json
index 3b14f72..a54fff3 100644
--- a/docs/package.json
+++ b/docs/package.json
@@ -24,8 +24,10 @@
"react-dom": "^18.2.0",
"react-icons": "^5.3.0",
"react-intersection-observer": "^8.26.2",
+ "react-live": "^4.1.7",
"react-native": "^0.75.2",
"react-native-ficus-ui": "1.2.0",
+ "react-native-vector-icons": "^10.2.0",
"react-native-web": "^0.19.12"
},
"dependenciesMeta": {
diff --git a/docs/pages/docs/Components/Inputs/checkbox.en-US.mdx b/docs/pages/docs/Components/Inputs/checkbox.en-US.mdx
index 072a2f4..0d2f84c 100644
--- a/docs/pages/docs/Components/Inputs/checkbox.en-US.mdx
+++ b/docs/pages/docs/Components/Inputs/checkbox.en-US.mdx
@@ -2,8 +2,7 @@
searchable: true
---
-import { ExpoDemo } from '@components/expo-demo';
-
+import { CodeEditor } from '@components/code-editor';
# Checkbox
@@ -17,9 +16,70 @@ import { Checkbox, CheckboxGroup } from 'react-native-ficus-ui';
## Usage
-
-
-
+### Simple checkbox
+
+
+ Option 1} />
+ Option 2} />
+ Option 3}
+ colorScheme="red"
+ />
+ Option 4}
+ colorScheme="pink"
+ />
+ Option 5} isLoading />
+`} />
+
+### Checkbox sizes
+
+
+ Option 1
+
+ Option 2
+
+
+ Option 3
+
+`} />
+
+### Checkbox disabled
+
+
+ Option 1
+`} />
+
+### Checkbox group
+
+
+ Option 1
+ Option 2
+`} />
+
+### Custom render
+
+
+ {['Option 1', 'Option 2', 'Option 3'].map((item) => (
+
+ {({ isChecked }) => (
+
+ {item}
+
+ )}
+
+ ))}
+`} />
## Props
diff --git a/docs/pages/docs/Components/Inputs/input.en-US.mdx b/docs/pages/docs/Components/Inputs/input.en-US.mdx
index fbdb5f8..87d1eca 100644
--- a/docs/pages/docs/Components/Inputs/input.en-US.mdx
+++ b/docs/pages/docs/Components/Inputs/input.en-US.mdx
@@ -2,8 +2,7 @@
searchable: true
---
-import { ExpoDemo } from '@components/expo-demo';
-
+import { CodeEditor } from '@components/code-editor';
# Input
@@ -17,9 +16,62 @@ import { Input } from 'react-native-ficus-ui';
## Usage
-
-
-
+### With prefix
+
+}
+/>`} />
+
+### With suffix
+
+}
+/>`} />
+
+### Password
+
+`} />
+
+### Custom border style
+
+
+ }
+ />
+ }
+ />
+`} />
+
+### Textarea
+
+
+
+
+`} />
## Props
diff --git a/docs/pages/docs/Components/Inputs/pininput.en-US.mdx b/docs/pages/docs/Components/Inputs/pininput.en-US.mdx
index 4f43e11..bdf469d 100644
--- a/docs/pages/docs/Components/Inputs/pininput.en-US.mdx
+++ b/docs/pages/docs/Components/Inputs/pininput.en-US.mdx
@@ -2,8 +2,7 @@
searchable: true
---
-import { ExpoDemo } from '@components/expo-demo';
-
+import { CodeEditor } from '@components/code-editor';
# PinInput
@@ -19,9 +18,91 @@ import { PinInput } from 'react-native-ficus-ui';
## Usage
-
-
-
+### Default
+
+ {
+ const [pinValue, setPinValue] = React.useState(null);
+
+ return (
+
+ );
+}
+render()`} noInline />
+
+### Change count
+
+ {
+ const [pinValue, setPinValue] = React.useState(null);
+
+ return (
+
+ );
+}
+render()`} noInline />
+
+### Change color scheme
+
+ {
+ const [pinValue, setPinValue] = React.useState(null);
+
+ return (
+
+ );
+}
+render()`} noInline />
+
+### Set mask on input
+
+ {
+ const [pinValue, setPinValue] = React.useState(null);
+
+ return (
+
+ );
+}
+render()`} noInline />
+
+### Change mask placeholder on input
+
+ {
+ const [pinValue, setPinValue] = React.useState(null);
+
+ return (
+
+ );
+}
+render()`} noInline />
## Props
diff --git a/docs/pages/docs/Components/Inputs/radio.en-US.mdx b/docs/pages/docs/Components/Inputs/radio.en-US.mdx
index 83e78af..17ff0cb 100644
--- a/docs/pages/docs/Components/Inputs/radio.en-US.mdx
+++ b/docs/pages/docs/Components/Inputs/radio.en-US.mdx
@@ -2,8 +2,7 @@
searchable: true
---
-import { ExpoDemo } from '@components/expo-demo';
-
+import { CodeEditor } from '@components/code-editor';
# Radio
@@ -17,9 +16,61 @@ import { Radio, RadioGroup } from 'react-native-ficus-ui';
## Usage
-
-
-
+### Simple radio
+
+
+
+
+
+
+
+`} />
+
+### Radio group
+
+
+ Option 1} />
+ Option 2} />
+ Option 3} />
+`} />
+
+### Radio sizes
+
+
+
+
+ Option 1
+
+
+ Option 2
+
+
+
+ Loading option
+
+`} />
+
+### Custom radio
+
+
+ {['Option 1', 'Option 2', 'Option 3'].map((item) => (
+
+ {({ isChecked }) => (
+
+ {item}
+
+ )}
+
+ ))}
+`} />
## Props
diff --git a/docs/pages/docs/Components/Inputs/select.en-US.mdx b/docs/pages/docs/Components/Inputs/select.en-US.mdx
index f7f9830..0087e5d 100644
--- a/docs/pages/docs/Components/Inputs/select.en-US.mdx
+++ b/docs/pages/docs/Components/Inputs/select.en-US.mdx
@@ -2,8 +2,7 @@
searchable: true
---
-import { ExpoDemo } from '@components/expo-demo';
-
+import { CodeEditor } from '@components/code-editor';
# Select
@@ -17,9 +16,127 @@ import { Select, Option } from 'react-native-ficus-ui';
## Usage
-
-
-
+### Single value selection
+
+ {
+ const [selectValue, setSelectedValue] = React.useState(null);
+ const selectRef = React.createRef();
+
+ return (
+
+
+
+
+ );
+}
+render()`} noInline />
+
+### Multiple values selection
+
+ {
+ const [selectMultiValue, setSelectedMultiValue] = React.useState([]);
+ const selectMultiRef = React.createRef();
+
+ return (
+
+
+
+
+ );
+}
+render()`} noInline />
+
+### Single value selection with submit
+
+ {
+ const [selectSubmitValue, setSelectedSubmitValue] = React.useState(null);
+ const selectSubmitRef = React.createRef();
+
+ return (
+
+
+
+
+ );
+}
+render()`} noInline />
## Props
diff --git a/docs/pages/docs/Components/Inputs/slider.en-US.mdx b/docs/pages/docs/Components/Inputs/slider.en-US.mdx
index 7e6ae94..b148f59 100644
--- a/docs/pages/docs/Components/Inputs/slider.en-US.mdx
+++ b/docs/pages/docs/Components/Inputs/slider.en-US.mdx
@@ -2,8 +2,7 @@
searchable: true
---
-import { ExpoDemo } from '@components/expo-demo';
-
+import { CodeEditor } from '@components/code-editor';
# Slider
@@ -19,9 +18,33 @@ import { Slider } from 'react-native-ficus-ui';
## Usage
-
-
-
+### Default
+
+
+
+
+
+
+
+`} />
+
+### Change value
+
+ {
+ const [value, setValue] = React.useState(0.2);
+
+ return (
+
+ Slider value : {Math.round(value * 100) / 100}
+
+
+ );
+}
+render()`} noInline />
+
+### Custom step
+
+`} />
## Props
diff --git a/docs/pages/docs/Components/Inputs/switch.en-US.mdx b/docs/pages/docs/Components/Inputs/switch.en-US.mdx
index 90cb035..ea3248e 100644
--- a/docs/pages/docs/Components/Inputs/switch.en-US.mdx
+++ b/docs/pages/docs/Components/Inputs/switch.en-US.mdx
@@ -2,8 +2,7 @@
searchable: true
---
-import { ExpoDemo } from '@components/expo-demo';
-
+import { CodeEditor } from '@components/code-editor';
# Switch
@@ -17,9 +16,27 @@ import { Switch } from 'react-native-ficus-ui';
## Usage
-
-
-
+### Default
+
+ {
+ const [on, toggle] = React.useState(false);
+
+ return (
+ toggle(!on)} />
+ );
+}
+render()`} noInline />
+
+### Change color
+
+ {
+ const [on, toggle] = React.useState(false);
+
+ return (
+ toggle(!on)} />
+ );
+}
+render()`} noInline />
## Props
diff --git a/docs/pages/docs/Components/Inputs/textarea.en-US.mdx b/docs/pages/docs/Components/Inputs/textarea.en-US.mdx
index 71ff081..f7e8482 100644
--- a/docs/pages/docs/Components/Inputs/textarea.en-US.mdx
+++ b/docs/pages/docs/Components/Inputs/textarea.en-US.mdx
@@ -2,8 +2,7 @@
searchable: true
---
-import { ExpoDemo } from '@components/expo-demo';
-
+import { CodeEditor } from '@components/code-editor';
# Textarea
@@ -17,9 +16,15 @@ import { Textarea } from 'react-native-ficus-ui';
## Usage
-
-
-
+
+
+
+`} />
## Props
diff --git a/docs/pages/docs/Components/Layout/box.en-US.mdx b/docs/pages/docs/Components/Layout/box.en-US.mdx
index 44aaffa..a9be45b 100644
--- a/docs/pages/docs/Components/Layout/box.en-US.mdx
+++ b/docs/pages/docs/Components/Layout/box.en-US.mdx
@@ -2,8 +2,7 @@
searchable: true
---
-import { ExpoDemo } from '@components/expo-demo';
-
+import { CodeEditor } from '@components/code-editor';
# Box
@@ -17,29 +16,96 @@ import { Box } from 'react-native-ficus-ui';
## Usage
-
-
-
-
-## As prop
+### Background color
+
+
+
+
+
+
+
+
+`} />
+
+### Shadows
+
+
+ {['none', 'xs', 'sm', 'md', 'lg', 'xl', '2xl'].map(shadow => (
+
+ {shadow}
+
+ ))}
+`} />
+
+### Borders
+
+
+
+
+
+
+
+`} />
+
+### Border radius
+
+
+ {['none', 'xs', 'sm', 'md', 'lg', 'xl', '2xl', 'full'].map(radius => (
+
+ ))}
+`} />
+
+### Flex
+
+
+
+
+
+`} />
+
+### Background image
+
+`} />
-The as prop can be used to style any React Native component with Ficus UI.
-Example :
+### As prop
-```js
-import { TouchableOpacity } from 'react-native';
+The as prop can be used to style any React Native component with Ficus UI.
-
Style any RN component with Ficus UI with "as" prop !
-
-```
+`} />
## Props
diff --git a/docs/pages/docs/Components/Layout/center.en-US.mdx b/docs/pages/docs/Components/Layout/center.en-US.mdx
index 5f9993e..e85d1b9 100644
--- a/docs/pages/docs/Components/Layout/center.en-US.mdx
+++ b/docs/pages/docs/Components/Layout/center.en-US.mdx
@@ -2,8 +2,7 @@
searchable: true
---
-import { ExpoDemo } from '@components/expo-demo';
-
+import { CodeEditor } from '@components/code-editor';
# Center
@@ -17,9 +16,23 @@ import { Center } from 'react-native-ficus-ui';
## Usage
-
-
-
+### Centered boxes
+
+
+
+
+
+
+
+
+`} />
+
+### Centered text
+
+
+ I'm a text that is centered by Center component
+ I'm another text that is centered by Center component
+`} />
## Props
diff --git a/docs/pages/docs/Components/Layout/flex.en-US.mdx b/docs/pages/docs/Components/Layout/flex.en-US.mdx
index ed69985..43e76a7 100644
--- a/docs/pages/docs/Components/Layout/flex.en-US.mdx
+++ b/docs/pages/docs/Components/Layout/flex.en-US.mdx
@@ -2,8 +2,7 @@
searchable: true
---
-import { ExpoDemo } from '@components/expo-demo';
-
+import { CodeEditor } from '@components/code-editor';
# Flex
@@ -17,9 +16,9 @@ import { Flex } from 'react-native-ficus-ui';
## Usage
-
-
-
+
+
+`} />
## Props
diff --git a/docs/pages/docs/Components/Layout/hstack.en-US.mdx b/docs/pages/docs/Components/Layout/hstack.en-US.mdx
index 2611698..44c7c93 100644
--- a/docs/pages/docs/Components/Layout/hstack.en-US.mdx
+++ b/docs/pages/docs/Components/Layout/hstack.en-US.mdx
@@ -2,8 +2,7 @@
searchable: true
---
-import { ExpoDemo } from '@components/expo-demo';
-
+import { CodeEditor } from '@components/code-editor';
# HStack
@@ -17,9 +16,17 @@ import { HStack } from 'react-native-ficus-ui';
## Usage
-
-
-
+
+
+ 1
+
+
+ 2
+
+
+ 3
+
+`} />
## Props
diff --git a/docs/pages/docs/Components/Layout/safeareabox.en-US.mdx b/docs/pages/docs/Components/Layout/safeareabox.en-US.mdx
index 8173c9f..6a70add 100644
--- a/docs/pages/docs/Components/Layout/safeareabox.en-US.mdx
+++ b/docs/pages/docs/Components/Layout/safeareabox.en-US.mdx
@@ -2,8 +2,7 @@
searchable: true
---
-import { ExpoDemo } from '@components/expo-demo';
-
+import { CodeEditor } from '@components/code-editor';
# SafeAreaBox
@@ -17,9 +16,15 @@ import { SafeAreaBox } from 'react-native-ficus-ui';
## Usage
-
-
-
+### Background color
+
+
+
+
+
+
+
+`} />
## Props
diff --git a/docs/pages/docs/Components/Layout/scrollbox.en-US.mdx b/docs/pages/docs/Components/Layout/scrollbox.en-US.mdx
index 054cd32..121b78b 100644
--- a/docs/pages/docs/Components/Layout/scrollbox.en-US.mdx
+++ b/docs/pages/docs/Components/Layout/scrollbox.en-US.mdx
@@ -2,8 +2,7 @@
searchable: true
---
-import { ExpoDemo } from '@components/expo-demo';
-
+import { CodeEditor } from '@components/code-editor';
# ScrollBox
@@ -17,9 +16,41 @@ import { ScrollBox } from 'react-native-ficus-ui';
## Usage
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {['none', 'xs', 'sm', 'md', 'lg', 'xl', '2xl'].map(shadow => (
+
+ {shadow}
+
+ ))}
+
+
+
+ {['none', 'xs', 'sm', 'md', 'lg', 'xl', '2xl', 'full'].map(radius => (
+
+ ))}
+
+
+`} />
## Props
diff --git a/docs/pages/docs/Components/Layout/stack.en-US.mdx b/docs/pages/docs/Components/Layout/stack.en-US.mdx
index 3549762..e74cdf7 100644
--- a/docs/pages/docs/Components/Layout/stack.en-US.mdx
+++ b/docs/pages/docs/Components/Layout/stack.en-US.mdx
@@ -2,8 +2,7 @@
searchable: true
---
-import { ExpoDemo } from '@components/expo-demo';
-
+import { CodeEditor } from '@components/code-editor';
# Stack
@@ -17,9 +16,17 @@ import { Stack } from 'react-native-ficus-ui';
## Usage
-
-
-
+
+
+ 1
+
+
+ 2
+
+
+ 3
+
+`} />
## Props
diff --git a/docs/pages/docs/Components/Layout/tabs.en-US.mdx b/docs/pages/docs/Components/Layout/tabs.en-US.mdx
index 463628a..2e4069d 100644
--- a/docs/pages/docs/Components/Layout/tabs.en-US.mdx
+++ b/docs/pages/docs/Components/Layout/tabs.en-US.mdx
@@ -2,8 +2,7 @@
searchable: true
---
-import { ExpoDemo } from '@components/expo-demo';
-
+import { CodeEditor } from '@components/code-editor';
# Tabs
@@ -19,9 +18,135 @@ import { Tabs, TabList, Tab, TabPanel, TabPanels } from 'react-native-ficus-ui';
## Usage
-
-
-
+### Default
+
+ {
+ const [index, setIndex] = React.useState(0);
+
+ return (
+
+
+
+ Tab 1
+ Tab 2
+ Tab 3
+
+
+
+ Content for the first tab
+
+
+ Content for the second tab
+
+
+ Content for the third tab
+
+
+
+
+ );
+}
+render()`} noInline />
+
+### Custom color
+
+ {
+ const [index, setIndex] = React.useState(0);
+
+ return (
+
+
+
+ Tab 1
+ Tab 2
+ Tab 3
+
+
+
+ Content for the first tab
+
+
+ Content for the second tab
+
+
+ Content for the third tab
+
+
+
+
+ );
+}
+render()`} noInline />
+
+### Custom label
+
+ {
+ const [index, setIndex] = React.useState(0);
+
+ const CustomTabLabel = ({
+ focused,
+ children,
+ }: {
+ focused: boolean;
+ children: ReactNode;
+ }) => (
+
+
+ {children}
+
+
+ );
+
+ return (
+
+
+
+
+ {({ focused }: { focused: boolean }) => (
+ Tab 1
+ )}
+
+
+ {({ focused }: { focused: boolean }) => (
+ Tab 2
+ )}
+
+
+ {({ focused }: { focused: boolean }) => (
+ Tab 3
+ )}
+
+
+
+
+ Content for the first tab
+
+
+ Content for the second tab
+
+
+ Content for the third tab
+
+
+
+
+ );
+}
+render()`} noInline />
## Props
diff --git a/docs/pages/docs/Components/Layout/vstack.en-US.mdx b/docs/pages/docs/Components/Layout/vstack.en-US.mdx
index 1350aa1..61b47ef 100644
--- a/docs/pages/docs/Components/Layout/vstack.en-US.mdx
+++ b/docs/pages/docs/Components/Layout/vstack.en-US.mdx
@@ -2,8 +2,7 @@
searchable: true
---
-import { ExpoDemo } from '@components/expo-demo';
-
+import { CodeEditor } from '@components/code-editor';
# VStack
@@ -17,9 +16,17 @@ import { VStack } from 'react-native-ficus-ui';
## Usage
-
-
-
+
+
+ 1
+
+
+ 2
+
+
+ 3
+
+`} />
## Props
diff --git a/docs/pages/docs/Components/Lists/list.en-US.mdx b/docs/pages/docs/Components/Lists/list.en-US.mdx
index f7200a8..a7bf54b 100644
--- a/docs/pages/docs/Components/Lists/list.en-US.mdx
+++ b/docs/pages/docs/Components/Lists/list.en-US.mdx
@@ -2,8 +2,7 @@
searchable: true
---
-import { ExpoDemo } from '@components/expo-demo';
-
+import { CodeEditor } from '@components/code-editor';
# List
@@ -19,9 +18,29 @@ import { List } from 'react-native-ficus-ui';
## Usage
-
-
-
+ (
+
+ {item.title}
+
+ )}
+/>`} />
## Props
diff --git a/docs/pages/docs/Components/Lists/sectionlist.en-US.mdx b/docs/pages/docs/Components/Lists/sectionlist.en-US.mdx
index eb995f1..4da8b1d 100644
--- a/docs/pages/docs/Components/Lists/sectionlist.en-US.mdx
+++ b/docs/pages/docs/Components/Lists/sectionlist.en-US.mdx
@@ -2,8 +2,7 @@
searchable: true
---
-import { ExpoDemo } from '@components/expo-demo';
-
+import { CodeEditor } from '@components/code-editor';
# SectionList
@@ -17,9 +16,35 @@ import { SectionList } from 'react-native-ficus-ui';
## Usage
-
-
-
+ item + index}
+ renderItem={({ item }) => (
+
+ {item}
+
+ )}
+ renderSectionHeader={({ section: { title } }) => (
+
+ {title}
+
+ )}
+/>`} />
## Props
diff --git a/docs/pages/docs/Components/Touchables/button.en-US.mdx b/docs/pages/docs/Components/Touchables/button.en-US.mdx
index 51b65ee..88fbd66 100644
--- a/docs/pages/docs/Components/Touchables/button.en-US.mdx
+++ b/docs/pages/docs/Components/Touchables/button.en-US.mdx
@@ -2,8 +2,7 @@
searchable: true
---
-import { ExpoDemo } from '@components/expo-demo';
-
+import { CodeEditor } from '@components/code-editor';
# Button
@@ -17,9 +16,115 @@ import { Button } from 'react-native-ficus-ui';
## Usage
-
-
-
+### Default
+
+
+
+
+
+
+
+
+
+`} />
+
+### Button sizes
+
+
+
+
+
+
+
+
+`} />
+
+### Round
+
+
+
+
+
+
+
+`} />
+
+### Variants
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`} />
+
+### Prefix and suffix
+
+
+
+ }
+ >
+ Button
+
+
+ }
+ >
+ Button
+
+`} />
+
## Props
diff --git a/docs/pages/docs/Components/Touchables/icon-button.en-US.mdx b/docs/pages/docs/Components/Touchables/icon-button.en-US.mdx
index fd82683..527827f 100644
--- a/docs/pages/docs/Components/Touchables/icon-button.en-US.mdx
+++ b/docs/pages/docs/Components/Touchables/icon-button.en-US.mdx
@@ -2,8 +2,7 @@
searchable: true
---
-import { ExpoDemo } from '@components/expo-demo';
-
+import { CodeEditor } from '@components/code-editor';
# IconButton
@@ -17,9 +16,104 @@ import { IconButton } from 'react-native-ficus-ui';
## Usage
-
-
-
+### Default
+
+
+ } size="xs" />
+ }
+ colorScheme="pink"
+ size="sm"
+ />
+ } colorScheme="teal" />
+ }
+ colorScheme="blue"
+ size="lg"
+ />
+ }
+ colorScheme="red"
+ size="xl"
+ />
+ }
+ colorScheme="orange"
+ size="2xl"
+ />
+`} />
+
+### Round
+
+
+ } size="xs" isRound />
+ }
+ colorScheme="pink"
+ size="sm"
+ isRound
+ />
+ }
+ colorScheme="teal"
+ isRound
+ />
+ }
+ colorScheme="blue"
+ size="lg"
+ isRound
+ />
+ }
+ colorScheme="red"
+ size="xl"
+ isRound
+ />
+ }
+ colorScheme="orange"
+ size="2xl"
+ isRound
+ />
+`} />
+
+### Variants
+
+
+
+ } colorScheme="teal" />
+ }
+ colorScheme="teal"
+ variant="outline"
+ />
+ }
+ colorScheme="teal"
+ variant="ghost"
+ />
+
+
+ }
+ colorScheme="teal"
+ full
+ />
+ }
+ colorScheme="teal"
+ variant="outline"
+ full
+ />
+ }
+ colorScheme="teal"
+ variant="ghost"
+ full
+ />
+
+`} />
## Props
diff --git a/docs/pages/docs/Components/Touchables/pressable.en-US.mdx b/docs/pages/docs/Components/Touchables/pressable.en-US.mdx
index 8776d6f..0664d1a 100644
--- a/docs/pages/docs/Components/Touchables/pressable.en-US.mdx
+++ b/docs/pages/docs/Components/Touchables/pressable.en-US.mdx
@@ -2,8 +2,7 @@
searchable: true
---
-import { ExpoDemo } from '@components/expo-demo';
-
+import { CodeEditor } from '@components/code-editor';
# Pressable
@@ -17,9 +16,14 @@ import { Pressable } from 'react-native-ficus-ui';
## Usage
-
-
-
+ console.log('Pressed')}
+>
+ Test
+`} />
## Props
diff --git a/docs/pages/docs/Components/Touchables/touchable-highlight.en-US.mdx b/docs/pages/docs/Components/Touchables/touchable-highlight.en-US.mdx
index 56e4842..d56a73e 100644
--- a/docs/pages/docs/Components/Touchables/touchable-highlight.en-US.mdx
+++ b/docs/pages/docs/Components/Touchables/touchable-highlight.en-US.mdx
@@ -2,8 +2,7 @@
searchable: true
---
-import { ExpoDemo } from '@components/expo-demo';
-
+import { CodeEditor } from '@components/code-editor';
# TouchableHighlight
@@ -17,9 +16,21 @@ import { TouchableHighlight } from 'react-native-ficus-ui';
## Usage
-
-
-
+
+ console.log('Pressed')}>
+ Test
+
+ console.log('Pressed')}
+ >
+ Test
+
+`} />
## Props
diff --git a/docs/pages/docs/Components/Touchables/touchable-opacity.en-US.mdx b/docs/pages/docs/Components/Touchables/touchable-opacity.en-US.mdx
index bcf0c3e..8ca3b91 100644
--- a/docs/pages/docs/Components/Touchables/touchable-opacity.en-US.mdx
+++ b/docs/pages/docs/Components/Touchables/touchable-opacity.en-US.mdx
@@ -2,8 +2,7 @@
searchable: true
---
-import { ExpoDemo } from '@components/expo-demo';
-
+import { CodeEditor } from '@components/code-editor';
# TouchableOpacity
@@ -17,9 +16,19 @@ import { TouchableOpacity } from 'react-native-ficus-ui';
## Usage
-
-
-
+
+ console.log('Pressed')}>
+ Test
+
+ console.log('Pressed')}
+ >
+ Test
+
+`} />
## Props
diff --git a/docs/pages/docs/Components/Touchables/touchable-without-feedback.en-US.mdx b/docs/pages/docs/Components/Touchables/touchable-without-feedback.en-US.mdx
index fc04b67..7ffd216 100644
--- a/docs/pages/docs/Components/Touchables/touchable-without-feedback.en-US.mdx
+++ b/docs/pages/docs/Components/Touchables/touchable-without-feedback.en-US.mdx
@@ -2,8 +2,7 @@
searchable: true
---
-import { ExpoDemo } from '@components/expo-demo';
-
+import { CodeEditor } from '@components/code-editor';
# TouchableWithoutFeedback
@@ -17,9 +16,19 @@ import { TouchableWithoutFeedback } from 'react-native-ficus-ui';
## Usage
-
-
-
+
+ console.log('Pressed')}>
+ Test
+
+ console.log('Pressed')}
+ >
+ Test
+
+`} />
## Props
diff --git a/docs/pages/docs/Components/avatar.en-US.mdx b/docs/pages/docs/Components/avatar.en-US.mdx
index 062d09a..8da173d 100644
--- a/docs/pages/docs/Components/avatar.en-US.mdx
+++ b/docs/pages/docs/Components/avatar.en-US.mdx
@@ -2,8 +2,7 @@
searchable: true
---
-import { ExpoDemo } from '@components/expo-demo';
-
+import { CodeEditor } from '@components/code-editor';
# Avatar
@@ -17,9 +16,115 @@ import { Avatar, AvatarBadge, AvatarGroup } from 'react-native-ficus-ui';
## Usage
-
-
-
+### Avatar with photo
+
+`} />
+
+### Avatar with icon
+
+
+
+
+`} />
+
+### Generated color
+
+
+
+
+
+
+
+`} />
+
+### Color scheme
+
+
+
+
+
+
+
+`} />
+
+### Avatar group
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`} />
+
+### Avatar badge
+
+
+
+
+
+
+
+
+
+
+
+`} />
+
+### Avatar badge and group
+
+
+
+
+
+
+
+
+
+
+
+
+
+`} />
## Props
diff --git a/docs/pages/docs/Components/badge.en-US.mdx b/docs/pages/docs/Components/badge.en-US.mdx
index 73b8bc9..1f69096 100644
--- a/docs/pages/docs/Components/badge.en-US.mdx
+++ b/docs/pages/docs/Components/badge.en-US.mdx
@@ -2,8 +2,7 @@
searchable: true
---
-import { ExpoDemo } from '@components/expo-demo';
-
+import { CodeEditor } from '@components/code-editor';
# Badge
@@ -17,9 +16,52 @@ import { Badge } from 'react-native-ficus-ui';
## Usage
-
-
-
+### Change color scheme
+
+
+ New
+ New
+ New
+ New
+ New
+ New
+`} />
+
+### Change font size
+
+
+ New
+
+ New
+
+
+ New
+
+
+ New
+
+
+ New
+
+
+ New
+
+`}
+/>
+
+### Variants
+
+
+
+ Outline
+
+
+ Solid
+
+
+ Subtle
+
+`} />
## Props
diff --git a/docs/pages/docs/Components/divider.en-US.mdx b/docs/pages/docs/Components/divider.en-US.mdx
index 190b4a7..6561455 100644
--- a/docs/pages/docs/Components/divider.en-US.mdx
+++ b/docs/pages/docs/Components/divider.en-US.mdx
@@ -2,7 +2,7 @@
searchable: true
---
-import { ExpoDemo } from '@components/expo-demo';
+import { CodeEditor } from '@components/code-editor';
# Divider
@@ -17,9 +17,45 @@ import { Divider } from 'react-native-ficus-ui';
## Usage
-
-
-
+### Horizontal
+
+
+ Test text
+
+ Test text
+`} />
+
+### Vertical
+
+
+
+
+ Test text
+
+`} />
+
+### Custom color
+
+
+ Test text
+
+ Test text
+`} />
+
+### Custom size
+
+
+ Test text
+
+ Test text
+
+
+
+
+ Test text
+
+
+`} />
## Props
diff --git a/docs/pages/docs/Components/icon.en-US.mdx b/docs/pages/docs/Components/icon.en-US.mdx
index 0d48061..1bcdc12 100644
--- a/docs/pages/docs/Components/icon.en-US.mdx
+++ b/docs/pages/docs/Components/icon.en-US.mdx
@@ -2,8 +2,7 @@
searchable: true
---
-import { ExpoDemo } from '@components/expo-demo';
-
+import { CodeEditor } from '@components/code-editor';
# Icon
@@ -17,9 +16,37 @@ import { Icon } from 'react-native-ficus-ui';
## Usage
-
-
-
+### Examples
+
+
+
+
+
+
+
+
+
+
+`} />
+
+### Custom style
+
+`} />
## Props
diff --git a/docs/pages/docs/Components/image.en-US.mdx b/docs/pages/docs/Components/image.en-US.mdx
index f913f76..00d063d 100644
--- a/docs/pages/docs/Components/image.en-US.mdx
+++ b/docs/pages/docs/Components/image.en-US.mdx
@@ -2,8 +2,7 @@
searchable: true
---
-import { ExpoDemo } from '@components/expo-demo';
-
+import { CodeEditor } from '@components/code-editor';
# Image
@@ -17,9 +16,15 @@ import { Image } from 'react-native-ficus-ui';
## Usage
-
-
-
+`} />
## Props
diff --git a/docs/pages/docs/Components/modal.en-US.mdx b/docs/pages/docs/Components/modal.en-US.mdx
index e2703c9..a41bd26 100644
--- a/docs/pages/docs/Components/modal.en-US.mdx
+++ b/docs/pages/docs/Components/modal.en-US.mdx
@@ -2,8 +2,7 @@
searchable: true
---
-import { ExpoDemo } from '@components/expo-demo';
-
+import { CodeEditor } from '@components/code-editor';
# Modal
@@ -19,9 +18,38 @@ import { Modal } from 'react-native-ficus-ui';
## Usage
-
-
-
+ {
+ const { isOpen, onOpen, onClose } = useDisclosure();
+ return (
+
+
+
+
+
+
+
+ );
+}
+render()`} noInline />
## Props
diff --git a/docs/pages/docs/Components/spinner.en-US.mdx b/docs/pages/docs/Components/spinner.en-US.mdx
index f175c21..08fed2b 100644
--- a/docs/pages/docs/Components/spinner.en-US.mdx
+++ b/docs/pages/docs/Components/spinner.en-US.mdx
@@ -2,8 +2,7 @@
searchable: true
---
-import { ExpoDemo } from '@components/expo-demo';
-
+import { CodeEditor } from '@components/code-editor';
# Spinner
@@ -17,9 +16,13 @@ import { Spinner } from 'react-native-ficus-ui';
## Usage
-
-
-
+
+
+
+
+
+
+`} />
## Props
diff --git a/docs/pages/docs/Components/text.en-US.mdx b/docs/pages/docs/Components/text.en-US.mdx
index 80a2780..4cea760 100644
--- a/docs/pages/docs/Components/text.en-US.mdx
+++ b/docs/pages/docs/Components/text.en-US.mdx
@@ -2,8 +2,7 @@
searchable: true
---
-import { ExpoDemo } from '@components/expo-demo';
-
+import { CodeEditor } from '@components/code-editor';
# Text
@@ -17,9 +16,46 @@ import { Text } from 'react-native-ficus-ui';
## Usage
-
-
-
+### Change font size
+
+
+ Text size: xs
+ Text size: sm
+ Text size: md
+ Text size: lg
+ Text size: xl
+ Text size: 2xl
+ Text size: 3xl
+ Text size: 4xl
+`} />
+
+### Change font weight
+
+Text in bold`} />
+
+### Change font family
+
+
+
+ Text size: 4xl
+
+
+
+ when fontweight is other than 'normal', fontfamily will be ignored
+ (Android limitation). so we decided to this: when fontfamily is
+ defined, fontweight will be set to 'normal' (on all platforms). set
+ a default font for each fontweight on theme.
+
+`} />
## Props
diff --git a/docs/pnpm-lock.yaml b/docs/pnpm-lock.yaml
index 25e25d6..8aa8af7 100644
--- a/docs/pnpm-lock.yaml
+++ b/docs/pnpm-lock.yaml
@@ -41,12 +41,18 @@ dependencies:
react-intersection-observer:
specifier: ^8.26.2
version: 8.34.0(react@18.3.1)
+ react-live:
+ specifier: ^4.1.7
+ version: 4.1.7(react-dom@18.3.1)(react@18.3.1)
react-native:
specifier: ^0.75.2
version: 0.75.2(@babel/core@7.25.2)(@babel/preset-env@7.25.4)(react@18.3.1)(typescript@5.5.4)
react-native-ficus-ui:
specifier: 1.2.0
version: 1.2.0(@babel/core@7.25.2)(@babel/plugin-proposal-nullish-coalescing-operator@7.18.6)(@babel/plugin-proposal-optional-chaining@7.21.0)(@babel/plugin-transform-arrow-functions@7.24.7)(@babel/plugin-transform-shorthand-properties@7.24.7)(@babel/plugin-transform-template-literals@7.24.7)(@babel/runtime@7.25.0)(react-native@0.75.2)(react@18.3.1)
+ react-native-vector-icons:
+ specifier: ^10.2.0
+ version: 10.2.0
react-native-web:
specifier: ^0.19.12
version: 0.19.12(react-dom@18.3.1)(react@18.3.1)
@@ -2604,6 +2610,10 @@ packages:
dependencies:
undici-types: 6.19.8
+ /@types/prismjs@1.26.5:
+ resolution: {integrity: sha512-AUZTa7hQ2KY5L7AmtSiqxlhWxb4ina0yd8hNbl4TWuqnv/pFP0nDMb3YrfSBf4hJVGLh2YEIBfKaBW/9UEl6IQ==}
+ dev: false
+
/@types/prop-types@15.7.12:
resolution: {integrity: sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==}
dev: false
@@ -2958,7 +2968,6 @@ packages:
/any-promise@1.3.0:
resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==}
- dev: true
/anymatch@3.1.3:
resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
@@ -3577,7 +3586,6 @@ packages:
/commander@4.1.1:
resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==}
engines: {node: '>= 6'}
- dev: true
/commander@7.2.0:
resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==}
@@ -5201,7 +5209,6 @@ packages:
minipass: 7.1.2
package-json-from-dist: 1.0.0
path-scurry: 1.11.1
- dev: true
/glob@7.2.3:
resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
@@ -5956,7 +5963,6 @@ packages:
'@isaacs/cliui': 8.0.2
optionalDependencies:
'@pkgjs/parseargs': 0.11.0
- dev: true
/jest-environment-node@29.7.0:
resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==}
@@ -7355,7 +7361,6 @@ packages:
any-promise: 1.3.0
object-assign: 4.1.1
thenify-all: 1.6.0
- dev: true
/nanoid@3.3.7:
resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==}
@@ -7819,7 +7824,6 @@ packages:
/package-json-from-dist@1.0.0:
resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==}
- dev: true
/pako@1.0.11:
resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==}
@@ -8084,6 +8088,16 @@ packages:
react-is: 18.3.1
dev: false
+ /prism-react-renderer@2.4.0(react@18.3.1):
+ resolution: {integrity: sha512-327BsVCD/unU4CNLZTWVHyUHKnsqcvj2qbPlQ8MiBE2eq2rgctjigPA1Gp9HLF83kZ20zNN6jgizHJeEsyFYOw==}
+ peerDependencies:
+ react: '>=16.0.0'
+ dependencies:
+ '@types/prismjs': 1.26.5
+ clsx: 2.1.1
+ react: 18.3.1
+ dev: false
+
/process-nextick-args@2.0.1:
resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==}
dev: false
@@ -8206,6 +8220,20 @@ packages:
resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==}
dev: false
+ /react-live@4.1.7(react-dom@18.3.1)(react@18.3.1):
+ resolution: {integrity: sha512-NTzl0POOAW3dkp7+QL30duOrIu2Vzf2LHdx4TaQ0BqOAtQcSTKEXujfm9jR2VoCHko0oi35PYp38yKQBXz4mrg==}
+ engines: {node: '>= 0.12.0', npm: '>= 2.0.0'}
+ peerDependencies:
+ react: '>=18.0.0'
+ react-dom: '>=18.0.0'
+ dependencies:
+ prism-react-renderer: 2.4.0(react@18.3.1)
+ react: 18.3.1
+ react-dom: 18.3.1(react@18.3.1)
+ sucrase: 3.35.0
+ use-editable: 2.3.3(react@18.3.1)
+ dev: false
+
/react-native-animatable@1.3.3:
resolution: {integrity: sha512-2ckIxZQAsvWn25Ho+DK3d1mXIgj7tITkrS4pYDvx96WyOttSvzzFeQnM2od0+FUMzILbdHDsDEqZvnz1DYNQ1w==}
dependencies:
@@ -8341,6 +8369,14 @@ packages:
yargs: 16.2.0
dev: false
+ /react-native-vector-icons@10.2.0:
+ resolution: {integrity: sha512-n5HGcxUuVaTf9QJPs/W22xQpC2Z9u0nb0KgLPnVltP8vdUvOp6+R26gF55kilP/fV4eL4vsAHUqUjewppJMBOQ==}
+ hasBin: true
+ dependencies:
+ prop-types: 15.8.1
+ yargs: 16.2.0
+ dev: false
+
/react-native-web@0.19.12(react-dom@18.3.1)(react@18.3.1):
resolution: {integrity: sha512-o2T0oztoVDQjztt4YksO9S1XRjoH/AqcSvifgWLrPJgGVbMWsfhILgl6lfUdEamVZzZSVV/2gqDVMAk/qq7mZw==}
peerDependencies:
@@ -9290,7 +9326,6 @@ packages:
mz: 2.7.0
pirates: 4.0.6
ts-interface-checker: 0.1.13
- dev: true
/sudo-prompt@9.2.1:
resolution: {integrity: sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw==}
@@ -9411,13 +9446,11 @@ packages:
engines: {node: '>=0.8'}
dependencies:
thenify: 3.3.1
- dev: true
/thenify@3.3.1:
resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==}
dependencies:
any-promise: 1.3.0
- dev: true
/throat@5.0.0:
resolution: {integrity: sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==}
@@ -9492,7 +9525,6 @@ packages:
/ts-interface-checker@0.1.13:
resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==}
- dev: true
/ts-object-utils@0.0.5:
resolution: {integrity: sha512-iV0GvHqOmilbIKJsfyfJY9/dNHCs969z3so90dQWsO1eMMozvTpnB1MEaUbb3FYtZTGjv5sIy/xmslEz0Rg2TA==}
@@ -9788,6 +9820,14 @@ packages:
dependencies:
punycode: 2.3.1
+ /use-editable@2.3.3(react@18.3.1):
+ resolution: {integrity: sha512-7wVD2JbfAFJ3DK0vITvXBdpd9JAz5BcKAAolsnLBuBn6UDDwBGuCIAGvR3yA2BNKm578vAMVHFCWaOcA+BhhiA==}
+ peerDependencies:
+ react: '>= 16.8.0'
+ dependencies:
+ react: 18.3.1
+ dev: false
+
/use-latest-callback@0.1.11(react@18.3.1):
resolution: {integrity: sha512-8nhb73STSD/z3GTHklvNjL8F9wMOo0bj0AFnulpIYuFTm6aQlT3ZcNbXF2YurKImIY8+kpSFSDHZZyQmurGrhw==}
peerDependencies:
diff --git a/docs/public/fonts/AntDesign.ttf b/docs/public/fonts/AntDesign.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..2abf03542c17e6f7a7806a226c3be732b51c5a40
GIT binary patch
literal 70344
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®9K?4Tre1;
zBfh-v+x_Bn?Mb!eK419`vZn3mQES%G&Ff&(QFh>bx~09vyF-frs2p50rzaMRJqUw}
zI-K`p-{n=NnYXvQsc(En|9<2t&TerOmFJ>RX>%}uR~z8^NjfC?f05CU)d+SM&b6B`(KWz$7Fxx$8Ph{CbRt;
z{Oc}92a;iRpd8MDT*
zi6)T+#_T71x~3ctE7R>6W6qzFzpGyD@ARuz+qo6gop0e=K+CQCbeI2H49cr9YOmE9
zku-_8ih9b`SM#6qby%vcZpRZg$;#KOw^${cJ$f!!_D6fgfZq$|O5(^z;*gH!?4`aY
z{Qs)OgV?dMwvp&5rc6sKO`Mii@|TjrPvOEOl4ZR#7N8&H6A(UIeJ1(rf?L{KaEsSU
zdr2>?-v0}l^>P<}rG150rRLc*pKQQ*>CoJjEi!1E)E%mlzUks()HqSS!WotO)4fq~@*cb4o
z!dAKZn}~}1G#EF;pAJ=2gr3Gub94Fjx4qRdw{7iOo4YdYeS3R3d~W)9qw;HLB_yYq
z$T$WRrYQD=1(u?V$nTWz1Ph~4hrj$6At|bnl31DHWZCjjnbCBg5!!y4*&x3vTL1>L
zrIs7-Ga1W1vdAYJ%0h>zj9b(>B<(AE*DR$ZxA{jV^FPd1X|sesD|SskGP`lX{BGIo
zFQ{;{XcE2NPsx`ejw4K~n9=ee_T<9n9@IY&)Z!*Rm|HNP`aM}s1|EK`=jC&)wc*0u
z6*WGq2VrE^3v4cv*=pze%B>63g0+KN)ek8=e7VISy&Q@}np?c;Kh=LZZI@VKBQuoS
z_*LBKZE>r6ZBBL9B!rh)dAS+atRrM(AFI;vDv^=FD0SWmiX+_ihs7~ZRrk@D4IV@Fn;Z)HTh~mmW4Kl(Nw=tbQU1{;FOsaFY6a
z#m=;nnvG%p6AGs13rV6vY}7Z3%vNjv-^jaR1M0+T@M*NdIGxC+VS(}@E;|i*1+7O|FeLWyurS|DG@N{eo&%Xugc0DAlzZ9@q|M8g5q-h$`rczJEGA!5jd*Cm+S5;{Y4VvY7034W
zO(*8kfyZhFk0W8vHC>X$b4Q&i%bP)KG?@)?_Y&kKvb@1_ks>=McuGlgW37tjb^@<4
z`?DQcU9`{?bci1Er-=9|yAbB#nK6>%V$$QW+ViY-huyhg{gDo9;WDe!X_d~iI;6=~
zsJ3Dj`7Dow=Pxt=}x|9
zDH(=uu;HleMs-4!rNHkag-IJsg2m=No7>GWjs1weMf#B>S9fQh4h^#
zyD&x|dKX?EM4M{jr&090I3$AxI5vV{;R(`s8qCXCJW6je;c7j4KpRGQgI}H%OE*N5
zTsm{8tF9WqBss6saxuY3kYMM4)F9Id>J#FLT
zRd$Q|vBef@?C$S|^cO7mhht67U@RT;@P#(ZCmCCL5SJQ5{Fay}SexskqN)>Z@q~27
zvc6nx$P=qt-1I#vtg@m#^S!3Ue5Kdx6>rzdy11eR1!tPu1sa9FS!_1T_o})ZgTbH_
z=!!q=wz*rY!fsE@qdsr3T|A>Z=m~~^P!)!wM(1|RPh&ncK@S&n4sD!8^lml{fd_4b
z#>W|75VVV$9}@`e9n|R^CQ>mt1$>j5RGVN2>0DEG!2dC%eD3c~_Ai#C#r^m-sQaRG
z>X&Siq)kiOmPGzWXP0pNR@K)J)YljGb@e*;#!|6Q(^=eu1HF()R{baG;kIK)y9ZnruD`
z(b=47mN2#@lQ~NZ#e$H*psGuOpcz9C!zWK(zqWn}%>c>+-(4s6F;jiGk8U^n#gh_Z
z14tCdz|~$X!GIw_V!}uZLS&Z^EI^_iMj>8|-Lz<4tvRcLE_tnLwz_;fgydJ$*1NSLrwtMim;$(s3lqTic;_Ie=azL}OwWZp8qa%DegU+xo3bX*JOisUo1j0F
zc&@tzfG7Oc&2$wk1xNV99hwUqqZF$Sv~w~RJz#C1aC_&1Z5Yw?8n7GUqW#1oX-9h%
zemcaeq1Mivh}%KL?G3?!T1O&PSKi<<#v%cm)#mVaM1r|+Jn7(OTQE}XvODU#!*wp7
zRWeRa&R?_s%{4QQ4}{$Fe9QV9jyrBe-4VTxsNXD^GRcalNtUe6kSAo3{E<*T8SM;7
z@h-pHVwS8XM_dZp%cL@=EA6tFtZsY25;vQqchY^5E!h&C-V9$~(B_N>Dknz+jpYGE
zaT=|`NX%%c@nl@Sj4RUnSRT>B{#h>?aKa!na#nh#TRfIET&8dk=FU%UeYx&jt>5o^-U^2NyboUI9^W5B6`WVJ4b1Kj|Ghd(qRy%`@1+~m
zXPWzZFX`<&E{yjz|2?&0&2pVb?1GJ_3z>N+I)ibc!=wJ0Y8r0Z%F!TdQjO7*qc{uj
zjy7%BX>4^ejM&jcpvxk^?An5n`L0qXZf-M1@h6|1a>yAtof@P{BCvWfO5#Rkr
zkL@Y-W3$cXjYi=zGji+8{xYN6YH}vMf%067$pXi}(?}*Y^;^fTT)Ma`T{EzF(TZiH
zT^ePZEEye5Hirqq0le#1uJrpQQ@KCFtxm_24pW7H|9k!lZgzj@;r^!ODSsy5YFM7C
z51Y-faR>dbtK7c7nQE&08q(4|RkgWT0zne;UkqleY;bsz6@AT(C$~GxG3Xw+Y^u&%
zAVci|y&1M4^29+k&8QiV$W(-Y&XWDK9z<4Lc4?Mx*UX1*&6K$RQAv|1HB+Kfw;qux
zQTj6llpVKHTY-3v&H8WK5P|Df>Aw+Yn1l?#cn9bnge8+%Ho>H&**Ei^_O#|=>&T|^
ziJ%b?w^~qC&XbV8w8`LesND{q;be)YDx}TuysK~Uy6JWN#RdG@MTOmWl+Qs-MACD6
z;eP%U#2CBFX;iaVqwy(`+=kL{T}O`R7>rz8BKX*)0%2iN2y
zk^GuL^(plp&X-@a7&P6!*i#vd$AeCI@U#qa2i}wK1iq7DJ6Vb>NGBtL=>kMAU54x}
zw;*=u2gqRaFwGo)s)PRL@E==0%v~DLz6O3=!5O+PuF-wkxsH^vct2gG`|%6SEalad
zF_3=EtQI51%%8>iw0=y=8Z7~X$*m(u_v`10XqBEX-cRRArY_zuZ|GlfOAi0;Ufbm}1Zhe2QKf7+bdQE?S_x4Z~=T#xGiCwdPU_iQa
z_*^0pyQZeUf5Ye#>gdO^0|Wfy_3PJV+v(MtmlF!Pf%f)w>)LDj*Y#&}z~OEbpX<*p
zAGoC-$tH?LQptVSpxnDhpUMuXo3(R^gnm;^zqqO71of#F`y<~e{RVTRO3U!sLw3zf
zibMxQc4@&hP=$!DijG2Dft@p7Du^y6ULyOuP@IL
zIcxL2R$e$KQC~l`zCIxx@tS0is;~@dMCT$$QHs3BUS6@JI^(zsz{#9(GlQ}vw0mo
z<*|QzyqZiaZ-YTYz5T@sKIPZgQ2RsI2W@&rdKdHmXiXPwk~%0Z57J93so*Ya0BVLotk=zB{q}Bgt(i@sR7(yxj3-rxkxwOiXv{yge
zD|!{>J9s1mQ~rYE^Gl{@BECSfw>8Y;;g+g_`Hg&M+flR9{8lbyBlX$lBeIPZDPyR)
zCs|hJjrGiHnBNyq&0N+xv)JyU+yUYUhb}owW8SYtp>$}P3+4owk9~)M(yy&C>kL0E
zQ`5<0a0!ksu^k#sm(4c)bFvD3K7$0HORRVbNd?515x7$%&0*jU`GXuOn7(mX0ibeK
zV)l~ab?Dao^~E+|OXbh-#r!j@uyGu+eR~9|e(Q{b=wq0d^z{nLFLyYY8#BN+pCgSD
zd-;w&cnHWBRh$)?b_oZCwgNW^?vNf;#o?+SMqT$mZ^J4|PcVZtx#non>vGgr_+xE-
zwX-I1+krcqON^A~(5OogHtlxAN)E;YP9P&2;F-xhWhAH+ln(K)uo8^>B9u7R#lg
zzGP*0vN9Qm#ZvY+hEqLlVSim{`@t53(@$?ztr`CxYRi7KEC@Rp>pTv>CIHIAYe!)8bXl*_i`pS6aii%CiS%W}Ej_
z&RI04J09;A8)S@{(v3l*IMRQK@na#cv<}6yYcJ++ERK{YH
z<{UX^lGtc6q`=*c94Eb$eUnlIkvqCig1s1m?y$j1sLfwc6|5MfYLa$Mla1751ZV|g
zlEi9DknNsRdziJHU6bn1t*NS7lj~2_v>wylJ224Oy}U*GX0Z<4gH#puAv9Un97(i6
z;tQ%j^T?%h=1y7~3@)8Cch0gSJ60bNz`rBb=(Ob-=|$vD7V(fp{%=GpP<^VXaxxs5
zF^PC-6-Wq{=fj9M+&&VkgDIt_hu>oJ#{J!k)~fs09y!TR@!R5<8}ws!^57cI*9^`f
zD-8c5?;#sZ&pKnOaZ+?vZChLItmvf1lyUU&{l!P-46eca6>%7Za|+pY2PxAknfND0
zmIPW_Cqhde1l}Nn!n#pvR)g_hm~rH%4^@#tLn6YPr!D9po(mC;xgZJxI5gC)~i
zA_?`YC3URStH`&FuG8pa*WBu!WL;gdr+Ti-H8(veSzk~4-;&m#(xT1o6V0sG|7rMR
zg0NX-DHAeJWs!*hq6?}@q0(fPCuejTsxll*!(Am88~FJ~1kWMs>u0(*O;udjtMWGzoc3Ln$Wk}s0Vq*YIeIgOY1F74@A+N;ZygqscC
z{s!QN=mc^D0SS#dXzY`;*)KvFZlnZ1P=bjR6ZXVEPk=T5Q=wA&;JYOl=>|R?91r)x
zF8+zIZ@&&*ybrU$416IHr;QXsp77w$i2n)6#UE7X^9T2TnV+s+PY{{KujkjRj{;8T
zlP4D*>E&enfoy?zo82;f1z;KCf;82s6WxH=4+_hrS*3Z!U{2J$IbaV)tSzDS?`Rio
z^$AQR@aW`q#sRO7=Ki5|MwI(yGT@&spUooWE#wBa9H1ck1DPD>xlG}?Y#Z{>Use@F
zAh8j_$KLSFD-3X$tvwN5DqESw;wanY;Pzb>pU=MP4E~nS{Y%(P%!P;WF7o{09nw7Q
zU0K87tB&>+Ac~b?0W=%0Slm7rlN3wj8&63{d
zSoQv#9o89(5d`OG4Fv${j&h4Qwd7$>ctgkd5e&}57Rs0fqG!%Cnu;Xca
zVmOwmi2vxER1{m87V>Yt6W$#1!jHglnyT6owgZgTg?*sdtAb;2Q3r9=et;HtefS4E
z4_1)~X2N_CHW44<)1ruB=!Ay}bZpqblrP5Ac+LJqM>^q6AO@1`5yG2HQpT`rSsOjY
zE3%gx!)~?B9X4*WN<8A1-tkBIK%rmSRhW4p-}yD+8sFlChuZ^R`4+4d!bU2%%e^kO
zGiy>0_@l`ER5oePo_@Zku#T5IaP&-!_aN5qu}vFuBhWRK0Y
z6V7e*=kQx2>4eV}Cs+4Y93irf7w+Oc>d*Ll2#VOMJ_)*oaDvyg4JI?+Qj9QY!^b@&
z>3!>@O7fIfPQq=4>tk8YvoYy(Uu=GNVNg1KE8eI+NJa4ZdIZ7*M>MX5UQT(JQaI4b
znWkguNqZ=+SEvMJdXO&-CIg)ED5>|KVZ#)9&~AU!5f9tXRu=!wvK@mC
z>&x$1eHGUCUdAhGYRbRglLO1u+Dxm%6qbNd3hO8dDMCq0+6IL4gtq2=qn48&)(Rec
za2blV#_WVzdyj@$rA@=ktd-CckA8nryF<1S0ttyQuuC=#1(bQQtmq;|@K0d=&?e+n*H-#xIou5R-{_xdHl5bw%y`<#p|YUAg0bW2xsEotb=
z<+>V{c1;?Xc}~M;Q&VMS{OE@BW)7f#O3K0E7ncM%2_`FvC;&PPesQ!wM}{%j<=JusH4+Jt&&sE#i7aFs5yt;2*ZOgK_HI}ISB4iiU)K~Q_Yw2uhtdcq|
zx|&ziCRVh!E`#5_#^IulA{tlZ6FyMvHq@tt)9J!9V$Cq!$yTD_oTsQRuQ@#>nfzOrg=*ZF*ub4U1Gl{DjZEiyR
zk{;0jxn-OvwZn}}`;5rP!OCeN>FQ}?qSX#NLhWauOeGc9nqudOpf&C5IKzEb4d3>^
z*9LHFV+dkuP(uty-}C=LZ6J>mv47DxZLnM3hPh7bUsKSSreW3Q3XB7|vP!ijZ53=n
zcsEE$r>M0&*pr;oWO6Mf4vDh5+@WzZ&4MpvT=-myVm=(U#}pQL0s)WoV|O5sFWe@r
zRm=G~6us^DsF&kP9!Yn9H6s+j(qOom1D+uFC*TJU1o$8wo{v5E`NchXAmG{m5*^8H
zp1}T>qz~151D?m+0ZeuGW1hfc8`L+%TLR)GZoD|~RRI3(=7B1@u?o_jn8RG&hFCtz
z648NH(6z%vhV_lAdbR4p1!*MSJ!U6mBXO=g$NTFWhS+pCVKTmI#suQPVB#m+mq;eJT;lpXgikWpPuSQTUmH=RyKAEiThigpSl29nW&huW(~O_^b;z$yzK$f)Z}9aY_{$1hQsK2y
zt3rtlB+5q0HzY#*eK@()27Ip-_TvNF-n+(7tb$H@IB^etTc
z$l@ce;esxDgEzTZ}Y1C&-aN(
z7C*8?JaYcR#g8st$bV=ye`bqDv37-I8d_UH`4?e5(7gp@h=(c-id4*ar%lje@Sdg?
zU|=RlFMuHZCu`JptJN2^uIApDmmhD7BI0DB(`PR$w3pd^l|DG6WdpozKDpCsz0DT!
zTUQr$Ien1TrmnX7BQ|v%_qv`gv)jv_c6q(7_i!s7dC%n?jUU$c6k|IetP(}h)w)CD
zXY=d$t)3XYO~B3?^_8ubrVxiKJPGWg2qd2XIgBr@zcqc-4!<5IJxyZn5v;n^o4_pa
zLbA#8U#NsK6`-A=C2ynfBpPtxIyy0$^*v2
zuhhr-?>!!65FL3^UW~X8KcxP8inrCwq`JL#Sa)krx5DCseu3vC0Y8NB#3OQo1sX0skwf$Yh5Ts{j++
zC9NAcArg&7P8gUvN3E-@sj1{|%-O>O4GVLfy_J60Eui5=b25vNu!M{>@}sNqNx(n1
zg|}^3lX1j+0f*CN98<08sEmq8G4<6Eb>X{WlYlQiCD@R4wPwI4oFgkoDhfX*Qq9#_
z<5!4uv61#H%1RLdmC@{4!Gu386D@%@P4=x|9*b#UEH_po^BV~QMh$+U*JaN|^-
z?n>j2AH9sX%xS^jX}#`fRn)Eh@OWbda(-khCMCR4Fa9jDw$^9=vv@e>|L-V0nx0=2O86;w59@8b!X}4Hfra-uAO_Ks!l)q7wv4hHKoxJv5wRQ
z&5SZ}fK!zw;vk8i{EM1YD)Wuz^H`a$be$08He69MWsP#!=Hky1P`&qlY9>>QcPa#VYKlWYsK$gZko
z&Kz5;77|7VGzp*=tDBIJn^jNLUh%jm?(#2y(p;pnJw0s=Lre}E^}!IF<(%ezmce{@@Y
zeMI)Kh(*sHHafM9`djs8E{{$hM!Z;zQ!nhCSV1;k?yw1(X53_9w~yB>V-thjIYEQa
zcrAW|BTd-Q;#4O-i3^8}_VJM66MBvsGT}?bFJ<`fp$xSe2DWpw4`=w)%W0*hpWnf^
z;&T}VH$KV1&v7LAHCRUZ2A@8BZl?M=4Pt2@EqT}G?g$(*2>Ogc9_a)Q#2R?<#4rhk
zK=(KOiy-tt5dJ$P(!5;Yz|Z;L#i2+)661^u{re9@-?U(r(Uj~iJAH!z`TdbrUwr&w
z^mr)z8s7?j`4uaD27^AzVApcVmC}oaG;21Rr#win}41ZyxEdaCAs4~@85k6Y11HE@lp@j=dK7&EHjik@xlv(l}
z5j_@YBz^i%G#7o!qu6|7ic~YjZyV@+fO;OBYn0EJ*2#`ba%3$WgPcz=YiP1NRd{qp
zx!OoG8ITKYgM=>kxs-Xgo3#;Q^Vr_;m^q9Wovoh1W*4#6)PM57izMHku&xd-^08fyMW2G~HGA$$8Xw%x-eJ
zxy?Lfk}rg9;H{#1i(3l&{$b+QGX7WiRZageAv3P7kLhI{zWyzzGn!pM%BShmDLU^kh(?~Ae9|BB`oEO|ieatmQ?Q9WfvtcgzT!FuxeveL!>&a*?$I~R<7PB(j7{>=LaK{
z3}Klv+)G!GAI$sJxfT^x}nBf`|n%HSrg4D(HiTw&YRSm+q_H+&P}Ml@68tPPO#
zVT4_ski%5K`~;QMoUU0cXB&*FS1JbayQ)7wVg#&^RjPqr5ZLp}9Z(qtU7vyE3HGh$~o
zLJ&spY@@V_2=f}Tq56@1X}6XKC63kUv?7?iDC_C#*TW+SHa~fIB;^h
z(;u!)T47B#12|E}-8W8fkGyp&Mu>VHeyERV+V0i1`#+%zoQB#~k$MH`SMD7ky9WKd
zG|rxS%{V7z7Nr>!6~Cn<=>a4>^3gRIWa)QPVK?8mtsDz4M*cljdaT8~Y(s9-BJFAf
z@0v9M1xq7tuSmhnH06raCRlnf;>tlncTb!?$`O}Nk7v31i|3x(Teu$DRc-vQfAzbN
ztQHs}EtG#Zl(YfuV7JS^4F}lZ3Qmnr5r6%BVVj_cYjGoNZ`Y65=)Oj+elgesD5uu|
zR_iav=%BTyf^U(FjFdfLr-y}=sI^wtoOU)}Odx@(i7XoATN_>JgIDBJ-w=%LkEnBA
z)SLemVIbY8`@So$Y*9U3s5w7vo9g)oc7F7z-?fwKi65%-aPC3a&7hrXKhh0v>1+>=
z#)^r1h*wIX${VjL3}84Bv7IgL#X#VCYn&lkL*LMRF%#b?>F*}2R2v|_Bi0EO+oRYN
zSg%&n~3D$cCSKWcg8|s{9sa}@U5r3BZnNH#+01XQfpx0
zIFg!UH*h!@f3T_h2yeP$k-cn+*V3JES4Arhh4H!SgJ*Yi_cWi`mA1k+{t#4cunt&FYUo
zyvgb_N>k+?7n0XIxv6Yjk0ECFMB}DYBcZE%C6{cvxVvS6(D(HiU6Oc9^nG~1yUG61
zVa}N~%zgAtC|Y<==@5#TV}~LPDA)jhV?uts+~keMJqx~>>JL<;TbkucS6S#wGx}qp
zW_$uVTC;Gu<7Z)elp8JPA1`0FWlW5ZT5Yyxn{zz++!f1BcBw{6mC3SOHcqaVkoC*s
zH4M02OR9O9B+pM)!h}M$E=06ImY}>9anxv(%7t7G!!i|^YC_tlx`mX)_iEdJ_L5th
zeqK=Bd@tliUCqOm^s@a^gz$2)v>Sab$|F5>g7VNx<@`XD&KJ)B$V^+kTuy2F`qSk
zkPt~&+pN0ft4}`pYI%U~zVHEejCg*`{lJCl03K+G*VM#Yu)}xb4&0~lEb;9{$_~=5
zNi-YTIas+ZydA>Jfq;{d`6`XXiYXX?V%d2HVL?zzfMhnWAui&D@BvH;OcATBvzRRhOZ}G?ue$t$4|#pQ
z3{rUNk0Sr(Am!hr7x62oGRV?dY1>CKW(*Dkt2Wlf*rU9wl)1eF@#6jHjXC3t{6vQj
zF)J{IKx+1n*iY~jwKs7C?>Kv7#%vrm0_ij?wY~v4`NUS*q?YNrclD_4*a5xhGi2oE
zT>Sp6;1wbwuOGR^^n$*If1ppryb#UM%x7U`({b!nb~ZA*T+41{_plxKvdIgW4Y@YB
zWgrB@%!TjQV-R6Lp}x72eOw(r?@iI2xCc)e_2=jab9VSV=*95;*dIO*mN{IOc!MZ+
zqWwh4{iW{*4#V$o+)mgMX4l0tl{l;s<|nopx!%Ue58S
zo!b8!ZSxQ9cb0bfRPC2Xv{Qwsc65sNJ45^3#-$6BYRFk9Sy@Rq{xn~HCoXe(_S{g$rct<>d2S9fc%i3!jbSXyEK%j$uKLg~X7`GQEb
zP}Kk63BwmIz-GOPjyy=+vAcI4OS4XV`Js3uz5wwK-}JC7J+5B2bEoCEx8MF-F`*9b
zNt1W%__`#i%XZv&qc;46ud*NCmy98*hcbTruhQNGK8~ZxA6IqvbkBXC(nvF-(P&1u
zM)zS`haFqKFWIqUJGPForC8R;I(+4@b31|Ha0Eg^$PWk(At9J67(&3w0viaBtV8|~
zZk7$Z0d_IB0ju--zUm%nWG5`Y&)-LPb$4}7)vK!aUcIvxuKgVAa07D6Pb`uf9X#z}
zV(tZ%#9D%LgLVptV;f)Irk9oq-~En#
z!ihHA48!gV(nzOPpB2zO++ZV-)a+eI*1V04s6jRY_*rN``5Fc@2dzReEJP@SNdwmM
zB3K?Hhei(jTrMrt8o3ZxHOHD`hPgKabET6y+7bH~W{gSAR-8R6oSjEmf|fp}O|SoU
z{VYsq=;vnY*1cM9NG3YFlHIS4JjOBBV}1AbX|+hd3p`9+o0tEPzg!h0K%Kz9-2al|
zj8H@peLO&+=QjF09wdonoB7Z{V%P-i3|xTe-An_6U_La4{2heUn(HS!c>#aeg(GOE
zO6}C8Jao;_Uj2F&xqpC~RiNkz^g30xYj9M%K}kJ_;lsEC@-S
zV=zI{_!HQRHER%PHV~IYaxSd%MzNqx{mr61dlsp`aTg-*P|KzkOjl?+kW{27#xLP!
z>P1_+FZ~Q57`=A8@SXa4;oP~q*{TyK)V`aIVUNRA(b7^8tvBCURBrvpU^pO(d4WI)wPAnd&m!9su
zuS36XbIg7%*csXFb}#d!J-Y*e!gxzl`^VJR|U-QPT590sI
zggs!UJLOanKdx1zwFub~;Tqv0mx61Ykmd>9NPWbRI#?quDfByy{}|PncB1Ggn5QHe
zhfsxP04Aq?j^|^XdE6tOHKvs`A&a!!V5G6bBwg9kvXa40l%F}0y!2Dy-iBGHSl`Ve
z^$|9EfuFjO!OECJJ&))GcJBA&XO$}cJ?6xja7v;$(2z8q$pfC2i6-98Tx3P6-FLwOQs!oajv5g-PL
zM;BHTapjqBi5KVWHTnPZw*Was`xwB7I}1O;J}L|Fyk(u$#dY>b!oRtBHNqe6Vvn!b
z{NAriKpf%+4;L3zJ-rP@>VP9xxKS8dO;zdmWOXNffgfK9n%;Fzf6>bRzd*=lmD^Kz
z6b`uMnr4O<`UW2>WzyH*OP@RZK~au9xZunDC)knP$MF+zLf1ZyqdS%|e(l}*tC&K7
zp-!_L;H)Xn-u{B?L8-8#B40~lL4d0LhTLk&tuI)40oUu`yZj6=&B-+pJrOt_v@E9q
zxZ+Fzr{5x>F8$U=*!5(FjV$p7}ee7MLgnayA8GP5W0rTz0VeyywX(Ww{<|EU1#f&`+zC42fwcqAd;mU*7!+LzqEA1aYkCudx#U|-
zKjD1M{tl>s&~x$3?VU|EhnEm9wPXox$Z(u19~6%7-hEu)$Dj0U5ri#0{K&cyqVCm4
z1eyWD?Pnxk(T@RBzqzZ6vLkfiJ3jN0B^0$rSfahZhrZG-Z0+gZDhOM|#iBH1B8F}KnHpuE*dkF+IM`%kVqp)4N)dF9(yY|dK_tMgap3wdj!
z_n%pN>V_+U&3}ry5fylTQ49Gi^v8KCeC>i2IL}j1JV1&t4=8Ae8Y?Fc@sR#R+XLtt
zT}_HBzpS1r>@5W43oo&4PF3!3ypJ64(TT;+OVXrT!ekbG6+
zvHg(Fw?oIb8f~J5nbYi{ah#WFD)$iMKm-O{0cQ;m`VWH!;$qP0Nh7%eHa8ZdQ*h!X
zO4BG}w=zpQJ6cm9{mf_Myfs2MRIUgHS8Q1x3NEigfDo3N{Ss@xx}Cl7WOY0HrlFOs
z*Dj&@c3jkSHQLfdSsJ=0LznYHId%kUP-LGW9pit3JW{$B2GLf^8S*MmOCNy61@G{8z!y
z;(H5tD%@D9zl@z~Ti?X<+NZS(8fWnGI^L%&e+>n_=>I0M(C>q?=rnCM%`T`;;S5g&`mG%QFvmy;
zeKh)LJm1yyX=Qdck~%n{7O=B#6l^1iEOeiHyfyyOYkHk?3S^(17Aq?zvr
zOf=R+gNPy5OA4+>cn?TGM|et{e4L3hJCIIsT2hio?BHmoB1579s@iJ%kQo^xv>p
zHHu)hu!4(czCZuQe2M14y!^=oZiQ?_4K#k}nM>3<K6B;zx!OK>@
zx{}*dO`!5wfed>HMkgSnI{^t#fZH6+k%$sF7wSnPfG*iW3e6FnP;l%cqWFV<9OMzf9d1>3mK
z&X3-Lk-Y12R#b=eIq~y|C*nlE2Dw(W6d|#JfGATG@TNj5>PluL0p9xm0cFkksQ|}`
zPpISA4X9a?M6#po2(Z*Ka49d*z-XL5^UeP0EpXPIR};?aTtrj<>O1XT_7V0jvzfjK
zA?Oj6^chGfcsaw;`_@S7YC@8W7SRH^npEC-W1WONk!!p;qvgusBhHsVIujsMx13R8
zoJ3L{o|%Q@qX^Q9BMcQ02mPWE6!8SM+3LOFlz20UuhBcXPP2vKl4DTN^#{XkED}@;
zf)On3f^{PTn-E6$exDW4c0V3|qX3^-ld(PxIN{&Z)(pGtEUM$Rv+4$6WF0WV^Xo>q
zp7=P|y+R6Q&~&QYAq#jEjn;z#HgVaEZq&l>dm-yVME8P`-8(wa?Fg6Te8GBRoO6!XC&5mm<0|Y!mrMs~{QV7Elz>3wd>ivXs;A
z3mU4`5jNp4TFl`nJcHoDX^_0$P}pi?p0J`YcAG!NYHG`at;OXgL<2%P09!C#Tw3o9
z^h<)pPIN@0Ycv*1z}ueSV*$W61Hc@}SPOY(%8l@XBC}B+AO~)h!ZQ(IY1on|V_=|w
zZe-eojK?SrA`j7`g%m_)5XyL#jKeKB#tj6t(b7gv!BEr3#dDHuH?W|D$V>)NtgrAS
zoU^()_Cc{dP*muLwuyy8(bD3QawiEPE@f|@y+9w9Xdc=V;A!x9`_EgJ3ufvflL;i(SAW*s3rigq5
zC`*N>q^71EQ4CAU!j(3c)s+fHW6evwKBF8jYl2vPN)YW9LFx~9>k(@;hy)Wx(ZEc*
zi-O6T+LWK&hOn8ILSDY-4W|47X>2|5sle^d5@%P$bT&}M(O}Q
zF>xm0bjVu_SW0qbMNw-}y1vNj54jS}&2C3eq*O6E9Yrp6ih$^=D-DGtL#)bSSLBkU
z$>f&BV2Kdsa`(@o|2=fh$z8BDJK3bu9SXGb(F25TXgoXm_f;L1nFFAc8yg?BfIqKDr1qF8F=o~v}
z=xY%Jj<8OvR_MYByJ&m`A4uarir_|Q_HzorPZYolJ7Lx_(g-?
z6c0CF-_c#)7!IY}l^guESGmk)=epv;bGCrlB)eb_W%jof+p27dl?aRMG8(1X(L!&s
zvbZ)9X4aCR(^KE+0Kd{>l%0jvkWDD7?$}xu?YJpqccdc0kmyNOwYMCsN0Rf|o|0-)
zf|(UjxPf+4X*T2L=Hp_-2WKAGjspLL`pRro_To0A6;ev9)@MVDihM2vmT)br^KGo~
zq(Wu)>`K9UsZ9NBN1fXlDn_)u_th0wraVPTafvV-=}T&k(xMv$5lIlsjWs1@X|~MGZP$tR5{}X2R)yTdjP?b5BdQ4-!1r*`
zBI$z(%kZ7;Ttu-tCc;o$pY#`r)T>6}0wxVhslV7~G+KWLmshWO-H1)r
zRu@zwy}&L)JpA{4W-ro)Ua%RBBVQsD{V(x$oe)2Sy+b^wPlxhKoA0ul*c?o5?T7+w
z=8(FRPb@eG3gR90+3@0#NMu_>Z#Lf5u{^rIv1Vy&TTgw{sz@Tn%!f>d-DgspiVI5&
z)oWWzgm`y3goYx_$JnyY>(w7+(i@l|E(i%Gtgdg{Vqm+b2KKPs0wMs`Nz2hs;m9yoA<3Bw2Bnudce6x*IR_7$4E-AQjL^H*HCoB|
z0-bW5!z@Mr@>-Dkt!1N!X5+ZuL669h(<<9blu)UL!2E
zBDF|km)=;z+{ucX+NzqmK>M}Dk*y6v??h>L=kmz9v{cjE*4l#ncK`Il3GEtm|r~t6DzvMwRCr@}vycP0<5Z|9|DA*3@qUQjrW*tUx4d*Tb
zn622qXwT;4L_i=e3W(>x7F6`fSsRHBRA&s$>NbBV#=H8aOuxHSPd_)L;%cI
zet)2>Io{?Czq?7Y$<56-G&jpOscFeNS*VoPso%7@T!k*z&k
zZLg;br8vyEaH_Q#4=H96^ODNC!G~!F870qC~ICjjG>=0>uI#C6gIs*9$;DQt+A8f95VoDkUI#zTqpiu6iW-!U
z+Y=1l7hAV=eYDM?E>RMFED-#I;Af!$wUK>$0JI+e-oPF?>h*pYrx;T7Tmx>qxvr+T
zLXr#ym)BkIa@D(-*JUv#N@{9h5Ri_me*m)EABr!<50~}!(s5}#G|JLt%vz?t2q#IK
z)%t}%C={sd2sh5U&DNz?;eQ|dhWek{!^au@WDHC$$E3TXMi(nx3mnl(SA8}l#3R}*({-#NT_
z?XHi%BpjUYjre!wy-lXl+=_d3u8Htu5q7!Sd~z$*~Gv5{SISOC-7H0Z|~9gtJvMw%XM0
z)pZyr<-Z3&BKK6hEGs@#Qjd(;P1lhF{LJv?S
z#vZl%t~7B@**)DpNNYX!k(B5@4~o8Sk3*!790F-I<9$eA4uOPfbV=`58Surzo&h0f
zVgw2(#d$+e6GY*M!Aj12Ru^Xb8;KkNMf@|ep)0z)Fval3&u-L24^KU+cX;P6lJcOx
zr!_!4pn-+p!vXaGj#t3p@`S@VsRp|WPy~aqa~D*xR(zC$=1m}Gmo#|;@jTktTgkc%
zR0T*6>>(jZPfpCj0i-7aq&y5n(X}iLn#hAPit(GioVW$-3^-<8uF_h#y4Duw+lHr%jm$HAV!bDO@pePr8?o+Vu?exOC6`@s)bj9ln{@HC|67oX-w
zc28AbqATe_V0a@uC5*jKRqv@{Kc-rFZ(UlOtB<$x+i9E2kXCLN0!k}5n`A2tB{f^G
zw``=TsHwsu48E$JzUZzlEv+tX%lpC0n<*3so{FZTR|mC|`e!FzD6JO!|FEH4e$CfX
z2o{NHNQ%)gU~LFJ8fiyE=>~~#wj!RvTftM_u(_&w?UJ>Y4Ynf#hn6l`(sOv=uzRED
z?f;;)XR=>u>tKr)?cTL{&2Lw)-X-9vUn^p}B^B9(j+NiWKie%e@rEYov1$pMz-NnbOmbOUs&QEufg
z;lUO7Pd!sx8VL*ChbwAJmB&oos~>~#uP)WvdqxOHO6%4=Qqts0w_Mfba0`!qR4(ee
zswM4fDq-LKn6b1j)zJMI)v8_lKvA8iroOAQNPh4k!R_ems;}|XHOze(@~V#;dapo}
zo0C0GZ|${_z>b4!ZdG6Jo@oq3+TQgyud^rVH<}xhPN`4wRgbjy4XyK`=u9@5)Q=t9
z5r{P2`b%EPYDt$lq&|aZ-B4fqNVUiC^pxZ%OV{MS+c?wR|1QEeT<;{lC|rVkCIVf!
zCSj+~iE_VfSU}BRAS((>gCp1OfpQWDnN;G$y%Po&zxs7m_!<$jPqMGWiNbg3
zk0j2YX4TUq+`k)n*hbfXYdz7-ws*ISbnk2nE2%BPKcVO8r)i&g`ZV4@Mf7ESoGRX`
zzPfrfUADA{bp4G0)kgGc9%EXQuUGLs23bdv`wwwybBcFT>5>u>kqx1l$EFRI+@wjN
zT9hyhrZ=ReM{XDLk;9Auw@n%qO>rsy*x_f&it8Wf@4ddIesv-FymGaBiEq(B*S%{7
zKXYoc!rU&${H4+D6cF(E&0c~Q!Q<$E&*b7nS+pPa!TPrxTZelpt5)3p#DLSsZt>+`
z3Lg6v^|ie<$7?}wuvj_hA(4N`&CvEpP8+A>7+cJIxkMAp=qxLE2D+*Fc~PPX>Nrp#
zCz?&{X@c`fv-u=}eU%!aPP3n{5{gOLFmmhwNSjd%h0P^zM%p5#;-F*#X&bvmLas*qq8KQFpJV&}llPz8-;UE7+a_wP
zje0MAtU&jJcpkd<9&Ryv4e0m5f*G!5!T^)n!pF}%v7~lQ!;QiA;S6C0o%l3vB`pRd
zzRlb~2Iq2Yu3G~>s?+LIni)KOa7}fSFn4cN_;+y&RZ$I}X-+odlh~2hF}fq3{k+j>
z{JaCvoSa6pQ@>yiDwvr=hDcevKo#whD$>Pl->FllG7dJgg0-DG6&S(ok>^&eTJ@O!
zRupgbA9t|ALgqNWV#W7P;hZ^jN;rR=Bwc56n`FdF!b!XOE-%ovB$?dW6)K@X*Ho8Z
zsXyIxdef$Ghsk~9{w=93>Q6qpY12n-izI1LQB_sdfNhN=t+9nyn%wVoINs|vt=yd2
zT2Zsfal~!vEJ971Z%{7jGG7t4D}e%v2Sa`t>oMcrBq9$&-Chx;=bx_k4)t$LR{y5U
zh-H3eFTBak*}uHW%{Q%y8I5mJ=$`!Vu6VPXvoF5c-8ZcYxM;Q^=P*BspQ+=XDwnOm
zEBufCx98~p6@6cDgZjPT2K9Nt4K6po?B0T|tAWd4!Ie*WA3@*9PD_*XQ!M`kEVWh;
z&yxUF;Ra|rmPry;A=X9be}I30ay>bVbx?W!fYdp8mj9rQ#1iQ@fvX^i6bqRYyOMaM3CMp
zcVqVU{E9U9=iw0HQT%%lX@%s=bK^*qhXOTep3I_%sD+2ibSSeJnt|xM~;NN3KdXAx%ireKwD1?Vswm3SOJy
zaEh+$`#0axxNX*{owbo7aH?UgQe4=%eECj+A5})5U)Q9r
zblTdMFK@FsnHY3z$_PSclOqUmfi}OsEItPuQVOg(XB(^o1Yp66;%31)mYQ!GXqt&6
zmm&I2=HVoY3dH8-B0-(QSieP6ZGNM1*@XLwxvRD)%7j&I?W2I7@<}sdq=O
zN%Y!ehx1u2(Z{>B7}F3N!sLwRCE1^`idonn@jK5$-1z)ik~yBG>$#GzakbmsQQAhC
ztlCOD-0szlj-bKmsBUeowmHQhTdAdz5qLN{Ctym0ctN+9hv$jfq673j&B?o)AIDjG4Pu5a)f~;y>BU@DzD~G$1k(D3iY+G~{}4Mcv_wHB|iQ
zN2$h~(^LcO4_E~pku)DFTozO`z@d{2$YD~R)eGOyOshpQ+(OmrUfb~>|M
z9~u@=5w+GMtl^YF{c>2@Hi}4AMl|*^#Jrajufs8
z#F*<1B;7rQB34@AG6}v
z%)jB_k_}7PNxboha0czh3e5#HWblAs@5yhxr1wbO(Qy~LdT_~lBss~!_M*5FvaoVU
zCAtAyG6?~u;hNbP84Q3^l;bhJTR^+{=8yT2lqR>|2L;PV_2R#)H#kDctpW80J6l{U
z8jC~a!Hts5XufpO;WMz?6o+ImyCinIqHb{o0;Pd~OFIn;kA)n*Kyr3lsJLda!0i65
zLA%j_pc+V{_?S(i+>BS-ZVbSD2=Cy)J`ixJf20eBEA+>#bqe@}Xt$P`fU@yaVT9n`
zJx{xIMBI#gRmfEUw_^C(nT0YlNp_46;9jd1{0n58Q4(KM!_c_AyrQMuGbLMf%gt
z3RoL2UF1|e-@IRa_2kL!lP90Y;rWyFr<*Qw`3p4O$%7e9I-oZ2`Mu!u*HBiw%UhYt
z8I*Hr$ainZVLn20^M1|qUf}aS-ShSbdJH=_oCDKT&kNM^h3gB-2X&k0E22?!)0`u$
zl_RX*K-{vNE5ky1`T@*s&{uX)JHM!%Xt+qn@FdpJhJphH$I*Mphk?X2JuBDOE&*zT
zvNk7Zq9}(vsxb;$^xl?SLQ^s+fcOPF-T+7^8DGrdei{23#9}5*Z(0Uj;R2ZQ0+Es@
z0(Kx8h@3*dq)8~*f!!t>7Lf~{kyhCjvR0QVjTGLmQ7Nm2C5vpWu3H{bLIFhyt=ft(
zHd|K}%5pHM6kb*TRxea^+JN3IJNGk)s2APja3K^7#f-VhEV)AB29jGJf4Pqt!Tgx3
zI}4RyP?ihzkB1Z`fS+4l_f{XjtTih`T5A?pTigzxWySd$p^{KPHmFoAuBa$clp$lG
z532+`9w7mqOScdhpn+#Q27V<@1U~d&X#jc(WbKDQ7;*FvnwN~dHAgYcz>2sU(A7MY
ztmM5ep1-uyTUh87A3-{!+2HR5kx9Q7B?}YfpNVH^>0a7^qxdz|NaT}Uq~lwZH!wet
z1+p1l{IVdKq-R8CVb@EdX-L1ni=I*W2|_A3>Gv1*lj6IO&m`iy5Z8QmA
z5(TiS9G}Aw?pcg1`4MnUjEDC{>z#r3Q5!Ilh+tS@3*o{NAe=*d6bg2L=%#
z^MYVhzbgs`>7B4vQNKHPpWulGzHu|w#|gl)opQ@?P9v?6atMJmK_M5&lv08NP<6nx
z!GH?fotbQ~fm}%TX&?h8BoRjrcqY8=bZ$5RZ+mr#+s&Rs;TfpeT&EuD84492{-$ZjbVVFyyLsZ8+d^t6iQ3kJ{ySKSQ-o;q`s^
z4jWO7r<{+y&4uso#`P|G_%=^E6l;sc+Im}KF<2ht*|g<+i1W9&h`XS9M^65*5;;0G75M1XUhP^G~TITg+)3`~6A_?C`4ckUjOg*~?~-_;iJ
zsE<5x{=976`m>*XzA)V~dHm9UDs6ifAFN+`WJyaW;-W5yiEXTqMo#*9%Z
z^tScJmy~a3R<^Hv$-d2=cv48HtfXIJ%eta50f|C1dmwG>1mHPyfgLet{Mc)BQhqm&
z4_3WOAd&P141wlkz}JezCIKi^3lx7rprrtL+&o_RFB@P5kf;+DgOns%0)~j7G%J5!
z`sgdW+0CyUQjfoK=!sW$zjF`%ysG6ae)UzxHNQi^Zxkq9;R;~{xGr@#SgD{0Ez8)G
zJ8HAX-_hOuj^pcZzUQX(>un^jtj<`vc)^L-4V9i^PaTV)wQ3${hIf-bzQ}TmD3yd3as};>tZI{
z@ykzCEelpMA+xb!dn)gKcE=BQW^WhT8#^D}2jx1+i=M?^uLqWDO$8$bhk$z#Q`0V$
z){5BRA~8w;f5FLX=E>z~9B#*xrHDKjhq46~l2D663<)75W~5jvG&e0VKzc$+>FuJD
zY+52Vl!&mQAI<7*YDiY&jri!n$J4LS}JSgzY7rEfv8~SzXelzEl$q%EvmqAs`RzhZiV(LbN;VsmR-d6YU_c(UM61%AP?8A`iIvMR$uPf!`7U>lhq`_xUyCOnFWWLu&>ThL}
zNm2hBImq3(wlY^94srm?A}$2b3|xrF29XTdVUW=pZ!RZuBFqTfCzRtlInTs$_EYGY
zaoqtcr#^Fg`MPU`>FIg#PmVXeneDjq>f*Aag2Z-QJ$$E10$u~=tz6O}bhEz(fGH#feri08k?4J?lHG{^j$ZXQs1fndvF@uS|JL{ma?2Us$hRRR6kO
zj6U$ld(|H!)@XD`0%kq2gH-`~{n!4GycL7(crz^BNZ^BckNrra5B-F^y^+aJ-?HdHU9zhE?)LTanoZvf@7npmgN9JD
z`#XaJlj4e