create-react-scaffold-cli 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.
- package/bin/index.js +34 -0
- package/package.json +15 -0
- package/scripts/createProject.js +30 -0
- package/templates/base/.env +1 -0
- package/templates/base/.husky/pre-commit +1 -0
- package/templates/base/.husky/pre-push +0 -0
- package/templates/base/.prettierrc +8 -0
- package/templates/base/.vscode/extensions.json +8 -0
- package/templates/base/.vscode/settings.json +16 -0
- package/templates/base/eslint.config.js +48 -0
- package/templates/base/index.html +16 -0
- package/templates/base/jsconfig.json +7 -0
- package/templates/base/package.json +64 -0
- package/templates/base/postcss.config.mjs +7 -0
- package/templates/base/readme.md +97 -0
- package/templates/base/src/app/App.jsx +13 -0
- package/templates/base/src/app/Router.jsx +4 -0
- package/templates/base/src/app/app_readme.md +74 -0
- package/templates/base/src/app/index.css +1 -0
- package/templates/base/src/app/main.jsx +10 -0
- package/templates/base/src/app/middlewares/index.js +0 -0
- package/templates/base/src/app/providers/QueryProvider.jsx +75 -0
- package/templates/base/src/app/providers/index.js +1 -0
- package/templates/base/src/features/features_readme.md +102 -0
- package/templates/base/src/features/index.js +0 -0
- package/templates/base/src/features/sample/components/index.js +0 -0
- package/templates/base/src/features/sample/constants/index.js +0 -0
- package/templates/base/src/features/sample/constants/sample.constants.js +0 -0
- package/templates/base/src/features/sample/hooks/index.js +0 -0
- package/templates/base/src/features/sample/pages/index.js +0 -0
- package/templates/base/src/features/sample/sample.assets.js +0 -0
- package/templates/base/src/features/sample/sample.context.js +0 -0
- package/templates/base/src/features/sample/sample.navigations.js +0 -0
- package/templates/base/src/features/sample/sample.queryKeys.js +0 -0
- package/templates/base/src/features/sample/sample.routes.jsx +0 -0
- package/templates/base/src/shared/constants/app.constants.js +4 -0
- package/templates/base/src/shared/constants/assets.constants.js +0 -0
- package/templates/base/src/shared/constants/index.js +0 -0
- package/templates/base/src/shared/contexts/index.js +0 -0
- package/templates/base/src/shared/hooks/index.js +3 -0
- package/templates/base/src/shared/hooks/useBooleanState.js +19 -0
- package/templates/base/src/shared/hooks/useDebounce.js +17 -0
- package/templates/base/src/shared/hooks/useToggleState.js +11 -0
- package/templates/base/src/shared/layouts/index.js +0 -0
- package/templates/base/src/shared/libs/axios.js +6 -0
- package/templates/base/src/shared/libs/cn.js +7 -0
- package/templates/base/src/shared/libs/index.js +2 -0
- package/templates/base/src/shared/shared_readme.md +98 -0
- package/templates/base/src/shared/theme/index.js +1 -0
- package/templates/base/src/shared/theme/theme.js +2138 -0
- package/templates/base/src/shared/ui/Box.jsx +200 -0
- package/templates/base/src/shared/ui/Button.jsx +150 -0
- package/templates/base/src/shared/ui/Checkbox.jsx +112 -0
- package/templates/base/src/shared/ui/DropdownMenu.jsx +152 -0
- package/templates/base/src/shared/ui/Flex.jsx +151 -0
- package/templates/base/src/shared/ui/FlexItem.jsx +96 -0
- package/templates/base/src/shared/ui/FormField.jsx +184 -0
- package/templates/base/src/shared/ui/Grid.jsx +151 -0
- package/templates/base/src/shared/ui/GridItem.jsx +95 -0
- package/templates/base/src/shared/ui/Modal.jsx +43 -0
- package/templates/base/src/shared/ui/Scrollable.jsx +47 -0
- package/templates/base/src/shared/ui/Select.jsx +207 -0
- package/templates/base/src/shared/ui/Sheet.jsx +112 -0
- package/templates/base/src/shared/ui/Text.jsx +122 -0
- package/templates/base/src/shared/ui/Toaster.jsx +31 -0
- package/templates/base/src/shared/ui/index.js +1 -0
- package/templates/base/src/shared/utils/getClassName.js +5 -0
- package/templates/base/src/shared/utils/index.js +4 -0
- package/templates/base/src/shared/utils/memo.js +3 -0
- package/templates/base/src/shared/utils/parser.js +41 -0
- package/templates/base/src/shared/utils/tryCatch.js +13 -0
- package/templates/base/vite.config.js +19 -0
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
|
|
3
|
+
export const useBooleanState = () => {
|
|
4
|
+
const [value, setValue] = React.useState(false);
|
|
5
|
+
|
|
6
|
+
const toggle = React.useCallback(() => {
|
|
7
|
+
setValue((v) => !v);
|
|
8
|
+
}, []);
|
|
9
|
+
|
|
10
|
+
const setToTrue = React.useCallback(() => {
|
|
11
|
+
setValue(true);
|
|
12
|
+
}, []);
|
|
13
|
+
|
|
14
|
+
const setToFalse = React.useCallback(() => {
|
|
15
|
+
setValue(false);
|
|
16
|
+
}, []);
|
|
17
|
+
|
|
18
|
+
return [value, setToTrue, setToFalse, toggle];
|
|
19
|
+
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
|
|
3
|
+
export const useDebounce = (value, delay) => {
|
|
4
|
+
const [debounceValue, setDoebounceValue] = React.useState(value);
|
|
5
|
+
|
|
6
|
+
React.useEffect(() => {
|
|
7
|
+
const handler = setTimeout(() => {
|
|
8
|
+
setDoebounceValue(value);
|
|
9
|
+
}, delay);
|
|
10
|
+
|
|
11
|
+
return () => {
|
|
12
|
+
clearTimeout(handler);
|
|
13
|
+
};
|
|
14
|
+
}, [value, delay]);
|
|
15
|
+
|
|
16
|
+
return debounceValue;
|
|
17
|
+
};
|
|
File without changes
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
# Shared Module
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
The `shared` folder contains **cross-feature reusable code**.
|
|
5
|
+
|
|
6
|
+
It exists to prevent duplication — not to become a dumping ground.
|
|
7
|
+
|
|
8
|
+
> Shared code must earn its place.
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## What Belongs in Shared
|
|
13
|
+
|
|
14
|
+
Only code that is:
|
|
15
|
+
- Used by **multiple features**
|
|
16
|
+
- **Stateless or generic**
|
|
17
|
+
- Independent of business rules
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Folder Structure
|
|
22
|
+
|
|
23
|
+
```txt
|
|
24
|
+
shared/
|
|
25
|
+
assets/ # Global images/icons
|
|
26
|
+
constants/ # App-wide constants
|
|
27
|
+
contexts/ # Truly global contexts
|
|
28
|
+
hooks/ # Reusable generic hooks
|
|
29
|
+
layouts/ # Application layouts
|
|
30
|
+
libs/ # Third-party wrappers (axios, query)
|
|
31
|
+
theme/ # Theme configuration
|
|
32
|
+
ui/ # Design system components
|
|
33
|
+
utils/ # Pure utility functions
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## Rules
|
|
39
|
+
|
|
40
|
+
### ✅ Allowed
|
|
41
|
+
- UI primitives (Button, Modal)
|
|
42
|
+
- Generic hooks (useDebounce)
|
|
43
|
+
- Axios/query setup
|
|
44
|
+
- Theme tokens
|
|
45
|
+
|
|
46
|
+
### ❌ Not Allowed
|
|
47
|
+
- Feature logic
|
|
48
|
+
- Business rules
|
|
49
|
+
- Feature-specific constants
|
|
50
|
+
- Feature state
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## Import Rules
|
|
55
|
+
|
|
56
|
+
```js
|
|
57
|
+
// ✅ Allowed
|
|
58
|
+
import { axios } from '@/shared/libs';
|
|
59
|
+
import { cn } from '@/shared/utils';
|
|
60
|
+
|
|
61
|
+
// ❌ Not Allowed
|
|
62
|
+
import { authQueryKeys } from '@/features/auth';
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
## Constants Policy
|
|
68
|
+
|
|
69
|
+
Shared constants should be:
|
|
70
|
+
- Truly global
|
|
71
|
+
- Stable
|
|
72
|
+
- Rarely changed
|
|
73
|
+
|
|
74
|
+
Examples:
|
|
75
|
+
- Pagination defaults
|
|
76
|
+
- Environment keys
|
|
77
|
+
- Generic route params
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## Contexts
|
|
82
|
+
|
|
83
|
+
Global contexts should be rare.
|
|
84
|
+
|
|
85
|
+
Before adding one, ask:
|
|
86
|
+
1. Is this needed by multiple unrelated features?
|
|
87
|
+
2. Can this live inside a feature instead?
|
|
88
|
+
|
|
89
|
+
If unsure — **do not add it here**.
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
## Philosophy
|
|
94
|
+
|
|
95
|
+
Shared code is a **dependency magnet**.
|
|
96
|
+
|
|
97
|
+
The smaller it stays, the healthier the system remains.
|
|
98
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './theme';
|