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.
Files changed (90) hide show
  1. package/.cursor/rules.md +11 -1
  2. package/AUTH_LAYOUT_EXAMPLE.md +343 -0
  3. package/AUTH_LAYOUT_GUIDE.md +819 -0
  4. package/COLOR_SYSTEM_GUIDE.md +296 -0
  5. package/DASHBOARD_GUIDE.md +531 -0
  6. package/IMPLEMENTATION_GUIDE.md +899 -0
  7. package/README.md +18 -1
  8. package/dist/api/ApiConfig.d.ts +11 -0
  9. package/dist/api/AuthApi.d.ts +2 -5
  10. package/dist/api/CrudApi.d.ts +11 -12
  11. package/dist/components/DashboardContainer.d.ts +7 -0
  12. package/dist/components/DashboardGrid.d.ts +9 -0
  13. package/dist/components/DashboardItem.d.ts +10 -0
  14. package/dist/components/ThemeSwitcher.d.ts +7 -0
  15. package/dist/components/dashboard/Dashboard.d.ts +7 -0
  16. package/dist/components/dashboard/DashboardGrid.d.ts +7 -0
  17. package/dist/components/dashboard/DashboardItem.d.ts +6 -0
  18. package/dist/components/dashboard/index.d.ts +3 -0
  19. package/dist/decorators/auth/DefaultLoginForm.d.ts +4 -0
  20. package/dist/index.cjs.js +15 -1
  21. package/dist/index.d.ts +6 -0
  22. package/dist/index.esm.js +15 -1
  23. package/dist/store/themeStore.d.ts +23 -0
  24. package/dist/types/Login.d.ts +8 -0
  25. package/package.json +3 -1
  26. package/src/api/ApiConfig.ts +63 -0
  27. package/src/api/AuthApi.ts +8 -0
  28. package/src/api/CrudApi.ts +96 -60
  29. package/src/components/dashboard/Dashboard.tsx +11 -0
  30. package/src/components/dashboard/DashboardGrid.tsx +14 -0
  31. package/src/components/dashboard/DashboardItem.tsx +9 -0
  32. package/src/components/dashboard/index.ts +3 -0
  33. package/src/decorators/auth/DefaultLoginForm.ts +32 -0
  34. package/src/index.ts +26 -0
  35. package/src/styles/base/_variables.scss +45 -0
  36. package/src/styles/components/button.scss +3 -3
  37. package/src/styles/components/checkbox.scss +6 -6
  38. package/src/styles/components/form-header.scss +21 -19
  39. package/src/styles/components/uploader.scss +15 -37
  40. package/src/styles/counter.scss +25 -33
  41. package/src/styles/dashboard.scss +9 -0
  42. package/src/styles/details.scss +6 -15
  43. package/src/styles/error-boundary.scss +75 -74
  44. package/src/styles/filter-popup.scss +29 -27
  45. package/src/styles/form.scss +16 -15
  46. package/src/styles/index.scss +8 -4
  47. package/src/styles/layout.scss +9 -8
  48. package/src/styles/list.scss +29 -27
  49. package/src/styles/loading-screen.scss +4 -4
  50. package/src/styles/login.scss +3 -3
  51. package/src/styles/pagination.scss +13 -13
  52. package/src/styles/sidebar.scss +24 -22
  53. package/src/styles/utils/scrollbar.scss +4 -3
  54. package/src/types/Login.ts +9 -0
  55. package/src/utils/logout.ts +2 -0
  56. package/dist/components/components/Checkbox.d.ts +0 -7
  57. package/dist/components/components/Counter.d.ts +0 -9
  58. package/dist/components/components/ErrorBoundary.d.ts +0 -16
  59. package/dist/components/components/ErrorComponent.d.ts +0 -4
  60. package/dist/components/components/FormField.d.ts +0 -17
  61. package/dist/components/components/ImageUploader.d.ts +0 -15
  62. package/dist/components/components/InnerForm.d.ts +0 -17
  63. package/dist/components/components/Label.d.ts +0 -9
  64. package/dist/components/components/LoadingScreen.d.ts +0 -2
  65. package/dist/components/components/Uploader.d.ts +0 -8
  66. package/dist/components/components/index.d.ts +0 -8
  67. package/dist/components/components/list/Datagrid.d.ts +0 -9
  68. package/dist/components/components/list/EmptyList.d.ts +0 -2
  69. package/dist/components/components/list/FilterPopup.d.ts +0 -11
  70. package/dist/components/components/list/ListPage.d.ts +0 -20
  71. package/dist/components/components/list/Pagination.d.ts +0 -11
  72. package/dist/components/components/list/index.d.ts +0 -0
  73. package/dist/components/pages/ControllerDetails.d.ts +0 -5
  74. package/dist/components/pages/FormPage.d.ts +0 -18
  75. package/dist/components/pages/ListPage.d.ts +0 -18
  76. package/dist/components/pages/Login.d.ts +0 -13
  77. package/dist/decorators/Crud.d.ts +0 -6
  78. package/dist/decorators/form/FormOptions.d.ts +0 -7
  79. package/dist/decorators/form/getFormFields.d.ts +0 -3
  80. package/dist/decorators/list/GetCellFields.d.ts +0 -2
  81. package/dist/decorators/list/ImageCell.d.ts +0 -6
  82. package/dist/decorators/list/ListData.d.ts +0 -6
  83. package/dist/decorators/list/getListFields.d.ts +0 -2
  84. package/dist/initPanel.d.ts +0 -2
  85. package/dist/types/Screen.d.ts +0 -4
  86. package/dist/types/ScreenCreatorData.d.ts +0 -13
  87. package/dist/types/getDetailsData.d.ts +0 -1
  88. package/dist/types/initPanelOptions.d.ts +0 -2
  89. package/dist/utils/createScreens.d.ts +0 -1
  90. package/dist/utils/getFields.d.ts +0 -3
@@ -11,14 +11,15 @@
11
11
  padding: 16px;
12
12
  margin: 20px 0;
13
13
  border-radius: 8px;
14
- background-color: rgba(255, 77, 79, 0.1);
15
- border-left: 4px solid #ff4d4f;
16
- color: #f2f2f2;
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: #ff4d4f;
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: #ff4d4f;
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: #ff4d4f !important;
46
+ border-color: var(--prp-color-error) !important;
46
47
 
47
48
  &:focus {
48
- box-shadow: 0 0 0 2px rgba(255, 77, 79, 0.2);
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: #ff4d4f;
56
+ color: var(--prp-color-error);
56
57
  }
57
58
  }
@@ -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: #2b2b2b;
8
- color: #e0e0e0;
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, #2b2b2b 0%, #3c3c3c 100%);
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 rgba(0, 0, 0, 0.2);
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: #ffffff;
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: #4caf50;
40
- color: white;
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: #45a049;
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 #444444;
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: #ffffff;
105
- background-color: #3c3c3c;
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: #353535;
110
+ background-color: var(--prp-bg-secondary);
110
111
  }
111
112
 
112
113
  tr:hover {
113
- background-color: #444444;
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: #888;
128
+ color: var(--prp-text-muted);
128
129
 
129
130
  svg {
130
131
  margin-bottom: 1rem;
131
- color: #666;
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: #fff;
139
+ color: var(--prp-text-primary);
139
140
  }
140
141
 
141
142
  p {
142
143
  font-size: 1rem;
143
- color: #888;
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: #666;
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: #333;
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: #ff0000;
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: #4caf50;
185
- color: white;
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: #45a049;
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: #4caf50;
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: #2b2b2b;
255
- border: 1px solid #444444;
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: #444444;
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: #1a1a1a;
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 #2a2a2a;
21
- border-top: 3px solid #3498db;
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: #ffffff;
27
+ color: var(--prp-text-primary);
28
28
  font-size: 1.2rem;
29
29
  font-weight: 500;
30
30
  letter-spacing: 1px;
@@ -5,11 +5,11 @@
5
5
  min-height: 100vh;
6
6
  max-width: 100vw;
7
7
  max-height: 100vh;
8
- background: linear-gradient(135deg, #1a1a1a 0%, #2d3436 100%);
8
+ background: linear-gradient(135deg, var(--prp-bg-primary) 0%, var(--prp-bg-secondary) 100%);
9
9
  padding: 0;
10
- form {
10
+ form {
11
11
  width: 400px;
12
- background: #1a1a1a;
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-color, #e2e8f0);
17
+ border: 1px solid var(--prp-border-light);
18
18
  border-radius: 8px;
19
19
  text-decoration: none;
20
- color: var(--text-color, #2d3748);
21
- background-color: var(--bg-color, #ffffff);
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 rgba(0, 0, 0, 0.05);
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(--hover-bg-color, #f7fafc);
29
+ background-color: var(--prp-bg-tertiary);
30
30
  transform: translateY(-1px);
31
- box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
32
- border-color: var(--primary-color, #007bff);
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-color, #007bff);
37
- color: var(--active-text-color, white);
38
- border-color: var(--primary-color, #007bff);
39
- box-shadow: 0 4px 6px rgba(0, 123, 255, 0.2);
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 rgba(0, 123, 255, 0.3);
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(--disabled-bg-color, #f1f5f9);
52
+ background-color: var(--prp-bg-secondary);
53
53
  }
54
54
  }
55
55
  }
@@ -1,9 +1,9 @@
1
1
  .sidebar {
2
2
  position: relative;
3
- background-color: #343a40;
3
+ background-color: var(--prp-bg-tertiary);
4
4
  height: 100vh;
5
5
  transition: width 0.3s ease;
6
- border-right: 1px solid #454d55;
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
- transform: none !important;
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: #495057;
35
- border: 1px solid #6c757d;
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: #6c757d;
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: #e9ecef;
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: rgba(233, 236, 239, 0.1);
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: rgba(233, 236, 239, 0.2);
73
- color: #fff;
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: #fff;
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: #adb5bd;
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: #fff;
125
- background-color: rgba(233, 236, 239, 0.1);
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: #2b2b2b;
8
+ background: var(--prp-bg-secondary);
9
9
  }
10
10
 
11
11
  &::-webkit-scrollbar-thumb {
12
- background: #666666;
12
+ background: var(--prp-bg-tertiary);
13
13
  border-radius: 4px;
14
14
 
15
15
  &:hover {
16
- background: #777777;
16
+ background: var(--prp-bg-tertiary);
17
+ opacity: 0.9;
17
18
  }
18
19
  }
19
20
  }
@@ -0,0 +1,9 @@
1
+ export interface LoginResponse<T> {
2
+ access_token: string;
3
+ admin: T;
4
+ }
5
+
6
+ export interface LoginForm {
7
+ username: string;
8
+ password: string;
9
+ }
@@ -1,6 +1,8 @@
1
+ import { setAuthLogout } from '../api/ApiConfig';
1
2
  import { useAppStore } from '../store/store';
2
3
 
3
4
  export function logout(navigate: () => void) {
5
+ setAuthLogout();
4
6
  localStorage.removeItem('token');
5
7
  useAppStore.getState().logout();
6
8
  navigate();
@@ -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,4 +0,0 @@
1
- import React from "react";
2
- export declare function ErrorComponent({ error }: {
3
- error: unknown | Response;
4
- }): React.JSX.Element;
@@ -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,2 +0,0 @@
1
- import React from 'react';
2
- export declare function LoadingScreen(): React.JSX.Element;
@@ -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,2 +0,0 @@
1
- import React from 'react';
2
- export declare const EmptyList: React.FC;
@@ -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;