├── .babelrc
├── .eslintrc
├── .github
└── workflows
│ └── codeql-analysis.yml
├── .gitignore
├── .npmignore
├── .prettierrc.js
├── README.md
├── demo
├── demo.gif
├── example.png
└── logo.svg
├── docs
├── .gitignore
├── README.md
├── babel.config.js
├── blog
│ ├── 2019-05-28-hola.md
│ ├── 2019-05-29-hello-world.md
│ └── 2019-05-30-welcome.md
├── docs
│ ├── 1-introduction.md
│ ├── 2-getting-started.md
│ ├── 3-customization.md
│ ├── 4-custom-component.md
│ ├── 5-examples.md
│ └── mdx.md
├── docusaurus.config.js
├── package.json
├── sidebars.js
├── src
│ ├── css
│ │ └── custom.css
│ └── pages
│ │ ├── index.js
│ │ └── styles.module.css
├── static
│ ├── .nojekyll
│ └── img
│ │ ├── android-chrome-192x192.png
│ │ ├── android-chrome-512x512.png
│ │ ├── apple-touch-icon.png
│ │ ├── browserconfig.xml
│ │ ├── favicon-16x16.png
│ │ ├── favicon-32x32.png
│ │ ├── favicon.ico
│ │ ├── logo.svg
│ │ ├── logo_old.svg
│ │ ├── mstile-144x144.png
│ │ ├── mstile-150x150.png
│ │ ├── mstile-310x150.png
│ │ ├── mstile-310x310.png
│ │ ├── mstile-70x70.png
│ │ ├── safari-pinned-tab.svg
│ │ ├── site.webmanifest
│ │ ├── undraw_docusaurus_mountain.svg
│ │ ├── undraw_docusaurus_react.svg
│ │ └── undraw_docusaurus_tree.svg
└── yarn.lock
├── package-lock.json
├── package.json
├── src
├── components
│ ├── SafeAreaView.tsx
│ ├── Text.tsx
│ ├── TextInput.tsx
│ ├── TouchableOpacity.tsx
│ └── View.tsx
├── core
│ ├── createThemeProvider.tsx
│ ├── createTheming.ts
│ ├── createWithTheme.tsx
│ └── theming.ts
├── hoc
│ └── createPicassoComponent.tsx
├── index.ts
├── styles
│ └── defaultTheme.ts
├── test.tsx
└── util
│ ├── classname-helpers.ts
│ ├── constants.ts
│ └── style-helpers.ts
├── tsconfig.json
└── yarn.lock
/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": ["module:metro-react-native-babel-preset"]
3 | }
4 |
--------------------------------------------------------------------------------
/.eslintrc:
--------------------------------------------------------------------------------
1 | {
2 | "extends": [
3 | "airbnb-base",
4 | "plugin:prettier/recommended",
5 | "plugin:react/recommended",
6 | "plugin:@typescript-eslint/recommended"
7 | ],
8 | "parser": "@typescript-eslint/parser",
9 | "parserOptions": {
10 | "ecmaFeatures": {
11 | "jsx": true
12 | },
13 | "useJSXTextNode": true,
14 | "project": "./tsconfig.json",
15 | "tsconfigRootDir": "."
16 | },
17 | "env": {
18 | "react-native/react-native": true
19 | },
20 | "rules": {
21 | "react-hooks/rules-of-hooks": "error",
22 | "react-hooks/exhaustive-deps": "warn",
23 | "react-native/no-unused-styles": 2,
24 | "react-native/split-platform-components": 2,
25 | "react-native/no-inline-styles": 2,
26 | "react-native/no-color-literals": 0,
27 | "react-native/no-raw-text": 2,
28 |
29 | "semi": ["warn", "never"],
30 | "import/no-extraneous-dependencies": [
31 | "error",
32 | {
33 | "devDependencies": true
34 | }
35 | ],
36 | "quotes": ["warn", "single"],
37 | "no-restricted-syntax": 0,
38 | "no-await-in-loop": 0,
39 | "object-curly-newline": 0,
40 | "no-constant-condition": 2,
41 | "react/jsx-filename-extension": [
42 | 1,
43 | {
44 | "extensions": [".js", ".jsx"]
45 | }
46 | ],
47 | "react/state-in-constructor": [2, "never"],
48 | "no-mixed-operators": 0,
49 | "react/forbid-prop-types": 0,
50 | "react/no-unused-prop-types": 2,
51 | "jsx-a11y/media-has-caption": 0,
52 | "no-console": ["error", { "allow": ["warn", "error"] }],
53 | "no-underscore-dangle": 0,
54 | "no-global-assign": 0,
55 | "prefer-const": [
56 | "error",
57 | {
58 | "destructuring": "any",
59 | "ignoreReadBeforeAssign": false
60 | }
61 | ],
62 | "import/prefer-default-export": 0,
63 | "import/no-named-as-default": 0,
64 | "jsx-a11y/no-static-element-interactions": 0,
65 | "jsx-a11y/click-events-have-key-events": 0,
66 | "max-lines": [
67 | "error",
68 | {
69 | "max": 500,
70 | "skipBlankLines": true,
71 | "skipComments": true
72 | }
73 | ],
74 | "max-len": [
75 | "error",
76 | 100,
77 | {
78 | "ignoreComments": true,
79 | "ignoreTemplateLiterals": true,
80 | "ignoreStrings": true
81 | }
82 | ],
83 | "curly": 0,
84 | "consistent-return": 0,
85 | "arrow-parens": 0,
86 | "react/no-array-index-key": 0,
87 | "no-return-assign": 0,
88 | "comma-dangle": 0,
89 | "jsx-a11y/href-no-hash": "off",
90 | "jsx-a11y/anchor-is-valid": 0,
91 | "no-multi-str": 0,
92 | "newline-before-return": 2,
93 | "newline-after-var": 2,
94 | "newline-per-chained-call": 2,
95 | "import/newline-after-import": 2,
96 | "react/jsx-props-no-spreading": 0,
97 | "react/require-default-props": 0,
98 | "no-loops/no-loops": 0
99 | },
100 | "plugins": [
101 | "react-native",
102 | "prettier",
103 | "no-loops",
104 | "react-hooks",
105 | "plugin:@typescript-eslint/recommended"
106 | ]
107 | }
108 |
--------------------------------------------------------------------------------
/.github/workflows/codeql-analysis.yml:
--------------------------------------------------------------------------------
1 | # For most projects, this workflow file will not need changing; you simply need
2 | # to commit it to your repository.
3 | #
4 | # You may wish to alter this file to override the set of languages analyzed,
5 | # or to provide custom queries or build logic.
6 | #
7 | # ******** NOTE ********
8 | # We have attempted to detect the languages in your repository. Please check
9 | # the `language` matrix defined below to confirm you have the correct set of
10 | # supported CodeQL languages.
11 | # ******** NOTE ********
12 |
13 | name: "CodeQL"
14 |
15 | on:
16 | push:
17 | branches: [ master ]
18 | pull_request:
19 | # The branches below must be a subset of the branches above
20 | branches: [ master ]
21 | schedule:
22 | - cron: '23 5 * * 2'
23 |
24 | jobs:
25 | analyze:
26 | name: Analyze
27 | runs-on: ubuntu-latest
28 |
29 | strategy:
30 | fail-fast: false
31 | matrix:
32 | language: [ 'javascript' ]
33 | # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ]
34 | # Learn more:
35 | # https://docs.github.com/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed
36 |
37 | steps:
38 | - name: Checkout repository
39 | uses: actions/checkout@v2
40 |
41 | # Initializes the CodeQL tools for scanning.
42 | - name: Initialize CodeQL
43 | uses: github/codeql-action/init@v1
44 | with:
45 | languages: ${{ matrix.language }}
46 | # If you wish to specify custom queries, you can do so here or in a config file.
47 | # By default, queries listed here will override any specified in a config file.
48 | # Prefix the list here with "+" to use these queries and those in the config file.
49 | # queries: ./path/to/local/query, your-org/your-repo/queries@main
50 |
51 | # Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
52 | # If this step fails, then you should remove it and run the build manually (see below)
53 | - name: Autobuild
54 | uses: github/codeql-action/autobuild@v1
55 |
56 | # ℹ️ Command-line programs to run using the OS shell.
57 | # 📚 https://git.io/JvXDl
58 |
59 | # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
60 | # and modify them (or add more) to build your code if your project
61 | # uses a compiled language
62 |
63 | #- run: |
64 | # make bootstrap
65 | # make release
66 |
67 | - name: Perform CodeQL Analysis
68 | uses: github/codeql-action/analyze@v1
69 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | *.log
3 | npm-debug.log
4 |
5 | # Runtime data
6 | tmp
7 | build
8 | dist
9 |
10 | # Dependency directory
11 | node_modules
--------------------------------------------------------------------------------
/.npmignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | *.log
3 | npm-debug.log
4 |
5 | # Dependency directory
6 | node_modules
7 |
8 | # Runtime data
9 | tmp
10 |
11 | # Examples (If applicable to your project)
12 | examples
--------------------------------------------------------------------------------
/.prettierrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | singleQuote: true,
3 | semi: false,
4 | trailingComma: 'all',
5 | }
6 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # react-native-picasso
2 |
3 | This is **NOT** yet another components library !
4 |
5 |
6 |
7 |
8 |
9 |
{description}
52 |{siteConfig.tagline}
69 |You should not think about your design once it's defined
70 |( 15 | WrappedComponent: React.ComponentType
,
16 | ) => {
17 | const EnhancedComponent = React.forwardRef