inventrack 3.0.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/README.md +25 -0
- package/api/index.js +13 -0
- package/backend/README.md +35 -0
- package/backend/data/db.json +1239 -0
- package/backend/package-lock.json +532 -0
- package/backend/package.json +8 -0
- package/frontend/README.md +22 -0
- package/frontend/assets/Icon.png +0 -0
- package/frontend/assets/IconSort.png +0 -0
- package/frontend/assets/activity-1.png +0 -0
- package/frontend/assets/activity-2.png +0 -0
- package/frontend/assets/activity-3.png +0 -0
- package/frontend/assets/activity-4.png +0 -0
- package/frontend/assets/card-icon-1.png +0 -0
- package/frontend/assets/card-icon-2.png +0 -0
- package/frontend/assets/card-icon-3.png +0 -0
- package/frontend/assets/card-icon-4.png +0 -0
- package/frontend/assets/login.png +0 -0
- package/frontend/assets/logo.png +0 -0
- package/frontend/categories.html +143 -0
- package/frontend/css/all.min.css +9 -0
- package/frontend/css/bootstrap.min.css +6 -0
- package/frontend/css/categories.css +359 -0
- package/frontend/css/dashboard.css +373 -0
- package/frontend/css/inventoryInsights.css +308 -0
- package/frontend/css/inventoryOverview.css +353 -0
- package/frontend/css/orders.css +632 -0
- package/frontend/css/products.css +364 -0
- package/frontend/css/signin.css +120 -0
- package/frontend/css/style.css +282 -0
- package/frontend/css/suppliers.css +136 -0
- package/frontend/dashboard.html +160 -0
- package/frontend/index.html +124 -0
- package/frontend/inventoryInsights.html +182 -0
- package/frontend/inventoryOverview.html +187 -0
- package/frontend/js/api.js +55 -0
- package/frontend/js/auth.js +70 -0
- package/frontend/js/bootstrap.bundle.min.js +7 -0
- package/frontend/js/categories.js +356 -0
- package/frontend/js/dashboard.js +341 -0
- package/frontend/js/inventoryInsights.js +396 -0
- package/frontend/js/inventoryOverview.js +503 -0
- package/frontend/js/orders.js +662 -0
- package/frontend/js/products.js +650 -0
- package/frontend/js/suppliers.js +535 -0
- package/frontend/js/utils.js +234 -0
- package/frontend/orders.html +216 -0
- package/frontend/products.html +152 -0
- package/frontend/suppliers.html +175 -0
- package/frontend/webfonts/fa-brands-400.woff2 +0 -0
- package/frontend/webfonts/fa-regular-400.woff2 +0 -0
- package/frontend/webfonts/fa-solid-900.woff2 +0 -0
- package/frontend/webfonts/fa-v4compatibility.woff2 +0 -0
- package/package.json +38 -0
- package/vercel.json +18 -0
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
:root {
|
|
2
|
+
/* =========================
|
|
3
|
+
BACKGROUNDS
|
|
4
|
+
========================= */
|
|
5
|
+
--bg-page: #f5f6fa;
|
|
6
|
+
--bg-sidebar: #ffffff;
|
|
7
|
+
--bg-card: #ffffff;
|
|
8
|
+
--bg-soft: #f9fafc;
|
|
9
|
+
--bg-hover: #f3f4f6;
|
|
10
|
+
|
|
11
|
+
/* =========================
|
|
12
|
+
PRIMARY / BRAND
|
|
13
|
+
========================= */
|
|
14
|
+
--primary: #7c3aed;
|
|
15
|
+
--primary-hover: #6d28d9;
|
|
16
|
+
--primary-light: #a78bfa;
|
|
17
|
+
--primary-soft: #ede9fe;
|
|
18
|
+
--primary-gradient: linear-gradient(135deg, #7c3aed 0%, #9233ea 100%);
|
|
19
|
+
--secondary-gradient: linear-gradient(135deg, #b7adda, #c8bee678);
|
|
20
|
+
|
|
21
|
+
/* =========================
|
|
22
|
+
TEXT
|
|
23
|
+
========================= */
|
|
24
|
+
--text-primary: #111827;
|
|
25
|
+
--text-secondary: #6b7280;
|
|
26
|
+
--text-muted: #9ca3af;
|
|
27
|
+
--text-light: #d1d5db;
|
|
28
|
+
--text-white: #ffffff;
|
|
29
|
+
--text-over: #0f172a;
|
|
30
|
+
--text-header: #64748b;
|
|
31
|
+
|
|
32
|
+
/* =========================
|
|
33
|
+
BORDERS / LINES
|
|
34
|
+
========================= */
|
|
35
|
+
--border-light: #e5e7eb;
|
|
36
|
+
--border-soft: #eef1f5;
|
|
37
|
+
--divider: #f1f3f7;
|
|
38
|
+
|
|
39
|
+
/* =========================
|
|
40
|
+
SUCCESS
|
|
41
|
+
========================= */
|
|
42
|
+
--success: #10b981;
|
|
43
|
+
--success-dark: #059669;
|
|
44
|
+
--success-bg: #d1fae5;
|
|
45
|
+
|
|
46
|
+
/* =========================
|
|
47
|
+
WARNING
|
|
48
|
+
========================= */
|
|
49
|
+
--warning: #f59e0b;
|
|
50
|
+
--warning-dark: #d97706;
|
|
51
|
+
--warning-bg: #fef3c7;
|
|
52
|
+
|
|
53
|
+
/* =========================
|
|
54
|
+
DANGER
|
|
55
|
+
========================= */
|
|
56
|
+
--danger: #ef4444;
|
|
57
|
+
--danger-dark: #dc2626;
|
|
58
|
+
--danger-bg: #fee2e2;
|
|
59
|
+
|
|
60
|
+
/* =========================
|
|
61
|
+
INFO
|
|
62
|
+
========================= */
|
|
63
|
+
--info: #3b82f6;
|
|
64
|
+
--info-dark: #2563eb;
|
|
65
|
+
--info-bg: #dbeafe;
|
|
66
|
+
|
|
67
|
+
/* =========================
|
|
68
|
+
ACTIVITY / ICON BACKGROUNDS
|
|
69
|
+
========================= */
|
|
70
|
+
--icon-purple-bg: #ede9fe;
|
|
71
|
+
--icon-blue-bg: #dbeafe;
|
|
72
|
+
--icon-green-bg: #d1fae5;
|
|
73
|
+
--icon-yellow-bg: #fef3c7;
|
|
74
|
+
--icon-red-bg: #fee2e2;
|
|
75
|
+
|
|
76
|
+
/* =========================
|
|
77
|
+
ACTIVITY DOT / ACCENT COLORS
|
|
78
|
+
========================= */
|
|
79
|
+
--activity-blue: #60a5fa;
|
|
80
|
+
--activity-green: #34d399;
|
|
81
|
+
--activity-yellow: #fbbf24;
|
|
82
|
+
--activity-red: #f87171;
|
|
83
|
+
|
|
84
|
+
/* =========================
|
|
85
|
+
CHART / DATA VISUALS
|
|
86
|
+
========================= */
|
|
87
|
+
--chart-primary: #7c3aed;
|
|
88
|
+
--chart-secondary: #a78bfa;
|
|
89
|
+
|
|
90
|
+
/* =========================
|
|
91
|
+
SHADOWS
|
|
92
|
+
========================= */
|
|
93
|
+
--shadow-sm: 0 1px 2px rgba(16, 24, 40, 0.05);
|
|
94
|
+
--shadow-md: 0 4px 12px rgba(16, 24, 40, 0.08);
|
|
95
|
+
|
|
96
|
+
--radius-sm: 8px;
|
|
97
|
+
--radius-md: 12px;
|
|
98
|
+
--radius-lg: 16px;
|
|
99
|
+
--radius-xl: 20px;
|
|
100
|
+
|
|
101
|
+
--space-1: 4px;
|
|
102
|
+
--space-2: 8px;
|
|
103
|
+
--space-3: 12px;
|
|
104
|
+
--space-4: 16px;
|
|
105
|
+
--space-5: 20px;
|
|
106
|
+
--space-6: 24px;
|
|
107
|
+
--space-8: 32px;
|
|
108
|
+
|
|
109
|
+
--topbar-height: 64px;
|
|
110
|
+
--subnav-height: 52px;
|
|
111
|
+
--page-width: 1280px;
|
|
112
|
+
|
|
113
|
+
--transition-fast: 0.2s ease;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
*,
|
|
117
|
+
*::before,
|
|
118
|
+
*::after {
|
|
119
|
+
box-sizing: border-box;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
html {
|
|
123
|
+
scroll-behavior: smooth;
|
|
124
|
+
font-size: 14px;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
body {
|
|
128
|
+
margin: 0;
|
|
129
|
+
font-family: var(--font-family);
|
|
130
|
+
background: var(--bg-page);
|
|
131
|
+
color: var(--text-primary);
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
img {
|
|
135
|
+
display: block;
|
|
136
|
+
max-width: 100%;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
button,
|
|
140
|
+
input,
|
|
141
|
+
select,
|
|
142
|
+
textarea {
|
|
143
|
+
font: inherit;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
.card {
|
|
147
|
+
border-radius: var(--radius-md);
|
|
148
|
+
}
|
|
149
|
+
.dataNotMatch {
|
|
150
|
+
text-align: center;
|
|
151
|
+
color: var(--text-secondary);
|
|
152
|
+
width: 100%;
|
|
153
|
+
font-size: 18px;
|
|
154
|
+
font-weight: bold;
|
|
155
|
+
padding-top: 20px;
|
|
156
|
+
overflow-x: hidden;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
/*y NavBar */
|
|
160
|
+
#second-navbar .nav-link {
|
|
161
|
+
color: var(--text-muted) !important;
|
|
162
|
+
border-radius: var(--radius-sm);
|
|
163
|
+
padding: 6px 14px;
|
|
164
|
+
transition: var(--transition-fast);
|
|
165
|
+
display: flex;
|
|
166
|
+
align-items: center;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
#second-navbar .nav-link:hover {
|
|
170
|
+
background-color: var(--primary-light);
|
|
171
|
+
color: var(--primary) !important;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
#second-navbar .nav-link.active {
|
|
175
|
+
border-color: var(--primary-light);
|
|
176
|
+
color: var(--primary) !important;
|
|
177
|
+
font-weight: 600;
|
|
178
|
+
}
|
|
179
|
+
td {
|
|
180
|
+
vertical-align: middle;
|
|
181
|
+
}
|
|
182
|
+
.sorting {
|
|
183
|
+
cursor: pointer;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
table {
|
|
187
|
+
margin-bottom: 0px !important;
|
|
188
|
+
}
|
|
189
|
+
/*y Pagination */
|
|
190
|
+
.table-footer {
|
|
191
|
+
display: flex;
|
|
192
|
+
justify-content: space-between;
|
|
193
|
+
align-items: center;
|
|
194
|
+
padding: 16px;
|
|
195
|
+
border-top: 1px solid #eee;
|
|
196
|
+
color: var(--text-secondary);
|
|
197
|
+
font-size: 13px;
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
.pagination button {
|
|
201
|
+
border: none;
|
|
202
|
+
background: none;
|
|
203
|
+
margin: 0 4px;
|
|
204
|
+
padding: 6px 10px;
|
|
205
|
+
border-radius: 6px;
|
|
206
|
+
cursor: pointer;
|
|
207
|
+
color: var(--text-secondary);
|
|
208
|
+
transition: var(--transition-fast);
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
.pagination button:hover {
|
|
212
|
+
background-color: var(--bg-hover);
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
.pagination .active {
|
|
216
|
+
background: var(--primary-soft);
|
|
217
|
+
color: var(--primary);
|
|
218
|
+
font-weight: bold;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
/* .prevBtn {
|
|
222
|
+
background: var(--primary);
|
|
223
|
+
color: white;
|
|
224
|
+
border: none;
|
|
225
|
+
padding: 6px 16px;
|
|
226
|
+
width: fit-content;
|
|
227
|
+
min-width: fit-content;
|
|
228
|
+
border-radius: 20px;
|
|
229
|
+
font-weight: bold;
|
|
230
|
+
transition: var(--transition-fast);
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
.prevBtn:hover {
|
|
234
|
+
background-color: var(--primary-hover);
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
.pagePaginateBtn {
|
|
238
|
+
background: var(--primary-light);
|
|
239
|
+
color: white;
|
|
240
|
+
border: none;
|
|
241
|
+
padding: 6px 16px;
|
|
242
|
+
width: fit-content;
|
|
243
|
+
min-width: fit-content;
|
|
244
|
+
border-radius: 20px;
|
|
245
|
+
font-weight: bold;
|
|
246
|
+
transition: var(--transition-fast);
|
|
247
|
+
} */
|
|
248
|
+
|
|
249
|
+
/* .colored {
|
|
250
|
+
background-color: var(--primary-hover);
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
.nextBtn {
|
|
254
|
+
background: var(--primary);
|
|
255
|
+
color: white;
|
|
256
|
+
border: none;
|
|
257
|
+
padding: 6px 16px;
|
|
258
|
+
width: fit-content;
|
|
259
|
+
min-width: fit-content;
|
|
260
|
+
border-radius: 20px;
|
|
261
|
+
font-weight: bold;
|
|
262
|
+
transition: var(--transition-fast);
|
|
263
|
+
}
|
|
264
|
+
.nextBtn:hover {
|
|
265
|
+
background-color: var(--primary-hover);
|
|
266
|
+
} */
|
|
267
|
+
footer {
|
|
268
|
+
background-color: var(--primary);
|
|
269
|
+
min-height: 80px;
|
|
270
|
+
margin-top: 30px;
|
|
271
|
+
}
|
|
272
|
+
footer .container {
|
|
273
|
+
width: 100%;
|
|
274
|
+
height: 100%;
|
|
275
|
+
display: flex;
|
|
276
|
+
justify-content: center;
|
|
277
|
+
}
|
|
278
|
+
footer p {
|
|
279
|
+
align-self: center;
|
|
280
|
+
margin-top: 30px;
|
|
281
|
+
color: var(--bs-light);
|
|
282
|
+
}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
/* =========================
|
|
2
|
+
SUPPLIERS PAGE
|
|
3
|
+
========================= */
|
|
4
|
+
.suplier {
|
|
5
|
+
background-color: var(--bg-page);
|
|
6
|
+
}
|
|
7
|
+
header > div > h1 , .headerMod >h2{
|
|
8
|
+
color: var(--text-over);
|
|
9
|
+
}
|
|
10
|
+
header > div > p , .headerMod > p{
|
|
11
|
+
color: var(--text-header);
|
|
12
|
+
}
|
|
13
|
+
.sorting img {
|
|
14
|
+
width: 30px;
|
|
15
|
+
height: 10px;
|
|
16
|
+
}
|
|
17
|
+
.sorting {
|
|
18
|
+
height: 33px;
|
|
19
|
+
width: 30px;
|
|
20
|
+
cursor: pointer;
|
|
21
|
+
}
|
|
22
|
+
.page-link {
|
|
23
|
+
color: #94a3b8;
|
|
24
|
+
}
|
|
25
|
+
.add-supplier , .save-supplier{
|
|
26
|
+
color: var(--text-white);
|
|
27
|
+
background-color: var(--primary);
|
|
28
|
+
transition: var(--transition-fast);
|
|
29
|
+
}
|
|
30
|
+
.add-supplier:hover , .save-supplier:hover {
|
|
31
|
+
background-color: var(--primary-hover);
|
|
32
|
+
color: var(--text-white);
|
|
33
|
+
}
|
|
34
|
+
.suplier .page-active {
|
|
35
|
+
color: var(--text-white);
|
|
36
|
+
background-color: var(--primary);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.suplier .first-latter {
|
|
40
|
+
width: 40px;
|
|
41
|
+
height: 35px;
|
|
42
|
+
background-color: rgba(109, 13, 253, 0.1);
|
|
43
|
+
color: var(--primary);
|
|
44
|
+
}
|
|
45
|
+
.suplier .searchBySupplierName:focus{
|
|
46
|
+
border: 2px solid rgba(109, 13, 253, 0.2);
|
|
47
|
+
}
|
|
48
|
+
.suplier .Page .paggination {
|
|
49
|
+
border-bottom: 0;
|
|
50
|
+
}
|
|
51
|
+
.suplier tbody td a,
|
|
52
|
+
.suplier .modal-footer .cancle {
|
|
53
|
+
color: var(--primary);
|
|
54
|
+
}
|
|
55
|
+
.suplier tbody tr:last-child {
|
|
56
|
+
border-bottom: 0;
|
|
57
|
+
}
|
|
58
|
+
.supplier-card{
|
|
59
|
+
width: 100%;
|
|
60
|
+
border: none !important;
|
|
61
|
+
box-shadow: var(--shadow-md);
|
|
62
|
+
}
|
|
63
|
+
.supplier-card thead th{
|
|
64
|
+
font-size: 16px;
|
|
65
|
+
padding: var(--space-4);
|
|
66
|
+
background: #f3eefb;
|
|
67
|
+
color: #64748b;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
.supplier-card tbody td{
|
|
71
|
+
font-size: 15px;
|
|
72
|
+
padding: var(--space-4);
|
|
73
|
+
vertical-align: middle;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
.supplier-card #editSupplierBtn{
|
|
77
|
+
background-color: var(--primary-soft);
|
|
78
|
+
color: var(--primary);
|
|
79
|
+
}
|
|
80
|
+
.supplier-card #editSupplierBtn:hover{
|
|
81
|
+
background-color: var(--primary-light);
|
|
82
|
+
color: var(--text-white);
|
|
83
|
+
}
|
|
84
|
+
.supplier-card #deleteSupplierBtn{
|
|
85
|
+
background-color: var(--danger-bg);
|
|
86
|
+
color: var(--danger);
|
|
87
|
+
}
|
|
88
|
+
.supplier-card #deleteSupplierBtn:hover{
|
|
89
|
+
background-color: var(--danger);
|
|
90
|
+
color: var(--text-white);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
.status_active,
|
|
94
|
+
.status_inactive {
|
|
95
|
+
/* height: 20px; */
|
|
96
|
+
border-radius: var(--space-3);
|
|
97
|
+
text-align: center;
|
|
98
|
+
padding: 2px var(--space-2);
|
|
99
|
+
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
.status_active {
|
|
103
|
+
background-color: var(--success-bg);
|
|
104
|
+
color: var(--success-dark);
|
|
105
|
+
}
|
|
106
|
+
.status_inactive {
|
|
107
|
+
background-color: #f1f5f9;
|
|
108
|
+
color: var(--text-secondary);
|
|
109
|
+
}
|
|
110
|
+
.status_active p,
|
|
111
|
+
.status_inactive p {
|
|
112
|
+
display: flex;
|
|
113
|
+
align-items: center;
|
|
114
|
+
justify-content: center;
|
|
115
|
+
gap: 3px;
|
|
116
|
+
}
|
|
117
|
+
.dot-color {
|
|
118
|
+
width: 8px;
|
|
119
|
+
height: 8px;
|
|
120
|
+
border-radius: 50%;
|
|
121
|
+
display: inline-block;
|
|
122
|
+
padding: var(--space-1);
|
|
123
|
+
}
|
|
124
|
+
.status_active .dot-color {
|
|
125
|
+
background-color: var(--success-dark);
|
|
126
|
+
}
|
|
127
|
+
.status_inactive .dot-color {
|
|
128
|
+
background-color: var(--text-secondary);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
.suplier .modal input,
|
|
132
|
+
.suplier .modal textarea,
|
|
133
|
+
.suplier .modal select {
|
|
134
|
+
border: 1px solid rgba(109, 13, 253, 0.2);
|
|
135
|
+
color: var(--text-secondary);
|
|
136
|
+
}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
|
|
4
|
+
<head>
|
|
5
|
+
<meta charset="UTF-8" />
|
|
6
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
7
|
+
<title>Dashboard Page</title>
|
|
8
|
+
<!-- CSS -->
|
|
9
|
+
<link rel="stylesheet" href="css/bootstrap.min.css" />
|
|
10
|
+
<link rel="stylesheet" href="css/all.min.css" />
|
|
11
|
+
<link rel="stylesheet" href="css/style.css" />
|
|
12
|
+
<link rel="stylesheet" href="css/dashboard.css">
|
|
13
|
+
</head>
|
|
14
|
+
|
|
15
|
+
<body>
|
|
16
|
+
<div id="top-navbar"></div>
|
|
17
|
+
<div id="second-navbar"></div>
|
|
18
|
+
|
|
19
|
+
<main>
|
|
20
|
+
<div class="container">
|
|
21
|
+
<div class="main-content w-100 mt-4">
|
|
22
|
+
<div class="page-title my-5">
|
|
23
|
+
<h1 class="fw-bold">Dashboard Overview</h1>
|
|
24
|
+
<p class="m-0">Welcome Back. Here's what's happening in your inventory today.</p>
|
|
25
|
+
</div>
|
|
26
|
+
<div class="summary-cards d-flex gap-5 w-100">
|
|
27
|
+
<div class="card">
|
|
28
|
+
<div class="top-icons d-flex justify-content-between align-items-center pb-4">
|
|
29
|
+
<img src="assets/card-icon-1.png" alt="Icon for card one" class="icon-purple">
|
|
30
|
+
<div class="products-status d-flex justify-content-between align-items-center gap-1">
|
|
31
|
+
<i class="fa-solid fa-arrow-trend-up"></i>
|
|
32
|
+
<small>12%</small>
|
|
33
|
+
</div>
|
|
34
|
+
</div>
|
|
35
|
+
<h6>Total Products</h6>
|
|
36
|
+
<h3 id="totalProducts">1240</h3>
|
|
37
|
+
</div>
|
|
38
|
+
<div class="card">
|
|
39
|
+
<div class="top-icons d-flex justify-content-between align-items-center pb-4">
|
|
40
|
+
<img src="assets/card-icon-2.png" alt="Icon for card Two" class="icon-yellow">
|
|
41
|
+
<div class="stock-status d-flex justify-content-between align-items-center gap-1">
|
|
42
|
+
<i class="fa-solid fa-arrow-trend-up"></i>
|
|
43
|
+
<small>12%</small>
|
|
44
|
+
</div>
|
|
45
|
+
</div>
|
|
46
|
+
<h6>Low stck Items</h6>
|
|
47
|
+
<h3 id="lowStockItems">12</h3>
|
|
48
|
+
</div>
|
|
49
|
+
<div class="card">
|
|
50
|
+
<div class="top-icons d-flex justify-content-between align-items-center pb-4">
|
|
51
|
+
<img src="assets/card-icon-3.png" alt="Icon for card Three" class="icon-blue">
|
|
52
|
+
<div class="supplier-status d-flex justify-content-between align-items-center gap-1">
|
|
53
|
+
<i class="fa-solid fa-arrow-trend-up"></i>
|
|
54
|
+
<small>12%</small>
|
|
55
|
+
</div>
|
|
56
|
+
</div>
|
|
57
|
+
<h6>Total Suppliers</h6>
|
|
58
|
+
<h3 id="totalSuppliers">48</h3>
|
|
59
|
+
</div>
|
|
60
|
+
<div class="card">
|
|
61
|
+
<div class="top-icons d-flex justify-content-between align-items-center pb-4">
|
|
62
|
+
<img src="assets/card-icon-4.png" alt="Icon for card Four" class="icon-green">
|
|
63
|
+
<div class="inventory-status d-flex justify-content-between align-items-center gap-1">
|
|
64
|
+
<i class="fa-solid fa-arrow-trend-up"></i>
|
|
65
|
+
<small>12%</small>
|
|
66
|
+
</div>
|
|
67
|
+
</div>
|
|
68
|
+
<h6>Inventory Value</h6>
|
|
69
|
+
<h3 id="inventoryValue">$450,000</h3>
|
|
70
|
+
</div>
|
|
71
|
+
</div>
|
|
72
|
+
<div class="statistics mt-5 mb-5">
|
|
73
|
+
<div class="statistics-top d-flex justify-content-between align-item-center mt-5 mb-5">
|
|
74
|
+
<div class="inventory-chart p-5">
|
|
75
|
+
<div class="top-caption d-flex w-100 justify-content-between align-items-center mb-2">
|
|
76
|
+
<h3>Inventory By Category</h3>
|
|
77
|
+
<small>Last 30 Days</small>
|
|
78
|
+
</div>
|
|
79
|
+
<div class="container text-center d-flex justify-content-between align-items-end">
|
|
80
|
+
<div class="chart-col h-100 d-flex flex-column justify-content-end">
|
|
81
|
+
<div class="level"></div>
|
|
82
|
+
<small>Electronics</small>
|
|
83
|
+
</div>
|
|
84
|
+
<div class="chart-col h-100 d-flex flex-column justify-content-end">
|
|
85
|
+
<div class="level"></div>
|
|
86
|
+
<small>Furniture</small>
|
|
87
|
+
</div>
|
|
88
|
+
<div class="chart-col h-100 d-flex flex-column justify-content-end">
|
|
89
|
+
<div class="level"></div>
|
|
90
|
+
<small>Office</small>
|
|
91
|
+
</div>
|
|
92
|
+
<div class="chart-col h-100 d-flex flex-column justify-content-end">
|
|
93
|
+
<div class="level"></div>
|
|
94
|
+
<small>Tools</small>
|
|
95
|
+
</div>
|
|
96
|
+
<div class="chart-col h-100 d-flex flex-column justify-content-end">
|
|
97
|
+
<div class="level"></div>
|
|
98
|
+
<small>Aplliances</small>
|
|
99
|
+
</div>
|
|
100
|
+
<div class="chart-col h-100 d-flex flex-column justify-content-end">
|
|
101
|
+
<div class="level"></div>
|
|
102
|
+
<small>Other</small>
|
|
103
|
+
</div>
|
|
104
|
+
</div>
|
|
105
|
+
</div>
|
|
106
|
+
<div class="recent-activity p-5">
|
|
107
|
+
<h2 class="mb-2">Recent Activity</h2>
|
|
108
|
+
<div class="container activities">
|
|
109
|
+
</div>
|
|
110
|
+
</div>
|
|
111
|
+
</div>
|
|
112
|
+
<div class="low-wtock-preview card">
|
|
113
|
+
<div class="container">
|
|
114
|
+
<div class="low-stock-header d-flex justify-content-between align-items-center m-auto">
|
|
115
|
+
<div class="low-stock-title">
|
|
116
|
+
<h2>Low Stock Preview</h2>
|
|
117
|
+
<p>Items that require immediate action</p>
|
|
118
|
+
</div>
|
|
119
|
+
<button class="bulk-order-btn" id="bulkOrderBtn"><i class="fa-solid fa-cart-plus"></i> Create Bulk
|
|
120
|
+
Order</button>
|
|
121
|
+
</div>
|
|
122
|
+
<div class="low-stock-card">
|
|
123
|
+
<div class="table-responsive">
|
|
124
|
+
<table class="table">
|
|
125
|
+
<thead>
|
|
126
|
+
<tr>
|
|
127
|
+
<th>Product Name</th>
|
|
128
|
+
<th>Category</th>
|
|
129
|
+
<th>Current Stock</th>
|
|
130
|
+
<th>Reorder Level</th>
|
|
131
|
+
<th>Status</th>
|
|
132
|
+
<th>Action</th>
|
|
133
|
+
</tr>
|
|
134
|
+
</thead>
|
|
135
|
+
<tbody id="tableBody">
|
|
136
|
+
|
|
137
|
+
</tbody>
|
|
138
|
+
</table>
|
|
139
|
+
<div class="table-footer">
|
|
140
|
+
<div id="pagination" class="container d-flex align-items-center justify-content-between">
|
|
141
|
+
</div>
|
|
142
|
+
</div>
|
|
143
|
+
</div>
|
|
144
|
+
</div>
|
|
145
|
+
</div>
|
|
146
|
+
</div>
|
|
147
|
+
|
|
148
|
+
</div>
|
|
149
|
+
</div>
|
|
150
|
+
</main>
|
|
151
|
+
|
|
152
|
+
<footer id="footer"></footer>
|
|
153
|
+
|
|
154
|
+
<script src="js/bootstrap.bundle.min.js"></script>
|
|
155
|
+
<script src="js/utils.js"></script>
|
|
156
|
+
<script src="js/api.js"></script>
|
|
157
|
+
<script src="js/dashboard.js"></script>
|
|
158
|
+
</body>
|
|
159
|
+
|
|
160
|
+
</html>
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
|
|
4
|
+
<head>
|
|
5
|
+
<meta charset="UTF-8" />
|
|
6
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
7
|
+
<title>InvenTrack</title>
|
|
8
|
+
<!-- CSS -->
|
|
9
|
+
<link rel="stylesheet" href="css/bootstrap.min.css" />
|
|
10
|
+
<link rel="stylesheet" href="css/all.min.css" />
|
|
11
|
+
<link rel="stylesheet" href="css/style.css" />
|
|
12
|
+
<link rel="stylesheet" href="css/signin.css">
|
|
13
|
+
</head>
|
|
14
|
+
|
|
15
|
+
<body>
|
|
16
|
+
<div id="top-navbar"></div>
|
|
17
|
+
<div id="second-navbar"></div>
|
|
18
|
+
|
|
19
|
+
<!-- ////////////////////// Sign In ////////////////////////// -->
|
|
20
|
+
<main class="container">
|
|
21
|
+
<div class="card mb-3 border-0 mt-5 m-auto rounded-3" style="width: 80%;">
|
|
22
|
+
<div class="row g-0">
|
|
23
|
+
|
|
24
|
+
<!-- /// Left Side:== Inventory-->
|
|
25
|
+
<aside class="col-md-6 col-sm-12 left-Side">
|
|
26
|
+
<div class="bg border-0 m-3 p-4">
|
|
27
|
+
<div class="d-flex justify-content-start logo border-0 ms-2 col-12">
|
|
28
|
+
<div>
|
|
29
|
+
<img src="./assets/Icon.png" class="img-fluid p-2" alt="LOGO">
|
|
30
|
+
</div>
|
|
31
|
+
<p class="fs-4 fw-bold">Inventory System</p>
|
|
32
|
+
</div> <!--card-header-->
|
|
33
|
+
<div class="card-body border-0">
|
|
34
|
+
<h5 class="card-title fs-3 fw-bold">Everything you need to manage stock.</h5>
|
|
35
|
+
<p class="card-text fs-5">
|
|
36
|
+
Manage products, suppliers, orders, and inventory insights in one centralized
|
|
37
|
+
dashboard.
|
|
38
|
+
</p>
|
|
39
|
+
<div class="overlay position-relative">
|
|
40
|
+
<img src="./assets/login.png" alt="Inventory System" class=" rounded-4">
|
|
41
|
+
<div
|
|
42
|
+
class="chartUnderImg d-flex justify-content-around align-items-end rounded-4 position-absolute bottom-0 start-0 p-4 ">
|
|
43
|
+
<div class="bar1 rounded-top ms-1" style="height:90px;"></div>
|
|
44
|
+
<div class="bar2 rounded-top ms-1" style="height:150px;"></div>
|
|
45
|
+
<div class="bar3 rounded-top ms-1" style="height:130px;"></div>
|
|
46
|
+
<div class="bar4 rounded-top ms-1" style="height:200px;"></div>
|
|
47
|
+
<div class="bar5 rounded-top ms-1" style="height:170px;"></div>
|
|
48
|
+
<div class="bar6 rounded-top ms-1" style="height:60px;"></div>
|
|
49
|
+
</div>
|
|
50
|
+
</div> <!--overlay-->
|
|
51
|
+
|
|
52
|
+
</div> <!--card-body-->
|
|
53
|
+
<div class="border-0 p-2 footer-card d-flex justify-content-start">
|
|
54
|
+
<div class="smallCircls d-flex justify-content-start">
|
|
55
|
+
<div class="circle1 rounded-circle border border-white p-3"></div>
|
|
56
|
+
<div class="circle2 rounded-circle border border-white p-3"></div>
|
|
57
|
+
<div class="circle3 rounded-circle border border-white p-3"></div>
|
|
58
|
+
</div> <!--smallCircls-->
|
|
59
|
+
<p class="ms-2 mb-0 mt-1">Joined by 2,000+ logistics professionals</p>
|
|
60
|
+
</div> <!--card-footer-->
|
|
61
|
+
</div> <!--bg-->
|
|
62
|
+
</aside> <!--col-->
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
<!-- /// Right side :== Sign In -->
|
|
66
|
+
<section class="col-md-6 py-5 col-sm-12">
|
|
67
|
+
<div class="loginForm">
|
|
68
|
+
<div class="border-0 px-4 py-2">
|
|
69
|
+
<h5 class="card-title fs-3 fw-bold">Sign In</h5>
|
|
70
|
+
<p class="card-text fs-5">Access your inventory dashboard to get started.</p>
|
|
71
|
+
</div>
|
|
72
|
+
<div class="formInput px-4 py-3">
|
|
73
|
+
<form class="row g-2 needs-validation" novalidate action="dashboard.html" id="formValidate">
|
|
74
|
+
<div class="mb-3 col-12">
|
|
75
|
+
<label for="exampleFormControlInput1" class="form-label">Email address</label>
|
|
76
|
+
<input type="email" class="form-control" id="userEmail"
|
|
77
|
+
placeholder="name@company.com">
|
|
78
|
+
</div>
|
|
79
|
+
<div class="mb-3 col-12">
|
|
80
|
+
<label for="exampleFormControlTextarea1"
|
|
81
|
+
class="form-label d-flex justify-content-between">
|
|
82
|
+
<span>Password</span>
|
|
83
|
+
<a href="#" id="forgetPass">Forgot password?</a>
|
|
84
|
+
</label>
|
|
85
|
+
<input type="password" class="form-control" id="userPass"
|
|
86
|
+
placeholder="••••••••">
|
|
87
|
+
</div>
|
|
88
|
+
<div class="mb-1 col-12">
|
|
89
|
+
<label for="" id="checkCorrectorNot"></label>
|
|
90
|
+
</div>
|
|
91
|
+
<div class="col-12">
|
|
92
|
+
<div class="form-check">
|
|
93
|
+
<input class="form-check-input" type="checkbox" value="" id="invalidCheck"
|
|
94
|
+
required>
|
|
95
|
+
<label class="form-check-label" for="invalidCheck">
|
|
96
|
+
Remember me for 30 days
|
|
97
|
+
</label>
|
|
98
|
+
|
|
99
|
+
</div>
|
|
100
|
+
</div>
|
|
101
|
+
<div class="col-12">
|
|
102
|
+
<button class="btn btn-sign px-4 py-2 mt-2 col-12" type="submit" id="signInBtn">Sign In <i
|
|
103
|
+
class="fa-solid fa-arrow-right"></i></button>
|
|
104
|
+
</div>
|
|
105
|
+
</form>
|
|
106
|
+
</div> <!--formInput-->
|
|
107
|
+
<div class="border-0 text-center py-4 col-sm-12">
|
|
108
|
+
<p>Don't have an account? <a href="#" id="contactAdmin">Contact your administrator</a></p>
|
|
109
|
+
</div>
|
|
110
|
+
</div>
|
|
111
|
+
</section> <!--col-->
|
|
112
|
+
|
|
113
|
+
</div>
|
|
114
|
+
</div> <!--card-->
|
|
115
|
+
</main> <!--container-->
|
|
116
|
+
|
|
117
|
+
<!-- Scripts -->
|
|
118
|
+
<script src="js/bootstrap.bundle.min.js"></script>
|
|
119
|
+
<script src="js/utils.js"></script>
|
|
120
|
+
<script src="js/api.js"></script>
|
|
121
|
+
<script src="js/auth.js"></script>
|
|
122
|
+
</body>
|
|
123
|
+
|
|
124
|
+
</html>
|