@visns-studio/visns-components 5.0.0 → 5.0.1-8.1

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 (37) hide show
  1. package/package.json +3 -1
  2. package/src/components/crm/AsyncSelect.jsx +121 -15
  3. package/src/components/crm/DataGrid.jsx +26 -5
  4. package/src/components/crm/Field.jsx +174 -148
  5. package/src/components/crm/Form.jsx +46 -33
  6. package/src/components/crm/MultiSelect.jsx +96 -29
  7. package/src/components/crm/Navigation.jsx +2 -81
  8. package/src/components/crm/QrCode.jsx +12 -8
  9. package/src/components/crm/auth/Login.jsx +9 -1
  10. package/src/components/crm/auth/Profile.jsx +4 -2
  11. package/src/components/crm/auth/styles/Login.module.scss +52 -82
  12. package/src/components/crm/auth/styles/Profile.module.scss +150 -44
  13. package/src/components/crm/auth/styles/Reset.module.scss +55 -37
  14. package/src/components/crm/auth/styles/Verify.module.scss +55 -76
  15. package/src/components/crm/generic/GenericAuth.jsx +17 -6
  16. package/src/components/crm/generic/GenericDetail.jsx +509 -18
  17. package/src/components/crm/generic/GenericEditableTable.jsx +407 -0
  18. package/src/components/crm/generic/styles/AuditLog.module.scss +4 -37
  19. package/src/components/crm/generic/styles/AuditLogs.module.scss +0 -51
  20. package/src/components/crm/generic/styles/GenericDetail.module.scss +263 -193
  21. package/src/components/crm/generic/styles/GenericDynamic.module.scss +100 -198
  22. package/src/components/crm/generic/styles/GenericEditableTable.module.scss +178 -0
  23. package/src/components/crm/generic/styles/GenericFormBuilder.module.scss +63 -96
  24. package/src/components/crm/generic/styles/GenericIndex.module.scss +46 -66
  25. package/src/components/crm/generic/styles/GenericMain.module.scss +7 -7
  26. package/src/components/crm/generic/styles/GenericSort.module.scss +0 -36
  27. package/src/components/crm/generic/styles/NotificationList.module.scss +1 -32
  28. package/src/components/crm/styles/Autocomplete.module.scss +12 -20
  29. package/src/components/crm/styles/DataGrid.module.scss +6 -89
  30. package/src/components/crm/styles/Field.module.scss +72 -42
  31. package/src/components/crm/styles/Form.module.scss +148 -379
  32. package/src/components/crm/styles/Navigation.module.scss +356 -501
  33. package/src/components/crm/styles/Notification.module.scss +1 -0
  34. package/src/components/crm/styles/QrCode.module.scss +4 -0
  35. package/src/components/crm/styles/SwitchAccount.module.scss +0 -1
  36. package/src/components/crm/styles/TableFilter.module.scss +2 -1
  37. package/src/components/styles/global.css +164 -34
@@ -1,94 +1,68 @@
1
- /* General styles */
2
1
  .label {
3
2
  display: block;
4
3
  }
5
4
 
6
- input[type='file'] {
7
- background: var(--item-color);
8
- border-radius: var(--br);
9
- border: 1px solid transparent;
10
- box-shadow: var(--box-shadow-small);
11
- padding: 1rem;
12
- outline: none;
13
- width: 100%;
14
- box-sizing: border-box;
15
- background: rgba(white, 0.5);
16
- color: var(--paragraph-color);
17
- transition: box-shadow 0.15s linear;
18
- font-size: 1.25em;
19
- }
20
-
21
- input[type='file']:focus {
22
- border: 1px solid var(--primary-color);
23
- }
24
-
25
- input[type='file']:hover {
26
- border: 1px solid var(--primary-color);
27
- }
28
-
29
- /* Form styles */
30
5
  .formcontainer {
31
6
  width: 100%;
32
- }
33
7
 
34
- .modalForm {
35
- width: 100%;
36
- display: flex;
37
- align-items: flex-start;
38
- flex-wrap: wrap;
8
+ form {
9
+ width: 100%;
10
+ display: grid;
11
+ grid-template-columns: 1fr 1fr;
12
+ gap: 1em;
13
+ }
39
14
  }
40
15
 
41
16
  .formItem {
42
- width: 50%;
43
- padding: 0.5em;
17
+ width: 100%;
44
18
  position: relative;
45
19
  box-sizing: border-box;
46
- }
47
20
 
48
- .fi__label {
49
- position: relative;
50
- }
21
+ .fi__label {
22
+ position: relative;
23
+ display: flex;
24
+ align-items: center;
25
+ }
51
26
 
52
- .fi__span {
53
- position: absolute;
54
- transition: all 200ms;
55
- opacity: 0.8;
56
- left: 0;
57
- padding: 19px 20px;
58
- transform-origin: top left;
59
- cursor: text;
60
- font-size: 1.25em;
61
- }
27
+ .fi__span {
28
+ position: absolute;
29
+ transition: all 200ms;
30
+ opacity: 1;
31
+ left: 0;
32
+ transform-origin: top left;
33
+ cursor: text;
34
+ padding: 0 1rem;
35
+ }
62
36
 
63
- .fi__div {
64
- transition: all 200ms;
65
- opacity: 0.8;
66
- left: 0;
67
- padding: 19px 13px;
68
- border-radius: var(--br);
69
- border: 1px solid rgba(var(--paragraph-color-rgb), 0.15);
70
- box-shadow: none;
71
- }
37
+ .fi__div {
38
+ transition: all 200ms;
39
+ opacity: 0.8;
40
+ left: 0;
41
+ padding: 19px 13px;
42
+ border-radius: var(--radius);
43
+ border: 1px solid rgba(var(--paragraph-rgb), 0.15);
44
+ box-shadow: none;
45
+ }
72
46
 
73
- .fi__toggle {
74
- width: max-content;
75
- padding: 0px 10px 0px 0;
76
- box-sizing: border-box;
77
- display: inline;
78
- }
47
+ .fi__toggle {
48
+ width: max-content;
49
+ padding: 0 10px 0 0;
50
+ box-sizing: border-box;
51
+ display: inline;
52
+ }
79
53
 
80
- .fi__toggletxt {
81
- position: relative;
82
- left: 5px;
83
- font-size: 0.95em;
84
- top: -5px;
54
+ .fi__toggletxt {
55
+ position: relative;
56
+ left: 5px;
57
+ font-size: 0.95em;
58
+ top: -5px;
59
+ }
85
60
  }
86
61
 
87
- .formBuilderItem {
88
- width: 25%;
89
- padding: 0.35em;
90
- position: relative;
91
- box-sizing: border-box;
62
+ .fwItem,
63
+ .fwBuilderItem {
64
+ grid-column: 1 / -1;
65
+ width: 100%;
92
66
  }
93
67
 
94
68
  .fi__spancheckbox {
@@ -97,14 +71,15 @@ input[type='file']:hover {
97
71
  }
98
72
 
99
73
  .fi__optionscontainer {
100
- display: flex;
101
- flex-wrap: wrap;
74
+ display: grid;
75
+ grid-template-columns: repeat(auto-fill, minmax(100px, 1fr));
102
76
  gap: 10px;
103
77
  margin-top: 8px;
104
78
  }
105
79
 
106
80
  .fi__checkboxcontainer {
107
- display: flex;
81
+ display: grid;
82
+ grid-template-columns: auto 1fr;
108
83
  align-items: center;
109
84
  }
110
85
 
@@ -117,50 +92,50 @@ input[type='file']:hover {
117
92
  }
118
93
 
119
94
  .qtrBuilderItem {
120
- flex-basis: 25%;
95
+ grid-column: span 1 / auto;
121
96
  }
122
97
 
123
98
  .halfBuilderItem {
124
- flex-basis: 50%;
125
- }
126
-
127
- .fwBuilderItem {
128
- flex-basis: 100%;
99
+ grid-column: span 2 / auto;
129
100
  }
130
101
 
131
102
  input:not(:placeholder-shown) + .fi__span,
132
103
  textarea:not(:placeholder-shown) + .fi__span,
133
104
  select:not(:placeholder-shown) + .fi__span {
134
- transform: translateY(-40%) translateX(10px) scale(0.75);
105
+ transform: translateY(-110%) translateX(10px) scale(0.75);
135
106
  opacity: 1;
136
- padding: 0 4px;
107
+ padding: 0;
137
108
  background: var(--tertiary-color);
138
109
  font-weight: 300;
110
+ transition: all 0.5s cubic-bezier(0.5, 0.5, 0, 1);
139
111
  }
140
112
 
141
113
  .prefocus {
142
- transform: translateY(-40%) translateX(10px) scale(0.75) !important;
143
- opacity: 1 !important;
144
- padding: 0 4px !important;
145
- background: var(--tertiary-color) !important;
146
- z-index: 500;
114
+ transform: translateY(-110%) translateX(10px) scale(0.75);
115
+ opacity: 1;
116
+ padding: 0;
117
+ background: var(--tertiary-color);
147
118
  font-weight: 300;
119
+ transition: all 0.5s cubic-bezier(0.5, 0.5, 0, 1);
120
+ z-index: 999;
148
121
  }
149
122
 
150
- .fwItem {
151
- flex-basis: 100%;
152
- }
153
123
 
154
- .lastItem .btn {
155
- width: 100%;
124
+ .lastItem {
125
+ .btn {
126
+ grid-column: 1 / -1;
127
+ width: 100%;
128
+ }
156
129
  }
157
130
 
158
131
  .inputError {
159
132
  border-color: red !important;
160
133
  }
161
134
 
162
- select::-ms-expand {
163
- display: none;
135
+ select {
136
+ &::-ms-expand {
137
+ display: none;
138
+ }
164
139
  }
165
140
 
166
141
  @media screen and (min-width: 0\0) {
@@ -170,16 +145,6 @@ select::-ms-expand {
170
145
  }
171
146
  }
172
147
 
173
- /* Login Form */
174
- .lcontainer {
175
- --sidebar-width: 35%;
176
- min-height: 100vh;
177
- }
178
-
179
- .lwrap {
180
- display: flex;
181
- }
182
-
183
148
  .aside {
184
149
  opacity: 1;
185
150
  position: fixed;
@@ -188,312 +153,116 @@ select::-ms-expand {
188
153
  width: var(--sidebar-width);
189
154
  }
190
155
 
191
- .loginlogo {
192
- display: block;
193
- width: 100%;
194
- max-width: 240px;
195
- height: auto;
196
- margin: 0 auto;
197
- padding-bottom: 1rem;
198
- }
199
-
200
- .logincontainer {
201
- margin-left: var(--sidebar-width);
202
- min-height: 100vh;
203
- flex-grow: 1;
204
- display: flex;
205
- align-items: center;
206
- justify-content: center;
207
- align-content: center;
208
- flex-wrap: wrap;
209
- }
210
-
211
- .login {
212
- width: 35rem;
213
- height: auto;
214
- padding: 1rem;
215
- margin: 0;
216
- display: flex;
217
- flex-wrap: wrap;
218
- }
219
-
220
- .login .formItem {
221
- padding: 0.25em 0;
222
- }
223
-
224
- .login .formItem small {
225
- position: absolute;
226
- width: 18px;
227
- height: 18px;
228
- right: 18px;
229
- top: 18px;
230
- opacity: 0.15;
231
- }
232
-
233
- .login .loginitem {
234
- width: 100%;
235
- padding: 0.25em 0;
236
- }
237
-
238
- .login .loginitem label {
239
- width: 100%;
240
- padding-bottom: 0.25rem;
241
- }
242
-
243
- .login .loginitem button {
244
- width: 100%;
245
- }
246
-
247
- .forgotten span {
248
- display: block;
249
- text-align: center;
250
- color: var(--paragraph-color);
251
- padding: 1rem 0;
252
- }
253
-
254
- .forgotten span a {
255
- color: var(--highlight-color);
256
- text-decoration: none;
257
- }
258
-
259
156
  .alert-danger {
260
157
  width: 100%;
261
- display: flex;
158
+ display: grid;
262
159
  padding: 20px;
263
160
  border-radius: 3px;
264
161
  background: #ff4d4d;
265
162
  margin-bottom: 0.5rem;
266
163
  box-sizing: border-box;
267
- }
268
-
269
- .alert-danger > span {
270
- color: rgba(255, 77, 77, 1.4);
271
- }
272
-
273
- /* Autocomplete */
274
- .AutocompletePlace-results {
275
- z-index: 999;
276
- }
277
-
278
- .AutocompletePlace {
279
- position: relative;
280
- }
281
164
 
282
- .AutocompletePlace > svg {
283
- position: absolute;
284
- right: 0.5em;
285
- top: 0.5em;
286
- color: var(--paragraph-color);
287
- cursor: pointer;
288
- }
289
-
290
- .AutocompletePlace .toggleActive {
291
- color: var(--highlight-color);
292
- }
293
-
294
- .AutocompletePlace-input {
295
- padding: 0.65rem 3rem 0.65rem 0.95rem !important;
165
+ > span {
166
+ color: rgba(255, 77, 77, 1.4);
167
+ }
296
168
  }
297
169
 
298
- .AutocompletePlace-results {
299
- position: absolute;
300
- background-color: white;
301
- padding: 0;
302
- margin: 0;
303
- border: 1px solid rgba(var(--primary-color-rgb), 0.25);
170
+ input[type='file'] {
171
+ background: var(--item-color);
304
172
  border-radius: var(--br);
305
- overflow: hidden;
306
- }
307
-
308
- .AutocompletePlace-items {
309
- list-style: none;
310
- border-bottom: 1px solid rgba(var(--primary-color-rgb), 0.1);
311
- cursor: pointer;
312
- padding: 10px 10px;
313
- }
314
-
315
- .AutocompletePlace-items:hover {
316
- background-color: rgba(var(--paragraph-color-rgb), 0.065);
317
- }
318
-
319
- /* Date picker */
320
- .react-datepicker-wrapper {
321
- width: 100% !important;
322
- }
323
-
324
- .react-datepicker-popper {
325
- z-index: 999 !important;
326
- }
327
-
328
- .react-datepicker__close-icon:after {
329
- background-color: rgba(var(--primary-color-rgb), 0.45) !important;
330
- font-size: 13px !important;
331
- }
332
-
333
- .react-datepicker__close-icon:hover:after {
334
- background-color: rgba(var(--primary-color-rgb), 1) !important;
335
- }
336
-
337
- /* Custom Select */
338
- select {
339
- background: url(data:image/svg+xml;base64,PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0Ljk1IDEwIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6I2ZmZjt9LmNscy0ye2ZpbGw6IzQ0NDt9PC9zdHlsZT48L2RlZnM+PHRpdGxlPmFycm93czwvdGl0bGU+PHJlY3QgY2xhc3M9ImNscy0xIiB3aWR0aD0iNC45NSIgaGVpZ2h0PSIxMCIvPjxwb2x5Z29uIGNsYXNzPSJjbHMtMiIgcG9pbnRzPSIxLjQxIDQuNjcgMi40OCAzLjE4IDMuNTQgNC42NyAxLjQxIDQuNjciLz48cG9seWdvbiBjbGFzcz0iY2xzLTIiIHBvaW50cz0iMy41NCA1LjMzIDIuNDggNi44MiAxLjQxIDUuMzMgMy41NCA1LjMzIi8+PC9zdmc+)
340
- no-repeat 100% 50% #fff;
341
- -moz-appearance: none;
342
- -webkit-appearance: none;
343
- appearance: none;
344
- }
345
-
346
- /* Breaker */
347
- .formbreak {
348
- display: block;
173
+ border: 1px solid transparent;
174
+ box-shadow: var(--box-shadow-small);
175
+ padding: 1rem;
176
+ outline: none;
349
177
  width: 100%;
350
- padding: 0.5em 1em;
351
- background: rgba(var(--primary-color-rgb), 0.95);
352
- border-radius: 3px;
353
178
  box-sizing: border-box;
354
- border: 1px solid rgba(var(--primary-color-rgb), 1.1);
355
- }
356
-
357
- .formbreak span {
358
- font-size: 0.95em;
359
- color: var(--highlight-color);
360
- }
361
-
362
- /* File Drag/Drop Upload */
363
- .dropzone__container > div {
364
- flex: 1 1 0%;
365
- display: flex;
366
- flex-direction: column;
367
- align-items: center;
368
- padding: 30px;
369
- border-width: 2px;
370
- border-radius: 2px;
371
- border-color: rgb(238, 238, 238);
372
- border-style: dashed;
373
- background-color: rgb(250, 250, 250);
374
- color: rgb(189, 189, 189);
375
- outline: currentcolor none medium;
376
- transition: border 0.24s ease-in-out 0s;
377
- margin: 1em;
378
- }
179
+ background: rgba(white, 0.5);
180
+ color: var(--paragraph-color);
181
+ transition: box-shadow 0.15s linear;
182
+ font-size: 1.25em;
379
183
 
380
- .dropzone__container p {
381
- padding: 0;
382
- margin: 0;
184
+ &:focus,
185
+ &:hover {
186
+ border: 1px solid var(--primary-color);
187
+ }
383
188
  }
384
189
 
385
- .dropzone__files {
386
- list-style: none;
387
- padding: 0;
388
- margin: 1em;
389
- box-sizing: border-box;
390
- }
190
+ // Modal
391
191
 
392
- .dropzone__files li {
393
- width: 100%;
394
- display: block;
395
- background: rgba(var(--tertiary-color-rgb), 1.05);
396
- color: var(--primary-color);
397
- border-radius: 3px;
398
- transition: background 0.25s cubic-bezier(0.25, 0.8, 0.25, 1);
399
- outline: none;
400
- cursor: pointer;
192
+ .modalwrap {
193
+ background: var(--tertiary-color);
401
194
  border-radius: 3px;
402
- padding: 1em 2em;
403
- box-sizing: border-box;
404
- position: relative;
405
- margin-bottom: 5px;
406
- }
407
-
408
- .dropzone__files li:hover {
409
- background: rgba(var(--secondary-color-rgb), 0.65);
410
- }
411
-
412
- .dropzone__files li i {
413
- position: relative;
414
- top: 0;
415
- right: 5px;
416
- color: rgba(var(--secondary-color-rgb), 1.15);
195
+ overflow: visible;
196
+ border-top-left-radius: var(--br);
197
+ border-top-right-radius: var(--br);
417
198
  }
418
199
 
419
- .dropzone__files li button {
200
+ .modal {
201
+ width: 100%;
420
202
  position: relative;
421
- float: right;
422
- background: none;
423
- outline: none;
424
- border: none;
425
- z-index: 200;
426
- cursor: pointer;
427
203
  }
428
204
 
429
- .dropzone__files li button i {
430
- font-size: 1.15em;
431
- color: var(--primary-color);
432
- line-height: 1;
433
- }
434
-
435
- /* Rich Text Editor */
436
- .ql-container {
437
- height: 300px !important;
438
- }
439
-
440
- /* Multiselect */
441
- .visns__ms input:hover {
442
- box-shadow: none !important;
443
- transition: box-shadow 0.15s linear !important;
205
+ .modal__header {
206
+ width: 100%;
207
+ border-bottom: 1px solid rgba(var(--primary-rgb), 0.15);
208
+ display: flex;
209
+ align-items: center;
210
+ justify-content: space-between;
211
+ padding: 0.75rem;
212
+
213
+ h1 {
214
+ color: var(--secondary-color);
215
+ margin: 0;
216
+ padding: 0;
217
+ font-size: 1.15em;
218
+ }
444
219
  }
445
220
 
446
- .visns__ms input:focus {
447
- box-shadow: none !important;
448
- }
449
221
 
450
- .btn {
222
+ .modal__close {
451
223
  width: max-content;
452
- display: inline-block;
453
- position: relative;
454
- padding: 0.65rem 1rem;
224
+ background: rgba(var(--paragraph-rgb), .05);
455
225
  cursor: pointer;
456
- font-size: 1rem;
457
- color: var(--tertiary-color);
458
- text-decoration: none;
459
- overflow: hidden;
460
- background: var(--primary-color);
461
- border: 1px solid rgba(var(--primary-color--rgb), 1.1);
462
- border-radius: var(--br);
226
+ padding: .25rem;
227
+ margin: 0;
463
228
  outline: none;
464
- transition: all 0.2s cubic-bezier(0.85, 0, 0.15, 1) 0s;
465
- font-size: 1.25em;
466
- }
229
+ border: none;
230
+ border-radius: var(--br);
231
+ display: block;
232
+ line-height: 1;
467
233
 
468
- .btn:hover {
469
- color: var(--primary-color);
470
- background: var(--highlight-color);
471
- border: 1px solid rgba(var(--highlight-color-rgb), 1.05);
234
+ svg {
235
+ color: var(--primary-color);
236
+ display: block;
237
+ }
472
238
  }
473
239
 
474
- .grid__full {
240
+ .modal__content {
475
241
  width: 100%;
476
- background: var(--item-color);
477
- border-radius: var(--br);
478
- border: 1px solid rgba(var(--item-color-rgb), 1.15);
479
- box-sizing: border-box;
480
- overflow: visible;
481
242
  position: relative;
482
- padding: 2px;
483
- margin: 8px 0;
484
- box-shadow: 0 4px 0 rgba(var(--primary-color-rgb), 0.05);
485
- }
486
-
487
- .polActions {
488
- position: fixed;
489
- bottom: 15px;
490
- right: 20px;
491
- width: auto;
492
- }
243
+ padding: 0.75rem;
244
+ max-height: 80vh;
245
+ // overflow-y: auto;
246
+
247
+ .btn {
248
+ background: var(--primary-color);
249
+ border: 1px solid rgb(var(--primary-color-rgb), 1.05);
250
+ width: 100%;
251
+ padding: 0.75rem;
252
+ border-radius: var(--br);
253
+ color: var(--bg-color);
254
+
255
+ &:hover {
256
+ background: var(--secondary-color);
257
+ color: var(--tertiary-color);
258
+ }
259
+ }
493
260
 
494
- .polActions button {
495
- display: block;
496
- float: left;
497
- padding: 0.35em 1em;
498
- margin: 0 0.15em;
499
- }
261
+ .lastItem {
262
+ .btn {
263
+ width: 100%;
264
+ padding: 0.75rem;
265
+ border-radius: var(--br);
266
+ }
267
+ }
268
+ }