@visns-studio/visns-components 5.15.7 → 5.15.9

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.
@@ -18,11 +18,17 @@
18
18
  border-bottom: 1px solid rgba(var(--primary-rgb), 0.7);
19
19
  z-index: 100;
20
20
  position: relative;
21
+ min-width: 1000px;
21
22
 
22
23
  .headerContent {
23
24
  display: flex;
24
25
  justify-content: space-between;
25
26
  align-items: center;
27
+ min-width: 0;
28
+ }
29
+
30
+ .titleSection {
31
+ flex-shrink: 0;
26
32
  }
27
33
 
28
34
  .title {
@@ -32,12 +38,44 @@
32
38
  margin: 0;
33
39
  text-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);
34
40
  letter-spacing: -0.5px;
41
+ white-space: nowrap;
35
42
  }
36
43
 
37
44
  .controls {
38
45
  display: flex;
39
46
  gap: 12px;
40
47
  align-items: center;
48
+ flex-shrink: 0;
49
+ min-width: 480px;
50
+ }
51
+
52
+ .projectInput {
53
+ background: rgba(255, 255, 255, 0.15);
54
+ border: 1px solid rgba(255, 255, 255, 0.3);
55
+ border-radius: var(--br, 8px);
56
+ padding: 8px 12px;
57
+ color: white;
58
+ font-size: 14px;
59
+ width: 300px;
60
+ max-width: 300px;
61
+ transition: all 0.2s ease;
62
+ margin-right: 12px;
63
+ flex-shrink: 0;
64
+
65
+ &::placeholder {
66
+ color: rgba(255, 255, 255, 0.7);
67
+ }
68
+
69
+ &:focus {
70
+ outline: none;
71
+ background: rgba(255, 255, 255, 0.25);
72
+ border-color: rgba(255, 255, 255, 0.5);
73
+ box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.2);
74
+ }
75
+
76
+ &:hover {
77
+ background: rgba(255, 255, 255, 0.2);
78
+ }
41
79
  }
42
80
 
43
81
  .iconButton {
@@ -46,6 +84,7 @@
46
84
  justify-content: center;
47
85
  width: 44px;
48
86
  height: 44px;
87
+ min-width: 44px;
49
88
  padding: 0;
50
89
  background: var(--secondary-color, #6b7280);
51
90
  color: white;
@@ -56,6 +95,7 @@
56
95
  border: 1px solid rgba(var(--secondary-rgb, 107, 114, 128), 1);
57
96
  position: relative;
58
97
  margin: 0 2px;
98
+ flex-shrink: 0;
59
99
 
60
100
  &::after {
61
101
  content: attr(title);
@@ -180,6 +220,7 @@
180
220
  overflow: hidden;
181
221
  gap: 0;
182
222
  position: relative;
223
+ height: calc(100vh - 100px);
183
224
  }
184
225
 
185
226
  .mapContainer {
@@ -236,9 +277,6 @@
236
277
  .imageContainer {
237
278
  flex: 1;
238
279
  position: relative;
239
- min-height: calc(100vh - 100px);
240
- height: calc(100vh - 100px);
241
- width: calc(100% - 400px);
242
280
  background: var(--bg);
243
281
  overflow: hidden;
244
282
  cursor: default;
@@ -247,9 +285,6 @@
247
285
  cursor: crosshair;
248
286
  }
249
287
 
250
- &.sidebarCollapsed {
251
- width: 100%;
252
- }
253
288
 
254
289
  &.dragOver {
255
290
  background: rgba(var(--primary-rgb), 0.05);
@@ -359,23 +394,16 @@
359
394
  }
360
395
 
361
396
  .sidebar {
362
- position: absolute;
363
- top: 70px;
364
- right: 0;
365
397
  width: 400px;
366
- height: calc(100% - 70px);
398
+ min-width: 400px;
367
399
  background: var(--item-color);
368
400
  border-left: 1px solid var(--border-color, #e5e7eb);
369
401
  display: flex;
370
402
  flex-direction: column;
371
403
  z-index: 20;
372
404
  box-shadow: -4px 0 16px rgba(0, 0, 0, 0.1);
373
- transform: translateX(0);
374
- transition: transform 0.3s ease;
375
-
376
- &.collapsed {
377
- transform: translateX(100%);
378
- }
405
+ flex-shrink: 0;
406
+ height: 100%;
379
407
 
380
408
  .sidebarHeader {
381
409
  padding: 20px 24px;
@@ -384,6 +412,75 @@
384
412
  position: relative;
385
413
  z-index: 1;
386
414
 
415
+ .sidebarTabs {
416
+ display: flex;
417
+ gap: 4px;
418
+ margin-bottom: 12px;
419
+
420
+ .tabButton {
421
+ flex: 1;
422
+ padding: 8px 12px;
423
+ background: transparent;
424
+ border: 1px solid var(--border-color, #e5e7eb);
425
+ border-radius: 6px;
426
+ font-size: 14px;
427
+ font-weight: 500;
428
+ color: var(--paragraph-color, #64748b);
429
+ cursor: pointer;
430
+ transition: all 0.2s ease;
431
+ display: flex;
432
+ align-items: center;
433
+ justify-content: center;
434
+ gap: 4px;
435
+
436
+ .tabCount {
437
+ font-size: 12px;
438
+ opacity: 0.7;
439
+ }
440
+
441
+ &:hover {
442
+ background: var(--surface-color, #f1f5f9);
443
+ color: var(--heading-color, #1e293b);
444
+ }
445
+
446
+ &.active {
447
+ background: var(--primary-color, #3b82f6);
448
+ color: white;
449
+ border-color: var(--primary-color, #3b82f6);
450
+
451
+ .tabCount {
452
+ opacity: 0.8;
453
+ }
454
+ }
455
+ }
456
+ }
457
+
458
+ .currentProject {
459
+ display: flex;
460
+ align-items: center;
461
+ gap: 8px;
462
+ padding: 8px 12px;
463
+ background: var(--success-color-light, #ecfdf5);
464
+ border: 1px solid var(--success-color, #10b981);
465
+ border-radius: 6px;
466
+ font-size: 12px;
467
+
468
+ .projectLabel {
469
+ color: var(--success-color, #10b981);
470
+ font-weight: 500;
471
+ }
472
+
473
+ .projectName {
474
+ color: var(--heading-color, #1e293b);
475
+ font-weight: 600;
476
+ flex: 1;
477
+ max-width: 200px;
478
+ overflow: hidden;
479
+ text-overflow: ellipsis;
480
+ white-space: nowrap;
481
+ }
482
+ }
483
+
387
484
  .sidebarTitle {
388
485
  font-size: 18px;
389
486
  font-weight: 700;
@@ -400,6 +497,140 @@
400
497
  }
401
498
  }
402
499
 
500
+ .sidebarContent {
501
+ flex: 1;
502
+ overflow: hidden;
503
+ display: flex;
504
+ flex-direction: column;
505
+ }
506
+
507
+ .emptyState {
508
+ text-align: center;
509
+ color: #6c757d;
510
+ padding: 40px 20px;
511
+ font-style: italic;
512
+
513
+ .emptyStateSubtext {
514
+ fontSize: 12px;
515
+ margin-top: 8px;
516
+ }
517
+ }
518
+
519
+ .loadingState {
520
+ text-align: center;
521
+ color: #6c757d;
522
+ padding: 40px 20px;
523
+ font-style: italic;
524
+ }
525
+
526
+ .projectsList {
527
+ flex: 1;
528
+ overflow-y: auto;
529
+ padding: 20px 24px;
530
+
531
+ &::-webkit-scrollbar {
532
+ width: 6px;
533
+ }
534
+
535
+ &::-webkit-scrollbar-track {
536
+ background: rgba(0, 0, 0, 0.05);
537
+ border-radius: 3px;
538
+ }
539
+
540
+ &::-webkit-scrollbar-thumb {
541
+ background: #d1d5db;
542
+ border-radius: 3px;
543
+
544
+ &:hover {
545
+ background: #9ca3af;
546
+ }
547
+ }
548
+
549
+ .projectItem {
550
+ padding: 16px;
551
+ background: var(--item-color);
552
+ border-radius: var(--br, 8px);
553
+ margin-bottom: 12px;
554
+ border: 1px solid var(--border-color, #e5e7eb);
555
+ transition: all 0.2s ease;
556
+ cursor: pointer;
557
+ position: relative;
558
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
559
+
560
+ &:hover {
561
+ background: var(--surface-color, #f8fafc);
562
+ border-color: var(--primary-color, #3b82f6);
563
+ transform: translateY(-1px);
564
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
565
+ }
566
+
567
+ &.selected {
568
+ border-color: var(--primary-color, #3b82f6);
569
+ background: var(--primary-color-light, #eff6ff);
570
+ box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.1);
571
+ }
572
+
573
+ .projectHeader {
574
+ margin-bottom: 8px;
575
+
576
+ .projectTitle {
577
+ font-size: 16px;
578
+ font-weight: 600;
579
+ color: var(--heading-color, #1e293b);
580
+ margin: 0 0 4px 0;
581
+ line-height: 1.2;
582
+ }
583
+
584
+ .projectMeta {
585
+ display: flex;
586
+ gap: 8px;
587
+ align-items: center;
588
+
589
+ .projectMode {
590
+ background: var(--primary-color-light, #eff6ff);
591
+ color: var(--primary-color, #3b82f6);
592
+ padding: 2px 6px;
593
+ border-radius: 4px;
594
+ font-size: 11px;
595
+ font-weight: 500;
596
+ text-transform: uppercase;
597
+ }
598
+
599
+ .projectDate {
600
+ font-size: 12px;
601
+ color: var(--paragraph-color, #64748b);
602
+ }
603
+ }
604
+ }
605
+
606
+ .projectInfo {
607
+ display: flex;
608
+ gap: 12px;
609
+ align-items: center;
610
+ margin-bottom: 8px;
611
+
612
+ .cameraCount {
613
+ font-size: 13px;
614
+ color: var(--paragraph-color, #64748b);
615
+ font-weight: 500;
616
+ }
617
+
618
+ .hasImage {
619
+ font-size: 12px;
620
+ color: var(--success-color, #10b981);
621
+ font-weight: 500;
622
+ }
623
+ }
624
+
625
+ .projectDescription {
626
+ font-size: 12px;
627
+ color: var(--paragraph-color, #64748b);
628
+ line-height: 1.4;
629
+ font-style: italic;
630
+ }
631
+ }
632
+ }
633
+
403
634
  .camerasList {
404
635
  flex: 1;
405
636
  overflow-y: auto;