@nice2dev/ui-erp 1.2.0 → 1.2.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.
package/dist/ui-erp.css CHANGED
@@ -34,45 +34,17 @@
34
34
  }
35
35
 
36
36
  /* =============================================================================
37
- GANTT CHART
37
+ TOOLBAR CONTROLS (resource allocation, inventory)
38
38
  ============================================================================= */
39
39
 
40
- .nice-gantt-chart {
41
- display: flex;
42
- flex-direction: column;
43
- height: 100%;
44
- min-height: 500px;
45
- background: var(--erp-bg);
46
- color: var(--erp-text);
47
- font-family:
48
- system-ui,
49
- -apple-system,
50
- sans-serif;
51
- }
52
-
53
- .gantt__toolbar {
54
- display: flex;
55
- justify-content: space-between;
56
- align-items: center;
57
- padding: var(--nice-space-3, 12px) var(--nice-space-5, 20px);
58
- background: var(--erp-surface);
59
- border-bottom: 1px solid var(--erp-border);
60
- }
61
-
62
- .gantt__toolbar h2 {
63
- margin: 0;
64
- font-size: 1.125rem;
65
- font-weight: 600;
66
- }
67
-
68
- .time-unit-selector,
69
- .view-selector {
40
+ .nice-resource-allocation__time-unit-selector,
41
+ .nice-inventory-manager__view-selector {
70
42
  display: flex;
71
43
  gap: var(--nice-space-1, 4px);
72
44
  }
73
45
 
74
- .unit-button,
75
- .view-button {
46
+ .nice-resource-allocation__unit-button,
47
+ .nice-inventory-manager__view-button {
76
48
  padding: var(--nice-space-1-5, 6px) var(--nice-space-3, 12px);
77
49
  border: 1px solid var(--erp-border);
78
50
  background: transparent;
@@ -82,20 +54,19 @@
82
54
  transition: all var(--erp-transition);
83
55
  }
84
56
 
85
- .unit-button:hover,
86
- .view-button:hover {
57
+ .nice-resource-allocation__unit-button:hover,
58
+ .nice-inventory-manager__view-button:hover {
87
59
  background: var(--erp-surface-alt);
88
60
  }
89
61
 
90
- .unit-button--active,
91
- .view-button--active {
62
+ .nice-resource-allocation__unit-button--active,
63
+ .nice-inventory-manager__view-button--active {
92
64
  background: var(--erp-primary);
93
65
  border-color: var(--erp-primary);
94
66
  color: white;
95
67
  }
96
68
 
97
- .add-task-button,
98
- .add-button {
69
+ .nice-inventory-manager__add-button {
99
70
  padding: var(--nice-space-2, 8px) var(--nice-space-4, 16px);
100
71
  border: none;
101
72
  background: var(--erp-primary);
@@ -107,300 +78,17 @@
107
78
  transition: all var(--erp-transition);
108
79
  }
109
80
 
110
- .add-task-button:hover,
111
- .add-button:hover {
81
+ .nice-inventory-manager__add-button:hover {
112
82
  background: var(--erp-primary-dark);
113
83
  }
114
84
 
115
- .gantt__container {
116
- display: flex;
117
- flex: 1;
118
- overflow: hidden;
119
- }
120
-
121
- /* Task List */
122
- .gantt__task-list {
123
- width: 350px;
124
- flex-shrink: 0;
125
- display: flex;
126
- flex-direction: column;
127
- border-right: 1px solid var(--erp-border);
128
- background: var(--erp-surface);
129
- }
130
-
131
- .task-list__header {
132
- display: flex;
133
- align-items: center;
134
- padding: var(--nice-space-3, 12px);
135
- background: var(--erp-surface-alt);
136
- border-bottom: 1px solid var(--erp-border);
137
- font-size: 0.75rem;
138
- font-weight: 600;
139
- color: var(--erp-text-muted);
140
- }
141
-
142
- .col-name {
143
- flex: 1;
144
- }
145
- .col-dates {
146
- width: 100px;
147
- text-align: center;
148
- }
149
- .col-progress {
150
- width: 60px;
151
- text-align: right;
152
- }
153
-
154
- .task-list__body {
155
- flex: 1;
156
- overflow-y: auto;
157
- }
158
-
159
- .task-row {
160
- display: flex;
161
- align-items: center;
162
- gap: var(--nice-space-2, 8px);
163
- padding: var(--nice-space-2, 8px) var(--nice-space-3, 12px);
164
- border-bottom: 1px solid var(--erp-border);
165
- cursor: pointer;
166
- transition: background var(--erp-transition);
167
- }
168
-
169
- .task-row:hover {
170
- background: var(--erp-surface-alt);
171
- }
172
-
173
- .task-row--selected {
174
- background: var(--nice-accent-tint-10, rgba(99, 102, 241, 0.1));
175
- }
176
-
177
- .collapse-button {
178
- width: 20px;
179
- height: 20px;
180
- border: none;
181
- background: transparent;
182
- color: var(--erp-text-muted);
183
- cursor: pointer;
184
- font-size: 0.75rem;
185
- }
186
-
187
- .task-icon {
188
- width: 10px;
189
- height: 10px;
190
- border-radius: var(--nice-radius-full, 50%);
191
- flex-shrink: 0;
192
- }
193
-
194
- .milestone-icon {
195
- color: var(--erp-warning);
196
- font-size: 0.75rem;
197
- }
198
-
199
- .task-name {
200
- flex: 1;
201
- font-size: 0.875rem;
202
- white-space: nowrap;
203
- overflow: hidden;
204
- text-overflow: ellipsis;
205
- }
206
-
207
- .task-dates {
208
- width: 100px;
209
- font-size: 0.75rem;
210
- color: var(--erp-text-muted);
211
- text-align: center;
212
- }
213
-
214
- .task-progress {
215
- width: 60px;
216
- font-size: 0.75rem;
217
- color: var(--erp-text-muted);
218
- text-align: right;
219
- }
220
-
221
- /* Timeline */
222
- .gantt__timeline {
223
- flex: 1;
224
- display: flex;
225
- flex-direction: column;
226
- overflow: auto;
227
- }
228
-
229
- .timeline__header {
230
- display: flex;
231
- position: sticky;
232
- top: 0;
233
- z-index: 10;
234
- background: var(--erp-surface-alt);
235
- border-bottom: 1px solid var(--erp-border);
236
- }
237
-
238
- .time-column {
239
- flex-shrink: 0;
240
- padding: var(--nice-space-3, 12px) var(--nice-space-1, 4px);
241
- text-align: center;
242
- font-size: 0.75rem;
243
- color: var(--erp-text-muted);
244
- border-right: 1px solid var(--erp-border);
245
- }
246
-
247
- .timeline__body {
248
- position: relative;
249
- flex: 1;
250
- }
251
-
252
- .grid-lines {
253
- position: absolute;
254
- top: 0;
255
- left: 0;
256
- right: 0;
257
- bottom: 0;
258
- pointer-events: none;
259
- }
260
-
261
- .grid-line {
262
- position: absolute;
263
- top: 0;
264
- bottom: 0;
265
- width: 1px;
266
- background: var(--erp-border);
267
- opacity: 0.3;
268
- }
269
-
270
- .today-marker {
271
- position: absolute;
272
- top: 0;
273
- bottom: 0;
274
- width: 2px;
275
- background: var(--erp-error);
276
- z-index: 5;
277
- }
278
-
279
- .today-label {
280
- position: absolute;
281
- top: -24px;
282
- left: 50%;
283
- transform: translateX(-50%);
284
- padding: var(--nice-space-0-5, 2px) var(--nice-space-1-5, 6px);
285
- background: var(--erp-error);
286
- color: white;
287
- font-size: 0.625rem;
288
- border-radius: var(--nice-radius-sm, 2px);
289
- white-space: nowrap;
290
- }
291
-
292
- .task-bar-row {
293
- position: absolute;
294
- left: 0;
295
- right: 0;
296
- }
297
-
298
- .task-bar {
299
- position: absolute;
300
- height: 24px;
301
- top: 50%;
302
- transform: translateY(-50%);
303
- border-radius: var(--erp-radius-sm);
304
- cursor: grab;
305
- transition: box-shadow var(--erp-transition);
306
- overflow: hidden;
307
- }
308
-
309
- .task-bar:hover {
310
- box-shadow: 0 0 0 2px var(--nice-overlay-light-30, rgba(255, 255, 255, 0.3));
311
- }
312
-
313
- .task-bar--dragging {
314
- cursor: grabbing;
315
- opacity: 0.8;
316
- }
317
-
318
- .task-bar--milestone {
319
- display: flex;
320
- align-items: center;
321
- justify-content: center;
322
- background: transparent !important;
323
- }
324
-
325
- .milestone-diamond {
326
- width: 16px;
327
- height: 16px;
328
- transform: rotate(45deg);
329
- border-radius: var(--nice-radius-sm, 2px);
330
- }
331
-
332
- .progress-fill {
333
- position: absolute;
334
- top: 0;
335
- left: 0;
336
- height: 100%;
337
- background: var(--nice-overlay-30, rgba(0, 0, 0, 0.3));
338
- pointer-events: none;
339
- }
340
-
341
- .resize-handle {
342
- position: absolute;
343
- top: 0;
344
- bottom: 0;
345
- width: 8px;
346
- cursor: ew-resize;
347
- }
348
-
349
- .resize-handle--start {
350
- left: 0;
351
- }
352
- .resize-handle--end {
353
- right: 0;
354
- }
355
-
356
- .task-bar-label {
357
- position: absolute;
358
- left: 8px;
359
- top: 50%;
360
- transform: translateY(-50%);
361
- font-size: 0.75rem;
362
- color: white;
363
- white-space: nowrap;
364
- text-shadow: 0 1px 2px var(--nice-overlay-50, rgba(0, 0, 0, 0.5));
365
- }
366
-
367
- .task-tooltip {
368
- position: absolute;
369
- bottom: 100%;
370
- left: 50%;
371
- transform: translateX(-50%);
372
- padding: var(--nice-space-2, 8px) var(--nice-space-3, 12px);
373
- background: var(--erp-surface);
374
- border: 1px solid var(--erp-border);
375
- border-radius: var(--erp-radius);
376
- box-shadow: var(--erp-shadow);
377
- z-index: 100;
378
- white-space: nowrap;
379
- pointer-events: none;
380
- }
381
-
382
- .tooltip-dates,
383
- .tooltip-progress,
384
- .tooltip-assignees {
385
- font-size: 0.75rem;
386
- color: var(--erp-text-muted);
387
- margin-top: var(--nice-space-1, 4px);
388
- }
389
-
390
- .dependencies-layer {
391
- position: absolute;
392
- top: 0;
393
- left: 0;
394
- width: 100%;
395
- height: 100%;
396
- pointer-events: none;
397
- }
398
-
399
85
  /* =============================================================================
400
86
  RESOURCE ALLOCATION
401
87
  ============================================================================= */
402
88
 
403
89
  .nice-resource-allocation {
90
+ /* the resource column; the expanded allocations line up past it */
91
+ --nice-resource-allocation-cell-width: 280px;
404
92
  display: flex;
405
93
  flex-direction: column;
406
94
  height: 100%;
@@ -413,7 +101,7 @@
413
101
  sans-serif;
414
102
  }
415
103
 
416
- .allocation__toolbar {
104
+ .nice-resource-allocation__toolbar {
417
105
  display: flex;
418
106
  justify-content: space-between;
419
107
  align-items: center;
@@ -422,19 +110,19 @@
422
110
  border-bottom: 1px solid var(--erp-border);
423
111
  }
424
112
 
425
- .allocation__toolbar h2 {
113
+ .nice-resource-allocation__toolbar h2 {
426
114
  margin: 0;
427
115
  font-size: 1.125rem;
428
116
  font-weight: 600;
429
117
  }
430
118
 
431
- .date-range {
119
+ .nice-resource-allocation__date-range {
432
120
  margin-left: var(--nice-space-4, 16px);
433
121
  font-size: 0.875rem;
434
122
  color: var(--erp-text-muted);
435
123
  }
436
124
 
437
- .conflicts-badge {
125
+ .nice-resource-allocation__conflicts-badge {
438
126
  display: flex;
439
127
  align-items: center;
440
128
  gap: var(--nice-space-1-5, 6px);
@@ -446,7 +134,7 @@
446
134
  font-size: 0.875rem;
447
135
  }
448
136
 
449
- .allocation__legend {
137
+ .nice-resource-allocation__legend {
450
138
  display: flex;
451
139
  gap: var(--nice-space-5, 20px);
452
140
  padding: var(--nice-space-2, 8px) var(--nice-space-5, 20px);
@@ -456,26 +144,26 @@
456
144
  color: var(--erp-text-muted);
457
145
  }
458
146
 
459
- .legend-item {
147
+ .nice-resource-allocation__legend-item {
460
148
  display: flex;
461
149
  align-items: center;
462
150
  gap: var(--nice-space-1-5, 6px);
463
151
  }
464
152
 
465
- .legend-color {
153
+ .nice-resource-allocation__legend-color {
466
154
  width: 16px;
467
155
  height: 16px;
468
156
  border-radius: var(--nice-radius-sm, 2px);
469
157
  }
470
158
 
471
- .allocation__grid {
159
+ .nice-resource-allocation__grid {
472
160
  flex: 1;
473
161
  display: flex;
474
162
  flex-direction: column;
475
163
  overflow: auto;
476
164
  }
477
165
 
478
- .grid__header {
166
+ .nice-resource-allocation__grid-header {
479
167
  display: flex;
480
168
  position: sticky;
481
169
  top: 0;
@@ -484,7 +172,7 @@
484
172
  border-bottom: 1px solid var(--erp-border);
485
173
  }
486
174
 
487
- .resource-header {
175
+ .nice-resource-allocation__resource-header {
488
176
  width: 280px;
489
177
  flex-shrink: 0;
490
178
  padding: var(--nice-space-3, 12px) var(--nice-space-4, 16px);
@@ -495,12 +183,12 @@
495
183
  border-right: 1px solid var(--erp-border);
496
184
  }
497
185
 
498
- .time-headers {
186
+ .nice-resource-allocation__time-headers {
499
187
  display: flex;
500
188
  flex: 1;
501
189
  }
502
190
 
503
- .time-header {
191
+ .nice-resource-allocation__time-header {
504
192
  min-width: 80px;
505
193
  padding: var(--nice-space-3, 12px) var(--nice-space-2, 8px);
506
194
  text-align: center;
@@ -509,18 +197,18 @@
509
197
  border-right: 1px solid var(--erp-border);
510
198
  }
511
199
 
512
- .grid__body {
200
+ .nice-resource-allocation__grid-body {
513
201
  flex: 1;
514
202
  }
515
203
 
516
- .resource-row {
204
+ .nice-resource-allocation__resource-row {
517
205
  display: flex;
518
206
  flex-wrap: wrap;
519
207
  border-bottom: 1px solid var(--erp-border);
520
208
  }
521
209
 
522
- .resource-cell {
523
- width: 280px;
210
+ .nice-resource-allocation__resource-cell {
211
+ width: var(--nice-resource-allocation-cell-width, 280px);
524
212
  flex-shrink: 0;
525
213
  display: flex;
526
214
  align-items: center;
@@ -531,11 +219,11 @@
531
219
  cursor: pointer;
532
220
  }
533
221
 
534
- .resource-cell:hover {
222
+ .nice-resource-allocation__resource-cell:hover {
535
223
  background: var(--erp-surface-alt);
536
224
  }
537
225
 
538
- .expand-button {
226
+ .nice-resource-allocation__expand-button {
539
227
  width: 20px;
540
228
  height: 20px;
541
229
  border: none;
@@ -544,18 +232,18 @@
544
232
  cursor: pointer;
545
233
  }
546
234
 
547
- .resource-icon {
235
+ .nice-resource-allocation__resource-icon {
548
236
  font-size: 1.25rem;
549
237
  }
550
238
 
551
- .resource-info {
239
+ .nice-resource-allocation__resource-info {
552
240
  flex: 1;
553
241
  display: flex;
554
242
  flex-direction: column;
555
243
  min-width: 0;
556
244
  }
557
245
 
558
- .resource-name {
246
+ .nice-resource-allocation__resource-name {
559
247
  font-size: 0.875rem;
560
248
  font-weight: 500;
561
249
  white-space: nowrap;
@@ -563,22 +251,22 @@
563
251
  text-overflow: ellipsis;
564
252
  }
565
253
 
566
- .resource-dept {
254
+ .nice-resource-allocation__resource-dept {
567
255
  font-size: 0.75rem;
568
256
  color: var(--erp-text-muted);
569
257
  }
570
258
 
571
- .resource-capacity {
259
+ .nice-resource-allocation__resource-capacity {
572
260
  font-size: 0.75rem;
573
261
  color: var(--erp-text-muted);
574
262
  }
575
263
 
576
- .time-cells {
264
+ .nice-resource-allocation__time-cells {
577
265
  display: flex;
578
266
  flex: 1;
579
267
  }
580
268
 
581
- .time-cell {
269
+ .nice-resource-allocation__time-cell {
582
270
  min-width: 80px;
583
271
  padding: var(--nice-space-2, 8px);
584
272
  border-right: 1px solid var(--erp-border);
@@ -592,16 +280,16 @@
592
280
  gap: var(--nice-space-1, 4px);
593
281
  }
594
282
 
595
- .time-cell:hover {
283
+ .nice-resource-allocation__time-cell:hover {
596
284
  background-color: var(--nice-accent-tint-10, rgba(99, 102, 241, 0.1)) !important;
597
285
  }
598
286
 
599
- .allocation-indicators {
287
+ .nice-resource-allocation__allocation-indicators {
600
288
  display: flex;
601
289
  gap: var(--nice-space-0-5, 2px);
602
290
  }
603
291
 
604
- .allocation-dot {
292
+ .nice-resource-allocation__allocation-dot {
605
293
  width: 8px;
606
294
  height: 8px;
607
295
  border-radius: var(--nice-radius-full, 50%);
@@ -609,33 +297,34 @@
609
297
  cursor: pointer;
610
298
  }
611
299
 
612
- .allocation-dot.tentative {
300
+ .nice-resource-allocation__allocation-dot.nice-resource-allocation__allocation-dot--tentative {
613
301
  background: var(--erp-warning);
614
302
  }
615
303
 
616
- .allocation-dot.confirmed {
304
+ .nice-resource-allocation__allocation-dot.nice-resource-allocation__allocation-dot--confirmed {
617
305
  background: var(--erp-success);
618
306
  }
619
307
 
620
- .utilization-label {
308
+ .nice-resource-allocation__utilization-label {
621
309
  font-size: 0.625rem;
622
310
  color: var(--erp-text-muted);
623
311
  }
624
312
 
625
- .more-indicator {
313
+ .nice-resource-allocation__more-indicator {
626
314
  font-size: 0.625rem;
627
315
  color: var(--erp-text-muted);
628
316
  }
629
317
 
630
- .expanded-allocations {
318
+ .nice-resource-allocation__expanded-allocations {
631
319
  width: 100%;
632
- padding: var(--nice-space-2, 8px) var(--nice-space-2, 8px) var(--nice-space-2, 8px) 288px;
320
+ padding: var(--nice-space-2, 8px) var(--nice-space-2, 8px) var(--nice-space-2, 8px)
321
+ calc(var(--nice-resource-allocation-cell-width, 280px) + var(--nice-space-2, 8px));
633
322
  position: relative;
634
323
  height: 40px;
635
324
  background: var(--erp-surface);
636
325
  }
637
326
 
638
- .allocation-bar {
327
+ .nice-resource-allocation__allocation-bar {
639
328
  position: absolute;
640
329
  height: 24px;
641
330
  top: 8px;
@@ -648,25 +337,25 @@
648
337
  transition: all var(--erp-transition);
649
338
  }
650
339
 
651
- .allocation-bar.tentative {
340
+ .nice-resource-allocation__allocation-bar.nice-resource-allocation__allocation-bar--tentative {
652
341
  background: var(--erp-warning);
653
342
  }
654
343
 
655
- .allocation-bar.confirmed {
344
+ .nice-resource-allocation__allocation-bar.nice-resource-allocation__allocation-bar--confirmed {
656
345
  background: var(--erp-success);
657
346
  }
658
347
 
659
- .allocation-bar.selected {
348
+ .nice-resource-allocation__allocation-bar.nice-resource-allocation__allocation-bar--selected {
660
349
  box-shadow: 0 0 0 2px white;
661
350
  }
662
351
 
663
- .allocation-label {
352
+ .nice-resource-allocation__allocation-label {
664
353
  font-size: 0.75rem;
665
354
  color: white;
666
355
  white-space: nowrap;
667
356
  }
668
357
 
669
- .delete-allocation {
358
+ .nice-resource-allocation__delete-allocation {
670
359
  margin-left: auto;
671
360
  padding: 0 var(--nice-space-1, 4px);
672
361
  border: none;
@@ -675,7 +364,7 @@
675
364
  cursor: pointer;
676
365
  }
677
366
 
678
- .delete-allocation:hover {
367
+ .nice-resource-allocation__delete-allocation:hover {
679
368
  color: white;
680
369
  }
681
370
 
@@ -696,7 +385,7 @@
696
385
  sans-serif;
697
386
  }
698
387
 
699
- .inventory__toolbar {
388
+ .nice-inventory-manager__toolbar {
700
389
  display: flex;
701
390
  justify-content: space-between;
702
391
  align-items: center;
@@ -707,24 +396,26 @@
707
396
  flex-wrap: wrap;
708
397
  }
709
398
 
710
- .toolbar__left {
399
+ .nice-resource-allocation__toolbar-left,
400
+ .nice-inventory-manager__toolbar-left {
711
401
  display: flex;
712
402
  align-items: center;
713
403
  gap: var(--nice-space-3, 12px);
714
404
  flex-wrap: wrap;
715
405
  }
716
406
 
717
- .toolbar__right {
407
+ .nice-resource-allocation__toolbar-right,
408
+ .nice-inventory-manager__toolbar-right {
718
409
  display: flex;
719
410
  align-items: center;
720
411
  gap: var(--nice-space-3, 12px);
721
412
  }
722
413
 
723
- .search-box {
414
+ .nice-inventory-manager__search-box {
724
415
  position: relative;
725
416
  }
726
417
 
727
- .search-box input {
418
+ .nice-inventory-manager__search-box input {
728
419
  width: 240px;
729
420
  padding: var(--nice-space-2, 8px) var(--nice-space-3, 12px) var(--nice-space-2, 8px) 36px;
730
421
  border: 1px solid var(--erp-border);
@@ -734,19 +425,20 @@
734
425
  font-size: 0.875rem;
735
426
  }
736
427
 
737
- .search-box input:focus {
428
+ .nice-inventory-manager__search-box input:focus {
738
429
  outline: none;
739
430
  border-color: var(--erp-primary);
740
431
  }
741
432
 
742
- .search-icon {
433
+ .nice-inventory-manager__search-icon {
743
434
  position: absolute;
744
435
  left: 10px;
745
436
  top: 50%;
746
437
  transform: translateY(-50%);
747
438
  }
748
439
 
749
- .toolbar__left select {
440
+ .nice-resource-allocation__toolbar-left select,
441
+ .nice-inventory-manager__toolbar-left select {
750
442
  padding: var(--nice-space-2, 8px) var(--nice-space-3, 12px);
751
443
  border: 1px solid var(--erp-border);
752
444
  border-radius: var(--erp-radius);
@@ -755,7 +447,7 @@
755
447
  font-size: 0.875rem;
756
448
  }
757
449
 
758
- .filter-checkbox {
450
+ .nice-inventory-manager__filter-checkbox {
759
451
  display: flex;
760
452
  align-items: center;
761
453
  gap: var(--nice-space-1-5, 6px);
@@ -764,7 +456,7 @@
764
456
  cursor: pointer;
765
457
  }
766
458
 
767
- .inventory__tabs {
459
+ .nice-inventory-manager__tabs {
768
460
  display: flex;
769
461
  gap: 0;
770
462
  background: var(--erp-surface);
@@ -772,7 +464,7 @@
772
464
  padding: 0 var(--nice-space-5, 20px);
773
465
  }
774
466
 
775
- .tab {
467
+ .nice-inventory-manager__tab {
776
468
  padding: var(--nice-space-3, 12px) var(--nice-space-5, 20px);
777
469
  border: none;
778
470
  background: transparent;
@@ -783,15 +475,15 @@
783
475
  transition: all var(--erp-transition);
784
476
  }
785
477
 
786
- .tab:hover {
478
+ .nice-inventory-manager__tab:hover {
787
479
  color: var(--erp-text);
788
480
  }
789
481
 
790
- .tab--active {
482
+ .nice-inventory-manager__tab--active {
791
483
  color: var(--erp-primary);
792
484
  }
793
485
 
794
- .tab--active::after {
486
+ .nice-inventory-manager__tab--active::after {
795
487
  content: '';
796
488
  position: absolute;
797
489
  bottom: 0;
@@ -801,7 +493,7 @@
801
493
  background: var(--erp-primary);
802
494
  }
803
495
 
804
- .alert-badge {
496
+ .nice-inventory-manager__alert-badge {
805
497
  display: inline-flex;
806
498
  align-items: center;
807
499
  justify-content: center;
@@ -816,20 +508,20 @@
816
508
  border-radius: var(--nice-radius-full, 99px);
817
509
  }
818
510
 
819
- .inventory__content {
511
+ .nice-inventory-manager__content {
820
512
  flex: 1;
821
513
  padding: var(--nice-space-5, 20px);
822
514
  overflow: auto;
823
515
  }
824
516
 
825
517
  /* Grid View */
826
- .items-grid {
518
+ .nice-inventory-manager__items-grid {
827
519
  display: grid;
828
520
  grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
829
521
  gap: var(--nice-space-4, 16px);
830
522
  }
831
523
 
832
- .item-card {
524
+ .nice-inventory-manager__item-card {
833
525
  background: var(--erp-surface);
834
526
  border-radius: var(--erp-radius);
835
527
  overflow: hidden;
@@ -838,23 +530,23 @@
838
530
  position: relative;
839
531
  }
840
532
 
841
- .item-card:hover {
533
+ .nice-inventory-manager__item-card:hover {
842
534
  transform: translateY(-2px);
843
535
  box-shadow: var(--erp-shadow);
844
536
  }
845
537
 
846
- .item-card--selected {
538
+ .nice-inventory-manager__item-card--selected {
847
539
  ring: 2px solid var(--erp-primary);
848
540
  }
849
541
 
850
- .item-checkbox {
542
+ .nice-inventory-manager__item-checkbox {
851
543
  position: absolute;
852
544
  top: 12px;
853
545
  left: 12px;
854
546
  z-index: 10;
855
547
  }
856
548
 
857
- .item-image {
549
+ .nice-inventory-manager__item-image {
858
550
  height: 120px;
859
551
  display: flex;
860
552
  align-items: center;
@@ -862,37 +554,37 @@
862
554
  background: var(--erp-surface-alt);
863
555
  }
864
556
 
865
- .item-image img {
557
+ .nice-inventory-manager__item-image img {
866
558
  width: 100%;
867
559
  height: 100%;
868
560
  object-fit: cover;
869
561
  }
870
562
 
871
- .placeholder-image {
563
+ .nice-inventory-manager__placeholder-image {
872
564
  font-size: 2rem;
873
565
  }
874
566
 
875
- .item-info {
567
+ .nice-inventory-manager__item-info {
876
568
  padding: var(--nice-space-3, 12px);
877
569
  }
878
570
 
879
- .item-sku {
571
+ .nice-inventory-manager__item-sku {
880
572
  font-size: 0.75rem;
881
573
  color: var(--erp-text-muted);
882
574
  }
883
575
 
884
- .item-name {
576
+ .nice-inventory-manager__item-name {
885
577
  margin: var(--nice-space-1, 4px) 0;
886
578
  font-size: 0.875rem;
887
579
  font-weight: 500;
888
580
  }
889
581
 
890
- .item-category {
582
+ .nice-inventory-manager__item-category {
891
583
  font-size: 0.75rem;
892
584
  color: var(--erp-text-muted);
893
585
  }
894
586
 
895
- .item-stock {
587
+ .nice-inventory-manager__item-stock {
896
588
  display: flex;
897
589
  align-items: center;
898
590
  gap: var(--nice-space-2, 8px);
@@ -900,7 +592,7 @@
900
592
  border-top: 1px solid var(--erp-border);
901
593
  }
902
594
 
903
- .status-badge {
595
+ .nice-inventory-manager__status-badge {
904
596
  padding: var(--nice-space-0-5, 2px) var(--nice-space-2, 8px);
905
597
  border-radius: var(--erp-radius-sm);
906
598
  font-size: 0.625rem;
@@ -909,17 +601,17 @@
909
601
  text-transform: capitalize;
910
602
  }
911
603
 
912
- .quantity {
604
+ .nice-inventory-manager__quantity {
913
605
  font-size: 0.875rem;
914
606
  font-weight: 500;
915
607
  }
916
608
 
917
- .reorder-alert {
609
+ .nice-inventory-manager__reorder-alert {
918
610
  font-size: 0.75rem;
919
611
  color: var(--erp-warning);
920
612
  }
921
613
 
922
- .item-value {
614
+ .nice-inventory-manager__item-value {
923
615
  padding: var(--nice-space-2, 8px) var(--nice-space-3, 12px);
924
616
  border-top: 1px solid var(--erp-border);
925
617
  font-size: 0.875rem;
@@ -928,18 +620,18 @@
928
620
  }
929
621
 
930
622
  /* List View */
931
- .items-table {
623
+ .nice-inventory-manager__items-table {
932
624
  background: var(--erp-surface);
933
625
  border-radius: var(--erp-radius);
934
626
  overflow: hidden;
935
627
  }
936
628
 
937
- .items-table table {
629
+ .nice-inventory-manager__items-table table {
938
630
  width: 100%;
939
631
  border-collapse: collapse;
940
632
  }
941
633
 
942
- .items-table th {
634
+ .nice-inventory-manager__items-table th {
943
635
  padding: var(--nice-space-3, 12px);
944
636
  text-align: left;
945
637
  font-size: 0.75rem;
@@ -950,39 +642,39 @@
950
642
  cursor: pointer;
951
643
  }
952
644
 
953
- .items-table th:hover {
645
+ .nice-inventory-manager__items-table th:hover {
954
646
  color: var(--erp-text);
955
647
  }
956
648
 
957
- .items-table td {
649
+ .nice-inventory-manager__items-table td {
958
650
  padding: var(--nice-space-3, 12px);
959
651
  font-size: 0.875rem;
960
652
  border-bottom: 1px solid var(--erp-border);
961
653
  }
962
654
 
963
- .items-table tr:hover {
655
+ .nice-inventory-manager__items-table tr:hover {
964
656
  background: var(--erp-surface-alt);
965
657
  }
966
658
 
967
- .row--selected {
659
+ .nice-inventory-manager__row--selected {
968
660
  background: var(--nice-accent-tint-10, rgba(99, 102, 241, 0.1));
969
661
  }
970
662
 
971
- .sku-cell {
663
+ .nice-inventory-manager__sku-cell {
972
664
  font-family: monospace;
973
665
  color: var(--erp-text-muted);
974
666
  }
975
667
 
976
- .low-stock {
668
+ .nice-inventory-manager__qty-cell--low-stock {
977
669
  color: var(--erp-warning);
978
670
  }
979
671
 
980
- .actions-cell {
672
+ .nice-inventory-manager__actions-cell {
981
673
  display: flex;
982
674
  gap: var(--nice-space-1, 4px);
983
675
  }
984
676
 
985
- .action-btn {
677
+ .nice-inventory-manager__action-btn {
986
678
  padding: var(--nice-space-1, 4px) var(--nice-space-2, 8px);
987
679
  border: none;
988
680
  background: transparent;
@@ -991,23 +683,23 @@
991
683
  transition: background var(--erp-transition);
992
684
  }
993
685
 
994
- .action-btn:hover {
686
+ .nice-inventory-manager__action-btn:hover {
995
687
  background: var(--erp-surface-alt);
996
688
  }
997
689
 
998
- .action-btn--danger:hover {
690
+ .nice-inventory-manager__action-btn--danger:hover {
999
691
  background: var(--nice-danger-tint-20, rgba(239, 68, 68, 0.2));
1000
692
  }
1001
693
 
1002
694
  /* Kanban View */
1003
- .items-kanban {
695
+ .nice-inventory-manager__items-kanban {
1004
696
  display: flex;
1005
697
  gap: var(--nice-space-4, 16px);
1006
698
  overflow-x: auto;
1007
699
  padding-bottom: var(--nice-space-4, 16px);
1008
700
  }
1009
701
 
1010
- .kanban-column {
702
+ .nice-inventory-manager__kanban-column {
1011
703
  min-width: 260px;
1012
704
  max-width: 300px;
1013
705
  flex-shrink: 0;
@@ -1016,7 +708,7 @@
1016
708
  overflow: hidden;
1017
709
  }
1018
710
 
1019
- .column-header {
711
+ .nice-inventory-manager__column-header {
1020
712
  display: flex;
1021
713
  align-items: center;
1022
714
  gap: var(--nice-space-2, 8px);
@@ -1024,20 +716,20 @@
1024
716
  border-bottom: 2px solid;
1025
717
  }
1026
718
 
1027
- .status-dot {
719
+ .nice-inventory-manager__status-dot {
1028
720
  width: 10px;
1029
721
  height: 10px;
1030
722
  border-radius: var(--nice-radius-full, 50%);
1031
723
  }
1032
724
 
1033
- .column-title {
725
+ .nice-inventory-manager__column-title {
1034
726
  flex: 1;
1035
727
  font-size: 0.875rem;
1036
728
  font-weight: 600;
1037
729
  text-transform: capitalize;
1038
730
  }
1039
731
 
1040
- .column-count {
732
+ .nice-inventory-manager__column-count {
1041
733
  padding: var(--nice-space-0-5, 2px) var(--nice-space-2, 8px);
1042
734
  background: var(--erp-surface-alt);
1043
735
  border-radius: var(--nice-radius-full, 99px);
@@ -1045,13 +737,13 @@
1045
737
  color: var(--erp-text-muted);
1046
738
  }
1047
739
 
1048
- .column-items {
740
+ .nice-inventory-manager__column-items {
1049
741
  padding: var(--nice-space-2, 8px);
1050
742
  max-height: 500px;
1051
743
  overflow-y: auto;
1052
744
  }
1053
745
 
1054
- .kanban-card {
746
+ .nice-inventory-manager__kanban-card {
1055
747
  padding: var(--nice-space-3, 12px);
1056
748
  background: var(--erp-surface-alt);
1057
749
  border-radius: var(--erp-radius-sm);
@@ -1060,37 +752,37 @@
1060
752
  transition: all var(--erp-transition);
1061
753
  }
1062
754
 
1063
- .kanban-card:hover {
755
+ .nice-inventory-manager__kanban-card:hover {
1064
756
  transform: translateY(-1px);
1065
757
  box-shadow: var(--erp-shadow);
1066
758
  }
1067
759
 
1068
- .card-sku {
760
+ .nice-inventory-manager__card-sku {
1069
761
  font-size: 0.625rem;
1070
762
  color: var(--erp-text-muted);
1071
763
  font-family: monospace;
1072
764
  }
1073
765
 
1074
- .card-name {
766
+ .nice-inventory-manager__card-name {
1075
767
  display: block;
1076
768
  margin: var(--nice-space-1, 4px) 0;
1077
769
  font-size: 0.875rem;
1078
770
  font-weight: 500;
1079
771
  }
1080
772
 
1081
- .card-qty {
773
+ .nice-inventory-manager__card-qty {
1082
774
  font-size: 0.75rem;
1083
775
  color: var(--erp-text-muted);
1084
776
  }
1085
777
 
1086
778
  /* Transactions Tab */
1087
- .transactions-tab {
779
+ .nice-inventory-manager__transactions-tab {
1088
780
  display: flex;
1089
781
  flex-direction: column;
1090
782
  gap: var(--nice-space-4, 16px);
1091
783
  }
1092
784
 
1093
- .add-transaction-button {
785
+ .nice-inventory-manager__add-transaction-button {
1094
786
  align-self: flex-start;
1095
787
  padding: var(--nice-space-2, 8px) var(--nice-space-4, 16px);
1096
788
  border: none;
@@ -1100,13 +792,13 @@
1100
792
  cursor: pointer;
1101
793
  }
1102
794
 
1103
- .transactions-list {
795
+ .nice-inventory-manager__transactions-list {
1104
796
  background: var(--erp-surface);
1105
797
  border-radius: var(--erp-radius);
1106
798
  overflow: hidden;
1107
799
  }
1108
800
 
1109
- .transaction-item {
801
+ .nice-inventory-manager__transaction-item {
1110
802
  display: flex;
1111
803
  align-items: center;
1112
804
  gap: var(--nice-space-3, 12px);
@@ -1114,63 +806,63 @@
1114
806
  border-bottom: 1px solid var(--erp-border);
1115
807
  }
1116
808
 
1117
- .tx-icon {
809
+ .nice-inventory-manager__tx-icon {
1118
810
  font-size: 1.25rem;
1119
811
  }
1120
812
 
1121
- .tx-info {
813
+ .nice-inventory-manager__tx-info {
1122
814
  flex: 1;
1123
815
  display: flex;
1124
816
  flex-direction: column;
1125
817
  }
1126
818
 
1127
- .tx-type {
819
+ .nice-inventory-manager__tx-type {
1128
820
  font-size: 0.75rem;
1129
821
  color: var(--erp-text-muted);
1130
822
  text-transform: capitalize;
1131
823
  }
1132
824
 
1133
- .tx-item {
825
+ .nice-inventory-manager__tx-item {
1134
826
  font-size: 0.875rem;
1135
827
  font-weight: 500;
1136
828
  }
1137
829
 
1138
- .tx-qty {
830
+ .nice-inventory-manager__tx-qty {
1139
831
  font-size: 0.875rem;
1140
832
  font-weight: 600;
1141
833
  }
1142
834
 
1143
- .tx-qty.positive {
835
+ .nice-inventory-manager__tx-qty.nice-inventory-manager__tx-qty--positive {
1144
836
  color: var(--erp-success);
1145
837
  }
1146
838
 
1147
- .tx-qty.negative {
839
+ .nice-inventory-manager__tx-qty.nice-inventory-manager__tx-qty--negative {
1148
840
  color: var(--erp-error);
1149
841
  }
1150
842
 
1151
- .tx-date {
843
+ .nice-inventory-manager__tx-date {
1152
844
  font-size: 0.75rem;
1153
845
  color: var(--erp-text-muted);
1154
846
  }
1155
847
 
1156
- .tx-ref {
848
+ .nice-inventory-manager__tx-ref {
1157
849
  font-size: 0.75rem;
1158
850
  color: var(--erp-text-muted);
1159
851
  }
1160
852
 
1161
853
  /* Reorder Tab */
1162
- .reorder-tab {
854
+ .nice-inventory-manager__reorder-tab {
1163
855
  display: flex;
1164
856
  flex-direction: column;
1165
857
  }
1166
858
 
1167
- .reorder-list {
859
+ .nice-inventory-manager__reorder-list {
1168
860
  display: flex;
1169
861
  flex-direction: column;
1170
862
  gap: var(--nice-space-2, 8px);
1171
863
  }
1172
864
 
1173
- .reorder-item {
865
+ .nice-inventory-manager__reorder-item {
1174
866
  display: flex;
1175
867
  align-items: center;
1176
868
  gap: var(--nice-space-4, 16px);
@@ -1180,35 +872,35 @@
1180
872
  border-left: 4px solid var(--erp-warning);
1181
873
  }
1182
874
 
1183
- .reorder-info {
875
+ .nice-inventory-manager__reorder-info {
1184
876
  flex: 1;
1185
877
  }
1186
878
 
1187
- .reorder-sku {
879
+ .nice-inventory-manager__reorder-sku {
1188
880
  font-size: 0.75rem;
1189
881
  color: var(--erp-text-muted);
1190
882
  font-family: monospace;
1191
883
  }
1192
884
 
1193
- .reorder-name {
885
+ .nice-inventory-manager__reorder-name {
1194
886
  display: block;
1195
887
  font-size: 0.875rem;
1196
888
  font-weight: 500;
1197
889
  }
1198
890
 
1199
- .reorder-stock {
891
+ .nice-inventory-manager__reorder-stock {
1200
892
  display: flex;
1201
893
  gap: var(--nice-space-4, 16px);
1202
894
  font-size: 0.75rem;
1203
895
  color: var(--erp-text-muted);
1204
896
  }
1205
897
 
1206
- .supplier-name {
898
+ .nice-inventory-manager__supplier-name {
1207
899
  font-size: 0.875rem;
1208
900
  color: var(--erp-text-muted);
1209
901
  }
1210
902
 
1211
- .create-po-button {
903
+ .nice-inventory-manager__create-po-button {
1212
904
  padding: var(--nice-space-2, 8px) var(--nice-space-4, 16px);
1213
905
  border: 1px solid var(--erp-primary);
1214
906
  background: transparent;
@@ -1219,13 +911,13 @@
1219
911
  transition: all var(--erp-transition);
1220
912
  }
1221
913
 
1222
- .create-po-button:hover {
914
+ .nice-inventory-manager__create-po-button:hover {
1223
915
  background: var(--erp-primary);
1224
916
  color: white;
1225
917
  }
1226
918
 
1227
919
  /* Pagination */
1228
- .pagination {
920
+ .nice-inventory-manager__pagination {
1229
921
  display: flex;
1230
922
  align-items: center;
1231
923
  justify-content: center;
@@ -1233,7 +925,7 @@
1233
925
  margin-top: var(--nice-space-6, 24px);
1234
926
  }
1235
927
 
1236
- .pagination button {
928
+ .nice-inventory-manager__pagination button {
1237
929
  padding: var(--nice-space-2, 8px) var(--nice-space-4, 16px);
1238
930
  border: 1px solid var(--erp-border);
1239
931
  background: var(--erp-surface);
@@ -1242,18 +934,18 @@
1242
934
  cursor: pointer;
1243
935
  }
1244
936
 
1245
- .pagination button:disabled {
937
+ .nice-inventory-manager__pagination button:disabled {
1246
938
  opacity: 0.5;
1247
939
  cursor: not-allowed;
1248
940
  }
1249
941
 
1250
- .pagination span {
942
+ .nice-inventory-manager__pagination span {
1251
943
  font-size: 0.875rem;
1252
944
  color: var(--erp-text-muted);
1253
945
  }
1254
946
 
1255
947
  /* Empty State */
1256
- .empty-state {
948
+ .nice-inventory-manager__empty-state {
1257
949
  display: flex;
1258
950
  flex-direction: column;
1259
951
  align-items: center;
@@ -1263,7 +955,7 @@
1263
955
  color: var(--erp-text-muted);
1264
956
  }
1265
957
 
1266
- .empty-icon {
958
+ .nice-inventory-manager__empty-icon {
1267
959
  font-size: 3rem;
1268
960
  margin-bottom: var(--nice-space-4, 16px);
1269
961
  }
@@ -1272,7 +964,8 @@
1272
964
  MODALS
1273
965
  ============================================================================= */
1274
966
 
1275
- .modal-overlay {
967
+ .nice-resource-allocation__modal-overlay,
968
+ .nice-inventory-manager__modal-overlay {
1276
969
  position: fixed;
1277
970
  inset: 0;
1278
971
  background: var(--nice-overlay-70, rgba(0, 0, 0, 0.7));
@@ -1282,9 +975,9 @@
1282
975
  z-index: 1000;
1283
976
  }
1284
977
 
1285
- .item-modal,
1286
- .transaction-modal,
1287
- .allocation-modal {
978
+ .nice-inventory-manager__item-modal,
979
+ .nice-inventory-manager__transaction-modal,
980
+ .nice-resource-allocation__allocation-modal {
1288
981
  width: 90%;
1289
982
  max-width: 500px;
1290
983
  max-height: 90vh;
@@ -1294,21 +987,23 @@
1294
987
  overflow-y: auto;
1295
988
  }
1296
989
 
1297
- .item-modal h3,
1298
- .transaction-modal h3,
1299
- .allocation-modal h3 {
990
+ .nice-inventory-manager__item-modal h3,
991
+ .nice-inventory-manager__transaction-modal h3,
992
+ .nice-resource-allocation__allocation-modal h3 {
1300
993
  margin: 0 0 var(--nice-space-5, 20px);
1301
994
  font-size: 1.125rem;
1302
995
  font-weight: 600;
1303
996
  }
1304
997
 
1305
- .modal-form {
998
+ .nice-resource-allocation__modal-form,
999
+ .nice-inventory-manager__modal-form {
1306
1000
  display: flex;
1307
1001
  flex-direction: column;
1308
1002
  gap: var(--nice-space-4, 16px);
1309
1003
  }
1310
1004
 
1311
- .modal-form label {
1005
+ .nice-resource-allocation__modal-form label,
1006
+ .nice-inventory-manager__modal-form label {
1312
1007
  display: flex;
1313
1008
  flex-direction: column;
1314
1009
  gap: var(--nice-space-1-5, 6px);
@@ -1316,9 +1011,12 @@
1316
1011
  color: var(--erp-text-muted);
1317
1012
  }
1318
1013
 
1319
- .modal-form input,
1320
- .modal-form select,
1321
- .modal-form textarea {
1014
+ .nice-resource-allocation__modal-form input,
1015
+ .nice-inventory-manager__modal-form input,
1016
+ .nice-resource-allocation__modal-form select,
1017
+ .nice-inventory-manager__modal-form select,
1018
+ .nice-resource-allocation__modal-form textarea,
1019
+ .nice-inventory-manager__modal-form textarea {
1322
1020
  padding: var(--nice-space-2-5, 10px) var(--nice-space-3, 12px);
1323
1021
  border: 1px solid var(--erp-border);
1324
1022
  border-radius: var(--erp-radius-sm);
@@ -1327,32 +1025,38 @@
1327
1025
  font-size: 0.875rem;
1328
1026
  }
1329
1027
 
1330
- .modal-form input:focus,
1331
- .modal-form select:focus,
1332
- .modal-form textarea:focus {
1028
+ .nice-resource-allocation__modal-form input:focus,
1029
+ .nice-inventory-manager__modal-form input:focus,
1030
+ .nice-resource-allocation__modal-form select:focus,
1031
+ .nice-inventory-manager__modal-form select:focus,
1032
+ .nice-resource-allocation__modal-form textarea:focus,
1033
+ .nice-inventory-manager__modal-form textarea:focus {
1333
1034
  outline: none;
1334
1035
  border-color: var(--erp-primary);
1335
1036
  }
1336
1037
 
1337
- .modal-form textarea {
1038
+ .nice-resource-allocation__modal-form textarea,
1039
+ .nice-inventory-manager__modal-form textarea {
1338
1040
  min-height: 80px;
1339
1041
  resize: vertical;
1340
1042
  }
1341
1043
 
1342
- .form-row {
1044
+ .nice-inventory-manager__form-row {
1343
1045
  display: grid;
1344
1046
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
1345
1047
  gap: var(--nice-space-4, 16px);
1346
1048
  }
1347
1049
 
1348
- .modal-actions {
1050
+ .nice-resource-allocation__modal-actions,
1051
+ .nice-inventory-manager__modal-actions {
1349
1052
  display: flex;
1350
1053
  justify-content: flex-end;
1351
1054
  gap: var(--nice-space-3, 12px);
1352
1055
  margin-top: var(--nice-space-6, 24px);
1353
1056
  }
1354
1057
 
1355
- .cancel-button {
1058
+ .nice-resource-allocation__cancel-button,
1059
+ .nice-inventory-manager__cancel-button {
1356
1060
  padding: var(--nice-space-2-5, 10px) var(--nice-space-5, 20px);
1357
1061
  border: 1px solid var(--erp-border);
1358
1062
  background: transparent;
@@ -1361,8 +1065,8 @@
1361
1065
  cursor: pointer;
1362
1066
  }
1363
1067
 
1364
- .save-button,
1365
- .create-button {
1068
+ .nice-inventory-manager__save-button,
1069
+ .nice-resource-allocation__create-button {
1366
1070
  padding: var(--nice-space-2-5, 10px) var(--nice-space-5, 20px);
1367
1071
  border: none;
1368
1072
  background: var(--erp-primary);
@@ -1371,8 +1075,8 @@
1371
1075
  cursor: pointer;
1372
1076
  }
1373
1077
 
1374
- .save-button:hover,
1375
- .create-button:hover {
1078
+ .nice-inventory-manager__save-button:hover,
1079
+ .nice-resource-allocation__create-button:hover {
1376
1080
  background: var(--erp-primary-dark);
1377
1081
  }
1378
1082
 
@@ -1381,50 +1085,33 @@
1381
1085
  ============================================================================= */
1382
1086
 
1383
1087
  @media (max-width: 1024px) {
1384
- .gantt__task-list {
1385
- width: 280px;
1386
- }
1387
-
1388
- .resource-cell {
1389
- width: 220px;
1390
- }
1391
-
1392
- .expanded-allocations {
1393
- padding-left: 228px;
1088
+ .nice-resource-allocation {
1089
+ --nice-resource-allocation-cell-width: 220px;
1394
1090
  }
1395
1091
  }
1396
1092
 
1397
1093
  @media (max-width: 768px) {
1398
- .gantt__container {
1399
- flex-direction: column;
1400
- }
1401
-
1402
- .gantt__task-list {
1403
- width: 100%;
1404
- max-height: 200px;
1405
- border-right: none;
1406
- border-bottom: 1px solid var(--erp-border);
1407
- }
1408
-
1409
- .resource-row {
1094
+ .nice-resource-allocation__resource-row {
1410
1095
  flex-direction: column;
1411
1096
  }
1412
1097
 
1413
- .resource-cell {
1098
+ .nice-resource-allocation__resource-cell {
1414
1099
  width: 100%;
1415
1100
  }
1416
1101
 
1417
- .time-cells {
1102
+ .nice-resource-allocation__time-cells {
1418
1103
  width: 100%;
1419
1104
  overflow-x: auto;
1420
1105
  }
1421
1106
 
1422
- .items-grid {
1107
+ .nice-inventory-manager__items-grid {
1423
1108
  grid-template-columns: 1fr;
1424
1109
  }
1425
1110
 
1426
- .toolbar__left,
1427
- .toolbar__right {
1111
+ .nice-resource-allocation__toolbar-left,
1112
+ .nice-inventory-manager__toolbar-left,
1113
+ .nice-resource-allocation__toolbar-right,
1114
+ .nice-inventory-manager__toolbar-right {
1428
1115
  width: 100%;
1429
1116
  justify-content: center;
1430
1117
  }
@@ -1507,7 +1194,7 @@
1507
1194
  align-items: center;
1508
1195
  justify-content: center;
1509
1196
  font-size: 0.7rem;
1510
- color: rgba(0, 0, 0, 0.7);
1197
+ color: color-mix(in srgb, var(--nice-text-primary, #000) 70%, transparent);
1511
1198
  transition: transform var(--erp-transition);
1512
1199
  }
1513
1200
 
@@ -1538,3 +1225,366 @@
1538
1225
  margin: var(--nice-space-2, 8px) 0 0;
1539
1226
  padding-left: var(--nice-space-4, 16px);
1540
1227
  }
1228
+
1229
+ /* =============================================================================
1230
+ DOCUMENTS & DASHBOARDS (invoice view, purchase orders, VAT table, HR dashboard)
1231
+ ============================================================================= */
1232
+
1233
+ /* Money and quantity columns */
1234
+ .nice-invoice-view .nice-num,
1235
+ .nice-purchase-order .nice-num,
1236
+ .nice-vat-table .nice-num {
1237
+ font-variant-numeric: tabular-nums;
1238
+ text-align: right;
1239
+ }
1240
+
1241
+ /* Shared table look of the four */
1242
+ .nice-invoice-view table,
1243
+ .nice-purchase-order table,
1244
+ .nice-vat-table table {
1245
+ width: 100%;
1246
+ border-collapse: collapse;
1247
+ font-size: 0.875rem;
1248
+ }
1249
+ .nice-invoice-view th,
1250
+ .nice-purchase-order th,
1251
+ .nice-vat-table th {
1252
+ padding: var(--nice-space-2, 8px) var(--nice-space-2-5, 10px);
1253
+ border-bottom: 1px solid var(--erp-border);
1254
+ color: var(--erp-text-muted);
1255
+ font-size: 0.75rem;
1256
+ font-weight: 600;
1257
+ text-align: left;
1258
+ white-space: nowrap;
1259
+ }
1260
+ .nice-invoice-view td,
1261
+ .nice-purchase-order td,
1262
+ .nice-vat-table td {
1263
+ padding: var(--nice-space-2, 8px) var(--nice-space-2-5, 10px);
1264
+ border-bottom: 1px solid var(--erp-border);
1265
+ vertical-align: middle;
1266
+ }
1267
+ .nice-invoice-view__dot,
1268
+ .nice-purchase-order__dot {
1269
+ display: inline-block;
1270
+ width: 8px;
1271
+ height: 8px;
1272
+ border-radius: var(--nice-radius-circle, 50%);
1273
+ background: currentColor;
1274
+ }
1275
+
1276
+ /* Invoice view */
1277
+ .nice-invoice-view {
1278
+ display: flex;
1279
+ flex-direction: column;
1280
+ gap: var(--nice-space-4, 16px);
1281
+ min-width: 0;
1282
+ padding: var(--nice-space-4, 16px);
1283
+ background: var(--erp-surface);
1284
+ border: 1px solid var(--erp-border);
1285
+ border-radius: var(--erp-radius);
1286
+ color: var(--erp-text);
1287
+ }
1288
+ .nice-invoice-view--compact {
1289
+ gap: var(--nice-space-2, 8px);
1290
+ padding: var(--nice-space-3, 12px);
1291
+ }
1292
+ .nice-invoice-view--compact td,
1293
+ .nice-invoice-view--compact th {
1294
+ padding: var(--nice-space-1, 4px) var(--nice-space-2, 8px);
1295
+ }
1296
+ .nice-invoice-view h4 {
1297
+ margin: 0 0 var(--nice-space-1-5, 6px);
1298
+ color: var(--erp-text-muted);
1299
+ font-size: 0.75rem;
1300
+ font-weight: 600;
1301
+ letter-spacing: 0.04em;
1302
+ text-transform: uppercase;
1303
+ }
1304
+ .nice-invoice-view__header {
1305
+ display: flex;
1306
+ flex-wrap: wrap;
1307
+ align-items: flex-start;
1308
+ gap: var(--nice-space-3, 12px);
1309
+ }
1310
+ .nice-invoice-view__header > div:first-child {
1311
+ flex: 1 1 auto;
1312
+ }
1313
+ .nice-invoice-view__title {
1314
+ font-size: 1.125rem;
1315
+ }
1316
+ .nice-invoice-view__dates {
1317
+ display: flex;
1318
+ flex-wrap: wrap;
1319
+ gap: var(--nice-space-1, 4px) var(--nice-space-4, 16px);
1320
+ margin-top: var(--nice-space-1, 4px);
1321
+ color: var(--erp-text-muted);
1322
+ font-size: 0.8125rem;
1323
+ }
1324
+ /* The status colour comes inline; the pill takes a tint of it */
1325
+ .nice-invoice-view__status {
1326
+ display: inline-flex;
1327
+ align-items: center;
1328
+ gap: var(--nice-space-1, 4px);
1329
+ padding: var(--nice-space-0-5, 2px) var(--nice-space-2-5, 10px);
1330
+ border-radius: var(--nice-radius-full, 9999px);
1331
+ background: color-mix(in srgb, currentColor 14%, transparent);
1332
+ font-size: 0.8125rem;
1333
+ font-weight: 600;
1334
+ text-transform: capitalize;
1335
+ }
1336
+ .nice-invoice-view__actions {
1337
+ display: flex;
1338
+ gap: var(--nice-space-1, 4px);
1339
+ }
1340
+ .nice-invoice-view__actions button {
1341
+ display: inline-flex;
1342
+ align-items: center;
1343
+ justify-content: center;
1344
+ width: 32px;
1345
+ height: 32px;
1346
+ border: 1px solid var(--erp-border);
1347
+ border-radius: var(--erp-radius-sm);
1348
+ background: transparent;
1349
+ color: var(--erp-text);
1350
+ cursor: pointer;
1351
+ }
1352
+ .nice-invoice-view__actions button:hover {
1353
+ background: var(--erp-surface-alt);
1354
+ }
1355
+ .nice-invoice-view__actions button:focus-visible {
1356
+ outline: 2px solid var(--erp-primary);
1357
+ outline-offset: 1px;
1358
+ }
1359
+ .nice-invoice-view__parties {
1360
+ display: grid;
1361
+ grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
1362
+ gap: var(--nice-space-4, 16px);
1363
+ font-size: 0.875rem;
1364
+ }
1365
+ .nice-invoice-view__lines {
1366
+ display: table;
1367
+ }
1368
+ .nice-invoice-view__vat {
1369
+ max-width: 480px;
1370
+ margin-left: auto;
1371
+ }
1372
+ .nice-invoice-view__totals {
1373
+ display: flex;
1374
+ flex-direction: column;
1375
+ gap: var(--nice-space-1, 4px);
1376
+ min-width: 240px;
1377
+ margin-left: auto;
1378
+ font-size: 0.875rem;
1379
+ }
1380
+ .nice-invoice-view__totals > div {
1381
+ display: flex;
1382
+ justify-content: space-between;
1383
+ gap: var(--nice-space-4, 16px);
1384
+ font-variant-numeric: tabular-nums;
1385
+ }
1386
+ .nice-invoice-view__grand {
1387
+ margin-top: var(--nice-space-1, 4px);
1388
+ padding-top: var(--nice-space-2, 8px);
1389
+ border-top: 1px solid var(--erp-border);
1390
+ font-size: 1rem;
1391
+ }
1392
+ .nice-invoice-view__timeline ol {
1393
+ display: flex;
1394
+ flex-direction: column;
1395
+ gap: var(--nice-space-1, 4px);
1396
+ margin: 0;
1397
+ padding-left: var(--nice-space-4, 16px);
1398
+ font-size: 0.8125rem;
1399
+ }
1400
+ .nice-invoice-view__t-date {
1401
+ margin-right: var(--nice-space-2, 8px);
1402
+ color: var(--erp-text-muted);
1403
+ font-variant-numeric: tabular-nums;
1404
+ }
1405
+ .nice-invoice-view__t-status {
1406
+ font-weight: 600;
1407
+ text-transform: capitalize;
1408
+ }
1409
+ .nice-invoice-view__t-note {
1410
+ color: var(--erp-text-muted);
1411
+ }
1412
+ .nice-invoice-view__notes p {
1413
+ margin: 0;
1414
+ color: var(--erp-text-muted);
1415
+ font-size: 0.875rem;
1416
+ white-space: pre-line;
1417
+ }
1418
+
1419
+ /* Purchase orders: the list, and the selected order's lines under it */
1420
+ .nice-purchase-order {
1421
+ display: flex;
1422
+ flex-direction: column;
1423
+ gap: var(--nice-space-4, 16px);
1424
+ min-width: 0;
1425
+ overflow-x: auto;
1426
+ color: var(--erp-text);
1427
+ }
1428
+ .nice-purchase-order__list tbody tr {
1429
+ cursor: pointer;
1430
+ }
1431
+ .nice-purchase-order__list tbody tr:hover {
1432
+ background: var(--erp-surface-alt);
1433
+ }
1434
+ .nice-purchase-order__list tbody tr[aria-selected='true'] {
1435
+ background: var(--nice-accent-tint-10, rgba(99, 102, 241, 0.1));
1436
+ }
1437
+ .nice-purchase-order__list td:nth-child(3) > span {
1438
+ display: inline-flex;
1439
+ align-items: center;
1440
+ gap: var(--nice-space-1, 4px);
1441
+ text-transform: capitalize;
1442
+ }
1443
+ .nice-purchase-order__detail {
1444
+ display: flex;
1445
+ flex-direction: column;
1446
+ gap: var(--nice-space-3, 12px);
1447
+ padding: var(--nice-space-4, 16px);
1448
+ background: var(--erp-surface);
1449
+ border: 1px solid var(--erp-border);
1450
+ border-radius: var(--erp-radius);
1451
+ }
1452
+ .nice-purchase-order__detail > header {
1453
+ display: flex;
1454
+ flex-wrap: wrap;
1455
+ align-items: center;
1456
+ justify-content: space-between;
1457
+ gap: var(--nice-space-2, 8px);
1458
+ }
1459
+ .nice-purchase-order__detail h3 {
1460
+ margin: 0;
1461
+ font-size: 1rem;
1462
+ font-weight: 600;
1463
+ }
1464
+ .nice-purchase-order__actions {
1465
+ display: flex;
1466
+ flex-wrap: wrap;
1467
+ gap: var(--nice-space-2, 8px);
1468
+ }
1469
+ .nice-purchase-order__actions button,
1470
+ .nice-vat-table__add {
1471
+ padding: var(--nice-space-1-5, 6px) var(--nice-space-3, 12px);
1472
+ border: 1px solid var(--erp-primary);
1473
+ border-radius: var(--erp-radius-sm);
1474
+ background: var(--erp-primary);
1475
+ color: var(--nice-text-on-primary, #fff);
1476
+ font: inherit;
1477
+ font-size: 0.8125rem;
1478
+ font-weight: 500;
1479
+ cursor: pointer;
1480
+ }
1481
+ .nice-purchase-order__actions button:hover,
1482
+ .nice-vat-table__add:hover {
1483
+ filter: brightness(1.08);
1484
+ }
1485
+ .nice-purchase-order__items tfoot td {
1486
+ border-bottom: 0;
1487
+ font-weight: 600;
1488
+ }
1489
+ .nice-purchase-order__notes {
1490
+ margin: 0;
1491
+ color: var(--erp-text-muted);
1492
+ font-size: 0.875rem;
1493
+ }
1494
+
1495
+ /* VAT table (editable in place) */
1496
+ .nice-vat-table {
1497
+ display: flex;
1498
+ flex-direction: column;
1499
+ align-items: flex-start;
1500
+ gap: var(--nice-space-2, 8px);
1501
+ min-width: 0;
1502
+ overflow-x: auto;
1503
+ color: var(--erp-text);
1504
+ }
1505
+ .nice-vat-table--compact td,
1506
+ .nice-vat-table--compact th {
1507
+ padding: var(--nice-space-1, 4px) var(--nice-space-2, 8px);
1508
+ }
1509
+ .nice-vat-table input {
1510
+ box-sizing: border-box;
1511
+ width: 100%;
1512
+ min-width: 64px;
1513
+ padding: var(--nice-space-1, 4px) var(--nice-space-2, 8px);
1514
+ border: 1px solid var(--erp-border);
1515
+ border-radius: var(--erp-radius-sm);
1516
+ background: var(--erp-bg);
1517
+ color: var(--erp-text);
1518
+ font: inherit;
1519
+ }
1520
+ .nice-vat-table .nice-num input {
1521
+ text-align: right;
1522
+ }
1523
+ .nice-vat-table td > button {
1524
+ display: inline-flex;
1525
+ padding: var(--nice-space-1, 4px);
1526
+ border: 0;
1527
+ border-radius: var(--erp-radius-sm);
1528
+ background: transparent;
1529
+ color: var(--erp-text-muted);
1530
+ cursor: pointer;
1531
+ }
1532
+ .nice-vat-table td > button:hover {
1533
+ background: var(--erp-surface-alt);
1534
+ color: var(--erp-error);
1535
+ }
1536
+
1537
+ /* HR dashboard: a row of clickable figure tiles */
1538
+ .nice-hr-dashboard {
1539
+ display: grid;
1540
+ grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
1541
+ gap: var(--nice-space-3, 12px);
1542
+ color: var(--erp-text);
1543
+ }
1544
+ .nice-hr-dashboard--compact {
1545
+ gap: var(--nice-space-2, 8px);
1546
+ }
1547
+ .nice-hr-dashboard__widget {
1548
+ display: flex;
1549
+ flex-direction: column;
1550
+ align-items: flex-start;
1551
+ gap: var(--nice-space-1, 4px);
1552
+ padding: var(--nice-space-4, 16px);
1553
+ border: 1px solid var(--erp-border);
1554
+ border-radius: var(--erp-radius);
1555
+ background: var(--erp-surface);
1556
+ color: inherit;
1557
+ font: inherit;
1558
+ text-align: left;
1559
+ cursor: pointer;
1560
+ transition: border-color var(--erp-transition);
1561
+ }
1562
+ .nice-hr-dashboard--compact .nice-hr-dashboard__widget {
1563
+ padding: var(--nice-space-2-5, 10px) var(--nice-space-3, 12px);
1564
+ }
1565
+ .nice-hr-dashboard__widget:hover {
1566
+ border-color: var(--erp-primary);
1567
+ }
1568
+ .nice-hr-dashboard__widget:focus-visible {
1569
+ outline: 2px solid var(--erp-primary);
1570
+ outline-offset: 1px;
1571
+ }
1572
+ .nice-hr-dashboard__label {
1573
+ color: var(--erp-text-muted);
1574
+ font-size: 0.8125rem;
1575
+ font-weight: 500;
1576
+ }
1577
+ .nice-hr-dashboard__value {
1578
+ font-size: 1.5rem;
1579
+ font-variant-numeric: tabular-nums;
1580
+ font-weight: 700;
1581
+ line-height: 1.2;
1582
+ }
1583
+ .nice-hr-dashboard__hint {
1584
+ color: var(--erp-text-muted);
1585
+ font-size: 0.75rem;
1586
+ }
1587
+ .nice-hr-dashboard__dept-list {
1588
+ margin: 0;
1589
+ padding-left: var(--nice-space-4, 16px);
1590
+ }