proje-react-panel 1.6.0 → 1.7.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/.cursor/rules.md +11 -1
- package/AUTH_LAYOUT_EXAMPLE.md +343 -0
- package/AUTH_LAYOUT_GUIDE.md +819 -0
- package/COLOR_SYSTEM_GUIDE.md +296 -0
- package/DASHBOARD_GUIDE.md +531 -0
- package/IMPLEMENTATION_GUIDE.md +899 -0
- package/README.md +18 -1
- package/dist/api/ApiConfig.d.ts +11 -0
- package/dist/api/AuthApi.d.ts +2 -5
- package/dist/api/CrudApi.d.ts +11 -12
- package/dist/components/DashboardContainer.d.ts +7 -0
- package/dist/components/DashboardGrid.d.ts +9 -0
- package/dist/components/DashboardItem.d.ts +10 -0
- package/dist/components/ThemeSwitcher.d.ts +7 -0
- package/dist/components/dashboard/Dashboard.d.ts +7 -0
- package/dist/components/dashboard/DashboardGrid.d.ts +7 -0
- package/dist/components/dashboard/DashboardItem.d.ts +6 -0
- package/dist/components/dashboard/index.d.ts +3 -0
- package/dist/decorators/auth/DefaultLoginForm.d.ts +4 -0
- package/dist/index.cjs.js +15 -1
- package/dist/index.d.ts +6 -0
- package/dist/index.esm.js +15 -1
- package/dist/store/themeStore.d.ts +23 -0
- package/dist/types/Login.d.ts +8 -0
- package/package.json +3 -1
- package/src/api/ApiConfig.ts +63 -0
- package/src/api/AuthApi.ts +8 -0
- package/src/api/CrudApi.ts +96 -60
- package/src/components/dashboard/Dashboard.tsx +11 -0
- package/src/components/dashboard/DashboardGrid.tsx +14 -0
- package/src/components/dashboard/DashboardItem.tsx +9 -0
- package/src/components/dashboard/index.ts +3 -0
- package/src/decorators/auth/DefaultLoginForm.ts +32 -0
- package/src/index.ts +26 -0
- package/src/styles/base/_variables.scss +45 -0
- package/src/styles/components/button.scss +3 -3
- package/src/styles/components/checkbox.scss +6 -6
- package/src/styles/components/form-header.scss +21 -19
- package/src/styles/components/uploader.scss +15 -37
- package/src/styles/counter.scss +25 -33
- package/src/styles/dashboard.scss +9 -0
- package/src/styles/details.scss +6 -15
- package/src/styles/error-boundary.scss +75 -74
- package/src/styles/filter-popup.scss +29 -27
- package/src/styles/form.scss +16 -15
- package/src/styles/index.scss +8 -4
- package/src/styles/layout.scss +9 -8
- package/src/styles/list.scss +29 -27
- package/src/styles/loading-screen.scss +4 -4
- package/src/styles/login.scss +3 -3
- package/src/styles/pagination.scss +13 -13
- package/src/styles/sidebar.scss +24 -22
- package/src/styles/utils/scrollbar.scss +4 -3
- package/src/types/Login.ts +9 -0
- package/src/utils/logout.ts +2 -0
- package/dist/components/components/Checkbox.d.ts +0 -7
- package/dist/components/components/Counter.d.ts +0 -9
- package/dist/components/components/ErrorBoundary.d.ts +0 -16
- package/dist/components/components/ErrorComponent.d.ts +0 -4
- package/dist/components/components/FormField.d.ts +0 -17
- package/dist/components/components/ImageUploader.d.ts +0 -15
- package/dist/components/components/InnerForm.d.ts +0 -17
- package/dist/components/components/Label.d.ts +0 -9
- package/dist/components/components/LoadingScreen.d.ts +0 -2
- package/dist/components/components/Uploader.d.ts +0 -8
- package/dist/components/components/index.d.ts +0 -8
- package/dist/components/components/list/Datagrid.d.ts +0 -9
- package/dist/components/components/list/EmptyList.d.ts +0 -2
- package/dist/components/components/list/FilterPopup.d.ts +0 -11
- package/dist/components/components/list/ListPage.d.ts +0 -20
- package/dist/components/components/list/Pagination.d.ts +0 -11
- package/dist/components/components/list/index.d.ts +0 -0
- package/dist/components/pages/ControllerDetails.d.ts +0 -5
- package/dist/components/pages/FormPage.d.ts +0 -18
- package/dist/components/pages/ListPage.d.ts +0 -18
- package/dist/components/pages/Login.d.ts +0 -13
- package/dist/decorators/Crud.d.ts +0 -6
- package/dist/decorators/form/FormOptions.d.ts +0 -7
- package/dist/decorators/form/getFormFields.d.ts +0 -3
- package/dist/decorators/list/GetCellFields.d.ts +0 -2
- package/dist/decorators/list/ImageCell.d.ts +0 -6
- package/dist/decorators/list/ListData.d.ts +0 -6
- package/dist/decorators/list/getListFields.d.ts +0 -2
- package/dist/initPanel.d.ts +0 -2
- package/dist/types/Screen.d.ts +0 -4
- package/dist/types/ScreenCreatorData.d.ts +0 -13
- package/dist/types/getDetailsData.d.ts +0 -1
- package/dist/types/initPanelOptions.d.ts +0 -2
- package/dist/utils/createScreens.d.ts +0 -1
- package/dist/utils/getFields.d.ts +0 -3
package/src/styles/layout.scss
CHANGED
|
@@ -11,14 +11,15 @@
|
|
|
11
11
|
padding: 16px;
|
|
12
12
|
margin: 20px 0;
|
|
13
13
|
border-radius: 8px;
|
|
14
|
-
background-color:
|
|
15
|
-
|
|
16
|
-
|
|
14
|
+
background-color: var(--prp-bg-tertiary);
|
|
15
|
+
opacity: 0.3;
|
|
16
|
+
border-left: 4px solid var(--prp-color-error);
|
|
17
|
+
color: var(--prp-text-secondary);
|
|
17
18
|
align-items: flex-start;
|
|
18
19
|
|
|
19
20
|
.error-icon {
|
|
20
21
|
margin-right: 16px;
|
|
21
|
-
color:
|
|
22
|
+
color: var(--prp-color-error);
|
|
22
23
|
font-size: 24px;
|
|
23
24
|
display: flex;
|
|
24
25
|
align-items: center;
|
|
@@ -30,7 +31,7 @@
|
|
|
30
31
|
h3 {
|
|
31
32
|
margin: 0 0 8px;
|
|
32
33
|
font-size: 18px;
|
|
33
|
-
color:
|
|
34
|
+
color: var(--prp-color-error);
|
|
34
35
|
}
|
|
35
36
|
|
|
36
37
|
p {
|
|
@@ -42,16 +43,16 @@
|
|
|
42
43
|
|
|
43
44
|
// Additional error feedback styles
|
|
44
45
|
.field-error {
|
|
45
|
-
border-color:
|
|
46
|
+
border-color: var(--prp-color-error) !important;
|
|
46
47
|
|
|
47
48
|
&:focus {
|
|
48
|
-
box-shadow: 0 0 0 2px
|
|
49
|
+
box-shadow: 0 0 0 2px var(--prp-shadow-dark);
|
|
49
50
|
}
|
|
50
51
|
}
|
|
51
52
|
|
|
52
53
|
.error-message {
|
|
53
54
|
margin-top: 4px;
|
|
54
55
|
font-size: 14px;
|
|
55
|
-
color:
|
|
56
|
+
color: var(--prp-color-error);
|
|
56
57
|
}
|
|
57
58
|
}
|
package/src/styles/list.scss
CHANGED
|
@@ -4,8 +4,8 @@ $footer-height: 60px;
|
|
|
4
4
|
$datagrid-height: calc(100vh - #{$header-height} - #{$footer-height});
|
|
5
5
|
.list {
|
|
6
6
|
width: 100%;
|
|
7
|
-
background-color:
|
|
8
|
-
color:
|
|
7
|
+
background-color: var(--prp-bg-secondary);
|
|
8
|
+
color: var(--prp-text-muted);
|
|
9
9
|
max-height: 100vh;
|
|
10
10
|
height: 100vh;
|
|
11
11
|
min-height: 100vh;
|
|
@@ -17,14 +17,14 @@ $datagrid-height: calc(100vh - #{$header-height} - #{$footer-height});
|
|
|
17
17
|
align-items: center;
|
|
18
18
|
justify-content: space-between;
|
|
19
19
|
padding: 0 24px;
|
|
20
|
-
background: linear-gradient(90deg,
|
|
20
|
+
background: linear-gradient(90deg, var(--prp-bg-secondary) 0%, var(--prp-bg-tertiary) 100%);
|
|
21
21
|
border-bottom: 1px solid rgba(255, 255, 255, 0.1);
|
|
22
|
-
box-shadow: 0 2px 4px
|
|
22
|
+
box-shadow: 0 2px 4px var(--prp-shadow-medium);
|
|
23
23
|
|
|
24
24
|
.header-title {
|
|
25
25
|
font-size: 20px;
|
|
26
26
|
font-weight: 600;
|
|
27
|
-
color:
|
|
27
|
+
color: var(--prp-text-primary);
|
|
28
28
|
text-transform: uppercase;
|
|
29
29
|
letter-spacing: 0.5px;
|
|
30
30
|
}
|
|
@@ -36,8 +36,8 @@ $datagrid-height: calc(100vh - #{$header-height} - #{$footer-height});
|
|
|
36
36
|
|
|
37
37
|
.create-button {
|
|
38
38
|
padding: 8px 16px;
|
|
39
|
-
background-color:
|
|
40
|
-
color:
|
|
39
|
+
background-color: var(--prp-bg-button-success);
|
|
40
|
+
color: var(--prp-text-primary);
|
|
41
41
|
border-radius: 4px;
|
|
42
42
|
text-decoration: none;
|
|
43
43
|
font-size: 14px;
|
|
@@ -45,7 +45,8 @@ $datagrid-height: calc(100vh - #{$header-height} - #{$footer-height});
|
|
|
45
45
|
transition: background-color 0.2s ease;
|
|
46
46
|
|
|
47
47
|
&:hover {
|
|
48
|
-
background-color:
|
|
48
|
+
background-color: var(--prp-bg-button-success);
|
|
49
|
+
opacity: 0.9;
|
|
49
50
|
}
|
|
50
51
|
.icon-create {
|
|
51
52
|
fill: currentColor;
|
|
@@ -95,22 +96,22 @@ $datagrid-height: calc(100vh - #{$header-height} - #{$footer-height});
|
|
|
95
96
|
td {
|
|
96
97
|
padding: 12px 16px;
|
|
97
98
|
text-align: left;
|
|
98
|
-
border-bottom: 1px solid
|
|
99
|
+
border-bottom: 1px solid var(--prp-border-primary);
|
|
99
100
|
text-overflow: ellipsis;
|
|
100
101
|
white-space: nowrap;
|
|
101
102
|
}
|
|
102
103
|
|
|
103
104
|
th {
|
|
104
|
-
color:
|
|
105
|
-
background-color:
|
|
105
|
+
color: var(--prp-text-primary);
|
|
106
|
+
background-color: var(--prp-bg-tertiary);
|
|
106
107
|
}
|
|
107
108
|
|
|
108
109
|
tr:nth-child(even) {
|
|
109
|
-
background-color:
|
|
110
|
+
background-color: var(--prp-bg-secondary);
|
|
110
111
|
}
|
|
111
112
|
|
|
112
113
|
tr:hover {
|
|
113
|
-
background-color:
|
|
114
|
+
background-color: var(--prp-bg-tertiary);
|
|
114
115
|
}
|
|
115
116
|
}
|
|
116
117
|
|
|
@@ -124,23 +125,23 @@ $datagrid-height: calc(100vh - #{$header-height} - #{$footer-height});
|
|
|
124
125
|
|
|
125
126
|
.empty-list-content {
|
|
126
127
|
text-align: center;
|
|
127
|
-
color:
|
|
128
|
+
color: var(--prp-text-muted);
|
|
128
129
|
|
|
129
130
|
svg {
|
|
130
131
|
margin-bottom: 1rem;
|
|
131
|
-
color:
|
|
132
|
+
color: var(--prp-text-muted);
|
|
132
133
|
}
|
|
133
134
|
|
|
134
135
|
h3 {
|
|
135
136
|
font-size: 1.5rem;
|
|
136
137
|
margin-bottom: 0.5rem;
|
|
137
138
|
font-weight: 500;
|
|
138
|
-
color:
|
|
139
|
+
color: var(--prp-text-primary);
|
|
139
140
|
}
|
|
140
141
|
|
|
141
142
|
p {
|
|
142
143
|
font-size: 1rem;
|
|
143
|
-
color:
|
|
144
|
+
color: var(--prp-text-muted);
|
|
144
145
|
}
|
|
145
146
|
}
|
|
146
147
|
}
|
|
@@ -150,14 +151,14 @@ $datagrid-height: calc(100vh - #{$header-height} - #{$footer-height});
|
|
|
150
151
|
display: flex;
|
|
151
152
|
align-items: center;
|
|
152
153
|
gap: 8px;
|
|
153
|
-
color:
|
|
154
|
+
color: var(--prp-text-muted);
|
|
154
155
|
text-decoration: none;
|
|
155
156
|
transition: color 0.2s ease;
|
|
156
157
|
&.util-cell-link-remove {
|
|
157
158
|
cursor: pointer;
|
|
158
159
|
}
|
|
159
160
|
&:hover {
|
|
160
|
-
color:
|
|
161
|
+
color: var(--prp-text-muted);
|
|
161
162
|
}
|
|
162
163
|
|
|
163
164
|
.icon {
|
|
@@ -165,7 +166,7 @@ $datagrid-height: calc(100vh - #{$header-height} - #{$footer-height});
|
|
|
165
166
|
height: 16px;
|
|
166
167
|
stroke: none;
|
|
167
168
|
&.icon-trash {
|
|
168
|
-
fill:
|
|
169
|
+
fill: var(--prp-color-error);
|
|
169
170
|
stroke: none;
|
|
170
171
|
}
|
|
171
172
|
&.icon-down {
|
|
@@ -181,8 +182,8 @@ $datagrid-height: calc(100vh - #{$header-height} - #{$footer-height});
|
|
|
181
182
|
}
|
|
182
183
|
|
|
183
184
|
.filter-button {
|
|
184
|
-
background-color:
|
|
185
|
-
color:
|
|
185
|
+
background-color: var(--prp-bg-button-success);
|
|
186
|
+
color: var(--text-primary);
|
|
186
187
|
border: none;
|
|
187
188
|
padding: 8px 16px;
|
|
188
189
|
border-radius: 4px;
|
|
@@ -190,7 +191,8 @@ $datagrid-height: calc(100vh - #{$header-height} - #{$footer-height});
|
|
|
190
191
|
transition: background-color 0.2s ease;
|
|
191
192
|
|
|
192
193
|
&:hover {
|
|
193
|
-
background-color:
|
|
194
|
+
background-color: var(--prp-bg-button-success);
|
|
195
|
+
opacity: 0.9;
|
|
194
196
|
}
|
|
195
197
|
.icon-filter {
|
|
196
198
|
position: relative;
|
|
@@ -215,7 +217,7 @@ $datagrid-height: calc(100vh - #{$header-height} - #{$footer-height});
|
|
|
215
217
|
gap: 16px;
|
|
216
218
|
a {
|
|
217
219
|
padding: 8px 16px;
|
|
218
|
-
background-color:
|
|
220
|
+
background-color: var(--prp-bg-button-success);
|
|
219
221
|
color: white;
|
|
220
222
|
border-radius: 4px;
|
|
221
223
|
text-decoration: none;
|
|
@@ -251,8 +253,8 @@ $datagrid-height: calc(100vh - #{$header-height} - #{$footer-height});
|
|
|
251
253
|
list-style: none;
|
|
252
254
|
margin: 0;
|
|
253
255
|
padding: 0;
|
|
254
|
-
background-color:
|
|
255
|
-
border: 1px solid
|
|
256
|
+
background-color: var(--prp-bg-secondary);
|
|
257
|
+
border: 1px solid var(--prp-border-primary);
|
|
256
258
|
border-radius: 4px;
|
|
257
259
|
z-index: 1000;
|
|
258
260
|
> li {
|
|
@@ -262,7 +264,7 @@ $datagrid-height: calc(100vh - #{$header-height} - #{$footer-height});
|
|
|
262
264
|
border-bottom: 1px solid #444444;
|
|
263
265
|
cursor: pointer;
|
|
264
266
|
&:hover {
|
|
265
|
-
background-color:
|
|
267
|
+
background-color: var(--prp-bg-tertiary);
|
|
266
268
|
}
|
|
267
269
|
&:last-child {
|
|
268
270
|
border-bottom: none;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
.loading-screen {
|
|
2
2
|
width: 100%;
|
|
3
3
|
height: 100%;
|
|
4
|
-
background-color:
|
|
4
|
+
background-color: var(--prp-bg-primary);
|
|
5
5
|
display: flex;
|
|
6
6
|
justify-content: center;
|
|
7
7
|
align-items: center;
|
|
@@ -17,14 +17,14 @@
|
|
|
17
17
|
.loading-spinner {
|
|
18
18
|
width: 50px;
|
|
19
19
|
height: 50px;
|
|
20
|
-
border: 3px solid
|
|
21
|
-
border-top: 3px solid
|
|
20
|
+
border: 3px solid var(--prp-bg-secondary);
|
|
21
|
+
border-top: 3px solid var(--prp-bg-button-primary);
|
|
22
22
|
border-radius: 50%;
|
|
23
23
|
animation: spin 1s linear infinite;
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
.loading-text {
|
|
27
|
-
color:
|
|
27
|
+
color: var(--prp-text-primary);
|
|
28
28
|
font-size: 1.2rem;
|
|
29
29
|
font-weight: 500;
|
|
30
30
|
letter-spacing: 1px;
|
package/src/styles/login.scss
CHANGED
|
@@ -5,11 +5,11 @@
|
|
|
5
5
|
min-height: 100vh;
|
|
6
6
|
max-width: 100vw;
|
|
7
7
|
max-height: 100vh;
|
|
8
|
-
background: linear-gradient(135deg,
|
|
8
|
+
background: linear-gradient(135deg, var(--prp-bg-primary) 0%, var(--prp-bg-secondary) 100%);
|
|
9
9
|
padding: 0;
|
|
10
|
-
|
|
10
|
+
form {
|
|
11
11
|
width: 400px;
|
|
12
|
-
background:
|
|
12
|
+
background: var(--prp-bg-primary);
|
|
13
13
|
border-radius: 8px;
|
|
14
14
|
padding: 40px;
|
|
15
15
|
}
|
|
@@ -14,34 +14,34 @@ $footer-height2: 60px;
|
|
|
14
14
|
display: flex;
|
|
15
15
|
align-items: center;
|
|
16
16
|
justify-content: center;
|
|
17
|
-
border: 1px solid var(--border-
|
|
17
|
+
border: 1px solid var(--prp-border-light);
|
|
18
18
|
border-radius: 8px;
|
|
19
19
|
text-decoration: none;
|
|
20
|
-
color: var(--text-
|
|
21
|
-
background-color: var(--bg-
|
|
20
|
+
color: var(--prp-text-muted);
|
|
21
|
+
background-color: var(--prp-bg-white);
|
|
22
22
|
font-weight: 500;
|
|
23
23
|
font-size: 14px;
|
|
24
24
|
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
|
25
|
-
box-shadow: 0 1px 2px
|
|
25
|
+
box-shadow: 0 1px 2px var(--prp-shadow-light);
|
|
26
26
|
cursor: pointer;
|
|
27
27
|
|
|
28
28
|
&:hover:not(.disabled) {
|
|
29
|
-
background-color: var(--
|
|
29
|
+
background-color: var(--prp-bg-tertiary);
|
|
30
30
|
transform: translateY(-1px);
|
|
31
|
-
box-shadow: 0 4px 6px
|
|
32
|
-
border-color: var(--primary
|
|
31
|
+
box-shadow: 0 4px 6px var(--prp-shadow-medium);
|
|
32
|
+
border-color: var(--prp-bg-button-primary);
|
|
33
33
|
}
|
|
34
34
|
|
|
35
35
|
&.active {
|
|
36
|
-
background-color: var(--primary
|
|
37
|
-
color: var(--
|
|
38
|
-
border-color: var(--primary
|
|
39
|
-
box-shadow: 0 4px 6px
|
|
36
|
+
background-color: var(--prp-bg-button-primary);
|
|
37
|
+
color: var(--prp-text-primary);
|
|
38
|
+
border-color: var(--prp-bg-button-primary);
|
|
39
|
+
box-shadow: 0 4px 6px var(--prp-shadow-focus);
|
|
40
40
|
font-weight: 600;
|
|
41
41
|
|
|
42
42
|
&:hover {
|
|
43
43
|
transform: translateY(-1px);
|
|
44
|
-
box-shadow: 0 6px 8px
|
|
44
|
+
box-shadow: 0 6px 8px var(--prp-shadow-focus);
|
|
45
45
|
}
|
|
46
46
|
}
|
|
47
47
|
|
|
@@ -49,7 +49,7 @@ $footer-height2: 60px;
|
|
|
49
49
|
opacity: 0.5;
|
|
50
50
|
cursor: not-allowed;
|
|
51
51
|
pointer-events: none;
|
|
52
|
-
background-color: var(--
|
|
52
|
+
background-color: var(--prp-bg-secondary);
|
|
53
53
|
}
|
|
54
54
|
}
|
|
55
55
|
}
|
package/src/styles/sidebar.scss
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
.sidebar {
|
|
2
2
|
position: relative;
|
|
3
|
-
background-color:
|
|
3
|
+
background-color: var(--prp-bg-tertiary);
|
|
4
4
|
height: 100vh;
|
|
5
5
|
transition: width 0.3s ease;
|
|
6
|
-
border-right: 1px solid
|
|
6
|
+
border-right: 1px solid var(--prp-border-primary);
|
|
7
7
|
&.open {
|
|
8
8
|
width: 250px;
|
|
9
9
|
}
|
|
@@ -14,14 +14,12 @@
|
|
|
14
14
|
.nav-links a.active {
|
|
15
15
|
border-radius: 0;
|
|
16
16
|
&::before {
|
|
17
|
-
|
|
18
|
-
background-color: #9b1a1a;
|
|
17
|
+
background-color: var(--prp-bg-button-primary);
|
|
19
18
|
}
|
|
20
|
-
|
|
21
19
|
}
|
|
22
20
|
.nav-links a:hover {
|
|
23
|
-
|
|
24
|
-
|
|
21
|
+
transform: none !important;
|
|
22
|
+
}
|
|
25
23
|
}
|
|
26
24
|
|
|
27
25
|
.toggle-button {
|
|
@@ -31,8 +29,8 @@
|
|
|
31
29
|
width: 24px;
|
|
32
30
|
height: 24px;
|
|
33
31
|
border-radius: 50%;
|
|
34
|
-
background-color:
|
|
35
|
-
border: 1px solid
|
|
32
|
+
background-color: var(--prp-bg-tertiary);
|
|
33
|
+
border: 1px solid var(--prp-border-primary);
|
|
36
34
|
display: flex;
|
|
37
35
|
align-items: center;
|
|
38
36
|
justify-content: center;
|
|
@@ -40,7 +38,8 @@
|
|
|
40
38
|
z-index: 10;
|
|
41
39
|
|
|
42
40
|
&:hover {
|
|
43
|
-
background-color:
|
|
41
|
+
background-color: var(--prp-bg-tertiary);
|
|
42
|
+
opacity: 0.9;
|
|
44
43
|
}
|
|
45
44
|
}
|
|
46
45
|
|
|
@@ -55,7 +54,7 @@
|
|
|
55
54
|
padding: 0.75rem 0;
|
|
56
55
|
white-space: nowrap;
|
|
57
56
|
margin-bottom: 0.5rem;
|
|
58
|
-
color:
|
|
57
|
+
color: var(--prp-text-muted);
|
|
59
58
|
text-decoration: none;
|
|
60
59
|
border-radius: 4px;
|
|
61
60
|
font-weight: 500;
|
|
@@ -64,13 +63,15 @@
|
|
|
64
63
|
overflow: hidden;
|
|
65
64
|
|
|
66
65
|
&:hover {
|
|
67
|
-
background-color:
|
|
66
|
+
background-color: var(--prp-bg-tertiary);
|
|
67
|
+
opacity: 0.8;
|
|
68
68
|
transform: translateX(2px);
|
|
69
69
|
}
|
|
70
70
|
|
|
71
71
|
&.active {
|
|
72
|
-
background-color:
|
|
73
|
-
|
|
72
|
+
background-color: var(--prp-bg-tertiary);
|
|
73
|
+
opacity: 0.9;
|
|
74
|
+
color: var(--prp-text-primary);
|
|
74
75
|
font-weight: 600;
|
|
75
76
|
|
|
76
77
|
&::before {
|
|
@@ -80,7 +81,7 @@
|
|
|
80
81
|
top: 0;
|
|
81
82
|
height: 100%;
|
|
82
83
|
width: 4px;
|
|
83
|
-
background-color:
|
|
84
|
+
background-color: var(--prp-bg-white);
|
|
84
85
|
}
|
|
85
86
|
}
|
|
86
87
|
|
|
@@ -95,19 +96,19 @@
|
|
|
95
96
|
margin-top: auto;
|
|
96
97
|
|
|
97
98
|
a {
|
|
98
|
-
color:
|
|
99
|
+
color: var(--prp-text-secondary);
|
|
99
100
|
font-weight: 400;
|
|
100
101
|
}
|
|
101
102
|
}
|
|
102
103
|
}
|
|
103
|
-
|
|
104
|
+
|
|
104
105
|
.sidebar-footer {
|
|
105
106
|
position: absolute;
|
|
106
107
|
bottom: 0;
|
|
107
108
|
width: 100%;
|
|
108
109
|
padding: 1rem 0;
|
|
109
110
|
border-top: 1px solid #454d55;
|
|
110
|
-
|
|
111
|
+
|
|
111
112
|
.logout-button {
|
|
112
113
|
display: flex;
|
|
113
114
|
align-items: center;
|
|
@@ -119,12 +120,13 @@
|
|
|
119
120
|
cursor: pointer;
|
|
120
121
|
font-weight: 500;
|
|
121
122
|
transition: all 0.2s ease;
|
|
122
|
-
|
|
123
|
+
|
|
123
124
|
&:hover {
|
|
124
|
-
color:
|
|
125
|
-
background-color:
|
|
125
|
+
color: var(--prp-text-primary);
|
|
126
|
+
background-color: var(--prp-bg-tertiary);
|
|
127
|
+
opacity: 0.8;
|
|
126
128
|
}
|
|
127
|
-
|
|
129
|
+
|
|
128
130
|
.nav-links-icon {
|
|
129
131
|
display: inline-block;
|
|
130
132
|
width: 60px;
|
|
@@ -5,15 +5,16 @@
|
|
|
5
5
|
}
|
|
6
6
|
|
|
7
7
|
&::-webkit-scrollbar-track {
|
|
8
|
-
background:
|
|
8
|
+
background: var(--prp-bg-secondary);
|
|
9
9
|
}
|
|
10
10
|
|
|
11
11
|
&::-webkit-scrollbar-thumb {
|
|
12
|
-
background:
|
|
12
|
+
background: var(--prp-bg-tertiary);
|
|
13
13
|
border-radius: 4px;
|
|
14
14
|
|
|
15
15
|
&:hover {
|
|
16
|
-
background:
|
|
16
|
+
background: var(--prp-bg-tertiary);
|
|
17
|
+
opacity: 0.9;
|
|
17
18
|
}
|
|
18
19
|
}
|
|
19
20
|
}
|
package/src/utils/logout.ts
CHANGED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { InputOptions } from '../../decorators/form/Input';
|
|
3
|
-
interface CheckboxProps extends React.InputHTMLAttributes<HTMLInputElement> {
|
|
4
|
-
input: InputOptions;
|
|
5
|
-
}
|
|
6
|
-
export declare function Checkbox({ input, ...props }: CheckboxProps): React.JSX.Element;
|
|
7
|
-
export {};
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
interface CounterProps {
|
|
3
|
-
image: React.ReactNode;
|
|
4
|
-
text: string;
|
|
5
|
-
targetNumber: number;
|
|
6
|
-
duration?: number;
|
|
7
|
-
}
|
|
8
|
-
export declare function Counter({ image, text, targetNumber, duration }: CounterProps): React.JSX.Element;
|
|
9
|
-
export {};
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import React, { Component, ErrorInfo, ReactNode } from "react";
|
|
2
|
-
interface Props {
|
|
3
|
-
children: ReactNode;
|
|
4
|
-
}
|
|
5
|
-
interface State {
|
|
6
|
-
hasError: boolean;
|
|
7
|
-
error: Error | null;
|
|
8
|
-
errorInfo: ErrorInfo | null;
|
|
9
|
-
}
|
|
10
|
-
export declare class ErrorBoundary extends Component<Props, State> {
|
|
11
|
-
state: State;
|
|
12
|
-
static getDerivedStateFromError(error: Error): State;
|
|
13
|
-
componentDidCatch(error: Error, errorInfo: ErrorInfo): void;
|
|
14
|
-
render(): string | number | bigint | boolean | Iterable<React.ReactNode> | Promise<string | number | bigint | boolean | React.ReactPortal | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | null | undefined> | React.JSX.Element | null | undefined;
|
|
15
|
-
}
|
|
16
|
-
export {};
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { InputOptions } from '../../decorators/form/Input';
|
|
3
|
-
import { UseFormRegister } from 'react-hook-form';
|
|
4
|
-
interface FormFieldProps {
|
|
5
|
-
input: InputOptions;
|
|
6
|
-
register: UseFormRegister<any>;
|
|
7
|
-
error?: {
|
|
8
|
-
message?: string;
|
|
9
|
-
};
|
|
10
|
-
baseName?: string;
|
|
11
|
-
onSelectPreloader?: (inputOptions: InputOptions) => Promise<{
|
|
12
|
-
label: string;
|
|
13
|
-
value: string;
|
|
14
|
-
}[]>;
|
|
15
|
-
}
|
|
16
|
-
export declare function FormField({ input, register, error, baseName, onSelectPreloader }: FormFieldProps): React.JSX.Element;
|
|
17
|
-
export {};
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
interface MultipleImageUploaderProps {
|
|
3
|
-
value?: Array<{
|
|
4
|
-
file: File;
|
|
5
|
-
image: string;
|
|
6
|
-
remove?: boolean;
|
|
7
|
-
}>;
|
|
8
|
-
onError?: (error: string | null) => void;
|
|
9
|
-
onClear?: () => void;
|
|
10
|
-
reset?: any;
|
|
11
|
-
onFilesChange?: (files: File[]) => void;
|
|
12
|
-
}
|
|
13
|
-
export declare function ImageUploader(): React.JSX.Element;
|
|
14
|
-
export declare function MultipleImageUploader(props: MultipleImageUploaderProps): React.JSX.Element;
|
|
15
|
-
export {};
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { InputOptions } from '../../decorators/form/Input';
|
|
3
|
-
import { FormOptions } from '../../decorators/form/FormOptions';
|
|
4
|
-
import { OnSubmitFN, GetDetailsDataFN } from '../pages/FormPage';
|
|
5
|
-
interface InnerFormProps<T> {
|
|
6
|
-
formOptions: FormOptions;
|
|
7
|
-
onSubmit: OnSubmitFN<T>;
|
|
8
|
-
getDetailsData?: GetDetailsDataFN<T>;
|
|
9
|
-
redirectBackOnSuccess?: boolean;
|
|
10
|
-
onSelectPreloader?: (inputOptions: InputOptions) => Promise<{
|
|
11
|
-
label: string;
|
|
12
|
-
value: string;
|
|
13
|
-
}[]>;
|
|
14
|
-
type?: 'json' | 'formData';
|
|
15
|
-
}
|
|
16
|
-
export declare function InnerForm<T>({ formOptions, onSubmit, getDetailsData, redirectBackOnSuccess, onSelectPreloader, type, }: InnerFormProps<T>): React.JSX.Element;
|
|
17
|
-
export {};
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
interface LabelProps extends React.LabelHTMLAttributes<HTMLLabelElement> {
|
|
3
|
-
htmlFor: string;
|
|
4
|
-
label?: string;
|
|
5
|
-
fieldName: string;
|
|
6
|
-
children?: React.ReactNode;
|
|
7
|
-
}
|
|
8
|
-
export declare function Label({ label, fieldName, children, ...props }: LabelProps): React.JSX.Element;
|
|
9
|
-
export {};
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { InputOptions } from '../../decorators/form/Input';
|
|
3
|
-
interface UploaderProps {
|
|
4
|
-
input: InputOptions;
|
|
5
|
-
maxLength?: number;
|
|
6
|
-
}
|
|
7
|
-
export declare function Uploader({ input, maxLength }: UploaderProps): React.JSX.Element;
|
|
8
|
-
export {};
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
export { InnerForm } from './InnerForm';
|
|
2
|
-
export { FormField } from './FormField';
|
|
3
|
-
export { LoadingScreen } from './LoadingScreen';
|
|
4
|
-
export { Counter } from './Counter';
|
|
5
|
-
export { Uploader } from './Uploader';
|
|
6
|
-
export { ErrorComponent } from './ErrorComponent';
|
|
7
|
-
export { Label } from './Label';
|
|
8
|
-
export { ErrorBoundary } from './ErrorBoundary';
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { ListData } from '../../../decorators/list/ListData';
|
|
3
|
-
interface DatagridProps<T> {
|
|
4
|
-
data: T[];
|
|
5
|
-
listData: ListData<T>;
|
|
6
|
-
onRemoveItem?: (item: T) => Promise<void>;
|
|
7
|
-
}
|
|
8
|
-
export declare function Datagrid<T>({ data, listData, onRemoveItem }: DatagridProps<T>): React.JSX.Element;
|
|
9
|
-
export {};
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { ListData } from '../../../decorators/list/ListData';
|
|
3
|
-
interface FilterPopupProps<T> {
|
|
4
|
-
isOpen: boolean;
|
|
5
|
-
onClose: () => void;
|
|
6
|
-
onApplyFilters: (filters: Record<string, string>) => void;
|
|
7
|
-
listData: ListData<T>;
|
|
8
|
-
activeFilters?: Record<string, string>;
|
|
9
|
-
}
|
|
10
|
-
export declare function FilterPopup<T>({ isOpen, onClose, onApplyFilters, listData, activeFilters, }: FilterPopupProps<T>): React.ReactElement | null;
|
|
11
|
-
export {};
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { AnyClass } from '../../../types/AnyClass';
|
|
3
|
-
export interface GetDataParams {
|
|
4
|
-
page?: number;
|
|
5
|
-
limit?: number;
|
|
6
|
-
filters?: Record<string, any>;
|
|
7
|
-
}
|
|
8
|
-
export interface PaginatedResponse<T> {
|
|
9
|
-
data: T[];
|
|
10
|
-
total: number;
|
|
11
|
-
page: number;
|
|
12
|
-
limit: number;
|
|
13
|
-
}
|
|
14
|
-
export type GetDataForList<T> = (params: GetDataParams) => Promise<PaginatedResponse<T>>;
|
|
15
|
-
export declare function ListPage<T extends AnyClass>({ model, getData, onRemoveItem, customHeader, }: {
|
|
16
|
-
model: any;
|
|
17
|
-
getData: GetDataForList<T>;
|
|
18
|
-
customHeader?: React.ReactNode;
|
|
19
|
-
onRemoveItem?: (item: T) => Promise<void>;
|
|
20
|
-
}): React.JSX.Element;
|