@anlyx/ui 0.1.2 → 0.1.3

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 (43) hide show
  1. package/dist/components/AnalysisEvidenceList.d.ts +5 -0
  2. package/dist/components/AnalysisEvidenceList.js +61 -0
  3. package/dist/components/AnlyxAppShell.d.ts +1 -1
  4. package/dist/components/AnlyxAppShell.js +16 -7
  5. package/dist/components/ApiCallList.d.ts +3 -2
  6. package/dist/components/ApiCallList.js +12 -2
  7. package/dist/components/EndpointMapCanvas.js +1 -1
  8. package/dist/components/FlowStoryView.d.ts +22 -0
  9. package/dist/components/FlowStoryView.js +117 -0
  10. package/dist/components/InspectorPanel.d.ts +1 -1
  11. package/dist/components/InspectorPanel.js +20 -1
  12. package/dist/components/PageStoryboardView.js +9 -1
  13. package/dist/components/ProcessFlowView.js +8 -1
  14. package/dist/components/ReplayControls.d.ts +2 -1
  15. package/dist/components/ReplayControls.js +29 -2
  16. package/dist/components/Sidebar.d.ts +2 -2
  17. package/dist/components/Sidebar.js +15 -3
  18. package/dist/mock-data.js +50 -4
  19. package/dist/overlay/AnlyxFlowEdge.d.ts +2 -0
  20. package/dist/overlay/AnlyxFlowEdge.js +15 -0
  21. package/dist/overlay/AnlyxFlowNode.d.ts +13 -0
  22. package/dist/overlay/AnlyxFlowNode.js +28 -0
  23. package/dist/overlay/FlowDrawer.d.ts +2 -0
  24. package/dist/overlay/FlowDrawer.js +59 -0
  25. package/dist/overlay/MainFlowCanvas.d.ts +20 -0
  26. package/dist/overlay/MainFlowCanvas.js +285 -0
  27. package/dist/overlay/RecentApiEventsTable.d.ts +5 -0
  28. package/dist/overlay/RecentApiEventsTable.js +19 -0
  29. package/dist/overlay/overlay-entry.d.ts +8 -0
  30. package/dist/overlay/overlay-entry.js +14 -0
  31. package/dist/overlay/overlay-ui.css +2 -0
  32. package/dist/overlay/overlay-ui.js +14 -0
  33. package/dist/overlay/types.d.ts +38 -0
  34. package/dist/overlay/types.js +1 -0
  35. package/dist/overlay/ui.d.ts +18 -0
  36. package/dist/overlay/ui.js +13 -0
  37. package/dist/readme-demo/ReadmeDemoApp.d.ts +4 -0
  38. package/dist/readme-demo/ReadmeDemoApp.js +126 -0
  39. package/dist/readme-demo/readme-demo-entry.d.ts +1 -0
  40. package/dist/readme-demo/readme-demo-entry.js +8 -0
  41. package/dist/styles.css +1134 -20
  42. package/dist/viewer/ViewerApp.js +13 -6
  43. package/package.json +3 -3
package/dist/styles.css CHANGED
@@ -58,6 +58,50 @@ body {
58
58
  font-size: 14px;
59
59
  }
60
60
 
61
+ .anlyx-viewer-state__card {
62
+ width: min(520px, 100%);
63
+ padding: 26px;
64
+ border: 1px solid var(--anlyx-color-border);
65
+ border-radius: 12px;
66
+ background:
67
+ linear-gradient(180deg, rgb(255 255 255 / 96%), rgb(248 251 255 / 96%)),
68
+ radial-gradient(circle at 0% 0%, rgb(37 99 235 / 10%), transparent 34%);
69
+ box-shadow: var(--anlyx-shadow-panel);
70
+ }
71
+
72
+ .anlyx-viewer-state__eyebrow {
73
+ color: #2563eb;
74
+ font-size: 11px;
75
+ font-weight: 850;
76
+ letter-spacing: 0;
77
+ text-transform: uppercase;
78
+ }
79
+
80
+ .anlyx-viewer-state__card h1 {
81
+ margin: 8px 0 10px;
82
+ color: var(--anlyx-color-text-primary);
83
+ font-size: 22px;
84
+ line-height: 1.2;
85
+ }
86
+
87
+ .anlyx-viewer-state__card p {
88
+ margin: 8px 0 0;
89
+ color: var(--anlyx-color-text-secondary);
90
+ font-size: 13px;
91
+ line-height: 1.55;
92
+ }
93
+
94
+ .anlyx-viewer-state--error .anlyx-viewer-state__card {
95
+ border-color: #fecaca;
96
+ background:
97
+ linear-gradient(180deg, rgb(255 255 255 / 96%), rgb(255 247 247 / 96%)),
98
+ radial-gradient(circle at 0% 0%, rgb(239 68 68 / 9%), transparent 32%);
99
+ }
100
+
101
+ .anlyx-viewer-state--error .anlyx-viewer-state__eyebrow {
102
+ color: #dc2626;
103
+ }
104
+
61
105
  .anlyx-shell {
62
106
  box-sizing: border-box;
63
107
  display: flex;
@@ -198,7 +242,7 @@ body {
198
242
 
199
243
  .anlyx-tabs {
200
244
  display: grid;
201
- grid-template-columns: repeat(3, minmax(0, 1fr));
245
+ grid-template-columns: repeat(4, minmax(0, 1fr));
202
246
  gap: 3px;
203
247
  padding: 4px;
204
248
  border: 1px solid #edf1f7;
@@ -232,8 +276,8 @@ body {
232
276
  }
233
277
 
234
278
  .anlyx-tab {
235
- padding: 0 7px;
236
- font-size: 13px;
279
+ padding: 0 6px;
280
+ font-size: 12px;
237
281
  font-weight: 650;
238
282
  white-space: normal;
239
283
  }
@@ -247,6 +291,29 @@ body {
247
291
  gap: 6px;
248
292
  }
249
293
 
294
+ .anlyx-project-select {
295
+ display: grid;
296
+ grid-template-columns: auto minmax(0, 1fr);
297
+ align-items: center;
298
+ gap: 9px;
299
+ min-height: 42px;
300
+ padding: 0 12px;
301
+ border: 1px solid var(--anlyx-color-border);
302
+ border-radius: var(--anlyx-radius);
303
+ background: #ffffff;
304
+ color: var(--anlyx-color-text-primary);
305
+ font: inherit;
306
+ font-weight: 700;
307
+ text-align: left;
308
+ box-shadow: var(--anlyx-shadow-panel);
309
+ }
310
+
311
+ .anlyx-project-select span {
312
+ overflow: hidden;
313
+ text-overflow: ellipsis;
314
+ white-space: nowrap;
315
+ }
316
+
250
317
  .anlyx-search__label,
251
318
  .anlyx-section-heading,
252
319
  .anlyx-eyebrow {
@@ -288,8 +355,11 @@ body {
288
355
  }
289
356
 
290
357
  .anlyx-sidebar__list-region {
358
+ display: grid;
359
+ gap: 16px;
291
360
  min-height: 0;
292
361
  overflow: auto;
362
+ padding-right: 2px;
293
363
  }
294
364
 
295
365
  .anlyx-list {
@@ -300,6 +370,10 @@ body {
300
370
  list-style: none;
301
371
  }
302
372
 
373
+ .anlyx-list--compact {
374
+ gap: 4px;
375
+ }
376
+
303
377
  .anlyx-list-item {
304
378
  display: grid;
305
379
  gap: 7px;
@@ -376,6 +450,23 @@ body {
376
450
  line-height: 1.35;
377
451
  }
378
452
 
453
+ .anlyx-service-row {
454
+ display: grid;
455
+ grid-template-columns: auto minmax(0, 1fr);
456
+ align-items: center;
457
+ gap: 8px;
458
+ min-height: 30px;
459
+ padding: 0 8px;
460
+ color: var(--anlyx-color-text-secondary);
461
+ font-size: 12px;
462
+ }
463
+
464
+ .anlyx-service-row span {
465
+ overflow: hidden;
466
+ text-overflow: ellipsis;
467
+ white-space: nowrap;
468
+ }
469
+
379
470
  .anlyx-main {
380
471
  display: grid;
381
472
  overflow: hidden;
@@ -438,18 +529,725 @@ body {
438
529
  font: inherit;
439
530
  }
440
531
 
441
- .anlyx-workspace-header h1,
442
- .anlyx-panel-heading h2,
443
- .anlyx-canvas-placeholder h2 {
444
- margin: 0;
445
- color: #111827;
446
- font-size: 22px;
447
- line-height: 1.2;
448
- letter-spacing: 0;
532
+ .anlyx-workspace-header h1,
533
+ .anlyx-panel-heading h2,
534
+ .anlyx-canvas-placeholder h2 {
535
+ margin: 0;
536
+ color: #111827;
537
+ font-size: 22px;
538
+ line-height: 1.2;
539
+ letter-spacing: 0;
540
+ }
541
+
542
+ .anlyx-eyebrow {
543
+ margin: 0 0 6px;
544
+ }
545
+
546
+ .anlyx-flow-story {
547
+ display: grid;
548
+ overflow: hidden;
549
+ min-width: 0;
550
+ min-height: 0;
551
+ grid-template-rows: auto auto minmax(0, 1fr) auto;
552
+ background:
553
+ linear-gradient(90deg, rgb(37 99 235 / 4%) 1px, transparent 1px),
554
+ linear-gradient(rgb(37 99 235 / 4%) 1px, transparent 1px), #fbfcff;
555
+ background-size: 28px 28px;
556
+ }
557
+
558
+ .anlyx-flow-story__header {
559
+ display: flex;
560
+ align-items: center;
561
+ justify-content: space-between;
562
+ gap: 16px;
563
+ padding: 18px 22px;
564
+ border-bottom: 1px solid var(--anlyx-color-border);
565
+ background: rgb(255 255 255 / 88%);
566
+ backdrop-filter: blur(14px);
567
+ }
568
+
569
+ .anlyx-flow-story__header h1 {
570
+ margin: 0;
571
+ color: #111827;
572
+ font-size: 23px;
573
+ line-height: 1.18;
574
+ letter-spacing: 0;
575
+ }
576
+
577
+ .anlyx-flow-story__summary {
578
+ display: flex;
579
+ flex-wrap: wrap;
580
+ gap: 7px;
581
+ margin-top: 9px;
582
+ }
583
+
584
+ .anlyx-flow-story__summary span {
585
+ display: inline-flex;
586
+ align-items: center;
587
+ min-height: 24px;
588
+ padding: 0 9px;
589
+ border: 1px solid #dbe7fb;
590
+ border-radius: 999px;
591
+ background: #f8fbff;
592
+ color: #475569;
593
+ font-size: 12px;
594
+ font-weight: 750;
595
+ }
596
+
597
+ .anlyx-flow-story__actions {
598
+ display: flex;
599
+ flex-wrap: wrap;
600
+ align-items: center;
601
+ justify-content: flex-end;
602
+ gap: 8px;
603
+ }
604
+
605
+ .anlyx-interaction-chain {
606
+ display: grid;
607
+ min-width: 0;
608
+ grid-template-columns: repeat(4, minmax(0, 1fr));
609
+ gap: 10px;
610
+ padding: 12px 22px;
611
+ border-bottom: 1px solid var(--anlyx-color-border);
612
+ background: rgb(248 251 255 / 88%);
613
+ }
614
+
615
+ .anlyx-interaction-chain__item {
616
+ display: grid;
617
+ align-items: center;
618
+ min-width: 0;
619
+ grid-template-columns: auto minmax(0, 1fr);
620
+ gap: 9px;
621
+ padding: 10px;
622
+ border: 1px solid #dde8f7;
623
+ border-radius: 8px;
624
+ background: #ffffff;
625
+ box-shadow: 0 8px 18px rgb(15 23 42 / 5%);
626
+ }
627
+
628
+ .anlyx-interaction-chain__icon {
629
+ display: inline-flex;
630
+ align-items: center;
631
+ justify-content: center;
632
+ width: 30px;
633
+ height: 30px;
634
+ border-radius: 8px;
635
+ background: #eff6ff;
636
+ color: #2563eb;
637
+ }
638
+
639
+ .anlyx-interaction-chain__item span:not(.anlyx-interaction-chain__icon) {
640
+ display: block;
641
+ overflow: hidden;
642
+ color: #64748b;
643
+ font-size: 11px;
644
+ font-weight: 800;
645
+ line-height: 1.2;
646
+ text-overflow: ellipsis;
647
+ text-transform: uppercase;
648
+ white-space: nowrap;
649
+ }
650
+
651
+ .anlyx-interaction-chain__item strong {
652
+ display: block;
653
+ overflow: hidden;
654
+ margin-top: 3px;
655
+ color: #111827;
656
+ font-size: 12px;
657
+ line-height: 1.25;
658
+ text-overflow: ellipsis;
659
+ white-space: nowrap;
660
+ }
661
+
662
+ .anlyx-interaction-chain__item--page .anlyx-interaction-chain__icon {
663
+ background: #eff6ff;
664
+ color: #2563eb;
665
+ }
666
+
667
+ .anlyx-interaction-chain__item--api .anlyx-interaction-chain__icon {
668
+ background: #ecfeff;
669
+ color: #0891b2;
670
+ }
671
+
672
+ .anlyx-interaction-chain__item--backend .anlyx-interaction-chain__icon {
673
+ background: #fff7ed;
674
+ color: #ea580c;
675
+ }
676
+
677
+ .anlyx-interaction-chain__item--guard .anlyx-interaction-chain__icon {
678
+ background: #f0fdf4;
679
+ color: #16a34a;
680
+ }
681
+
682
+ .anlyx-flow-story__stage {
683
+ position: relative;
684
+ display: grid;
685
+ overflow: hidden;
686
+ min-width: 0;
687
+ min-height: 0;
688
+ grid-template-columns: minmax(280px, 360px) minmax(0, 1fr);
689
+ align-items: center;
690
+ gap: 28px;
691
+ padding: 30px 26px 26px;
692
+ }
693
+
694
+ .anlyx-page-preview {
695
+ align-self: center;
696
+ overflow: hidden;
697
+ min-width: 0;
698
+ border: 1px solid #dbe5f2;
699
+ border-radius: 12px;
700
+ background: #ffffff;
701
+ box-shadow:
702
+ 0 20px 50px rgb(15 23 42 / 12%),
703
+ var(--anlyx-shadow-panel);
704
+ }
705
+
706
+ .anlyx-page-preview__chrome {
707
+ display: flex;
708
+ align-items: center;
709
+ gap: 8px;
710
+ padding: 12px 14px;
711
+ border-bottom: 1px solid var(--anlyx-color-border);
712
+ background: #fbfcff;
713
+ font-size: 12px;
714
+ }
715
+
716
+ .anlyx-page-preview__chrome span {
717
+ overflow: hidden;
718
+ color: var(--anlyx-color-text-secondary);
719
+ text-overflow: ellipsis;
720
+ white-space: nowrap;
721
+ }
722
+
723
+ .anlyx-page-preview__screen {
724
+ display: grid;
725
+ gap: 13px;
726
+ min-height: 330px;
727
+ padding: 14px;
728
+ background:
729
+ linear-gradient(180deg, rgb(6 78 59 / 4%), transparent 42%),
730
+ linear-gradient(135deg, #f8fafc, #ffffff);
731
+ }
732
+
733
+ .anlyx-page-preview__topbar {
734
+ display: grid;
735
+ align-items: center;
736
+ grid-template-columns: repeat(3, 7px) 1fr;
737
+ gap: 6px;
738
+ min-height: 30px;
739
+ padding: 0 10px;
740
+ border-radius: 8px;
741
+ background: #064e3b;
742
+ color: #ffffff;
743
+ font-size: 10px;
744
+ letter-spacing: 0.08em;
745
+ }
746
+
747
+ .anlyx-page-preview__topbar span {
748
+ width: 7px;
749
+ height: 7px;
750
+ border-radius: 999px;
751
+ background: rgb(255 255 255 / 42%);
752
+ }
753
+
754
+ .anlyx-page-preview__topbar strong {
755
+ justify-self: center;
756
+ font-weight: 900;
757
+ }
758
+
759
+ .anlyx-page-preview__hero {
760
+ display: grid;
761
+ grid-template-columns: 1fr 92px;
762
+ gap: 12px;
763
+ min-height: 126px;
764
+ padding: 16px;
765
+ border-radius: 10px;
766
+ background:
767
+ linear-gradient(135deg, rgb(5 46 22 / 92%), rgb(6 78 59 / 78%)),
768
+ linear-gradient(90deg, #064e3b, #14532d);
769
+ color: #ffffff;
770
+ }
771
+
772
+ .anlyx-page-preview__hero span {
773
+ color: #bbf7d0;
774
+ font-size: 12px;
775
+ font-weight: 800;
776
+ }
777
+
778
+ .anlyx-page-preview__hero strong {
779
+ display: block;
780
+ margin-top: 8px;
781
+ font-size: 22px;
782
+ line-height: 1.05;
783
+ }
784
+
785
+ .anlyx-page-preview__hero p {
786
+ margin: 0;
787
+ margin-top: 8px;
788
+ color: rgb(255 255 255 / 82%);
789
+ font-size: 12px;
790
+ }
791
+
792
+ .anlyx-page-preview__reward {
793
+ display: grid;
794
+ place-items: center;
795
+ align-self: center;
796
+ justify-self: end;
797
+ width: 82px;
798
+ height: 82px;
799
+ border-radius: 18px;
800
+ background: linear-gradient(180deg, #ffffff, #f8fafc);
801
+ color: #064e3b;
802
+ box-shadow: 0 14px 28px rgb(0 0 0 / 18%);
803
+ }
804
+
805
+ .anlyx-page-preview__reward span {
806
+ width: 42px;
807
+ height: 32px;
808
+ border-radius: 999px 999px 8px 8px;
809
+ background: linear-gradient(180deg, #16a34a, #166534);
810
+ }
811
+
812
+ .anlyx-page-preview__reward strong {
813
+ margin-top: -10px;
814
+ font-size: 18px;
815
+ }
816
+
817
+ .anlyx-page-preview__facts,
818
+ .anlyx-page-preview__steps,
819
+ .anlyx-page-preview__api {
820
+ display: grid;
821
+ gap: 8px;
822
+ padding: 12px;
823
+ border: 1px solid #e2e8f0;
824
+ border-radius: 9px;
825
+ background: #ffffff;
826
+ color: #475569;
827
+ font-size: 12px;
828
+ }
829
+
830
+ .anlyx-page-preview__facts {
831
+ grid-template-columns: 1fr 1fr;
832
+ }
833
+
834
+ .anlyx-page-preview__steps span {
835
+ position: relative;
836
+ padding-left: 22px;
837
+ }
838
+
839
+ .anlyx-page-preview__steps span::before {
840
+ position: absolute;
841
+ top: 1px;
842
+ left: 0;
843
+ display: grid;
844
+ width: 15px;
845
+ height: 15px;
846
+ place-items: center;
847
+ border-radius: 999px;
848
+ background: #dcfce7;
849
+ color: #166534;
850
+ content: "";
851
+ }
852
+
853
+ .anlyx-page-preview__api {
854
+ grid-template-columns: auto minmax(0, 1fr);
855
+ align-items: center;
856
+ }
857
+
858
+ .anlyx-page-preview__api strong {
859
+ padding: 3px 7px;
860
+ border-radius: 999px;
861
+ background: #dbeafe;
862
+ color: #1d4ed8;
863
+ font-size: 11px;
864
+ }
865
+
866
+ .anlyx-page-preview__api span {
867
+ overflow: hidden;
868
+ text-overflow: ellipsis;
869
+ white-space: nowrap;
870
+ }
871
+
872
+ .anlyx-page-preview__meta {
873
+ display: flex;
874
+ flex-wrap: wrap;
875
+ align-items: center;
876
+ gap: 8px;
877
+ padding: 10px 14px;
878
+ border-top: 1px solid var(--anlyx-color-border);
879
+ color: var(--anlyx-color-text-secondary);
880
+ font-size: 12px;
881
+ font-weight: 650;
882
+ }
883
+
884
+ .anlyx-flow-story__request {
885
+ position: absolute;
886
+ top: 48%;
887
+ left: min(365px, 32%);
888
+ z-index: 5;
889
+ display: flex;
890
+ align-items: center;
891
+ gap: 7px;
892
+ color: var(--anlyx-color-request);
893
+ font-size: 12px;
894
+ font-weight: 800;
895
+ pointer-events: none;
896
+ }
897
+
898
+ .anlyx-flow-story__request i {
899
+ width: 72px;
900
+ height: 2px;
901
+ background: var(--anlyx-color-request);
902
+ box-shadow: 0 0 14px rgb(37 99 235 / 42%);
903
+ }
904
+
905
+ .anlyx-flow-story__diagram {
906
+ position: relative;
907
+ display: grid;
908
+ align-self: stretch;
909
+ min-width: 0;
910
+ min-height: 480px;
911
+ align-content: center;
912
+ gap: 22px;
913
+ padding: 34px 26px 54px;
914
+ border: 1px solid rgb(223 230 241 / 72%);
915
+ border-radius: 14px;
916
+ background:
917
+ linear-gradient(90deg, rgb(37 99 235 / 3%) 1px, transparent 1px),
918
+ linear-gradient(rgb(37 99 235 / 3%) 1px, transparent 1px), rgb(255 255 255 / 66%);
919
+ background-size: 20px 20px;
920
+ box-shadow: inset 0 1px 0 rgb(255 255 255 / 90%);
921
+ }
922
+
923
+ .anlyx-flow-story__diagram-head {
924
+ display: flex;
925
+ align-items: center;
926
+ justify-content: space-between;
927
+ gap: 12px;
928
+ }
929
+
930
+ .anlyx-flow-story__diagram-head div {
931
+ display: inline-grid;
932
+ gap: 2px;
933
+ padding: 8px 11px;
934
+ border: 1px solid #dbe7fb;
935
+ border-radius: 10px;
936
+ background: rgb(255 255 255 / 82%);
937
+ box-shadow: 0 10px 22px rgb(15 23 42 / 4%);
938
+ }
939
+
940
+ .anlyx-flow-story__diagram-head span {
941
+ color: #64748b;
942
+ font-size: 10px;
943
+ font-weight: 900;
944
+ text-transform: uppercase;
945
+ }
946
+
947
+ .anlyx-flow-story__diagram-head strong {
948
+ color: #0f172a;
949
+ font-size: 13px;
950
+ }
951
+
952
+ .anlyx-flow-story__diagram--empty {
953
+ place-items: center;
954
+ color: var(--anlyx-color-text-secondary);
955
+ }
956
+
957
+ .anlyx-flow-story__lane {
958
+ display: flex;
959
+ align-items: stretch;
960
+ min-width: 0;
961
+ overflow-x: auto;
962
+ padding: 4px 2px 12px;
963
+ }
964
+
965
+ .anlyx-flow-story__step-wrap {
966
+ display: contents;
967
+ }
968
+
969
+ .anlyx-flow-story__step,
970
+ .anlyx-flow-story__support-node {
971
+ position: relative;
972
+ display: grid;
973
+ min-width: 0;
974
+ border: 1px solid #cbd5e1;
975
+ background: rgb(255 255 255 / 96%);
976
+ color: var(--anlyx-color-text-primary);
977
+ font: inherit;
978
+ text-align: left;
979
+ cursor: pointer;
980
+ }
981
+
982
+ .anlyx-flow-story__step {
983
+ width: clamp(138px, 13vw, 186px);
984
+ min-height: 140px;
985
+ gap: 8px;
986
+ padding: 14px;
987
+ border-top: 3px solid var(--anlyx-color-request);
988
+ border-radius: 11px;
989
+ box-shadow: 0 16px 34px rgb(15 23 42 / 8%);
990
+ }
991
+
992
+ .anlyx-flow-story__step-number {
993
+ position: absolute;
994
+ top: 11px;
995
+ right: 12px;
996
+ color: #94a3b8;
997
+ font-size: 11px;
998
+ font-weight: 950;
999
+ }
1000
+
1001
+ .anlyx-flow-story__step--service {
1002
+ border-top-color: #6366f1;
1003
+ }
1004
+
1005
+ .anlyx-flow-story__step--repository {
1006
+ border-top-color: #7c3aed;
1007
+ }
1008
+
1009
+ .anlyx-flow-story__step--database {
1010
+ border-top-color: var(--anlyx-color-database);
1011
+ background: linear-gradient(180deg, #ffffff, #f0fdfa);
1012
+ }
1013
+
1014
+ .anlyx-flow-story__step--active,
1015
+ .anlyx-flow-story__support-node--active {
1016
+ box-shadow:
1017
+ 0 0 0 4px rgb(37 99 235 / 12%),
1018
+ 0 18px 38px rgb(37 99 235 / 16%);
1019
+ }
1020
+
1021
+ .anlyx-flow-story__step--selected,
1022
+ .anlyx-flow-story__support-node--selected {
1023
+ outline: 2px solid var(--anlyx-color-request);
1024
+ outline-offset: 2px;
1025
+ }
1026
+
1027
+ .anlyx-flow-story__step-icon {
1028
+ display: grid;
1029
+ width: 26px;
1030
+ height: 26px;
1031
+ place-items: center;
1032
+ border-radius: 8px;
1033
+ background: #eff6ff;
1034
+ color: var(--anlyx-color-request);
1035
+ }
1036
+
1037
+ .anlyx-flow-story__step--service .anlyx-flow-story__step-icon {
1038
+ background: #eef2ff;
1039
+ color: #4f46e5;
1040
+ }
1041
+
1042
+ .anlyx-flow-story__step--repository .anlyx-flow-story__step-icon {
1043
+ background: #f5f3ff;
1044
+ color: #7c3aed;
1045
+ }
1046
+
1047
+ .anlyx-flow-story__step--database .anlyx-flow-story__step-icon {
1048
+ background: #ccfbf1;
1049
+ color: #0f766e;
1050
+ }
1051
+
1052
+ .anlyx-flow-story__step-type,
1053
+ .anlyx-flow-story__support-node span {
1054
+ color: var(--anlyx-color-text-secondary);
1055
+ font-size: 10px;
1056
+ font-weight: 900;
1057
+ text-transform: uppercase;
1058
+ }
1059
+
1060
+ .anlyx-flow-story__step strong,
1061
+ .anlyx-flow-story__support-node strong {
1062
+ overflow: hidden;
1063
+ color: #0f172a;
1064
+ font-size: 12px;
1065
+ line-height: 1.28;
1066
+ overflow-wrap: anywhere;
1067
+ }
1068
+
1069
+ .anlyx-flow-story__step .anlyx-status-badge,
1070
+ .anlyx-flow-story__support-node .anlyx-status-badge {
1071
+ align-self: end;
1072
+ justify-self: start;
1073
+ }
1074
+
1075
+ .anlyx-flow-story__arrow {
1076
+ position: relative;
1077
+ flex: 1 1 28px;
1078
+ min-width: 24px;
1079
+ align-self: center;
1080
+ height: 2px;
1081
+ background: var(--anlyx-color-request);
1082
+ box-shadow: 0 0 12px rgb(37 99 235 / 36%);
1083
+ }
1084
+
1085
+ .anlyx-flow-story__arrow::after {
1086
+ position: absolute;
1087
+ top: -4px;
1088
+ right: -1px;
1089
+ width: 9px;
1090
+ height: 9px;
1091
+ border-top: 2px solid var(--anlyx-color-request);
1092
+ border-right: 2px solid var(--anlyx-color-request);
1093
+ content: "";
1094
+ transform: rotate(45deg);
1095
+ }
1096
+
1097
+ .anlyx-flow-story__support {
1098
+ position: relative;
1099
+ display: grid;
1100
+ max-width: 520px;
1101
+ gap: 10px;
1102
+ margin-left: min(260px, 22vw);
1103
+ padding: 14px;
1104
+ border: 1px dashed rgb(249 115 22 / 58%);
1105
+ border-radius: 14px;
1106
+ background: rgb(255 247 237 / 72%);
1107
+ }
1108
+
1109
+ .anlyx-flow-story__support::before {
1110
+ position: absolute;
1111
+ top: -54px;
1112
+ left: 28px;
1113
+ width: 2px;
1114
+ height: 54px;
1115
+ border-left: 2px dashed var(--anlyx-color-branch);
1116
+ content: "";
1117
+ }
1118
+
1119
+ .anlyx-flow-story__support-heading {
1120
+ display: flex;
1121
+ align-items: center;
1122
+ gap: 7px;
1123
+ color: #c2410c;
1124
+ font-size: 11px;
1125
+ font-weight: 900;
1126
+ text-transform: uppercase;
1127
+ }
1128
+
1129
+ .anlyx-flow-story__support-grid {
1130
+ display: grid;
1131
+ grid-template-columns: repeat(3, minmax(0, 1fr));
1132
+ gap: 10px;
1133
+ }
1134
+
1135
+ .anlyx-flow-story__support-node {
1136
+ gap: 6px;
1137
+ min-height: 100px;
1138
+ padding: 11px;
1139
+ border-color: #fed7aa;
1140
+ border-radius: 10px;
1141
+ background: #ffffff;
1142
+ box-shadow: 0 10px 24px rgb(249 115 22 / 8%);
1143
+ }
1144
+
1145
+ .anlyx-flow-story__support-node svg {
1146
+ color: var(--anlyx-color-branch);
1147
+ }
1148
+
1149
+ .anlyx-flow-story__map {
1150
+ overflow: hidden;
1151
+ min-width: 0;
1152
+ min-height: 0;
1153
+ border: 1px solid rgb(223 230 241 / 74%);
1154
+ border-radius: 10px;
1155
+ background: rgb(255 255 255 / 72%);
1156
+ }
1157
+
1158
+ .anlyx-flow-story__map .anlyx-workspace {
1159
+ height: 100%;
1160
+ background: transparent;
1161
+ }
1162
+
1163
+ .anlyx-flow-story__map .anlyx-workspace-header,
1164
+ .anlyx-flow-story__map .anlyx-flow-legend {
1165
+ display: none;
1166
+ }
1167
+
1168
+ .anlyx-flow-story__map .anlyx-endpoint-map {
1169
+ margin: 0;
1170
+ border: 0;
1171
+ border-radius: 0;
1172
+ background: transparent;
1173
+ box-shadow: none;
1174
+ }
1175
+
1176
+ .anlyx-flow-story__response {
1177
+ position: absolute;
1178
+ right: 52px;
1179
+ bottom: 40px;
1180
+ left: 45%;
1181
+ height: 26px;
1182
+ border-bottom: 2px dashed var(--anlyx-color-response);
1183
+ border-left: 2px dashed var(--anlyx-color-response);
1184
+ border-radius: 0 0 0 14px;
1185
+ color: var(--anlyx-color-response);
1186
+ pointer-events: none;
1187
+ }
1188
+
1189
+ .anlyx-flow-story__response span {
1190
+ position: absolute;
1191
+ right: 45%;
1192
+ bottom: -11px;
1193
+ padding: 2px 8px;
1194
+ border: 1px solid rgb(139 92 246 / 22%);
1195
+ border-radius: 999px;
1196
+ background: #f5f3ff;
1197
+ font-size: 11px;
1198
+ font-weight: 800;
1199
+ }
1200
+
1201
+ @media (max-width: 1320px) {
1202
+ .anlyx-interaction-chain {
1203
+ grid-template-columns: repeat(2, minmax(0, 1fr));
1204
+ }
1205
+
1206
+ .anlyx-flow-story__stage {
1207
+ grid-template-columns: minmax(240px, 320px) minmax(0, 1fr);
1208
+ gap: 20px;
1209
+ padding: 24px 20px 22px;
1210
+ }
1211
+
1212
+ .anlyx-flow-story__step {
1213
+ width: 148px;
1214
+ }
1215
+
1216
+ .anlyx-flow-story__support {
1217
+ margin-left: 180px;
1218
+ }
449
1219
  }
450
1220
 
451
- .anlyx-eyebrow {
452
- margin: 0 0 6px;
1221
+ @media (max-width: 1080px) {
1222
+ .anlyx-flow-story {
1223
+ overflow: auto;
1224
+ }
1225
+
1226
+ .anlyx-interaction-chain {
1227
+ grid-template-columns: 1fr;
1228
+ }
1229
+
1230
+ .anlyx-flow-story__stage {
1231
+ grid-template-columns: 1fr;
1232
+ overflow: visible;
1233
+ }
1234
+
1235
+ .anlyx-flow-story__request,
1236
+ .anlyx-flow-story__response {
1237
+ display: none;
1238
+ }
1239
+
1240
+ .anlyx-page-preview {
1241
+ max-width: 420px;
1242
+ }
1243
+
1244
+ .anlyx-flow-story__support {
1245
+ margin-left: 0;
1246
+ }
1247
+
1248
+ .anlyx-flow-story__support::before {
1249
+ display: none;
1250
+ }
453
1251
  }
454
1252
 
455
1253
  .anlyx-canvas-placeholder {
@@ -799,9 +1597,40 @@ body {
799
1597
  .anlyx-endpoint-map-empty {
800
1598
  display: grid;
801
1599
  min-height: 420px;
802
- place-items: center;
1600
+ align-content: center;
1601
+ justify-items: center;
1602
+ gap: 8px;
803
1603
  padding: 24px;
804
1604
  color: var(--anlyx-color-text-secondary);
1605
+ text-align: center;
1606
+ }
1607
+
1608
+ .anlyx-endpoint-map-empty span {
1609
+ display: inline-flex;
1610
+ align-items: center;
1611
+ min-height: 24px;
1612
+ padding: 0 9px;
1613
+ border: 1px solid #fed7aa;
1614
+ border-radius: 999px;
1615
+ background: #fff7ed;
1616
+ color: #c2410c;
1617
+ font-size: 11px;
1618
+ font-weight: 850;
1619
+ text-transform: uppercase;
1620
+ }
1621
+
1622
+ .anlyx-endpoint-map-empty h2 {
1623
+ margin: 4px 0 0;
1624
+ color: var(--anlyx-color-text-primary);
1625
+ font-size: 18px;
1626
+ line-height: 1.25;
1627
+ }
1628
+
1629
+ .anlyx-endpoint-map-empty p {
1630
+ max-width: 520px;
1631
+ margin: 0;
1632
+ font-size: 13px;
1633
+ line-height: 1.5;
805
1634
  }
806
1635
 
807
1636
  .anlyx-page-storyboard {
@@ -852,6 +1681,60 @@ body {
852
1681
  min-width: 0;
853
1682
  }
854
1683
 
1684
+ .anlyx-page-evidence-board {
1685
+ display: grid;
1686
+ grid-template-columns: minmax(210px, 1.2fr) repeat(3, minmax(150px, 1fr));
1687
+ gap: 10px;
1688
+ align-items: stretch;
1689
+ min-width: 0;
1690
+ padding: 12px;
1691
+ border: 1px solid #cfe0f8;
1692
+ border-radius: var(--anlyx-radius);
1693
+ background:
1694
+ linear-gradient(180deg, rgb(255 255 255 / 94%), rgb(248 251 255 / 92%)),
1695
+ radial-gradient(circle at 0% 0%, rgb(37 99 235 / 12%), transparent 34%);
1696
+ box-shadow: var(--anlyx-shadow-panel);
1697
+ }
1698
+
1699
+ .anlyx-page-evidence-board__intro,
1700
+ .anlyx-page-evidence-metric {
1701
+ display: grid;
1702
+ gap: 5px;
1703
+ min-width: 0;
1704
+ padding: 12px;
1705
+ border: 1px solid rgb(219 231 251 / 88%);
1706
+ border-radius: 9px;
1707
+ background: rgb(255 255 255 / 78%);
1708
+ }
1709
+
1710
+ .anlyx-page-evidence-board__intro {
1711
+ border-left: 4px solid var(--anlyx-color-request);
1712
+ }
1713
+
1714
+ .anlyx-page-evidence-board__intro span,
1715
+ .anlyx-page-evidence-metric span {
1716
+ color: var(--anlyx-color-text-secondary);
1717
+ font-size: 11px;
1718
+ font-weight: 900;
1719
+ text-transform: uppercase;
1720
+ }
1721
+
1722
+ .anlyx-page-evidence-board__intro strong,
1723
+ .anlyx-page-evidence-metric strong {
1724
+ overflow-wrap: anywhere;
1725
+ color: var(--anlyx-color-text-primary);
1726
+ font-size: 18px;
1727
+ line-height: 1.15;
1728
+ }
1729
+
1730
+ .anlyx-page-evidence-metric em {
1731
+ overflow-wrap: anywhere;
1732
+ color: var(--anlyx-color-text-secondary);
1733
+ font-size: 12px;
1734
+ font-style: normal;
1735
+ font-weight: 650;
1736
+ }
1737
+
855
1738
  .anlyx-storyboard-side {
856
1739
  display: grid;
857
1740
  gap: 16px;
@@ -1016,14 +1899,47 @@ body {
1016
1899
  margin: 0;
1017
1900
  }
1018
1901
 
1019
- .anlyx-segment-card__body code,
1020
- .anlyx-api-call__endpoint {
1902
+ .anlyx-segment-card__body code {
1021
1903
  overflow-wrap: anywhere;
1022
1904
  color: var(--anlyx-color-text-secondary);
1023
1905
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
1024
1906
  font-size: 12px;
1025
1907
  }
1026
1908
 
1909
+ .anlyx-api-call__endpoint {
1910
+ display: grid;
1911
+ gap: 4px;
1912
+ min-width: 0;
1913
+ padding: 9px;
1914
+ border: 1px dashed #cbd5e1;
1915
+ border-radius: 8px;
1916
+ background: #f8fafc;
1917
+ }
1918
+
1919
+ .anlyx-api-call__endpoint span {
1920
+ color: var(--anlyx-color-text-secondary);
1921
+ font-size: 10px;
1922
+ font-weight: 900;
1923
+ text-transform: uppercase;
1924
+ }
1925
+
1926
+ .anlyx-api-call__endpoint strong,
1927
+ .anlyx-api-call__endpoint em {
1928
+ overflow-wrap: anywhere;
1929
+ font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
1930
+ font-size: 12px;
1931
+ line-height: 1.35;
1932
+ }
1933
+
1934
+ .anlyx-api-call__endpoint strong {
1935
+ color: var(--anlyx-color-text-primary);
1936
+ }
1937
+
1938
+ .anlyx-api-call__endpoint em {
1939
+ color: var(--anlyx-color-text-secondary);
1940
+ font-style: normal;
1941
+ }
1942
+
1027
1943
  .anlyx-segment-card__meta,
1028
1944
  .anlyx-api-call__meta {
1029
1945
  display: flex;
@@ -1174,6 +2090,67 @@ body {
1174
2090
  padding-left: 18px;
1175
2091
  }
1176
2092
 
2093
+ .anlyx-evidence-list,
2094
+ .anlyx-call-list {
2095
+ display: grid;
2096
+ gap: 8px;
2097
+ padding: 0;
2098
+ list-style: none;
2099
+ }
2100
+
2101
+ .anlyx-evidence-list li,
2102
+ .anlyx-call-list li {
2103
+ display: grid;
2104
+ grid-template-columns: auto minmax(0, 1fr) auto;
2105
+ align-items: center;
2106
+ gap: 9px;
2107
+ min-width: 0;
2108
+ padding: 9px;
2109
+ border: 1px solid #e7edf6;
2110
+ border-radius: 8px;
2111
+ background: #fbfcff;
2112
+ }
2113
+
2114
+ .anlyx-evidence-list svg {
2115
+ color: var(--anlyx-color-confidence-high);
2116
+ }
2117
+
2118
+ .anlyx-evidence-list span,
2119
+ .anlyx-call-list span {
2120
+ display: grid;
2121
+ min-width: 0;
2122
+ gap: 2px;
2123
+ }
2124
+
2125
+ .anlyx-evidence-list strong {
2126
+ overflow: hidden;
2127
+ color: var(--anlyx-color-text-primary);
2128
+ font-size: 12px;
2129
+ text-overflow: ellipsis;
2130
+ white-space: nowrap;
2131
+ }
2132
+
2133
+ .anlyx-evidence-list em {
2134
+ overflow-wrap: anywhere;
2135
+ color: var(--anlyx-color-text-secondary);
2136
+ font-size: 11px;
2137
+ font-style: normal;
2138
+ line-height: 1.35;
2139
+ }
2140
+
2141
+ .anlyx-call-list li {
2142
+ grid-template-columns: minmax(0, 1fr) auto;
2143
+ }
2144
+
2145
+ .anlyx-call-list span {
2146
+ overflow: hidden;
2147
+ color: var(--anlyx-color-text-primary);
2148
+ font-size: 12px;
2149
+ font-weight: 650;
2150
+ text-overflow: ellipsis;
2151
+ white-space: nowrap;
2152
+ }
2153
+
1177
2154
  .anlyx-metadata {
1178
2155
  overflow: auto;
1179
2156
  max-width: 100%;
@@ -1192,16 +2169,21 @@ body {
1192
2169
  }
1193
2170
 
1194
2171
  .anlyx-replay {
1195
- display: flex;
1196
- align-items: center;
1197
- justify-content: space-between;
2172
+ display: grid;
1198
2173
  gap: 16px;
1199
- padding: 12px 20px;
2174
+ padding: 14px 20px;
1200
2175
  border-bottom: 1px solid var(--anlyx-color-border);
1201
2176
  background: rgb(255 255 255 / 86%);
1202
2177
  backdrop-filter: blur(14px);
1203
2178
  }
1204
2179
 
2180
+ .anlyx-replay__top {
2181
+ display: flex;
2182
+ align-items: center;
2183
+ justify-content: space-between;
2184
+ gap: 16px;
2185
+ }
2186
+
1205
2187
  .anlyx-process-view {
1206
2188
  display: grid;
1207
2189
  overflow: hidden;
@@ -1282,6 +2264,106 @@ body {
1282
2264
  font-size: 12px;
1283
2265
  }
1284
2266
 
2267
+ .anlyx-replay__focus {
2268
+ display: grid;
2269
+ align-items: center;
2270
+ min-width: 0;
2271
+ grid-template-columns: minmax(220px, 0.75fr) minmax(280px, 1fr);
2272
+ gap: 16px;
2273
+ padding: 12px;
2274
+ border: 1px solid #d9e6ff;
2275
+ border-radius: 8px;
2276
+ background:
2277
+ linear-gradient(90deg, rgb(37 99 235 / 8%), rgb(124 58 237 / 5%) 52%, rgb(20 184 166 / 7%)),
2278
+ #ffffff;
2279
+ box-shadow: inset 0 1px 0 rgb(255 255 255 / 70%);
2280
+ }
2281
+
2282
+ .anlyx-replay__focus strong {
2283
+ display: block;
2284
+ overflow: hidden;
2285
+ margin-top: 4px;
2286
+ color: var(--anlyx-color-text-primary);
2287
+ font-size: 13px;
2288
+ text-overflow: ellipsis;
2289
+ white-space: nowrap;
2290
+ }
2291
+
2292
+ .anlyx-replay__focus p {
2293
+ overflow: hidden;
2294
+ margin: 4px 0 0;
2295
+ color: var(--anlyx-color-text-secondary);
2296
+ font-size: 12px;
2297
+ font-weight: 650;
2298
+ line-height: 1.35;
2299
+ text-overflow: ellipsis;
2300
+ white-space: nowrap;
2301
+ }
2302
+
2303
+ .anlyx-replay__phase {
2304
+ color: #1d4ed8;
2305
+ font-size: 11px;
2306
+ font-weight: 800;
2307
+ letter-spacing: 0;
2308
+ text-transform: uppercase;
2309
+ }
2310
+
2311
+ .anlyx-replay__rail {
2312
+ display: grid;
2313
+ align-items: center;
2314
+ min-width: 0;
2315
+ grid-auto-columns: minmax(28px, 1fr);
2316
+ grid-auto-flow: column;
2317
+ gap: 6px;
2318
+ margin: 0;
2319
+ padding: 0;
2320
+ list-style: none;
2321
+ }
2322
+
2323
+ .anlyx-replay__rail li {
2324
+ position: relative;
2325
+ z-index: 0;
2326
+ display: flex;
2327
+ align-items: center;
2328
+ justify-content: center;
2329
+ min-width: 0;
2330
+ height: 24px;
2331
+ border: 1px solid #cbdcf8;
2332
+ border-radius: 999px;
2333
+ background: #f8fbff;
2334
+ color: #64748b;
2335
+ font-size: 10px;
2336
+ font-weight: 800;
2337
+ }
2338
+
2339
+ .anlyx-replay__rail li::before {
2340
+ position: absolute;
2341
+ z-index: 0;
2342
+ right: calc(50% + 12px);
2343
+ left: -10px;
2344
+ height: 2px;
2345
+ background: #dbeafe;
2346
+ content: "";
2347
+ }
2348
+
2349
+ .anlyx-replay__rail li span {
2350
+ position: relative;
2351
+ z-index: 1;
2352
+ }
2353
+
2354
+ .anlyx-replay__rail li:first-child::before {
2355
+ content: none;
2356
+ }
2357
+
2358
+ .anlyx-replay__rail-step--active {
2359
+ border-color: #2563eb !important;
2360
+ background: #2563eb !important;
2361
+ color: #ffffff !important;
2362
+ box-shadow:
2363
+ 0 0 0 4px rgb(37 99 235 / 12%),
2364
+ 0 10px 18px rgb(37 99 235 / 20%);
2365
+ }
2366
+
1285
2367
  .anlyx-process-timeline {
1286
2368
  display: grid;
1287
2369
  gap: 12px;
@@ -1488,6 +2570,38 @@ body {
1488
2570
  .anlyx-storyboard-grid {
1489
2571
  grid-template-columns: 1fr;
1490
2572
  }
2573
+
2574
+ .anlyx-page-evidence-board {
2575
+ grid-template-columns: repeat(2, minmax(0, 1fr));
2576
+ }
2577
+
2578
+ .anlyx-replay__top {
2579
+ align-items: flex-start;
2580
+ flex-direction: column;
2581
+ }
2582
+
2583
+ .anlyx-replay__state {
2584
+ justify-content: flex-start;
2585
+ }
2586
+
2587
+ .anlyx-replay__focus {
2588
+ grid-template-columns: 1fr;
2589
+ }
2590
+
2591
+ .anlyx-replay__rail {
2592
+ grid-auto-flow: row;
2593
+ grid-template-columns: repeat(6, minmax(28px, 1fr));
2594
+ }
2595
+ }
2596
+
2597
+ @media (max-width: 760px) {
2598
+ .anlyx-page-evidence-board {
2599
+ grid-template-columns: 1fr;
2600
+ }
2601
+
2602
+ .anlyx-replay__rail {
2603
+ grid-template-columns: repeat(3, minmax(28px, 1fr));
2604
+ }
1491
2605
  }
1492
2606
 
1493
2607
  @keyframes anlyx-flow-travel {