@lumeo-ui/mcp-server 3.5.0 → 3.5.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.
@@ -1,12 +1,13 @@
1
1
  {
2
2
  "$schema": "https://lumeo.nativ.sh/components-api-schema.json",
3
- "version": "3.5.0",
4
- "generated": "2026-05-28T07:33:40.3685580Z",
3
+ "version": "3.5.1",
4
+ "generated": "2026-05-28T09:54:11.6237347Z",
5
5
  "stats": {
6
6
  "componentCount": 163,
7
7
  "totalParameters": 3892,
8
8
  "totalEnums": 69,
9
9
  "totalRecords": 63,
10
+ "serviceCount": 32,
10
11
  "thinFallbacks": []
11
12
  },
12
13
  "themeTokens": [
@@ -424,6 +425,3088 @@
424
425
  ]
425
426
  }
426
427
  ],
428
+ "services": [
429
+ {
430
+ "name": "AlertDialogOptions",
431
+ "kind": "record",
432
+ "namespace": "Lumeo.Services",
433
+ "summary": null,
434
+ "properties": [
435
+ {
436
+ "name": "Title",
437
+ "type": "string",
438
+ "default": "\"Are you sure?\"",
439
+ "summary": null
440
+ },
441
+ {
442
+ "name": "Description",
443
+ "type": "string?",
444
+ "default": null,
445
+ "summary": null
446
+ },
447
+ {
448
+ "name": "ConfirmText",
449
+ "type": "string",
450
+ "default": "\"Continue\"",
451
+ "summary": null
452
+ },
453
+ {
454
+ "name": "CancelText",
455
+ "type": "string",
456
+ "default": "\"Cancel\"",
457
+ "summary": null
458
+ },
459
+ {
460
+ "name": "IsDestructive",
461
+ "type": "bool",
462
+ "default": null,
463
+ "summary": null
464
+ }
465
+ ],
466
+ "methods": [],
467
+ "events": [],
468
+ "enumValues": []
469
+ },
470
+ {
471
+ "name": "Align",
472
+ "kind": "enum",
473
+ "namespace": "Lumeo",
474
+ "summary": "Alignment along an axis (e.g. how a popover content aligns relative to its trigger along the perpendicular axis). Replaces the per-component *Align enums (PopoverAlign, DropdownMenuAlign, HoverCardAlign) in 3.0 (BREAKING).",
475
+ "properties": [],
476
+ "methods": [],
477
+ "events": [],
478
+ "enumValues": [
479
+ {
480
+ "name": "Start",
481
+ "summary": "Align to the start (left in LTR, top vertically)."
482
+ },
483
+ {
484
+ "name": "Center",
485
+ "summary": "Center."
486
+ },
487
+ {
488
+ "name": "End",
489
+ "summary": "Align to the end (right in LTR, bottom vertically)."
490
+ }
491
+ ]
492
+ },
493
+ {
494
+ "name": "Breakpoint",
495
+ "kind": "enum",
496
+ "namespace": "Lumeo.Services",
497
+ "summary": "Tailwind v4–aligned breakpoint name.",
498
+ "properties": [],
499
+ "methods": [],
500
+ "events": [],
501
+ "enumValues": [
502
+ {
503
+ "name": "Xs",
504
+ "summary": "Width < 640px — the mobile-first floor."
505
+ },
506
+ {
507
+ "name": "Sm",
508
+ "summary": "Width in [640, 768) — large phones / small tablets in portrait."
509
+ },
510
+ {
511
+ "name": "Md",
512
+ "summary": "Width in [768, 1024) — tablets, phones in landscape."
513
+ },
514
+ {
515
+ "name": "Lg",
516
+ "summary": "Width in [1024, 1280) — laptops, narrow desktops."
517
+ },
518
+ {
519
+ "name": "Xl",
520
+ "summary": "Width in [1280, 1536) — typical desktop monitors."
521
+ },
522
+ {
523
+ "name": "Xxl",
524
+ "summary": "Width >= 1536px — wide desktop monitors."
525
+ }
526
+ ]
527
+ },
528
+ {
529
+ "name": "Breakpoints",
530
+ "kind": "staticClass",
531
+ "namespace": "Lumeo.Services",
532
+ "summary": "Tailwind breakpoint pixel values, exposed as constants so call sites don't repeat the magic numbers. Aligned with Tailwind v4 defaults.",
533
+ "properties": [
534
+ {
535
+ "name": "Sm",
536
+ "type": "int",
537
+ "default": "640",
538
+ "summary": null
539
+ },
540
+ {
541
+ "name": "Md",
542
+ "type": "int",
543
+ "default": "768",
544
+ "summary": null
545
+ },
546
+ {
547
+ "name": "Lg",
548
+ "type": "int",
549
+ "default": "1024",
550
+ "summary": null
551
+ },
552
+ {
553
+ "name": "Xl",
554
+ "type": "int",
555
+ "default": "1280",
556
+ "summary": null
557
+ },
558
+ {
559
+ "name": "Xxl",
560
+ "type": "int",
561
+ "default": "1536",
562
+ "summary": null
563
+ }
564
+ ],
565
+ "methods": [],
566
+ "events": [],
567
+ "enumValues": []
568
+ },
569
+ {
570
+ "name": "ComponentInteropService",
571
+ "kind": "class",
572
+ "namespace": "Lumeo.Services",
573
+ "summary": null,
574
+ "properties": [],
575
+ "methods": [
576
+ {
577
+ "name": "RegisterClickOutside",
578
+ "returnType": "ValueTask",
579
+ "signature": "RegisterClickOutside(string elementId, string? triggerElementId, Func<Task> handler)",
580
+ "summary": null
581
+ },
582
+ {
583
+ "name": "UnregisterClickOutside",
584
+ "returnType": "ValueTask",
585
+ "signature": "UnregisterClickOutside(string elementId)",
586
+ "summary": null
587
+ },
588
+ {
589
+ "name": "OnClickOutside",
590
+ "returnType": "Task",
591
+ "signature": "OnClickOutside(string elementId)",
592
+ "summary": null
593
+ },
594
+ {
595
+ "name": "FocusElement",
596
+ "returnType": "ValueTask",
597
+ "signature": "FocusElement(string elementId)",
598
+ "summary": null
599
+ },
600
+ {
601
+ "name": "FocusMenuItemByIndex",
602
+ "returnType": "ValueTask",
603
+ "signature": "FocusMenuItemByIndex(string containerId, int index)",
604
+ "summary": null
605
+ },
606
+ {
607
+ "name": "GetMenuItemCount",
608
+ "returnType": "ValueTask<int>",
609
+ "signature": "GetMenuItemCount(string containerId)",
610
+ "summary": null
611
+ },
612
+ {
613
+ "name": "LockScroll",
614
+ "returnType": "ValueTask",
615
+ "signature": "LockScroll()",
616
+ "summary": null
617
+ },
618
+ {
619
+ "name": "AttachOverlaySlideEnd",
620
+ "returnType": "ValueTask",
621
+ "signature": "AttachOverlaySlideEnd(string elementId)",
622
+ "summary": null
623
+ },
624
+ {
625
+ "name": "UnlockScroll",
626
+ "returnType": "ValueTask",
627
+ "signature": "UnlockScroll()",
628
+ "summary": null
629
+ },
630
+ {
631
+ "name": "SetHtmlClass",
632
+ "returnType": "ValueTask",
633
+ "signature": "SetHtmlClass(string className, bool active)",
634
+ "summary": null
635
+ },
636
+ {
637
+ "name": "SetupFocusTrap",
638
+ "returnType": "ValueTask",
639
+ "signature": "SetupFocusTrap(string elementId)",
640
+ "summary": null
641
+ },
642
+ {
643
+ "name": "RemoveFocusTrap",
644
+ "returnType": "ValueTask",
645
+ "signature": "RemoveFocusTrap(string elementId)",
646
+ "summary": null
647
+ },
648
+ {
649
+ "name": "RegisterSvDrag",
650
+ "returnType": "ValueTask",
651
+ "signature": "RegisterSvDrag(string elementId, Func<double, double, Task> handler)",
652
+ "summary": null
653
+ },
654
+ {
655
+ "name": "UnregisterSvDrag",
656
+ "returnType": "ValueTask",
657
+ "signature": "UnregisterSvDrag(string elementId)",
658
+ "summary": null
659
+ },
660
+ {
661
+ "name": "OnSvDrag",
662
+ "returnType": "Task",
663
+ "signature": "OnSvDrag(string elementId, double s, double v)",
664
+ "summary": null
665
+ },
666
+ {
667
+ "name": "RegisterPinchZoom",
668
+ "returnType": "ValueTask",
669
+ "signature": "RegisterPinchZoom(string elementId, Func<double, Task> handler)",
670
+ "summary": null
671
+ },
672
+ {
673
+ "name": "UnregisterPinchZoom",
674
+ "returnType": "ValueTask",
675
+ "signature": "UnregisterPinchZoom(string elementId)",
676
+ "summary": null
677
+ },
678
+ {
679
+ "name": "OnPinchZoom",
680
+ "returnType": "Task",
681
+ "signature": "OnPinchZoom(string elementId, double scaleDelta)",
682
+ "summary": null
683
+ },
684
+ {
685
+ "name": "GetViewportSize",
686
+ "returnType": "ValueTask<ViewportSize>",
687
+ "signature": "GetViewportSize()",
688
+ "summary": null
689
+ },
690
+ {
691
+ "name": "RegisterViewportListener",
692
+ "returnType": "ValueTask<ViewportSize?>",
693
+ "signature": "RegisterViewportListener(DotNetObjectReference<ResponsiveService> dotnetRef)",
694
+ "summary": null
695
+ },
696
+ {
697
+ "name": "UnregisterViewportListener",
698
+ "returnType": "ValueTask",
699
+ "signature": "UnregisterViewportListener()",
700
+ "summary": null
701
+ },
702
+ {
703
+ "name": "PositionFixed",
704
+ "returnType": "ValueTask",
705
+ "signature": "PositionFixed(string contentId, string referenceId, string align = \"start\", bool matchWidth = false, string side = \"bottom\")",
706
+ "summary": null
707
+ },
708
+ {
709
+ "name": "UnpositionFixed",
710
+ "returnType": "ValueTask",
711
+ "signature": "UnpositionFixed(string contentId)",
712
+ "summary": null
713
+ },
714
+ {
715
+ "name": "GetElementRect",
716
+ "returnType": "ValueTask<ElementRect?>",
717
+ "signature": "GetElementRect(string elementId)",
718
+ "summary": null
719
+ },
720
+ {
721
+ "name": "GetElementDimension",
722
+ "returnType": "ValueTask<double>",
723
+ "signature": "GetElementDimension(string elementId, string dimension)",
724
+ "summary": null
725
+ },
726
+ {
727
+ "name": "GetScrollTop",
728
+ "returnType": "ValueTask<double>",
729
+ "signature": "GetScrollTop(string elementId)",
730
+ "summary": null
731
+ },
732
+ {
733
+ "name": "WheelScrollTop",
734
+ "returnType": "ValueTask<double>",
735
+ "signature": "WheelScrollTop(Microsoft.AspNetCore.Components.ElementReference element)",
736
+ "summary": null
737
+ },
738
+ {
739
+ "name": "WheelScrollTo",
740
+ "returnType": "ValueTask",
741
+ "signature": "WheelScrollTo(Microsoft.AspNetCore.Components.ElementReference element, double top)",
742
+ "summary": null
743
+ },
744
+ {
745
+ "name": "SetPointerCaptureOnElement",
746
+ "returnType": "ValueTask",
747
+ "signature": "SetPointerCaptureOnElement(string elementId, long pointerId)",
748
+ "summary": null
749
+ },
750
+ {
751
+ "name": "ReleasePointerCaptureOnElement",
752
+ "returnType": "ValueTask",
753
+ "signature": "ReleasePointerCaptureOnElement(string elementId, long pointerId)",
754
+ "summary": null
755
+ },
756
+ {
757
+ "name": "RegisterDrawerSwipe",
758
+ "returnType": "ValueTask",
759
+ "signature": "RegisterDrawerSwipe(string elementId, string direction, Func<Task> handler)",
760
+ "summary": null
761
+ },
762
+ {
763
+ "name": "RegisterDrawerSwipe",
764
+ "returnType": "ValueTask",
765
+ "signature": "RegisterDrawerSwipe(string elementId, Func<Task> handler)",
766
+ "summary": null
767
+ },
768
+ {
769
+ "name": "RegisterDrawerSwipe",
770
+ "returnType": "ValueTask",
771
+ "signature": "RegisterDrawerSwipe(string elementId, string direction, Func<Task> handler, int? activationPx, int? firePx)",
772
+ "summary": null
773
+ },
774
+ {
775
+ "name": "UnregisterDrawerSwipe",
776
+ "returnType": "ValueTask",
777
+ "signature": "UnregisterDrawerSwipe(string elementId)",
778
+ "summary": null
779
+ },
780
+ {
781
+ "name": "OnSwipeDismiss",
782
+ "returnType": "Task",
783
+ "signature": "OnSwipeDismiss(string elementId)",
784
+ "summary": null
785
+ },
786
+ {
787
+ "name": "RegisterSortableTouch",
788
+ "returnType": "ValueTask",
789
+ "signature": "RegisterSortableTouch(string containerId, Func<int, int, Task> handler)",
790
+ "summary": null
791
+ },
792
+ {
793
+ "name": "UnregisterSortableTouch",
794
+ "returnType": "ValueTask",
795
+ "signature": "UnregisterSortableTouch(string containerId)",
796
+ "summary": null
797
+ },
798
+ {
799
+ "name": "OnSortableTouchDrop",
800
+ "returnType": "Task",
801
+ "signature": "OnSortableTouchDrop(string containerId, int source, int target)",
802
+ "summary": null
803
+ },
804
+ {
805
+ "name": "RegisterCarouselSwipe",
806
+ "returnType": "ValueTask",
807
+ "signature": "RegisterCarouselSwipe(string elementId, string orientation, Func<string, Task> swipeHandler, Func<double, double, int, Task> scrollHandler)",
808
+ "summary": null
809
+ },
810
+ {
811
+ "name": "RegisterCarouselSwipe",
812
+ "returnType": "ValueTask",
813
+ "signature": "RegisterCarouselSwipe(string elementId, string orientation, Func<string, Task> swipeHandler, Func<double, double, int, Task> scrollHandler, int? swipeThresholdPx, int? verticalDeadZonePx)",
814
+ "summary": null
815
+ },
816
+ {
817
+ "name": "UnregisterCarouselSwipe",
818
+ "returnType": "ValueTask",
819
+ "signature": "UnregisterCarouselSwipe(string elementId)",
820
+ "summary": null
821
+ },
822
+ {
823
+ "name": "RegisterHorizontalSwipe",
824
+ "returnType": "ValueTask",
825
+ "signature": "RegisterHorizontalSwipe(string elementId, Func<string, Task> handler)",
826
+ "summary": null
827
+ },
828
+ {
829
+ "name": "RegisterHorizontalSwipe",
830
+ "returnType": "ValueTask",
831
+ "signature": "RegisterHorizontalSwipe(string elementId, Func<string, Task> handler, int? swipeThresholdPx, int? verticalDeadZonePx)",
832
+ "summary": null
833
+ },
834
+ {
835
+ "name": "UnregisterHorizontalSwipe",
836
+ "returnType": "ValueTask",
837
+ "signature": "UnregisterHorizontalSwipe(string elementId)",
838
+ "summary": null
839
+ },
840
+ {
841
+ "name": "OnCalendarSwipe",
842
+ "returnType": "Task",
843
+ "signature": "OnCalendarSwipe(string elementId, string direction)",
844
+ "summary": null
845
+ },
846
+ {
847
+ "name": "RegisterGallerySwipe",
848
+ "returnType": "ValueTask",
849
+ "signature": "RegisterGallerySwipe(string elementId, Func<string, Task> handler)",
850
+ "summary": null
851
+ },
852
+ {
853
+ "name": "RegisterGallerySwipe",
854
+ "returnType": "ValueTask",
855
+ "signature": "RegisterGallerySwipe(string elementId, Func<string, Task> handler, int? swipeThresholdPx, int? verticalDeadZonePx)",
856
+ "summary": null
857
+ },
858
+ {
859
+ "name": "UnregisterGallerySwipe",
860
+ "returnType": "ValueTask",
861
+ "signature": "UnregisterGallerySwipe(string elementId)",
862
+ "summary": null
863
+ },
864
+ {
865
+ "name": "OnGallerySwipe",
866
+ "returnType": "Task",
867
+ "signature": "OnGallerySwipe(string elementId, string direction)",
868
+ "summary": null
869
+ },
870
+ {
871
+ "name": "RegisterTabSwipe",
872
+ "returnType": "ValueTask",
873
+ "signature": "RegisterTabSwipe(string elementId, bool wrap, Func<string, Task> handler)",
874
+ "summary": null
875
+ },
876
+ {
877
+ "name": "RegisterTabSwipe",
878
+ "returnType": "ValueTask",
879
+ "signature": "RegisterTabSwipe(string elementId, bool wrap, Func<string, Task> handler, int? swipeThresholdPx, int? verticalDeadZonePx)",
880
+ "summary": null
881
+ },
882
+ {
883
+ "name": "UnregisterTabSwipe",
884
+ "returnType": "ValueTask",
885
+ "signature": "UnregisterTabSwipe(string elementId)",
886
+ "summary": null
887
+ },
888
+ {
889
+ "name": "OnTabSwipe",
890
+ "returnType": "Task",
891
+ "signature": "OnTabSwipe(string elementId, string direction)",
892
+ "summary": null
893
+ },
894
+ {
895
+ "name": "CarouselScrollTo",
896
+ "returnType": "ValueTask",
897
+ "signature": "CarouselScrollTo(string elementId, int index, string behavior = \"smooth\")",
898
+ "summary": null
899
+ },
900
+ {
901
+ "name": "OnSwipe",
902
+ "returnType": "Task",
903
+ "signature": "OnSwipe(string elementId, string direction)",
904
+ "summary": null
905
+ },
906
+ {
907
+ "name": "OnScrollPosition",
908
+ "returnType": "Task",
909
+ "signature": "OnScrollPosition(string elementId, double scrollPos, double maxScroll, int nearestIndex = -1)",
910
+ "summary": null
911
+ },
912
+ {
913
+ "name": "RegisterResizeHandle",
914
+ "returnType": "ValueTask",
915
+ "signature": "RegisterResizeHandle(string elementId, string direction, Func<double, Task> resizeHandler, Func<Task> resizeEndHandler)",
916
+ "summary": null
917
+ },
918
+ {
919
+ "name": "UnregisterResizeHandle",
920
+ "returnType": "ValueTask",
921
+ "signature": "UnregisterResizeHandle(string elementId)",
922
+ "summary": null
923
+ },
924
+ {
925
+ "name": "OnResize",
926
+ "returnType": "Task",
927
+ "signature": "OnResize(string elementId, double delta)",
928
+ "summary": null
929
+ },
930
+ {
931
+ "name": "OnResizeEnd",
932
+ "returnType": "Task",
933
+ "signature": "OnResizeEnd(string elementId)",
934
+ "summary": null
935
+ },
936
+ {
937
+ "name": "RegisterScrollspy",
938
+ "returnType": "ValueTask",
939
+ "signature": "RegisterScrollspy(string containerId, int offset, bool smooth, Func<string?, Task> handler)",
940
+ "summary": null
941
+ },
942
+ {
943
+ "name": "UnregisterScrollspy",
944
+ "returnType": "ValueTask",
945
+ "signature": "UnregisterScrollspy(string containerId)",
946
+ "summary": null
947
+ },
948
+ {
949
+ "name": "ScrollspyScrollTo",
950
+ "returnType": "ValueTask",
951
+ "signature": "ScrollspyScrollTo(string containerId, string sectionId, bool smooth)",
952
+ "summary": null
953
+ },
954
+ {
955
+ "name": "OnScrollspyUpdate",
956
+ "returnType": "Task",
957
+ "signature": "OnScrollspyUpdate(string containerId, string? activeId)",
958
+ "summary": null
959
+ },
960
+ {
961
+ "name": "RegisterToastSwipe",
962
+ "returnType": "ValueTask",
963
+ "signature": "RegisterToastSwipe(string elementId, string toastId, Func<string, Task> handler)",
964
+ "summary": null
965
+ },
966
+ {
967
+ "name": "UnregisterToastSwipe",
968
+ "returnType": "ValueTask",
969
+ "signature": "UnregisterToastSwipe(string toastId, string elementId)",
970
+ "summary": null
971
+ },
972
+ {
973
+ "name": "OnToastSwipeDismiss",
974
+ "returnType": "Task",
975
+ "signature": "OnToastSwipeDismiss(string toastId)",
976
+ "summary": null
977
+ },
978
+ {
979
+ "name": "SetupAutoResize",
980
+ "returnType": "ValueTask",
981
+ "signature": "SetupAutoResize(string elementId, int maxRows)",
982
+ "summary": null
983
+ },
984
+ {
985
+ "name": "UnregisterAutoResize",
986
+ "returnType": "ValueTask",
987
+ "signature": "UnregisterAutoResize(string elementId)",
988
+ "summary": null
989
+ },
990
+ {
991
+ "name": "RegisterOtpPaste",
992
+ "returnType": "ValueTask",
993
+ "signature": "RegisterOtpPaste(string baseId, int length, Func<string, Task> handler)",
994
+ "summary": null
995
+ },
996
+ {
997
+ "name": "UnregisterOtpPaste",
998
+ "returnType": "ValueTask",
999
+ "signature": "UnregisterOtpPaste(string baseId, int length)",
1000
+ "summary": null
1001
+ },
1002
+ {
1003
+ "name": "OnOtpPaste",
1004
+ "returnType": "Task",
1005
+ "signature": "OnOtpPaste(string baseId, string digits)",
1006
+ "summary": null
1007
+ },
1008
+ {
1009
+ "name": "RegisterColumnResize",
1010
+ "returnType": "ValueTask",
1011
+ "signature": "RegisterColumnResize(string handleId, double minWidth, double? maxWidth, Func<double, Task> commitHandler)",
1012
+ "summary": null
1013
+ },
1014
+ {
1015
+ "name": "UnregisterColumnResize",
1016
+ "returnType": "ValueTask",
1017
+ "signature": "UnregisterColumnResize(string handleId)",
1018
+ "summary": null
1019
+ },
1020
+ {
1021
+ "name": "OnColumnResize",
1022
+ "returnType": "Task",
1023
+ "signature": "OnColumnResize(string handleId, double delta)",
1024
+ "summary": null
1025
+ },
1026
+ {
1027
+ "name": "OnColumnResizeEnd",
1028
+ "returnType": "Task",
1029
+ "signature": "OnColumnResizeEnd(string handleId)",
1030
+ "summary": null
1031
+ },
1032
+ {
1033
+ "name": "OnColumnResizeCommit",
1034
+ "returnType": "Task",
1035
+ "signature": "OnColumnResizeCommit(string handleId, double finalWidth)",
1036
+ "summary": null
1037
+ },
1038
+ {
1039
+ "name": "CaptureColumnRects",
1040
+ "returnType": "ValueTask",
1041
+ "signature": "CaptureColumnRects(string gridId)",
1042
+ "summary": null
1043
+ },
1044
+ {
1045
+ "name": "AnimateColumnReorder",
1046
+ "returnType": "ValueTask",
1047
+ "signature": "AnimateColumnReorder(string gridId, int durationMs)",
1048
+ "summary": null
1049
+ },
1050
+ {
1051
+ "name": "GetElementRectBySelector",
1052
+ "returnType": "ValueTask<ElementRect?>",
1053
+ "signature": "GetElementRectBySelector(string selector)",
1054
+ "summary": null
1055
+ },
1056
+ {
1057
+ "name": "RegisterAffix",
1058
+ "returnType": "ValueTask",
1059
+ "signature": "RegisterAffix(string elementId, int offsetTop, int? offsetBottom, string? target, Func<bool, Task> handler)",
1060
+ "summary": null
1061
+ },
1062
+ {
1063
+ "name": "UnregisterAffix",
1064
+ "returnType": "ValueTask",
1065
+ "signature": "UnregisterAffix(string elementId)",
1066
+ "summary": null
1067
+ },
1068
+ {
1069
+ "name": "OnAffixChanged",
1070
+ "returnType": "Task",
1071
+ "signature": "OnAffixChanged(string elementId, bool isFixed)",
1072
+ "summary": null
1073
+ },
1074
+ {
1075
+ "name": "GetTextareaCaretPosition",
1076
+ "returnType": "ValueTask<TextareaCaretInfo>",
1077
+ "signature": "GetTextareaCaretPosition(string elementId)",
1078
+ "summary": null
1079
+ },
1080
+ {
1081
+ "name": "RegisterBackToTop",
1082
+ "returnType": "ValueTask",
1083
+ "signature": "RegisterBackToTop(string id, int threshold, Func<bool, Task> handler)",
1084
+ "summary": null
1085
+ },
1086
+ {
1087
+ "name": "UnregisterBackToTop",
1088
+ "returnType": "ValueTask",
1089
+ "signature": "UnregisterBackToTop(string id)",
1090
+ "summary": null
1091
+ },
1092
+ {
1093
+ "name": "ScrollToTop",
1094
+ "returnType": "ValueTask",
1095
+ "signature": "ScrollToTop()",
1096
+ "summary": null
1097
+ },
1098
+ {
1099
+ "name": "OnScrollVisibilityChanged",
1100
+ "returnType": "Task",
1101
+ "signature": "OnScrollVisibilityChanged(string id, bool visible)",
1102
+ "summary": null
1103
+ },
1104
+ {
1105
+ "name": "DownloadFile",
1106
+ "returnType": "ValueTask",
1107
+ "signature": "DownloadFile(string fileName, string contentBase64, string mimeType = \"application/octet-stream\")",
1108
+ "summary": null
1109
+ },
1110
+ {
1111
+ "name": "CopyToClipboard",
1112
+ "returnType": "ValueTask",
1113
+ "signature": "CopyToClipboard(string text)",
1114
+ "summary": null
1115
+ },
1116
+ {
1117
+ "name": "RippleAttachAsync",
1118
+ "returnType": "ValueTask",
1119
+ "signature": "RippleAttachAsync(Microsoft.AspNetCore.Components.ElementReference element)",
1120
+ "summary": null
1121
+ },
1122
+ {
1123
+ "name": "RippleDetachAsync",
1124
+ "returnType": "ValueTask",
1125
+ "signature": "RippleDetachAsync(Microsoft.AspNetCore.Components.ElementReference element)",
1126
+ "summary": null
1127
+ },
1128
+ {
1129
+ "name": "PlayMedia",
1130
+ "returnType": "ValueTask",
1131
+ "signature": "PlayMedia(Microsoft.AspNetCore.Components.ElementReference element)",
1132
+ "summary": null
1133
+ },
1134
+ {
1135
+ "name": "PauseMedia",
1136
+ "returnType": "ValueTask",
1137
+ "signature": "PauseMedia(Microsoft.AspNetCore.Components.ElementReference element)",
1138
+ "summary": null
1139
+ },
1140
+ {
1141
+ "name": "SetMediaVolume",
1142
+ "returnType": "ValueTask",
1143
+ "signature": "SetMediaVolume(Microsoft.AspNetCore.Components.ElementReference element, double volume, bool muted)",
1144
+ "summary": null
1145
+ },
1146
+ {
1147
+ "name": "SeekMedia",
1148
+ "returnType": "ValueTask",
1149
+ "signature": "SeekMedia(Microsoft.AspNetCore.Components.ElementReference element, double seconds)",
1150
+ "summary": null
1151
+ },
1152
+ {
1153
+ "name": "GetMediaState",
1154
+ "returnType": "ValueTask<MediaState>",
1155
+ "signature": "GetMediaState(Microsoft.AspNetCore.Components.ElementReference element)",
1156
+ "summary": null
1157
+ },
1158
+ {
1159
+ "name": "Vibrate",
1160
+ "returnType": "ValueTask",
1161
+ "signature": "Vibrate(int milliseconds)",
1162
+ "summary": null
1163
+ },
1164
+ {
1165
+ "name": "SaveToLocalStorage",
1166
+ "returnType": "ValueTask",
1167
+ "signature": "SaveToLocalStorage(string key, string value)",
1168
+ "summary": null
1169
+ },
1170
+ {
1171
+ "name": "LoadFromLocalStorage",
1172
+ "returnType": "ValueTask<string?>",
1173
+ "signature": "LoadFromLocalStorage(string key)",
1174
+ "summary": null
1175
+ },
1176
+ {
1177
+ "name": "RemoveFromLocalStorage",
1178
+ "returnType": "ValueTask",
1179
+ "signature": "RemoveFromLocalStorage(string key)",
1180
+ "summary": null
1181
+ },
1182
+ {
1183
+ "name": "MotionTickNumber",
1184
+ "returnType": "ValueTask",
1185
+ "signature": "MotionTickNumber(string elementId, double from, double to, int durationMs, int decimals, string separator = \",\")",
1186
+ "summary": null
1187
+ },
1188
+ {
1189
+ "name": "MotionDisposeTicker",
1190
+ "returnType": "ValueTask",
1191
+ "signature": "MotionDisposeTicker(string elementId)",
1192
+ "summary": null
1193
+ },
1194
+ {
1195
+ "name": "MotionRevealText",
1196
+ "returnType": "ValueTask",
1197
+ "signature": "MotionRevealText(string elementId, int staggerMs, double threshold)",
1198
+ "summary": null
1199
+ },
1200
+ {
1201
+ "name": "MotionBlurFade",
1202
+ "returnType": "ValueTask",
1203
+ "signature": "MotionBlurFade(string elementId, int delayMs, bool once, bool forceHidden = false)",
1204
+ "summary": null
1205
+ },
1206
+ {
1207
+ "name": "MotionDisposeObserver",
1208
+ "returnType": "ValueTask",
1209
+ "signature": "MotionDisposeObserver(string elementId)",
1210
+ "summary": null
1211
+ },
1212
+ {
1213
+ "name": "MotionAnimatedBeam",
1214
+ "returnType": "ValueTask",
1215
+ "signature": "MotionAnimatedBeam(string elementId, string fromId, string toId, object options)",
1216
+ "summary": null
1217
+ },
1218
+ {
1219
+ "name": "MotionDisposeAnimatedBeam",
1220
+ "returnType": "ValueTask",
1221
+ "signature": "MotionDisposeAnimatedBeam(string elementId)",
1222
+ "summary": null
1223
+ },
1224
+ {
1225
+ "name": "MotionDock",
1226
+ "returnType": "ValueTask",
1227
+ "signature": "MotionDock(string elementId, object options)",
1228
+ "summary": null
1229
+ },
1230
+ {
1231
+ "name": "MotionDisposeDock",
1232
+ "returnType": "ValueTask",
1233
+ "signature": "MotionDisposeDock(string elementId)",
1234
+ "summary": null
1235
+ },
1236
+ {
1237
+ "name": "MotionConfettiInit",
1238
+ "returnType": "ValueTask",
1239
+ "signature": "MotionConfettiInit(string elementId)",
1240
+ "summary": null
1241
+ },
1242
+ {
1243
+ "name": "MotionConfettiFire",
1244
+ "returnType": "ValueTask",
1245
+ "signature": "MotionConfettiFire(string elementId, object options)",
1246
+ "summary": null
1247
+ },
1248
+ {
1249
+ "name": "MotionDisposeConfetti",
1250
+ "returnType": "ValueTask",
1251
+ "signature": "MotionDisposeConfetti(string elementId)",
1252
+ "summary": null
1253
+ },
1254
+ {
1255
+ "name": "TabsMeasure",
1256
+ "returnType": "ValueTask<TabMeasurement?>",
1257
+ "signature": "TabsMeasure(string elementId)",
1258
+ "summary": null
1259
+ },
1260
+ {
1261
+ "name": "AiAutosize",
1262
+ "returnType": "ValueTask",
1263
+ "signature": "AiAutosize(string elementId, int maxPx)",
1264
+ "summary": null
1265
+ },
1266
+ {
1267
+ "name": "AiObserveAutoScroll",
1268
+ "returnType": "ValueTask",
1269
+ "signature": "AiObserveAutoScroll(string elementId)",
1270
+ "summary": null
1271
+ },
1272
+ {
1273
+ "name": "AiDisposeAutoScroll",
1274
+ "returnType": "ValueTask",
1275
+ "signature": "AiDisposeAutoScroll(string elementId)",
1276
+ "summary": null
1277
+ },
1278
+ {
1279
+ "name": "AiScrollToBottom",
1280
+ "returnType": "ValueTask",
1281
+ "signature": "AiScrollToBottom(string elementId)",
1282
+ "summary": null
1283
+ },
1284
+ {
1285
+ "name": "ImportModuleAsync",
1286
+ "returnType": "ValueTask<IJSObjectReference>",
1287
+ "signature": "ImportModuleAsync(string moduleUrl)",
1288
+ "summary": null
1289
+ },
1290
+ {
1291
+ "name": "SchedulerInitAsync",
1292
+ "returnType": "Task<string>",
1293
+ "signature": "SchedulerInitAsync(Microsoft.AspNetCore.Components.ElementReference el, object dotNetRef, object options)",
1294
+ "summary": null
1295
+ },
1296
+ {
1297
+ "name": "SchedulerSetEventsAsync",
1298
+ "returnType": "Task",
1299
+ "signature": "SchedulerSetEventsAsync(string id, IEnumerable<object> events)",
1300
+ "summary": null
1301
+ },
1302
+ {
1303
+ "name": "SchedulerChangeViewAsync",
1304
+ "returnType": "Task",
1305
+ "signature": "SchedulerChangeViewAsync(string id, string view)",
1306
+ "summary": null
1307
+ },
1308
+ {
1309
+ "name": "SchedulerGotoDateAsync",
1310
+ "returnType": "Task",
1311
+ "signature": "SchedulerGotoDateAsync(string id, string dateIso)",
1312
+ "summary": null
1313
+ },
1314
+ {
1315
+ "name": "SchedulerPrevAsync",
1316
+ "returnType": "Task",
1317
+ "signature": "SchedulerPrevAsync(string id)",
1318
+ "summary": null
1319
+ },
1320
+ {
1321
+ "name": "SchedulerNextAsync",
1322
+ "returnType": "Task",
1323
+ "signature": "SchedulerNextAsync(string id)",
1324
+ "summary": null
1325
+ },
1326
+ {
1327
+ "name": "SchedulerTodayAsync",
1328
+ "returnType": "Task",
1329
+ "signature": "SchedulerTodayAsync(string id)",
1330
+ "summary": null
1331
+ },
1332
+ {
1333
+ "name": "SchedulerGetTitleAsync",
1334
+ "returnType": "Task<string>",
1335
+ "signature": "SchedulerGetTitleAsync(string id)",
1336
+ "summary": null
1337
+ },
1338
+ {
1339
+ "name": "SchedulerDestroyAsync",
1340
+ "returnType": "Task",
1341
+ "signature": "SchedulerDestroyAsync(string id)",
1342
+ "summary": null
1343
+ },
1344
+ {
1345
+ "name": "GanttInitAsync",
1346
+ "returnType": "Task<string>",
1347
+ "signature": "GanttInitAsync(Microsoft.AspNetCore.Components.ElementReference el, object dotNetRef, object options)",
1348
+ "summary": null
1349
+ },
1350
+ {
1351
+ "name": "GanttSetTasksAsync",
1352
+ "returnType": "Task",
1353
+ "signature": "GanttSetTasksAsync(string id, IEnumerable<object> tasks)",
1354
+ "summary": null
1355
+ },
1356
+ {
1357
+ "name": "GanttChangeViewModeAsync",
1358
+ "returnType": "Task",
1359
+ "signature": "GanttChangeViewModeAsync(string id, string mode)",
1360
+ "summary": null
1361
+ },
1362
+ {
1363
+ "name": "GanttDestroyAsync",
1364
+ "returnType": "Task",
1365
+ "signature": "GanttDestroyAsync(string id)",
1366
+ "summary": null
1367
+ },
1368
+ {
1369
+ "name": "RegisterToolbarOverflow",
1370
+ "returnType": "ValueTask",
1371
+ "signature": "RegisterToolbarOverflow(string elementId, Func<int, int, Task> handler)",
1372
+ "summary": null
1373
+ },
1374
+ {
1375
+ "name": "UnregisterToolbarOverflow",
1376
+ "returnType": "ValueTask",
1377
+ "signature": "UnregisterToolbarOverflow(string elementId)",
1378
+ "summary": null
1379
+ },
1380
+ {
1381
+ "name": "OnToolbarOverflowMeasured",
1382
+ "returnType": "Task",
1383
+ "signature": "OnToolbarOverflowMeasured(string elementId, int fittingCount, int totalCount)",
1384
+ "summary": null
1385
+ },
1386
+ {
1387
+ "name": "RichTextInitAsync",
1388
+ "returnType": "ValueTask<string>",
1389
+ "signature": "RichTextInitAsync<T>(Microsoft.AspNetCore.Components.ElementReference elementRef, DotNetObjectReference<T> dotNetRef, object options)",
1390
+ "summary": null
1391
+ },
1392
+ {
1393
+ "name": "RichTextSetContentAsync",
1394
+ "returnType": "ValueTask",
1395
+ "signature": "RichTextSetContentAsync(string id, string? html)",
1396
+ "summary": null
1397
+ },
1398
+ {
1399
+ "name": "RichTextCommandAsync",
1400
+ "returnType": "ValueTask",
1401
+ "signature": "RichTextCommandAsync(string id, string name, params object?[]? args)",
1402
+ "summary": null
1403
+ },
1404
+ {
1405
+ "name": "RichTextGetActiveAsync",
1406
+ "returnType": "ValueTask<Interop.RichTextActiveState?>",
1407
+ "signature": "RichTextGetActiveAsync(string id)",
1408
+ "summary": null
1409
+ },
1410
+ {
1411
+ "name": "RichTextSetDisabledAsync",
1412
+ "returnType": "ValueTask",
1413
+ "signature": "RichTextSetDisabledAsync(string id, bool disabled)",
1414
+ "summary": null
1415
+ },
1416
+ {
1417
+ "name": "RichTextDestroyAsync",
1418
+ "returnType": "ValueTask",
1419
+ "signature": "RichTextDestroyAsync(string id)",
1420
+ "summary": null
1421
+ },
1422
+ {
1423
+ "name": "RichTextPromptLinkAsync",
1424
+ "returnType": "ValueTask<string?>",
1425
+ "signature": "RichTextPromptLinkAsync(string? initial)",
1426
+ "summary": null
1427
+ },
1428
+ {
1429
+ "name": "SignaturePadInit",
1430
+ "returnType": "ValueTask",
1431
+ "signature": "SignaturePadInit(string elementId, object options, DotNetObjectReference<SignaturePad> dotNetRef)",
1432
+ "summary": null
1433
+ },
1434
+ {
1435
+ "name": "SignaturePadClear",
1436
+ "returnType": "ValueTask",
1437
+ "signature": "SignaturePadClear(string elementId)",
1438
+ "summary": null
1439
+ },
1440
+ {
1441
+ "name": "SignaturePadDataUrl",
1442
+ "returnType": "ValueTask<string?>",
1443
+ "signature": "SignaturePadDataUrl(string elementId, string mimeType)",
1444
+ "summary": null
1445
+ },
1446
+ {
1447
+ "name": "SignaturePadSetStrokeStyle",
1448
+ "returnType": "ValueTask",
1449
+ "signature": "SignaturePadSetStrokeStyle(string elementId, string color, double width)",
1450
+ "summary": null
1451
+ },
1452
+ {
1453
+ "name": "SignaturePadSetDisabled",
1454
+ "returnType": "ValueTask",
1455
+ "signature": "SignaturePadSetDisabled(string elementId, bool disabled)",
1456
+ "summary": null
1457
+ },
1458
+ {
1459
+ "name": "SignaturePadLoadDataUrl",
1460
+ "returnType": "ValueTask",
1461
+ "signature": "SignaturePadLoadDataUrl(string elementId, string? dataUrl)",
1462
+ "summary": null
1463
+ },
1464
+ {
1465
+ "name": "SignaturePadDestroy",
1466
+ "returnType": "ValueTask",
1467
+ "signature": "SignaturePadDestroy(string elementId)",
1468
+ "summary": null
1469
+ },
1470
+ {
1471
+ "name": "Dispose",
1472
+ "returnType": "void",
1473
+ "signature": "Dispose()",
1474
+ "summary": null
1475
+ },
1476
+ {
1477
+ "name": "DisposeAsync",
1478
+ "returnType": "ValueTask",
1479
+ "signature": "DisposeAsync()",
1480
+ "summary": null
1481
+ }
1482
+ ],
1483
+ "events": [],
1484
+ "enumValues": []
1485
+ },
1486
+ {
1487
+ "name": "Density",
1488
+ "kind": "enum",
1489
+ "namespace": "Lumeo",
1490
+ "summary": "Orthogonal \"tightness\" axis applied across sized components. Sits next to the size scale (Size) rather than replacing it: a Size.Md button can render at Density.Compact for a dense admin grid or Density.Spacious for a marketing hero, without scaling the type ramp itself.",
1491
+ "properties": [],
1492
+ "methods": [],
1493
+ "events": [],
1494
+ "enumValues": [
1495
+ {
1496
+ "name": "Compact",
1497
+ "summary": "Minimum padding. For data grids, dense admin tables, sidebar pickers. Visual hit area is ~24-28px."
1498
+ },
1499
+ {
1500
+ "name": "Comfortable",
1501
+ "summary": "Default. Standard app density. Hit area ~36-40px."
1502
+ },
1503
+ {
1504
+ "name": "Spacious",
1505
+ "summary": "Generous padding. Marketing pages, onboarding wizards, thumb-first mobile UIs. Hit area ~44-48px (Apple HIG minimum)."
1506
+ }
1507
+ ]
1508
+ },
1509
+ {
1510
+ "name": "DialogOverlayOptions",
1511
+ "kind": "record",
1512
+ "namespace": "Lumeo.Services",
1513
+ "summary": "Dialog-shaped overlay options. Semantic marker (same caveat as SheetOverlayOptions) — typed for documentation and IDE auto-complete, not enforced at the service overload boundary.",
1514
+ "properties": [
1515
+ {
1516
+ "name": "ScrollableBody",
1517
+ "type": "bool",
1518
+ "default": "true",
1519
+ "summary": "Wrap the rendered component in a scrollable body region inside the overlay's chrome (Sheet only — Dialog and Drawer manage their own scroll). Default true so consumers can pass a long form to OverlayService.ShowSheetAsync{T} without rolling their own overflow-y-auto wrapper — and without hitting the focus- ring clip that bare overflow-y: auto introduces (per spec, overflow-y: auto promotes overflow-x to auto too, which clips inputs' box-shadow focus rings at the left/right edge). The built-in wrapper uses the px-1 -mx-1 trick to give focus rings 4px breathing room without shifting the visual padding. Set to false for sheets whose content sets its own scrolling strategy (e.g. an embedded PdfViewer that already paints inside a fixed canvas)."
1520
+ },
1521
+ {
1522
+ "name": "MobileFullscreen",
1523
+ "type": "bool",
1524
+ "default": null,
1525
+ "summary": "When true and the viewport width is below MobileBreakpoint, the overlay is forced full-screen (full width + full height, no corner radius). Works across Dialog, Sheet and Drawer overlays — replaces the consumer-side max-md:!h-full max-md:!w-full max-md:!max-w-full Tailwind override chain that was previously the only way to get a full-screen Dialog on mobile. For Sheets, this is equivalent to setting MobileSheetSize to Full but composes more naturally for the Sheet+Dialog mixed case."
1526
+ },
1527
+ {
1528
+ "name": "MobileSwipeToClose",
1529
+ "type": "bool?",
1530
+ "default": null,
1531
+ "summary": "SwipeToClose override below MobileBreakpoint. Null = use SwipeToClose at all sizes. Typical pattern: off on desktop, on for mobile bottom-sheet pull-down."
1532
+ },
1533
+ {
1534
+ "name": "MobileSheetSize",
1535
+ "type": "SheetSize?",
1536
+ "default": null,
1537
+ "summary": "Sheet size to use when the viewport is below MobileBreakpoint. Null = use SheetSize at all sizes. Typical pattern: SheetSize.Default on desktop, SheetSize.Full on mobile."
1538
+ },
1539
+ {
1540
+ "name": "MobileSheetSide",
1541
+ "type": "Lumeo.Side?",
1542
+ "default": null,
1543
+ "summary": "Sheet side to use when the viewport is below MobileBreakpoint. Null = use SheetSide at all sizes. Typical pattern: Lumeo.Side.Right on desktop, Lumeo.Side.Bottom on mobile."
1544
+ },
1545
+ {
1546
+ "name": "MobileBreakpoint",
1547
+ "type": "int?",
1548
+ "default": "768",
1549
+ "summary": "Viewport width threshold (CSS pixels) below which the Mobile* overrides apply. Default 768 (Tailwind md). Set to null to disable responsive switching even if the Mobile* fields are populated."
1550
+ },
1551
+ {
1552
+ "name": "SwipeToClose",
1553
+ "type": "bool",
1554
+ "default": null,
1555
+ "summary": "When true, a Sheet opened via OverlayService.ShowSheetAsync{T} can be dismissed by swiping in the direction opposite to its SheetSide (e.g. swipe-down on a Bottom sheet). Ignored for non-Sheet overlay types. Drawers already enable swipe by default. Default false to preserve the existing programmatic-open behaviour."
1556
+ },
1557
+ {
1558
+ "name": "SheetSize",
1559
+ "type": "SheetSize",
1560
+ "default": "SheetSize.Default",
1561
+ "summary": null
1562
+ },
1563
+ {
1564
+ "name": "SheetSide",
1565
+ "type": "Lumeo.Side",
1566
+ "default": "Lumeo.Side.Right",
1567
+ "summary": null
1568
+ },
1569
+ {
1570
+ "name": "PreventClose",
1571
+ "type": "bool",
1572
+ "default": null,
1573
+ "summary": null
1574
+ },
1575
+ {
1576
+ "name": "Class",
1577
+ "type": "string?",
1578
+ "default": null,
1579
+ "summary": null
1580
+ }
1581
+ ],
1582
+ "methods": [],
1583
+ "events": [],
1584
+ "enumValues": []
1585
+ },
1586
+ {
1587
+ "name": "DrawerOverlayOptions",
1588
+ "kind": "record",
1589
+ "namespace": "Lumeo.Services",
1590
+ "summary": "Drawer-shaped overlay options. Drawer enables swipe-to-close by default; the inherited SwipeToClose is ignored for drawers. Semantic marker (see SheetOverlayOptions for the enforcement caveat).",
1591
+ "properties": [
1592
+ {
1593
+ "name": "ScrollableBody",
1594
+ "type": "bool",
1595
+ "default": "true",
1596
+ "summary": "Wrap the rendered component in a scrollable body region inside the overlay's chrome (Sheet only — Dialog and Drawer manage their own scroll). Default true so consumers can pass a long form to OverlayService.ShowSheetAsync{T} without rolling their own overflow-y-auto wrapper — and without hitting the focus- ring clip that bare overflow-y: auto introduces (per spec, overflow-y: auto promotes overflow-x to auto too, which clips inputs' box-shadow focus rings at the left/right edge). The built-in wrapper uses the px-1 -mx-1 trick to give focus rings 4px breathing room without shifting the visual padding. Set to false for sheets whose content sets its own scrolling strategy (e.g. an embedded PdfViewer that already paints inside a fixed canvas)."
1597
+ },
1598
+ {
1599
+ "name": "MobileFullscreen",
1600
+ "type": "bool",
1601
+ "default": null,
1602
+ "summary": "When true and the viewport width is below MobileBreakpoint, the overlay is forced full-screen (full width + full height, no corner radius). Works across Dialog, Sheet and Drawer overlays — replaces the consumer-side max-md:!h-full max-md:!w-full max-md:!max-w-full Tailwind override chain that was previously the only way to get a full-screen Dialog on mobile. For Sheets, this is equivalent to setting MobileSheetSize to Full but composes more naturally for the Sheet+Dialog mixed case."
1603
+ },
1604
+ {
1605
+ "name": "MobileSwipeToClose",
1606
+ "type": "bool?",
1607
+ "default": null,
1608
+ "summary": "SwipeToClose override below MobileBreakpoint. Null = use SwipeToClose at all sizes. Typical pattern: off on desktop, on for mobile bottom-sheet pull-down."
1609
+ },
1610
+ {
1611
+ "name": "MobileSheetSize",
1612
+ "type": "SheetSize?",
1613
+ "default": null,
1614
+ "summary": "Sheet size to use when the viewport is below MobileBreakpoint. Null = use SheetSize at all sizes. Typical pattern: SheetSize.Default on desktop, SheetSize.Full on mobile."
1615
+ },
1616
+ {
1617
+ "name": "MobileSheetSide",
1618
+ "type": "Lumeo.Side?",
1619
+ "default": null,
1620
+ "summary": "Sheet side to use when the viewport is below MobileBreakpoint. Null = use SheetSide at all sizes. Typical pattern: Lumeo.Side.Right on desktop, Lumeo.Side.Bottom on mobile."
1621
+ },
1622
+ {
1623
+ "name": "MobileBreakpoint",
1624
+ "type": "int?",
1625
+ "default": "768",
1626
+ "summary": "Viewport width threshold (CSS pixels) below which the Mobile* overrides apply. Default 768 (Tailwind md). Set to null to disable responsive switching even if the Mobile* fields are populated."
1627
+ },
1628
+ {
1629
+ "name": "SwipeToClose",
1630
+ "type": "bool",
1631
+ "default": null,
1632
+ "summary": "When true, a Sheet opened via OverlayService.ShowSheetAsync{T} can be dismissed by swiping in the direction opposite to its SheetSide (e.g. swipe-down on a Bottom sheet). Ignored for non-Sheet overlay types. Drawers already enable swipe by default. Default false to preserve the existing programmatic-open behaviour."
1633
+ },
1634
+ {
1635
+ "name": "SheetSize",
1636
+ "type": "SheetSize",
1637
+ "default": "SheetSize.Default",
1638
+ "summary": null
1639
+ },
1640
+ {
1641
+ "name": "SheetSide",
1642
+ "type": "Lumeo.Side",
1643
+ "default": "Lumeo.Side.Right",
1644
+ "summary": null
1645
+ },
1646
+ {
1647
+ "name": "PreventClose",
1648
+ "type": "bool",
1649
+ "default": null,
1650
+ "summary": null
1651
+ },
1652
+ {
1653
+ "name": "Class",
1654
+ "type": "string?",
1655
+ "default": null,
1656
+ "summary": null
1657
+ }
1658
+ ],
1659
+ "methods": [],
1660
+ "events": [],
1661
+ "enumValues": []
1662
+ },
1663
+ {
1664
+ "name": "IComponentInteropService",
1665
+ "kind": "interface",
1666
+ "namespace": "Lumeo.Services",
1667
+ "summary": "Provides JS interop helpers for Lumeo components (click-outside, focus traps, floating positioning, swipe gestures, scroll utilities, etc.). Inject this interface in consumers to enable mocking in tests.",
1668
+ "properties": [],
1669
+ "methods": [
1670
+ {
1671
+ "name": "RegisterClickOutside",
1672
+ "returnType": "ValueTask",
1673
+ "signature": "RegisterClickOutside(string elementId, string? triggerElementId, Func<Task> handler)",
1674
+ "summary": null
1675
+ },
1676
+ {
1677
+ "name": "UnregisterClickOutside",
1678
+ "returnType": "ValueTask",
1679
+ "signature": "UnregisterClickOutside(string elementId)",
1680
+ "summary": null
1681
+ },
1682
+ {
1683
+ "name": "FocusElement",
1684
+ "returnType": "ValueTask",
1685
+ "signature": "FocusElement(string elementId)",
1686
+ "summary": null
1687
+ },
1688
+ {
1689
+ "name": "FocusMenuItemByIndex",
1690
+ "returnType": "ValueTask",
1691
+ "signature": "FocusMenuItemByIndex(string containerId, int index)",
1692
+ "summary": null
1693
+ },
1694
+ {
1695
+ "name": "GetMenuItemCount",
1696
+ "returnType": "ValueTask<int>",
1697
+ "signature": "GetMenuItemCount(string containerId)",
1698
+ "summary": null
1699
+ },
1700
+ {
1701
+ "name": "LockScroll",
1702
+ "returnType": "ValueTask",
1703
+ "signature": "LockScroll()",
1704
+ "summary": null
1705
+ },
1706
+ {
1707
+ "name": "UnlockScroll",
1708
+ "returnType": "ValueTask",
1709
+ "signature": "UnlockScroll()",
1710
+ "summary": null
1711
+ },
1712
+ {
1713
+ "name": "SetHtmlClass",
1714
+ "returnType": "ValueTask",
1715
+ "signature": "SetHtmlClass(string className, bool active)",
1716
+ "summary": "Toggles a class on document.documentElement. Useful for global modes (e.g. hiding floating chrome while a DataGrid is fullscreen)."
1717
+ },
1718
+ {
1719
+ "name": "SetupFocusTrap",
1720
+ "returnType": "ValueTask",
1721
+ "signature": "SetupFocusTrap(string elementId)",
1722
+ "summary": null
1723
+ },
1724
+ {
1725
+ "name": "RemoveFocusTrap",
1726
+ "returnType": "ValueTask",
1727
+ "signature": "RemoveFocusTrap(string elementId)",
1728
+ "summary": null
1729
+ },
1730
+ {
1731
+ "name": "AttachOverlaySlideEnd",
1732
+ "returnType": "ValueTask",
1733
+ "signature": "AttachOverlaySlideEnd(string elementId)",
1734
+ "summary": "Registers a native animationend listener that filters strictly on the slide-in animation name and, on completion, sets the element's inline transform: none. Bypasses Blazor's event roundtrip so the cleanup runs synchronously from the browser's animation pipeline. Used by Sheet, Drawer and any future slide-in overlay to defeat the animation-fill-mode: both identity-matrix transform trap that would otherwise establish a containing block for fixed-positioned descendants (Select / DatePicker / Combobox popovers)."
1735
+ },
1736
+ {
1737
+ "name": "RegisterSvDrag",
1738
+ "returnType": "ValueTask",
1739
+ "signature": "RegisterSvDrag(string elementId, Func<double, double, Task> handler)",
1740
+ "summary": null
1741
+ },
1742
+ {
1743
+ "name": "UnregisterSvDrag",
1744
+ "returnType": "ValueTask",
1745
+ "signature": "UnregisterSvDrag(string elementId)",
1746
+ "summary": null
1747
+ },
1748
+ {
1749
+ "name": "RegisterPinchZoom",
1750
+ "returnType": "ValueTask",
1751
+ "signature": "RegisterPinchZoom(string elementId, Func<double, Task> handler)",
1752
+ "summary": null
1753
+ },
1754
+ {
1755
+ "name": "UnregisterPinchZoom",
1756
+ "returnType": "ValueTask",
1757
+ "signature": "UnregisterPinchZoom(string elementId)",
1758
+ "summary": null
1759
+ },
1760
+ {
1761
+ "name": "GetViewportSize",
1762
+ "returnType": "ValueTask<ViewportSize>",
1763
+ "signature": "GetViewportSize()",
1764
+ "summary": null
1765
+ },
1766
+ {
1767
+ "name": "RegisterViewportListener",
1768
+ "returnType": "ValueTask<ViewportSize?>",
1769
+ "signature": "RegisterViewportListener(Microsoft.JSInterop.DotNetObjectReference<ResponsiveService> dotnetRef)",
1770
+ "summary": null
1771
+ },
1772
+ {
1773
+ "name": "UnregisterViewportListener",
1774
+ "returnType": "ValueTask",
1775
+ "signature": "UnregisterViewportListener()",
1776
+ "summary": null
1777
+ },
1778
+ {
1779
+ "name": "PositionFixed",
1780
+ "returnType": "ValueTask",
1781
+ "signature": "PositionFixed(string contentId, string referenceId, string align = \"start\", bool matchWidth = false, string side = \"bottom\")",
1782
+ "summary": null
1783
+ },
1784
+ {
1785
+ "name": "UnpositionFixed",
1786
+ "returnType": "ValueTask",
1787
+ "signature": "UnpositionFixed(string contentId)",
1788
+ "summary": null
1789
+ },
1790
+ {
1791
+ "name": "GetElementRect",
1792
+ "returnType": "ValueTask<ElementRect?>",
1793
+ "signature": "GetElementRect(string elementId)",
1794
+ "summary": null
1795
+ },
1796
+ {
1797
+ "name": "GetElementDimension",
1798
+ "returnType": "ValueTask<double>",
1799
+ "signature": "GetElementDimension(string elementId, string dimension)",
1800
+ "summary": null
1801
+ },
1802
+ {
1803
+ "name": "GetScrollTop",
1804
+ "returnType": "ValueTask<double>",
1805
+ "signature": "GetScrollTop(string elementId)",
1806
+ "summary": null
1807
+ },
1808
+ {
1809
+ "name": "WheelScrollTop",
1810
+ "returnType": "ValueTask<double>",
1811
+ "signature": "WheelScrollTop(Microsoft.AspNetCore.Components.ElementReference element)",
1812
+ "summary": null
1813
+ },
1814
+ {
1815
+ "name": "WheelScrollTo",
1816
+ "returnType": "ValueTask",
1817
+ "signature": "WheelScrollTo(Microsoft.AspNetCore.Components.ElementReference element, double top)",
1818
+ "summary": null
1819
+ },
1820
+ {
1821
+ "name": "SetPointerCaptureOnElement",
1822
+ "returnType": "ValueTask",
1823
+ "signature": "SetPointerCaptureOnElement(string elementId, long pointerId)",
1824
+ "summary": null
1825
+ },
1826
+ {
1827
+ "name": "ReleasePointerCaptureOnElement",
1828
+ "returnType": "ValueTask",
1829
+ "signature": "ReleasePointerCaptureOnElement(string elementId, long pointerId)",
1830
+ "summary": null
1831
+ },
1832
+ {
1833
+ "name": "RegisterDrawerSwipe",
1834
+ "returnType": "ValueTask",
1835
+ "signature": "RegisterDrawerSwipe(string elementId, string direction, Func<Task> handler)",
1836
+ "summary": null
1837
+ },
1838
+ {
1839
+ "name": "RegisterDrawerSwipe",
1840
+ "returnType": "ValueTask",
1841
+ "signature": "RegisterDrawerSwipe(string elementId, Func<Task> handler)",
1842
+ "summary": null
1843
+ },
1844
+ {
1845
+ "name": "RegisterDrawerSwipe",
1846
+ "returnType": "ValueTask",
1847
+ "signature": "RegisterDrawerSwipe(string elementId, string direction, Func<Task> handler, int? activationPx, int? firePx)",
1848
+ "summary": "3.0.1 — extended overload that accepts swipe-to-close thresholds. Both parameters are optional; passing null falls back to the JS hardcoded defaults so existing callers keep working unchanged. Mirrors the LumeoGestureOptions bag."
1849
+ },
1850
+ {
1851
+ "name": "UnregisterDrawerSwipe",
1852
+ "returnType": "ValueTask",
1853
+ "signature": "UnregisterDrawerSwipe(string elementId)",
1854
+ "summary": null
1855
+ },
1856
+ {
1857
+ "name": "RegisterTabSwipe",
1858
+ "returnType": "ValueTask",
1859
+ "signature": "RegisterTabSwipe(string elementId, bool wrap, Func<string, Task> handler)",
1860
+ "summary": null
1861
+ },
1862
+ {
1863
+ "name": "RegisterTabSwipe",
1864
+ "returnType": "ValueTask",
1865
+ "signature": "RegisterTabSwipe(string elementId, bool wrap, Func<string, Task> handler, int? swipeThresholdPx, int? verticalDeadZonePx)",
1866
+ "summary": "3.0.1 — extended overload that accepts horizontal swipe and vertical dead-zone thresholds. Passing null falls back to the JS hardcoded defaults so existing callers keep working unchanged."
1867
+ },
1868
+ {
1869
+ "name": "UnregisterTabSwipe",
1870
+ "returnType": "ValueTask",
1871
+ "signature": "UnregisterTabSwipe(string elementId)",
1872
+ "summary": null
1873
+ },
1874
+ {
1875
+ "name": "RegisterSortableTouch",
1876
+ "returnType": "ValueTask",
1877
+ "signature": "RegisterSortableTouch(string containerId, Func<int, int, Task> handler)",
1878
+ "summary": null
1879
+ },
1880
+ {
1881
+ "name": "UnregisterSortableTouch",
1882
+ "returnType": "ValueTask",
1883
+ "signature": "UnregisterSortableTouch(string containerId)",
1884
+ "summary": null
1885
+ },
1886
+ {
1887
+ "name": "RegisterCarouselSwipe",
1888
+ "returnType": "ValueTask",
1889
+ "signature": "RegisterCarouselSwipe(string elementId, string orientation, Func<string, Task> swipeHandler, Func<double, double, int, Task> scrollHandler)",
1890
+ "summary": null
1891
+ },
1892
+ {
1893
+ "name": "RegisterCarouselSwipe",
1894
+ "returnType": "ValueTask",
1895
+ "signature": "RegisterCarouselSwipe(string elementId, string orientation, Func<string, Task> swipeHandler, Func<double, double, int, Task> scrollHandler, int? swipeThresholdPx, int? verticalDeadZonePx)",
1896
+ "summary": "3.0.1 — overload with explicit swipe / vertical dead-zone thresholds (Carousel)."
1897
+ },
1898
+ {
1899
+ "name": "UnregisterCarouselSwipe",
1900
+ "returnType": "ValueTask",
1901
+ "signature": "UnregisterCarouselSwipe(string elementId)",
1902
+ "summary": null
1903
+ },
1904
+ {
1905
+ "name": "CarouselScrollTo",
1906
+ "returnType": "ValueTask",
1907
+ "signature": "CarouselScrollTo(string elementId, int index, string behavior = \"smooth\")",
1908
+ "summary": null
1909
+ },
1910
+ {
1911
+ "name": "RegisterHorizontalSwipe",
1912
+ "returnType": "ValueTask",
1913
+ "signature": "RegisterHorizontalSwipe(string elementId, Func<string, Task> handler)",
1914
+ "summary": null
1915
+ },
1916
+ {
1917
+ "name": "RegisterHorizontalSwipe",
1918
+ "returnType": "ValueTask",
1919
+ "signature": "RegisterHorizontalSwipe(string elementId, Func<string, Task> handler, int? swipeThresholdPx, int? verticalDeadZonePx)",
1920
+ "summary": "3.0.1 — overload with explicit swipe / vertical dead-zone thresholds (Calendar)."
1921
+ },
1922
+ {
1923
+ "name": "UnregisterHorizontalSwipe",
1924
+ "returnType": "ValueTask",
1925
+ "signature": "UnregisterHorizontalSwipe(string elementId)",
1926
+ "summary": null
1927
+ },
1928
+ {
1929
+ "name": "RegisterGallerySwipe",
1930
+ "returnType": "ValueTask",
1931
+ "signature": "RegisterGallerySwipe(string elementId, Func<string, Task> handler)",
1932
+ "summary": null
1933
+ },
1934
+ {
1935
+ "name": "RegisterGallerySwipe",
1936
+ "returnType": "ValueTask",
1937
+ "signature": "RegisterGallerySwipe(string elementId, Func<string, Task> handler, int? swipeThresholdPx, int? verticalDeadZonePx)",
1938
+ "summary": "3.0.1 — overload with explicit swipe / vertical dead-zone thresholds (ImageGallery)."
1939
+ },
1940
+ {
1941
+ "name": "UnregisterGallerySwipe",
1942
+ "returnType": "ValueTask",
1943
+ "signature": "UnregisterGallerySwipe(string elementId)",
1944
+ "summary": null
1945
+ },
1946
+ {
1947
+ "name": "RegisterResizeHandle",
1948
+ "returnType": "ValueTask",
1949
+ "signature": "RegisterResizeHandle(string elementId, string direction, Func<double, Task> resizeHandler, Func<Task> resizeEndHandler)",
1950
+ "summary": null
1951
+ },
1952
+ {
1953
+ "name": "UnregisterResizeHandle",
1954
+ "returnType": "ValueTask",
1955
+ "signature": "UnregisterResizeHandle(string elementId)",
1956
+ "summary": null
1957
+ },
1958
+ {
1959
+ "name": "RegisterScrollspy",
1960
+ "returnType": "ValueTask",
1961
+ "signature": "RegisterScrollspy(string containerId, int offset, bool smooth, Func<string?, Task> handler)",
1962
+ "summary": null
1963
+ },
1964
+ {
1965
+ "name": "UnregisterScrollspy",
1966
+ "returnType": "ValueTask",
1967
+ "signature": "UnregisterScrollspy(string containerId)",
1968
+ "summary": null
1969
+ },
1970
+ {
1971
+ "name": "ScrollspyScrollTo",
1972
+ "returnType": "ValueTask",
1973
+ "signature": "ScrollspyScrollTo(string containerId, string sectionId, bool smooth)",
1974
+ "summary": null
1975
+ },
1976
+ {
1977
+ "name": "RegisterToastSwipe",
1978
+ "returnType": "ValueTask",
1979
+ "signature": "RegisterToastSwipe(string elementId, string toastId, Func<string, Task> handler)",
1980
+ "summary": null
1981
+ },
1982
+ {
1983
+ "name": "UnregisterToastSwipe",
1984
+ "returnType": "ValueTask",
1985
+ "signature": "UnregisterToastSwipe(string toastId, string elementId)",
1986
+ "summary": null
1987
+ },
1988
+ {
1989
+ "name": "SetupAutoResize",
1990
+ "returnType": "ValueTask",
1991
+ "signature": "SetupAutoResize(string elementId, int maxRows)",
1992
+ "summary": null
1993
+ },
1994
+ {
1995
+ "name": "UnregisterAutoResize",
1996
+ "returnType": "ValueTask",
1997
+ "signature": "UnregisterAutoResize(string elementId)",
1998
+ "summary": null
1999
+ },
2000
+ {
2001
+ "name": "RegisterOtpPaste",
2002
+ "returnType": "ValueTask",
2003
+ "signature": "RegisterOtpPaste(string baseId, int length, Func<string, Task> handler)",
2004
+ "summary": null
2005
+ },
2006
+ {
2007
+ "name": "UnregisterOtpPaste",
2008
+ "returnType": "ValueTask",
2009
+ "signature": "UnregisterOtpPaste(string baseId, int length)",
2010
+ "summary": null
2011
+ },
2012
+ {
2013
+ "name": "RegisterColumnResize",
2014
+ "returnType": "ValueTask",
2015
+ "signature": "RegisterColumnResize(string handleId, double minWidth, double? maxWidth, Func<double, Task> commitHandler)",
2016
+ "summary": null
2017
+ },
2018
+ {
2019
+ "name": "UnregisterColumnResize",
2020
+ "returnType": "ValueTask",
2021
+ "signature": "UnregisterColumnResize(string handleId)",
2022
+ "summary": null
2023
+ },
2024
+ {
2025
+ "name": "CaptureColumnRects",
2026
+ "returnType": "ValueTask",
2027
+ "signature": "CaptureColumnRects(string gridId)",
2028
+ "summary": null
2029
+ },
2030
+ {
2031
+ "name": "AnimateColumnReorder",
2032
+ "returnType": "ValueTask",
2033
+ "signature": "AnimateColumnReorder(string gridId, int durationMs)",
2034
+ "summary": null
2035
+ },
2036
+ {
2037
+ "name": "GetElementRectBySelector",
2038
+ "returnType": "ValueTask<ElementRect?>",
2039
+ "signature": "GetElementRectBySelector(string selector)",
2040
+ "summary": null
2041
+ },
2042
+ {
2043
+ "name": "RegisterAffix",
2044
+ "returnType": "ValueTask",
2045
+ "signature": "RegisterAffix(string elementId, int offsetTop, int? offsetBottom, string? target, Func<bool, Task> handler)",
2046
+ "summary": null
2047
+ },
2048
+ {
2049
+ "name": "UnregisterAffix",
2050
+ "returnType": "ValueTask",
2051
+ "signature": "UnregisterAffix(string elementId)",
2052
+ "summary": null
2053
+ },
2054
+ {
2055
+ "name": "GetTextareaCaretPosition",
2056
+ "returnType": "ValueTask<ComponentInteropService.TextareaCaretInfo>",
2057
+ "signature": "GetTextareaCaretPosition(string elementId)",
2058
+ "summary": null
2059
+ },
2060
+ {
2061
+ "name": "TabsMeasure",
2062
+ "returnType": "ValueTask<ComponentInteropService.TabMeasurement?>",
2063
+ "signature": "TabsMeasure(string elementId)",
2064
+ "summary": null
2065
+ },
2066
+ {
2067
+ "name": "RegisterBackToTop",
2068
+ "returnType": "ValueTask",
2069
+ "signature": "RegisterBackToTop(string id, int threshold, Func<bool, Task> handler)",
2070
+ "summary": null
2071
+ },
2072
+ {
2073
+ "name": "UnregisterBackToTop",
2074
+ "returnType": "ValueTask",
2075
+ "signature": "UnregisterBackToTop(string id)",
2076
+ "summary": null
2077
+ },
2078
+ {
2079
+ "name": "ScrollToTop",
2080
+ "returnType": "ValueTask",
2081
+ "signature": "ScrollToTop()",
2082
+ "summary": null
2083
+ },
2084
+ {
2085
+ "name": "DownloadFile",
2086
+ "returnType": "ValueTask",
2087
+ "signature": "DownloadFile(string fileName, string contentBase64, string mimeType = \"application/octet-stream\")",
2088
+ "summary": null
2089
+ },
2090
+ {
2091
+ "name": "CopyToClipboard",
2092
+ "returnType": "ValueTask",
2093
+ "signature": "CopyToClipboard(string text)",
2094
+ "summary": null
2095
+ },
2096
+ {
2097
+ "name": "RippleAttachAsync",
2098
+ "returnType": "ValueTask",
2099
+ "signature": "RippleAttachAsync(Microsoft.AspNetCore.Components.ElementReference element)",
2100
+ "summary": null
2101
+ },
2102
+ {
2103
+ "name": "RippleDetachAsync",
2104
+ "returnType": "ValueTask",
2105
+ "signature": "RippleDetachAsync(Microsoft.AspNetCore.Components.ElementReference element)",
2106
+ "summary": null
2107
+ },
2108
+ {
2109
+ "name": "PlayMedia",
2110
+ "returnType": "ValueTask",
2111
+ "signature": "PlayMedia(Microsoft.AspNetCore.Components.ElementReference element)",
2112
+ "summary": null
2113
+ },
2114
+ {
2115
+ "name": "PauseMedia",
2116
+ "returnType": "ValueTask",
2117
+ "signature": "PauseMedia(Microsoft.AspNetCore.Components.ElementReference element)",
2118
+ "summary": null
2119
+ },
2120
+ {
2121
+ "name": "SetMediaVolume",
2122
+ "returnType": "ValueTask",
2123
+ "signature": "SetMediaVolume(Microsoft.AspNetCore.Components.ElementReference element, double volume, bool muted)",
2124
+ "summary": null
2125
+ },
2126
+ {
2127
+ "name": "SeekMedia",
2128
+ "returnType": "ValueTask",
2129
+ "signature": "SeekMedia(Microsoft.AspNetCore.Components.ElementReference element, double seconds)",
2130
+ "summary": null
2131
+ },
2132
+ {
2133
+ "name": "GetMediaState",
2134
+ "returnType": "ValueTask<MediaState>",
2135
+ "signature": "GetMediaState(Microsoft.AspNetCore.Components.ElementReference element)",
2136
+ "summary": "Reads the live duration and currentTime off an HTMLMediaElement. Required because Blazor's media event args don't expose these — they're properties of the element itself."
2137
+ },
2138
+ {
2139
+ "name": "Vibrate",
2140
+ "returnType": "ValueTask",
2141
+ "signature": "Vibrate(int milliseconds)",
2142
+ "summary": null
2143
+ },
2144
+ {
2145
+ "name": "SaveToLocalStorage",
2146
+ "returnType": "ValueTask",
2147
+ "signature": "SaveToLocalStorage(string key, string value)",
2148
+ "summary": null
2149
+ },
2150
+ {
2151
+ "name": "LoadFromLocalStorage",
2152
+ "returnType": "ValueTask<string?>",
2153
+ "signature": "LoadFromLocalStorage(string key)",
2154
+ "summary": null
2155
+ },
2156
+ {
2157
+ "name": "RemoveFromLocalStorage",
2158
+ "returnType": "ValueTask",
2159
+ "signature": "RemoveFromLocalStorage(string key)",
2160
+ "summary": null
2161
+ },
2162
+ {
2163
+ "name": "MotionTickNumber",
2164
+ "returnType": "ValueTask",
2165
+ "signature": "MotionTickNumber(string elementId, double from, double to, int durationMs, int decimals, string separator = \",\")",
2166
+ "summary": null
2167
+ },
2168
+ {
2169
+ "name": "MotionDisposeTicker",
2170
+ "returnType": "ValueTask",
2171
+ "signature": "MotionDisposeTicker(string elementId)",
2172
+ "summary": null
2173
+ },
2174
+ {
2175
+ "name": "MotionRevealText",
2176
+ "returnType": "ValueTask",
2177
+ "signature": "MotionRevealText(string elementId, int staggerMs, double threshold)",
2178
+ "summary": null
2179
+ },
2180
+ {
2181
+ "name": "MotionBlurFade",
2182
+ "returnType": "ValueTask",
2183
+ "signature": "MotionBlurFade(string elementId, int delayMs, bool once, bool forceHidden = false)",
2184
+ "summary": null
2185
+ },
2186
+ {
2187
+ "name": "MotionDisposeObserver",
2188
+ "returnType": "ValueTask",
2189
+ "signature": "MotionDisposeObserver(string elementId)",
2190
+ "summary": null
2191
+ },
2192
+ {
2193
+ "name": "MotionAnimatedBeam",
2194
+ "returnType": "ValueTask",
2195
+ "signature": "MotionAnimatedBeam(string elementId, string fromId, string toId, object options)",
2196
+ "summary": null
2197
+ },
2198
+ {
2199
+ "name": "MotionDisposeAnimatedBeam",
2200
+ "returnType": "ValueTask",
2201
+ "signature": "MotionDisposeAnimatedBeam(string elementId)",
2202
+ "summary": null
2203
+ },
2204
+ {
2205
+ "name": "MotionDock",
2206
+ "returnType": "ValueTask",
2207
+ "signature": "MotionDock(string elementId, object options)",
2208
+ "summary": null
2209
+ },
2210
+ {
2211
+ "name": "MotionDisposeDock",
2212
+ "returnType": "ValueTask",
2213
+ "signature": "MotionDisposeDock(string elementId)",
2214
+ "summary": null
2215
+ },
2216
+ {
2217
+ "name": "MotionConfettiInit",
2218
+ "returnType": "ValueTask",
2219
+ "signature": "MotionConfettiInit(string elementId)",
2220
+ "summary": null
2221
+ },
2222
+ {
2223
+ "name": "MotionConfettiFire",
2224
+ "returnType": "ValueTask",
2225
+ "signature": "MotionConfettiFire(string elementId, object options)",
2226
+ "summary": null
2227
+ },
2228
+ {
2229
+ "name": "MotionDisposeConfetti",
2230
+ "returnType": "ValueTask",
2231
+ "signature": "MotionDisposeConfetti(string elementId)",
2232
+ "summary": null
2233
+ },
2234
+ {
2235
+ "name": "AiAutosize",
2236
+ "returnType": "ValueTask",
2237
+ "signature": "AiAutosize(string elementId, int maxPx)",
2238
+ "summary": null
2239
+ },
2240
+ {
2241
+ "name": "AiObserveAutoScroll",
2242
+ "returnType": "ValueTask",
2243
+ "signature": "AiObserveAutoScroll(string elementId)",
2244
+ "summary": null
2245
+ },
2246
+ {
2247
+ "name": "AiDisposeAutoScroll",
2248
+ "returnType": "ValueTask",
2249
+ "signature": "AiDisposeAutoScroll(string elementId)",
2250
+ "summary": null
2251
+ },
2252
+ {
2253
+ "name": "AiScrollToBottom",
2254
+ "returnType": "ValueTask",
2255
+ "signature": "AiScrollToBottom(string elementId)",
2256
+ "summary": null
2257
+ },
2258
+ {
2259
+ "name": "SchedulerInitAsync",
2260
+ "returnType": "Task<string>",
2261
+ "signature": "SchedulerInitAsync(Microsoft.AspNetCore.Components.ElementReference el, object dotNetRef, object options)",
2262
+ "summary": null
2263
+ },
2264
+ {
2265
+ "name": "SchedulerSetEventsAsync",
2266
+ "returnType": "Task",
2267
+ "signature": "SchedulerSetEventsAsync(string id, IEnumerable<object> events)",
2268
+ "summary": null
2269
+ },
2270
+ {
2271
+ "name": "SchedulerChangeViewAsync",
2272
+ "returnType": "Task",
2273
+ "signature": "SchedulerChangeViewAsync(string id, string view)",
2274
+ "summary": null
2275
+ },
2276
+ {
2277
+ "name": "SchedulerGotoDateAsync",
2278
+ "returnType": "Task",
2279
+ "signature": "SchedulerGotoDateAsync(string id, string dateIso)",
2280
+ "summary": null
2281
+ },
2282
+ {
2283
+ "name": "SchedulerPrevAsync",
2284
+ "returnType": "Task",
2285
+ "signature": "SchedulerPrevAsync(string id)",
2286
+ "summary": null
2287
+ },
2288
+ {
2289
+ "name": "SchedulerNextAsync",
2290
+ "returnType": "Task",
2291
+ "signature": "SchedulerNextAsync(string id)",
2292
+ "summary": null
2293
+ },
2294
+ {
2295
+ "name": "SchedulerTodayAsync",
2296
+ "returnType": "Task",
2297
+ "signature": "SchedulerTodayAsync(string id)",
2298
+ "summary": null
2299
+ },
2300
+ {
2301
+ "name": "SchedulerGetTitleAsync",
2302
+ "returnType": "Task<string>",
2303
+ "signature": "SchedulerGetTitleAsync(string id)",
2304
+ "summary": null
2305
+ },
2306
+ {
2307
+ "name": "SchedulerDestroyAsync",
2308
+ "returnType": "Task",
2309
+ "signature": "SchedulerDestroyAsync(string id)",
2310
+ "summary": null
2311
+ },
2312
+ {
2313
+ "name": "GanttInitAsync",
2314
+ "returnType": "Task<string>",
2315
+ "signature": "GanttInitAsync(Microsoft.AspNetCore.Components.ElementReference el, object dotNetRef, object options)",
2316
+ "summary": null
2317
+ },
2318
+ {
2319
+ "name": "GanttSetTasksAsync",
2320
+ "returnType": "Task",
2321
+ "signature": "GanttSetTasksAsync(string id, IEnumerable<object> tasks)",
2322
+ "summary": null
2323
+ },
2324
+ {
2325
+ "name": "GanttChangeViewModeAsync",
2326
+ "returnType": "Task",
2327
+ "signature": "GanttChangeViewModeAsync(string id, string mode)",
2328
+ "summary": null
2329
+ },
2330
+ {
2331
+ "name": "GanttDestroyAsync",
2332
+ "returnType": "Task",
2333
+ "signature": "GanttDestroyAsync(string id)",
2334
+ "summary": null
2335
+ },
2336
+ {
2337
+ "name": "RegisterToolbarOverflow",
2338
+ "returnType": "ValueTask",
2339
+ "signature": "RegisterToolbarOverflow(string elementId, Func<int, int, Task> handler)",
2340
+ "summary": null
2341
+ },
2342
+ {
2343
+ "name": "UnregisterToolbarOverflow",
2344
+ "returnType": "ValueTask",
2345
+ "signature": "UnregisterToolbarOverflow(string elementId)",
2346
+ "summary": null
2347
+ },
2348
+ {
2349
+ "name": "RichTextInitAsync",
2350
+ "returnType": "ValueTask<string>",
2351
+ "signature": "RichTextInitAsync<T>(Microsoft.AspNetCore.Components.ElementReference elementRef, DotNetObjectReference<T> dotNetRef, object options)",
2352
+ "summary": null
2353
+ },
2354
+ {
2355
+ "name": "RichTextSetContentAsync",
2356
+ "returnType": "ValueTask",
2357
+ "signature": "RichTextSetContentAsync(string id, string? html)",
2358
+ "summary": null
2359
+ },
2360
+ {
2361
+ "name": "RichTextCommandAsync",
2362
+ "returnType": "ValueTask",
2363
+ "signature": "RichTextCommandAsync(string id, string name, params object?[]? args)",
2364
+ "summary": null
2365
+ },
2366
+ {
2367
+ "name": "RichTextGetActiveAsync",
2368
+ "returnType": "ValueTask<Interop.RichTextActiveState?>",
2369
+ "signature": "RichTextGetActiveAsync(string id)",
2370
+ "summary": null
2371
+ },
2372
+ {
2373
+ "name": "RichTextSetDisabledAsync",
2374
+ "returnType": "ValueTask",
2375
+ "signature": "RichTextSetDisabledAsync(string id, bool disabled)",
2376
+ "summary": null
2377
+ },
2378
+ {
2379
+ "name": "RichTextDestroyAsync",
2380
+ "returnType": "ValueTask",
2381
+ "signature": "RichTextDestroyAsync(string id)",
2382
+ "summary": null
2383
+ },
2384
+ {
2385
+ "name": "RichTextPromptLinkAsync",
2386
+ "returnType": "ValueTask<string?>",
2387
+ "signature": "RichTextPromptLinkAsync(string? initial)",
2388
+ "summary": null
2389
+ },
2390
+ {
2391
+ "name": "SignaturePadInit",
2392
+ "returnType": "ValueTask",
2393
+ "signature": "SignaturePadInit(string elementId, object options, DotNetObjectReference<SignaturePad> dotNetRef)",
2394
+ "summary": null
2395
+ },
2396
+ {
2397
+ "name": "SignaturePadClear",
2398
+ "returnType": "ValueTask",
2399
+ "signature": "SignaturePadClear(string elementId)",
2400
+ "summary": null
2401
+ },
2402
+ {
2403
+ "name": "SignaturePadDataUrl",
2404
+ "returnType": "ValueTask<string?>",
2405
+ "signature": "SignaturePadDataUrl(string elementId, string mimeType)",
2406
+ "summary": null
2407
+ },
2408
+ {
2409
+ "name": "SignaturePadSetStrokeStyle",
2410
+ "returnType": "ValueTask",
2411
+ "signature": "SignaturePadSetStrokeStyle(string elementId, string color, double width)",
2412
+ "summary": null
2413
+ },
2414
+ {
2415
+ "name": "SignaturePadSetDisabled",
2416
+ "returnType": "ValueTask",
2417
+ "signature": "SignaturePadSetDisabled(string elementId, bool disabled)",
2418
+ "summary": null
2419
+ },
2420
+ {
2421
+ "name": "SignaturePadLoadDataUrl",
2422
+ "returnType": "ValueTask",
2423
+ "signature": "SignaturePadLoadDataUrl(string elementId, string? dataUrl)",
2424
+ "summary": null
2425
+ },
2426
+ {
2427
+ "name": "SignaturePadDestroy",
2428
+ "returnType": "ValueTask",
2429
+ "signature": "SignaturePadDestroy(string elementId)",
2430
+ "summary": null
2431
+ }
2432
+ ],
2433
+ "events": [],
2434
+ "enumValues": []
2435
+ },
2436
+ {
2437
+ "name": "IOverlayService",
2438
+ "kind": "interface",
2439
+ "namespace": "Lumeo.Services",
2440
+ "summary": "Provides methods to show and close overlay components (Dialog, Sheet, Drawer, AlertDialog). Inject this interface in consumers to enable mocking in tests.",
2441
+ "properties": [],
2442
+ "methods": [
2443
+ {
2444
+ "name": "ShowDialogAsync",
2445
+ "returnType": "Task<OverlayResult>",
2446
+ "signature": "ShowDialogAsync<TComponent>(string? title = null, OverlayParameters? parameters = null, OverlayOptions? options = null)",
2447
+ "summary": null
2448
+ },
2449
+ {
2450
+ "name": "ShowSheetAsync",
2451
+ "returnType": "Task<OverlayResult>",
2452
+ "signature": "ShowSheetAsync<TComponent>(string? title = null, Lumeo.Side side = Lumeo.Side.Right, SheetSize size = SheetSize.Default, OverlayParameters? parameters = null, OverlayOptions? options = null)",
2453
+ "summary": null
2454
+ },
2455
+ {
2456
+ "name": "ShowDrawerAsync",
2457
+ "returnType": "Task<OverlayResult>",
2458
+ "signature": "ShowDrawerAsync<TComponent>(string? title = null, OverlayParameters? parameters = null, OverlayOptions? options = null)",
2459
+ "summary": null
2460
+ },
2461
+ {
2462
+ "name": "ShowAlertDialogAsync",
2463
+ "returnType": "Task<OverlayResult>",
2464
+ "signature": "ShowAlertDialogAsync(AlertDialogOptions alertOptions)",
2465
+ "summary": null
2466
+ },
2467
+ {
2468
+ "name": "Close",
2469
+ "returnType": "void",
2470
+ "signature": "Close(string overlayId, object? result = null)",
2471
+ "summary": null
2472
+ },
2473
+ {
2474
+ "name": "Cancel",
2475
+ "returnType": "void",
2476
+ "signature": "Cancel(string overlayId)",
2477
+ "summary": null
2478
+ }
2479
+ ],
2480
+ "events": [
2481
+ {
2482
+ "name": "OnShow",
2483
+ "type": "Action<OverlayInstance>?",
2484
+ "summary": null
2485
+ },
2486
+ {
2487
+ "name": "OnClose",
2488
+ "type": "Action<string, object?, bool>?",
2489
+ "summary": null
2490
+ }
2491
+ ],
2492
+ "enumValues": []
2493
+ },
2494
+ {
2495
+ "name": "IResponsiveService",
2496
+ "kind": "interface",
2497
+ "namespace": "Lumeo.Services",
2498
+ "summary": "Reactive viewport/breakpoint information. Use this to make components respond to viewport size changes (e.g. switching a Sheet from side panel on desktop to fullscreen on mobile, or hiding sidebars below md). Subscribe to ViewportChanged to react to live resize / orientation change.",
2499
+ "properties": [
2500
+ {
2501
+ "name": "Width",
2502
+ "type": "double",
2503
+ "default": null,
2504
+ "summary": "Current viewport width in CSS pixels (window.innerWidth). 0 until the first interop sync — read inside OnAfterRenderAsync or subscribe to ViewportChanged to get the populated value."
2505
+ },
2506
+ {
2507
+ "name": "Height",
2508
+ "type": "double",
2509
+ "default": null,
2510
+ "summary": "Current viewport height in CSS pixels (window.innerHeight). 0 until first interop sync. See Width for the timing caveat."
2511
+ },
2512
+ {
2513
+ "name": "Current",
2514
+ "type": "Breakpoint",
2515
+ "default": null,
2516
+ "summary": "Current Tailwind-aligned breakpoint based on Width. Maps to the same boundaries Tailwind v4 uses: Sm=640, Md=768, Lg=1024, Xl=1280, Xxl=1536. Use the convenience flags below for the common case."
2517
+ },
2518
+ {
2519
+ "name": "IsMobile",
2520
+ "type": "bool",
2521
+ "default": null,
2522
+ "summary": "True when Width is below Md (768px) — the conventional mobile boundary. Same value the OverlayOptions.MobileBreakpoint default checks against."
2523
+ },
2524
+ {
2525
+ "name": "IsTablet",
2526
+ "type": "bool",
2527
+ "default": null,
2528
+ "summary": "True when Width is in [Md, Lg) — 768-1023px. Tablets in portrait, large phones in landscape."
2529
+ },
2530
+ {
2531
+ "name": "IsDesktop",
2532
+ "type": "bool",
2533
+ "default": null,
2534
+ "summary": "True when Width is >= Lg (1024px). Includes typical laptop / desktop layouts."
2535
+ }
2536
+ ],
2537
+ "methods": [
2538
+ {
2539
+ "name": "EnsureInitialisedAsync",
2540
+ "returnType": "ValueTask",
2541
+ "signature": "EnsureInitialisedAsync()",
2542
+ "summary": "Lazily registers the JS resize listener and pulls the initial viewport size. Called automatically the first time a property is read, but consumers can call it eagerly from OnAfterRenderAsync(firstRender: true) to avoid the first-render zero-value read."
2543
+ }
2544
+ ],
2545
+ "events": [
2546
+ {
2547
+ "name": "ViewportChanged",
2548
+ "type": "Action<ViewportInfo>?",
2549
+ "summary": "Fires whenever the viewport size crosses a meaningful boundary. Implementations debounce raw resize events (~100ms) so frequent listeners don't fire per scroll-bar nudge. The event arg carries the new width, height, and breakpoint."
2550
+ }
2551
+ ],
2552
+ "enumValues": []
2553
+ },
2554
+ {
2555
+ "name": "IThemeService",
2556
+ "kind": "interface",
2557
+ "namespace": "Lumeo.Services",
2558
+ "summary": "Provides theme mode and scheme management (dark/light/system, color schemes, layout direction). Inject this interface in consumers to enable mocking in tests.",
2559
+ "properties": [
2560
+ {
2561
+ "name": "CurrentMode",
2562
+ "type": "ThemeMode",
2563
+ "default": null,
2564
+ "summary": null
2565
+ },
2566
+ {
2567
+ "name": "CurrentScheme",
2568
+ "type": "string",
2569
+ "default": null,
2570
+ "summary": null
2571
+ },
2572
+ {
2573
+ "name": "IsDark",
2574
+ "type": "bool",
2575
+ "default": null,
2576
+ "summary": null
2577
+ },
2578
+ {
2579
+ "name": "CurrentDirection",
2580
+ "type": "LayoutDirection",
2581
+ "default": null,
2582
+ "summary": null
2583
+ }
2584
+ ],
2585
+ "methods": [
2586
+ {
2587
+ "name": "InitializeAsync",
2588
+ "returnType": "Task",
2589
+ "signature": "InitializeAsync()",
2590
+ "summary": null
2591
+ },
2592
+ {
2593
+ "name": "SetModeAsync",
2594
+ "returnType": "Task",
2595
+ "signature": "SetModeAsync(ThemeMode mode)",
2596
+ "summary": null
2597
+ },
2598
+ {
2599
+ "name": "SetSchemeAsync",
2600
+ "returnType": "Task",
2601
+ "signature": "SetSchemeAsync(string scheme)",
2602
+ "summary": null
2603
+ },
2604
+ {
2605
+ "name": "ToggleModeAsync",
2606
+ "returnType": "Task",
2607
+ "signature": "ToggleModeAsync()",
2608
+ "summary": null
2609
+ },
2610
+ {
2611
+ "name": "SetDirectionAsync",
2612
+ "returnType": "Task",
2613
+ "signature": "SetDirectionAsync(LayoutDirection direction)",
2614
+ "summary": "Set the page layout direction (LTR / RTL). Persisted to localStorage."
2615
+ },
2616
+ {
2617
+ "name": "GetDirectionAsync",
2618
+ "returnType": "Task<LayoutDirection>",
2619
+ "signature": "GetDirectionAsync()",
2620
+ "summary": "Read the current direction (reads from document.documentElement.dir)."
2621
+ }
2622
+ ],
2623
+ "events": [
2624
+ {
2625
+ "name": "OnThemeChanged",
2626
+ "type": "Action?",
2627
+ "summary": null
2628
+ }
2629
+ ],
2630
+ "enumValues": []
2631
+ },
2632
+ {
2633
+ "name": "LayoutDirection",
2634
+ "kind": "enum",
2635
+ "namespace": "Lumeo.Services",
2636
+ "summary": "Layout direction. Mirrors the dir attribute on &lt;html&gt;.",
2637
+ "properties": [],
2638
+ "methods": [],
2639
+ "events": [],
2640
+ "enumValues": [
2641
+ {
2642
+ "name": "Ltr",
2643
+ "summary": "Left-to-right (default, e.g. English, German, Spanish)."
2644
+ },
2645
+ {
2646
+ "name": "Rtl",
2647
+ "summary": "Right-to-left (e.g. Arabic, Hebrew, Persian)."
2648
+ }
2649
+ ]
2650
+ },
2651
+ {
2652
+ "name": "Orientation",
2653
+ "kind": "enum",
2654
+ "namespace": "Lumeo",
2655
+ "summary": "Layout axis for components that can lay their content out either left-to-right or top-to-bottom (Tabs, Separator, Carousel, Stepper, Timeline, Splitter, MegaMenu, ButtonGroup, ImageCompare, FormField, Steps, ToggleGroup, etc.). Replaces per-component *Orientation / *Direction enums in 3.0 (BREAKING).",
2656
+ "properties": [],
2657
+ "methods": [],
2658
+ "events": [],
2659
+ "enumValues": [
2660
+ {
2661
+ "name": "Horizontal",
2662
+ "summary": "Lay out content horizontally (left-to-right)."
2663
+ },
2664
+ {
2665
+ "name": "Vertical",
2666
+ "summary": "Lay out content vertically (top-to-bottom)."
2667
+ }
2668
+ ]
2669
+ },
2670
+ {
2671
+ "name": "OverlayInstance",
2672
+ "kind": "class",
2673
+ "namespace": "Lumeo.Services",
2674
+ "summary": null,
2675
+ "properties": [
2676
+ {
2677
+ "name": "Id",
2678
+ "type": "string",
2679
+ "default": null,
2680
+ "summary": null
2681
+ },
2682
+ {
2683
+ "name": "Type",
2684
+ "type": "OverlayType",
2685
+ "default": null,
2686
+ "summary": null
2687
+ },
2688
+ {
2689
+ "name": "ComponentType",
2690
+ "type": "Type?",
2691
+ "default": null,
2692
+ "summary": null
2693
+ },
2694
+ {
2695
+ "name": "Title",
2696
+ "type": "string?",
2697
+ "default": null,
2698
+ "summary": null
2699
+ },
2700
+ {
2701
+ "name": "Parameters",
2702
+ "type": "OverlayParameters?",
2703
+ "default": null,
2704
+ "summary": null
2705
+ },
2706
+ {
2707
+ "name": "Options",
2708
+ "type": "OverlayOptions",
2709
+ "default": "new()",
2710
+ "summary": null
2711
+ },
2712
+ {
2713
+ "name": "AlertOptions",
2714
+ "type": "AlertDialogOptions?",
2715
+ "default": null,
2716
+ "summary": null
2717
+ },
2718
+ {
2719
+ "name": "ZIndex",
2720
+ "type": "int",
2721
+ "default": "OverlayService.BaseZIndex",
2722
+ "summary": "Backdrop z-index for this overlay. Content sits at ZIndex + 1 so a nested overlay's backdrop (allocated later with a strictly larger value) lands above the parent's content. Assigned by OverlayService at registration time."
2723
+ }
2724
+ ],
2725
+ "methods": [],
2726
+ "events": [],
2727
+ "enumValues": []
2728
+ },
2729
+ {
2730
+ "name": "OverlayOptions",
2731
+ "kind": "record",
2732
+ "namespace": "Lumeo.Services",
2733
+ "summary": null,
2734
+ "properties": [
2735
+ {
2736
+ "name": "Class",
2737
+ "type": "string?",
2738
+ "default": null,
2739
+ "summary": null
2740
+ },
2741
+ {
2742
+ "name": "PreventClose",
2743
+ "type": "bool",
2744
+ "default": null,
2745
+ "summary": null
2746
+ },
2747
+ {
2748
+ "name": "SheetSide",
2749
+ "type": "Lumeo.Side",
2750
+ "default": "Lumeo.Side.Right",
2751
+ "summary": null
2752
+ },
2753
+ {
2754
+ "name": "SheetSize",
2755
+ "type": "SheetSize",
2756
+ "default": "SheetSize.Default",
2757
+ "summary": null
2758
+ },
2759
+ {
2760
+ "name": "SwipeToClose",
2761
+ "type": "bool",
2762
+ "default": null,
2763
+ "summary": "When true, a Sheet opened via OverlayService.ShowSheetAsync{T} can be dismissed by swiping in the direction opposite to its SheetSide (e.g. swipe-down on a Bottom sheet). Ignored for non-Sheet overlay types. Drawers already enable swipe by default. Default false to preserve the existing programmatic-open behaviour."
2764
+ },
2765
+ {
2766
+ "name": "MobileBreakpoint",
2767
+ "type": "int?",
2768
+ "default": "768",
2769
+ "summary": "Viewport width threshold (CSS pixels) below which the Mobile* overrides apply. Default 768 (Tailwind md). Set to null to disable responsive switching even if the Mobile* fields are populated."
2770
+ },
2771
+ {
2772
+ "name": "MobileSheetSide",
2773
+ "type": "Lumeo.Side?",
2774
+ "default": null,
2775
+ "summary": "Sheet side to use when the viewport is below MobileBreakpoint. Null = use SheetSide at all sizes. Typical pattern: Lumeo.Side.Right on desktop, Lumeo.Side.Bottom on mobile."
2776
+ },
2777
+ {
2778
+ "name": "MobileSheetSize",
2779
+ "type": "SheetSize?",
2780
+ "default": null,
2781
+ "summary": "Sheet size to use when the viewport is below MobileBreakpoint. Null = use SheetSize at all sizes. Typical pattern: SheetSize.Default on desktop, SheetSize.Full on mobile."
2782
+ },
2783
+ {
2784
+ "name": "MobileSwipeToClose",
2785
+ "type": "bool?",
2786
+ "default": null,
2787
+ "summary": "SwipeToClose override below MobileBreakpoint. Null = use SwipeToClose at all sizes. Typical pattern: off on desktop, on for mobile bottom-sheet pull-down."
2788
+ },
2789
+ {
2790
+ "name": "MobileFullscreen",
2791
+ "type": "bool",
2792
+ "default": null,
2793
+ "summary": "When true and the viewport width is below MobileBreakpoint, the overlay is forced full-screen (full width + full height, no corner radius). Works across Dialog, Sheet and Drawer overlays — replaces the consumer-side max-md:!h-full max-md:!w-full max-md:!max-w-full Tailwind override chain that was previously the only way to get a full-screen Dialog on mobile. For Sheets, this is equivalent to setting MobileSheetSize to Full but composes more naturally for the Sheet+Dialog mixed case."
2794
+ },
2795
+ {
2796
+ "name": "ScrollableBody",
2797
+ "type": "bool",
2798
+ "default": "true",
2799
+ "summary": "Wrap the rendered component in a scrollable body region inside the overlay's chrome (Sheet only — Dialog and Drawer manage their own scroll). Default true so consumers can pass a long form to OverlayService.ShowSheetAsync{T} without rolling their own overflow-y-auto wrapper — and without hitting the focus- ring clip that bare overflow-y: auto introduces (per spec, overflow-y: auto promotes overflow-x to auto too, which clips inputs' box-shadow focus rings at the left/right edge). The built-in wrapper uses the px-1 -mx-1 trick to give focus rings 4px breathing room without shifting the visual padding. Set to false for sheets whose content sets its own scrolling strategy (e.g. an embedded PdfViewer that already paints inside a fixed canvas)."
2800
+ }
2801
+ ],
2802
+ "methods": [],
2803
+ "events": [],
2804
+ "enumValues": []
2805
+ },
2806
+ {
2807
+ "name": "OverlayParameters",
2808
+ "kind": "class",
2809
+ "namespace": "Lumeo.Services",
2810
+ "summary": null,
2811
+ "properties": [],
2812
+ "methods": [
2813
+ {
2814
+ "name": "Add",
2815
+ "returnType": "OverlayParameters",
2816
+ "signature": "Add(string name, object value)",
2817
+ "summary": null
2818
+ },
2819
+ {
2820
+ "name": "Get",
2821
+ "returnType": "T?",
2822
+ "signature": "Get<T>(string name)",
2823
+ "summary": null
2824
+ },
2825
+ {
2826
+ "name": "ToDictionary",
2827
+ "returnType": "Dictionary<string, object>",
2828
+ "signature": "ToDictionary()",
2829
+ "summary": null
2830
+ }
2831
+ ],
2832
+ "events": [],
2833
+ "enumValues": []
2834
+ },
2835
+ {
2836
+ "name": "OverlayResult",
2837
+ "kind": "record",
2838
+ "namespace": "Lumeo.Services",
2839
+ "summary": null,
2840
+ "properties": [
2841
+ {
2842
+ "name": "Cancelled",
2843
+ "type": "bool",
2844
+ "default": null,
2845
+ "summary": null
2846
+ },
2847
+ {
2848
+ "name": "Data",
2849
+ "type": "object?",
2850
+ "default": null,
2851
+ "summary": null
2852
+ }
2853
+ ],
2854
+ "methods": [
2855
+ {
2856
+ "name": "GetData",
2857
+ "returnType": "T?",
2858
+ "signature": "GetData<T>()",
2859
+ "summary": null
2860
+ },
2861
+ {
2862
+ "name": "Ok",
2863
+ "returnType": "OverlayResult",
2864
+ "signature": "Ok(object? data = null)",
2865
+ "summary": null
2866
+ },
2867
+ {
2868
+ "name": "CancelResult",
2869
+ "returnType": "OverlayResult",
2870
+ "signature": "CancelResult()",
2871
+ "summary": null
2872
+ }
2873
+ ],
2874
+ "events": [],
2875
+ "enumValues": []
2876
+ },
2877
+ {
2878
+ "name": "OverlayService",
2879
+ "kind": "class",
2880
+ "namespace": "Lumeo.Services",
2881
+ "summary": null,
2882
+ "properties": [
2883
+ {
2884
+ "name": "BaseZIndex",
2885
+ "type": "int",
2886
+ "default": "50",
2887
+ "summary": "Base z-index assigned to the first overlay. Subsequent overlays stack at BaseZIndex + n * Step. The backdrop sits at the assigned value; the content sits one tier above (Z + 1) so a nested overlay's backdrop always lands above the parent's content."
2888
+ },
2889
+ {
2890
+ "name": "Step",
2891
+ "type": "int",
2892
+ "default": "10",
2893
+ "summary": "Distance between consecutive overlay tiers. Step = 10 leaves room for backdrop (Z) + content (Z+1) without colliding with the next overlay's backdrop."
2894
+ }
2895
+ ],
2896
+ "methods": [
2897
+ {
2898
+ "name": "ShowDialogAsync",
2899
+ "returnType": "Task<OverlayResult>",
2900
+ "signature": "ShowDialogAsync<TComponent>(string? title = null, OverlayParameters? parameters = null, OverlayOptions? options = null)",
2901
+ "summary": null
2902
+ },
2903
+ {
2904
+ "name": "ShowSheetAsync",
2905
+ "returnType": "Task<OverlayResult>",
2906
+ "signature": "ShowSheetAsync<TComponent>(string? title = null, Lumeo.Side side = Lumeo.Side.Right, SheetSize size = SheetSize.Default, OverlayParameters? parameters = null, OverlayOptions? options = null)",
2907
+ "summary": null
2908
+ },
2909
+ {
2910
+ "name": "ShowDrawerAsync",
2911
+ "returnType": "Task<OverlayResult>",
2912
+ "signature": "ShowDrawerAsync<TComponent>(string? title = null, OverlayParameters? parameters = null, OverlayOptions? options = null)",
2913
+ "summary": null
2914
+ },
2915
+ {
2916
+ "name": "ShowAlertDialogAsync",
2917
+ "returnType": "Task<OverlayResult>",
2918
+ "signature": "ShowAlertDialogAsync(AlertDialogOptions alertOptions)",
2919
+ "summary": null
2920
+ },
2921
+ {
2922
+ "name": "Close",
2923
+ "returnType": "void",
2924
+ "signature": "Close(string overlayId, object? result = null)",
2925
+ "summary": null
2926
+ },
2927
+ {
2928
+ "name": "Cancel",
2929
+ "returnType": "void",
2930
+ "signature": "Cancel(string overlayId)",
2931
+ "summary": null
2932
+ }
2933
+ ],
2934
+ "events": [
2935
+ {
2936
+ "name": "OnShow",
2937
+ "type": "Action<OverlayInstance>?",
2938
+ "summary": null
2939
+ },
2940
+ {
2941
+ "name": "OnClose",
2942
+ "type": "Action<string, object?, bool>?",
2943
+ "summary": null
2944
+ }
2945
+ ],
2946
+ "enumValues": []
2947
+ },
2948
+ {
2949
+ "name": "OverlayType",
2950
+ "kind": "enum",
2951
+ "namespace": "Lumeo.Services",
2952
+ "summary": null,
2953
+ "properties": [],
2954
+ "methods": [],
2955
+ "events": [],
2956
+ "enumValues": [
2957
+ {
2958
+ "name": "Dialog",
2959
+ "summary": null
2960
+ },
2961
+ {
2962
+ "name": "Sheet",
2963
+ "summary": null
2964
+ },
2965
+ {
2966
+ "name": "Drawer",
2967
+ "summary": null
2968
+ },
2969
+ {
2970
+ "name": "AlertDialog",
2971
+ "summary": null
2972
+ }
2973
+ ]
2974
+ },
2975
+ {
2976
+ "name": "SheetOverlayOptions",
2977
+ "kind": "record",
2978
+ "namespace": "Lumeo.Services",
2979
+ "summary": "Sheet-shaped overlay options. Semantic marker — at the call site you get clearer intent (\"this configures a Sheet\") and IDE navigation, but the existing OverlayService.ShowDialogAsync{T} / OverlayService.ShowDrawerAsync{T} still accept any OverlayOptions via standard subtype polymorphism, so nothing prevents passing this record to the wrong service overload — the unused sheet-only properties stay silent no-ops there. Compile-time enforcement requires narrowing the service-method signatures to the typed record (planned for 4.0 as a breaking change).",
2980
+ "properties": [
2981
+ {
2982
+ "name": "ScrollableBody",
2983
+ "type": "bool",
2984
+ "default": "true",
2985
+ "summary": "Wrap the rendered component in a scrollable body region inside the overlay's chrome (Sheet only — Dialog and Drawer manage their own scroll). Default true so consumers can pass a long form to OverlayService.ShowSheetAsync{T} without rolling their own overflow-y-auto wrapper — and without hitting the focus- ring clip that bare overflow-y: auto introduces (per spec, overflow-y: auto promotes overflow-x to auto too, which clips inputs' box-shadow focus rings at the left/right edge). The built-in wrapper uses the px-1 -mx-1 trick to give focus rings 4px breathing room without shifting the visual padding. Set to false for sheets whose content sets its own scrolling strategy (e.g. an embedded PdfViewer that already paints inside a fixed canvas)."
2986
+ },
2987
+ {
2988
+ "name": "MobileFullscreen",
2989
+ "type": "bool",
2990
+ "default": null,
2991
+ "summary": "When true and the viewport width is below MobileBreakpoint, the overlay is forced full-screen (full width + full height, no corner radius). Works across Dialog, Sheet and Drawer overlays — replaces the consumer-side max-md:!h-full max-md:!w-full max-md:!max-w-full Tailwind override chain that was previously the only way to get a full-screen Dialog on mobile. For Sheets, this is equivalent to setting MobileSheetSize to Full but composes more naturally for the Sheet+Dialog mixed case."
2992
+ },
2993
+ {
2994
+ "name": "MobileSwipeToClose",
2995
+ "type": "bool?",
2996
+ "default": null,
2997
+ "summary": "SwipeToClose override below MobileBreakpoint. Null = use SwipeToClose at all sizes. Typical pattern: off on desktop, on for mobile bottom-sheet pull-down."
2998
+ },
2999
+ {
3000
+ "name": "MobileSheetSize",
3001
+ "type": "SheetSize?",
3002
+ "default": null,
3003
+ "summary": "Sheet size to use when the viewport is below MobileBreakpoint. Null = use SheetSize at all sizes. Typical pattern: SheetSize.Default on desktop, SheetSize.Full on mobile."
3004
+ },
3005
+ {
3006
+ "name": "MobileSheetSide",
3007
+ "type": "Lumeo.Side?",
3008
+ "default": null,
3009
+ "summary": "Sheet side to use when the viewport is below MobileBreakpoint. Null = use SheetSide at all sizes. Typical pattern: Lumeo.Side.Right on desktop, Lumeo.Side.Bottom on mobile."
3010
+ },
3011
+ {
3012
+ "name": "MobileBreakpoint",
3013
+ "type": "int?",
3014
+ "default": "768",
3015
+ "summary": "Viewport width threshold (CSS pixels) below which the Mobile* overrides apply. Default 768 (Tailwind md). Set to null to disable responsive switching even if the Mobile* fields are populated."
3016
+ },
3017
+ {
3018
+ "name": "SwipeToClose",
3019
+ "type": "bool",
3020
+ "default": null,
3021
+ "summary": "When true, a Sheet opened via OverlayService.ShowSheetAsync{T} can be dismissed by swiping in the direction opposite to its SheetSide (e.g. swipe-down on a Bottom sheet). Ignored for non-Sheet overlay types. Drawers already enable swipe by default. Default false to preserve the existing programmatic-open behaviour."
3022
+ },
3023
+ {
3024
+ "name": "SheetSize",
3025
+ "type": "SheetSize",
3026
+ "default": "SheetSize.Default",
3027
+ "summary": null
3028
+ },
3029
+ {
3030
+ "name": "SheetSide",
3031
+ "type": "Lumeo.Side",
3032
+ "default": "Lumeo.Side.Right",
3033
+ "summary": null
3034
+ },
3035
+ {
3036
+ "name": "PreventClose",
3037
+ "type": "bool",
3038
+ "default": null,
3039
+ "summary": null
3040
+ },
3041
+ {
3042
+ "name": "Class",
3043
+ "type": "string?",
3044
+ "default": null,
3045
+ "summary": null
3046
+ }
3047
+ ],
3048
+ "methods": [],
3049
+ "events": [],
3050
+ "enumValues": []
3051
+ },
3052
+ {
3053
+ "name": "SheetSize",
3054
+ "kind": "enum",
3055
+ "namespace": "Lumeo.Services",
3056
+ "summary": "Sheet size as exposed through OverlayService. Mirrors SheetContent.SheetSize — kept distinct so the service layer doesn't take a hard dependency on the UI namespace. Full is layout-intent (entire viewport) and intentionally NOT folded into Size.",
3057
+ "properties": [],
3058
+ "methods": [],
3059
+ "events": [],
3060
+ "enumValues": [
3061
+ {
3062
+ "name": "Sm",
3063
+ "summary": null
3064
+ },
3065
+ {
3066
+ "name": "Default",
3067
+ "summary": null
3068
+ },
3069
+ {
3070
+ "name": "Lg",
3071
+ "summary": null
3072
+ },
3073
+ {
3074
+ "name": "Xl",
3075
+ "summary": null
3076
+ },
3077
+ {
3078
+ "name": "Full",
3079
+ "summary": null
3080
+ }
3081
+ ]
3082
+ },
3083
+ {
3084
+ "name": "Side",
3085
+ "kind": "enum",
3086
+ "namespace": "Lumeo",
3087
+ "summary": "Cardinal side used for overlay placement and edge anchoring. Replaces the per-component *Side enums (PopoverSide, TooltipSide, DropdownMenuSide, HoverCardSide, DrawerSide, SheetSide, SidebarSide, TourPlacement) in 3.0 (BREAKING).",
3088
+ "properties": [],
3089
+ "methods": [],
3090
+ "events": [],
3091
+ "enumValues": [
3092
+ {
3093
+ "name": "Top",
3094
+ "summary": "The top edge."
3095
+ },
3096
+ {
3097
+ "name": "Right",
3098
+ "summary": "The right edge."
3099
+ },
3100
+ {
3101
+ "name": "Bottom",
3102
+ "summary": "The bottom edge."
3103
+ },
3104
+ {
3105
+ "name": "Left",
3106
+ "summary": "The left edge."
3107
+ }
3108
+ ]
3109
+ },
3110
+ {
3111
+ "name": "Size",
3112
+ "kind": "enum",
3113
+ "namespace": "Lumeo",
3114
+ "summary": "Unified size scale used across Lumeo components. Replaces the per-component *Size enums in 3.0 (BREAKING).",
3115
+ "properties": [],
3116
+ "methods": [],
3117
+ "events": [],
3118
+ "enumValues": [
3119
+ {
3120
+ "name": "Xs",
3121
+ "summary": "Extra small. Used by Icon."
3122
+ },
3123
+ {
3124
+ "name": "Sm",
3125
+ "summary": "Small. Used by most sized components (Avatar, Chip, Input, etc.)."
3126
+ },
3127
+ {
3128
+ "name": "Md",
3129
+ "summary": "Medium / default. The neutral middle value for every sized component."
3130
+ },
3131
+ {
3132
+ "name": "Lg",
3133
+ "summary": "Large. Used by most sized components."
3134
+ },
3135
+ {
3136
+ "name": "Xl",
3137
+ "summary": "Extra large. Used by Avatar, Icon."
3138
+ },
3139
+ {
3140
+ "name": "Xxl",
3141
+ "summary": "2x extra large. Reserved for future use."
3142
+ },
3143
+ {
3144
+ "name": "Xxs",
3145
+ "summary": "Double extra small. For dense-mode Avatar / Chip where a smaller indicator is needed (e.g. inline-with-text presence dot, stacked-avatar list previews). Replaces consumer-side text-[10px] / h-5 w-5 arbitrary-value Tailwind escape hatches with a first-class token. Added in 3.3; appended at value 6 instead of inserted before Xs so existing serialised ints (Sm=1, Md=2, …) still resolve to the same enum member."
3146
+ }
3147
+ ]
3148
+ },
3149
+ {
3150
+ "name": "TabMeasurement",
3151
+ "kind": "record",
3152
+ "namespace": "Lumeo.Services",
3153
+ "summary": null,
3154
+ "properties": [
3155
+ {
3156
+ "name": "X",
3157
+ "type": "double",
3158
+ "default": null,
3159
+ "summary": null
3160
+ },
3161
+ {
3162
+ "name": "Width",
3163
+ "type": "double",
3164
+ "default": null,
3165
+ "summary": null
3166
+ }
3167
+ ],
3168
+ "methods": [],
3169
+ "events": [],
3170
+ "enumValues": []
3171
+ },
3172
+ {
3173
+ "name": "TextareaCaretInfo",
3174
+ "kind": "record",
3175
+ "namespace": "Lumeo.Services",
3176
+ "summary": null,
3177
+ "properties": [
3178
+ {
3179
+ "name": "Top",
3180
+ "type": "double",
3181
+ "default": null,
3182
+ "summary": null
3183
+ },
3184
+ {
3185
+ "name": "Left",
3186
+ "type": "double",
3187
+ "default": null,
3188
+ "summary": null
3189
+ },
3190
+ {
3191
+ "name": "SelectionStart",
3192
+ "type": "int",
3193
+ "default": null,
3194
+ "summary": null
3195
+ }
3196
+ ],
3197
+ "methods": [],
3198
+ "events": [],
3199
+ "enumValues": []
3200
+ },
3201
+ {
3202
+ "name": "Theme",
3203
+ "kind": "staticClass",
3204
+ "namespace": "Lumeo",
3205
+ "summary": "Entry point for the fluent ThemeBuilder.",
3206
+ "properties": [],
3207
+ "methods": [
3208
+ {
3209
+ "name": "Customize",
3210
+ "returnType": "ThemeBuilder",
3211
+ "signature": "Customize(IJSRuntime js)",
3212
+ "summary": null
3213
+ }
3214
+ ],
3215
+ "events": [],
3216
+ "enumValues": []
3217
+ },
3218
+ {
3219
+ "name": "ThemeBuilder",
3220
+ "kind": "class",
3221
+ "namespace": "Lumeo",
3222
+ "summary": "Fluent builder that emits a custom CSS-variable override block on top of a Lumeo base scheme (zinc / slate / stone / …). Lets consumers tweak design tokens without writing a CSS file or forking a scheme. await Theme.Customize(Js) .WithPrimary(\"#3b82f6\") .WithBorderRadius(0.5) .WithFontFamily(\"'Inter', system-ui, sans-serif\") .ApplyAsync(); Calls are idempotent — each ApplyAsync replaces the previous `&lt;style id=\"lumeo-custom-theme\"&gt;` block, so consumers can rebuild on every settings change without leaking stale rules.",
3223
+ "properties": [],
3224
+ "methods": [
3225
+ {
3226
+ "name": "WithPrimary",
3227
+ "returnType": "ThemeBuilder",
3228
+ "signature": "WithPrimary(string color)",
3229
+ "summary": "Override --color-primary. Accepts any CSS color string (hex, rgb(), hsl(), oklch(), CSS named color)."
3230
+ },
3231
+ {
3232
+ "name": "WithPrimaryForeground",
3233
+ "returnType": "ThemeBuilder",
3234
+ "signature": "WithPrimaryForeground(string color)",
3235
+ "summary": null
3236
+ },
3237
+ {
3238
+ "name": "WithSecondary",
3239
+ "returnType": "ThemeBuilder",
3240
+ "signature": "WithSecondary(string color)",
3241
+ "summary": null
3242
+ },
3243
+ {
3244
+ "name": "WithSecondaryForeground",
3245
+ "returnType": "ThemeBuilder",
3246
+ "signature": "WithSecondaryForeground(string color)",
3247
+ "summary": null
3248
+ },
3249
+ {
3250
+ "name": "WithAccent",
3251
+ "returnType": "ThemeBuilder",
3252
+ "signature": "WithAccent(string color)",
3253
+ "summary": null
3254
+ },
3255
+ {
3256
+ "name": "WithAccentForeground",
3257
+ "returnType": "ThemeBuilder",
3258
+ "signature": "WithAccentForeground(string color)",
3259
+ "summary": null
3260
+ },
3261
+ {
3262
+ "name": "WithBackground",
3263
+ "returnType": "ThemeBuilder",
3264
+ "signature": "WithBackground(string color)",
3265
+ "summary": null
3266
+ },
3267
+ {
3268
+ "name": "WithForeground",
3269
+ "returnType": "ThemeBuilder",
3270
+ "signature": "WithForeground(string color)",
3271
+ "summary": null
3272
+ },
3273
+ {
3274
+ "name": "WithMuted",
3275
+ "returnType": "ThemeBuilder",
3276
+ "signature": "WithMuted(string color)",
3277
+ "summary": null
3278
+ },
3279
+ {
3280
+ "name": "WithMutedForeground",
3281
+ "returnType": "ThemeBuilder",
3282
+ "signature": "WithMutedForeground(string color)",
3283
+ "summary": null
3284
+ },
3285
+ {
3286
+ "name": "WithBorder",
3287
+ "returnType": "ThemeBuilder",
3288
+ "signature": "WithBorder(string color)",
3289
+ "summary": null
3290
+ },
3291
+ {
3292
+ "name": "WithRing",
3293
+ "returnType": "ThemeBuilder",
3294
+ "signature": "WithRing(string color)",
3295
+ "summary": null
3296
+ },
3297
+ {
3298
+ "name": "WithDestructive",
3299
+ "returnType": "ThemeBuilder",
3300
+ "signature": "WithDestructive(string color)",
3301
+ "summary": null
3302
+ },
3303
+ {
3304
+ "name": "WithBorderRadius",
3305
+ "returnType": "ThemeBuilder",
3306
+ "signature": "WithBorderRadius(double rem)",
3307
+ "summary": "Override the global border-radius scale. Accepts a rem value — Lumeo uses 0.5 by default. Components derive from calc(var(--radius) - 2px) / calc(var(--radius) + 4px)."
3308
+ },
3309
+ {
3310
+ "name": "WithFontFamily",
3311
+ "returnType": "ThemeBuilder",
3312
+ "signature": "WithFontFamily(string fontStack)",
3313
+ "summary": "Override the root font family. Pass the full CSS font-family stack including quotes / fallbacks. Writes the font-family declaration directly on :root — Lumeo's theme CSS doesn't consume a --font-family custom property, so emitting the raw declaration is what actually takes effect (matching the path used by ThemeService.SetFont)."
3314
+ },
3315
+ {
3316
+ "name": "WithVariable",
3317
+ "returnType": "ThemeBuilder",
3318
+ "signature": "WithVariable(string name, string value)",
3319
+ "summary": "Set an arbitrary CSS custom property. The name MUST start with -- and must match a token the bundled lumeo.css actually reads. Color tokens are prefixed with --color- (e.g. --color-primary, --color-ring); non-color tokens are bare (--radius, --shadow-sm). Throws ArgumentException when the name does not start with -- so a shorthand typo (\"primary\") fails loud instead of emitting a silently-unused --primary."
3320
+ },
3321
+ {
3322
+ "name": "ApplyAsync",
3323
+ "returnType": "ValueTask",
3324
+ "signature": "ApplyAsync()",
3325
+ "summary": "Write the accumulated overrides to a managed &lt;style id=\"lumeo-custom-theme\"&gt; block. Replaces the previous block on each call, so successive Apply calls don't leak."
3326
+ },
3327
+ {
3328
+ "name": "ClearAsync",
3329
+ "returnType": "ValueTask",
3330
+ "signature": "ClearAsync()",
3331
+ "summary": "Remove the custom-theme block, reverting to the base scheme."
3332
+ }
3333
+ ],
3334
+ "events": [],
3335
+ "enumValues": []
3336
+ },
3337
+ {
3338
+ "name": "ThemeMode",
3339
+ "kind": "enum",
3340
+ "namespace": "Lumeo.Services",
3341
+ "summary": null,
3342
+ "properties": [],
3343
+ "methods": [],
3344
+ "events": [],
3345
+ "enumValues": [
3346
+ {
3347
+ "name": "System",
3348
+ "summary": null
3349
+ },
3350
+ {
3351
+ "name": "Light",
3352
+ "summary": null
3353
+ },
3354
+ {
3355
+ "name": "Dark",
3356
+ "summary": null
3357
+ }
3358
+ ]
3359
+ },
3360
+ {
3361
+ "name": "ThemeSchemeInfo",
3362
+ "kind": "record",
3363
+ "namespace": "Lumeo.Services",
3364
+ "summary": null,
3365
+ "properties": [
3366
+ {
3367
+ "name": "Id",
3368
+ "type": "string",
3369
+ "default": null,
3370
+ "summary": null
3371
+ },
3372
+ {
3373
+ "name": "DisplayName",
3374
+ "type": "string",
3375
+ "default": null,
3376
+ "summary": null
3377
+ },
3378
+ {
3379
+ "name": "PreviewColor",
3380
+ "type": "string",
3381
+ "default": null,
3382
+ "summary": null
3383
+ }
3384
+ ],
3385
+ "methods": [],
3386
+ "events": [],
3387
+ "enumValues": []
3388
+ },
3389
+ {
3390
+ "name": "ThemeService",
3391
+ "kind": "class",
3392
+ "namespace": "Lumeo.Services",
3393
+ "summary": null,
3394
+ "properties": [
3395
+ {
3396
+ "name": "CurrentMode",
3397
+ "type": "ThemeMode",
3398
+ "default": "ThemeMode.System",
3399
+ "summary": null
3400
+ },
3401
+ {
3402
+ "name": "CurrentScheme",
3403
+ "type": "string",
3404
+ "default": "\"zinc\"",
3405
+ "summary": null
3406
+ },
3407
+ {
3408
+ "name": "IsDark",
3409
+ "type": "bool",
3410
+ "default": null,
3411
+ "summary": null
3412
+ },
3413
+ {
3414
+ "name": "CurrentDirection",
3415
+ "type": "LayoutDirection",
3416
+ "default": "LayoutDirection.Ltr",
3417
+ "summary": null
3418
+ },
3419
+ {
3420
+ "name": "AvailableSchemes",
3421
+ "type": "IReadOnlyList<ThemeSchemeInfo>",
3422
+ "default": "[\n new(\"zinc\", \"Zinc\", \"hsl(240 5.9% 10%)\"),\n new(\"blue\", \"Blue\", \"hsl(221 83% 53%)\"),\n new(\"green\", \"Green\", \"hsl(142 71% 45%)\"),\n new(\"rose\", \"Rose\", \"hsl(347 77% 50%)\"),\n new(\"orange\", \"Orange\", \"hsl(14 70% 50%)\"),\n new(\"violet\", \"Violet\", \"hsl(263 70% 50%)\"),\n new(\"amber\", \"Amber\", \"hsl(38 92% 50%)\"),\n new(\"teal\", \"Teal\", \"hsl(173 80% 40%)\"),\n ]",
3423
+ "summary": null
3424
+ }
3425
+ ],
3426
+ "methods": [
3427
+ {
3428
+ "name": "InitializeAsync",
3429
+ "returnType": "Task",
3430
+ "signature": "InitializeAsync()",
3431
+ "summary": null
3432
+ },
3433
+ {
3434
+ "name": "SetModeAsync",
3435
+ "returnType": "Task",
3436
+ "signature": "SetModeAsync(ThemeMode mode)",
3437
+ "summary": null
3438
+ },
3439
+ {
3440
+ "name": "SetSchemeAsync",
3441
+ "returnType": "Task",
3442
+ "signature": "SetSchemeAsync(string scheme)",
3443
+ "summary": null
3444
+ },
3445
+ {
3446
+ "name": "ToggleModeAsync",
3447
+ "returnType": "Task",
3448
+ "signature": "ToggleModeAsync()",
3449
+ "summary": null
3450
+ },
3451
+ {
3452
+ "name": "SetDirectionAsync",
3453
+ "returnType": "Task",
3454
+ "signature": "SetDirectionAsync(LayoutDirection direction)",
3455
+ "summary": null
3456
+ },
3457
+ {
3458
+ "name": "GetDirectionAsync",
3459
+ "returnType": "Task<LayoutDirection>",
3460
+ "signature": "GetDirectionAsync()",
3461
+ "summary": null
3462
+ }
3463
+ ],
3464
+ "events": [
3465
+ {
3466
+ "name": "OnThemeChanged",
3467
+ "type": "Action?",
3468
+ "summary": null
3469
+ }
3470
+ ],
3471
+ "enumValues": []
3472
+ },
3473
+ {
3474
+ "name": "ViewportInfo",
3475
+ "kind": "record",
3476
+ "namespace": "Lumeo.Services",
3477
+ "summary": "Immutable snapshot of the viewport at a point in time. Passed to ViewportChanged subscribers.",
3478
+ "properties": [
3479
+ {
3480
+ "name": "Width",
3481
+ "type": "double",
3482
+ "default": null,
3483
+ "summary": null
3484
+ },
3485
+ {
3486
+ "name": "Height",
3487
+ "type": "double",
3488
+ "default": null,
3489
+ "summary": null
3490
+ },
3491
+ {
3492
+ "name": "Current",
3493
+ "type": "Breakpoint",
3494
+ "default": null,
3495
+ "summary": null
3496
+ }
3497
+ ],
3498
+ "methods": [
3499
+ {
3500
+ "name": "FromWidth",
3501
+ "returnType": "Breakpoint",
3502
+ "signature": "FromWidth(double width)",
3503
+ "summary": "Maps a width to a Breakpoint using the Tailwind thresholds. Pure function; consumers can call it directly with an arbitrary width (e.g. to pre-compute a breakpoint from a server-rendered User-Agent hint)."
3504
+ }
3505
+ ],
3506
+ "events": [],
3507
+ "enumValues": []
3508
+ }
3509
+ ],
427
3510
  "components": {
428
3511
  "Accordion": {
429
3512
  "name": "Accordion",
@@ -15124,7 +18207,7 @@
15124
18207
  },
15125
18208
  "ConfirmButton": {
15126
18209
  "name": "ConfirmButton",
15127
- "category": "Utility",
18210
+ "category": "Forms",
15128
18211
  "subcategory": null,
15129
18212
  "description": "Confirm Button component.",
15130
18213
  "nugetPackage": "Lumeo",
@@ -15266,7 +18349,24 @@
15266
18349
  "cssVars": [
15267
18350
  "--color-foreground"
15268
18351
  ],
15269
- "examples": [],
18352
+ "examples": [
18353
+ {
18354
+ "title": "Basic Confirm",
18355
+ "code": "<ConfirmButton Title=\"Save changes?\"\n Description=\"Your edits will be applied immediately.\"\n OnConfirm=\"@HandleSave\">\n Save\n</ConfirmButton>"
18356
+ },
18357
+ {
18358
+ "title": "Destructive Action",
18359
+ "code": "<ConfirmButton Title=\"Delete account?\"\n Description=\"All your data will be permanently removed.\"\n ConfirmText=\"Yes, delete\"\n CancelText=\"Keep account\"\n IsDestructive=\"true\"\n Variant=\"Button.ButtonVariant.Destructive\"\n OnConfirm=\"@HandleDelete\"\n OnCancel=\"@HandleCancel\">\n Delete Account\n</ConfirmButton>"
18360
+ },
18361
+ {
18362
+ "title": "Variants and Sizes",
18363
+ "code": "<ConfirmButton Variant=\"Button.ButtonVariant.Secondary\" Title=\"Archive project?\" ConfirmText=\"Archive\" OnConfirm=\"@HandleArchive\">Archive</ConfirmButton>\n<ConfirmButton Variant=\"Button.ButtonVariant.Outline\" Size=\"Button.ButtonSize.Sm\" Title=\"Reset form?\" OnConfirm=\"@HandleReset\">Reset</ConfirmButton>\n<ConfirmButton Variant=\"Button.ButtonVariant.Destructive\" Size=\"Button.ButtonSize.Lg\" Title=\"Remove member?\" IsDestructive=\"true\" OnConfirm=\"@HandleRemove\">Remove</ConfirmButton>"
18364
+ },
18365
+ {
18366
+ "title": "Loading and Disabled",
18367
+ "code": "<ConfirmButton IsLoading=\"true\" Title=\"Publish?\" OnConfirm=\"@HandlePublish\">Publishing…</ConfirmButton>\n<ConfirmButton Disabled=\"true\" Title=\"Publish?\" OnConfirm=\"@HandlePublish\">Disabled</ConfirmButton>"
18368
+ }
18369
+ ],
15270
18370
  "subComponents": {},
15271
18371
  "parseFailed": false,
15272
18372
  "parseError": null
@@ -16277,7 +19377,7 @@
16277
19377
  },
16278
19378
  "CTASection": {
16279
19379
  "name": "CTASection",
16280
- "category": "Utility",
19380
+ "category": "Marketing",
16281
19381
  "subcategory": null,
16282
19382
  "description": "CTASection component.",
16283
19383
  "nugetPackage": "Lumeo",
@@ -16347,7 +19447,20 @@
16347
19447
  "--color-muted",
16348
19448
  "--color-muted-foreground"
16349
19449
  ],
16350
- "examples": [],
19450
+ "examples": [
19451
+ {
19452
+ "title": "Basic CTA",
19453
+ "code": "<CTASection Title=\"Ready to build with Lumeo?\"\n Subtitle=\"Install the package and ship your first component in minutes.\">\n <Actions>\n <Button>Get started</Button>\n <Button Variant=\"Button.ButtonVariant.Outline\">Read the docs</Button>\n </Actions>\n</CTASection>"
19454
+ },
19455
+ {
19456
+ "title": "Single Action",
19457
+ "code": "<CTASection Title=\"Join the newsletter\"\n Subtitle=\"Monthly updates on new components and releases. No spam.\">\n <Actions>\n <Button>Subscribe</Button>\n </Actions>\n</CTASection>"
19458
+ },
19459
+ {
19460
+ "title": "Custom Title Slot",
19461
+ "code": "<CTASection Subtitle=\"Use TitleSlot when you need custom title markup.\">\n <TitleSlot>\n <h2 class=\"text-3xl sm:text-4xl font-bold tracking-tight text-foreground\">\n Start shipping <span class=\"text-primary\">today</span>\n </h2>\n </TitleSlot>\n <Actions>\n <Button>Get started</Button>\n </Actions>\n</CTASection>"
19462
+ }
19463
+ ],
16351
19464
  "subComponents": {},
16352
19465
  "parseFailed": false,
16353
19466
  "parseError": null
@@ -20317,7 +23430,20 @@
20317
23430
  "cssVars": [
20318
23431
  "--color-foreground"
20319
23432
  ],
20320
- "examples": [],
23433
+ "examples": [
23434
+ {
23435
+ "title": "Scoping a panel",
23436
+ "code": "<DensityScope Value=\"Density.Compact\">\n <Button>Save</Button>\n <Button Variant=\"Button.ButtonVariant.Outline\">Cancel</Button>\n <Input Placeholder=\"Search…\" />\n</DensityScope>\n\n<DensityScope Value=\"Density.Spacious\">\n <Button>Save</Button>\n <Input Placeholder=\"Search…\" />\n</DensityScope>"
23437
+ },
23438
+ {
23439
+ "title": "Interactive — switch the scope",
23440
+ "code": "<DensityScope Value=\"_density\">\n <Button>Primary</Button>\n <Input Placeholder=\"Type here…\" />\n</DensityScope>\n\n@code {\n private Density _density = Density.Comfortable;\n}"
23441
+ },
23442
+ {
23443
+ "title": "Per-component override",
23444
+ "code": "<DensityScope Value=\"Density.Compact\">\n <Button>Inherits Compact</Button>\n <Button Density=\"Density.Spacious\">Overrides to Spacious</Button>\n</DensityScope>"
23445
+ }
23446
+ ],
20321
23447
  "subComponents": {},
20322
23448
  "parseFailed": false,
20323
23449
  "parseError": null
@@ -22530,7 +25656,7 @@
22530
25656
  },
22531
25657
  "FeatureGrid": {
22532
25658
  "name": "FeatureGrid",
22533
- "category": "Utility",
25659
+ "category": "Marketing",
22534
25660
  "subcategory": null,
22535
25661
  "description": "Feature Grid component.",
22536
25662
  "nugetPackage": "Lumeo",
@@ -22599,14 +25725,27 @@
22599
25725
  "--color-muted",
22600
25726
  "--color-muted-foreground"
22601
25727
  ],
22602
- "examples": [],
25728
+ "examples": [
25729
+ {
25730
+ "title": "Basic Feature Grid",
25731
+ "code": "<FeatureGrid Title=\"Everything in the box\"\n Subtitle=\"A focused set of primitives that compose into anything.\">\n <FeatureItem Title=\"Theming\" Description=\"Every color is a CSS variable.\">\n <Icon><Blazicon Svg=\"Lucide.Palette\" class=\"h-5 w-5\" /></Icon>\n </FeatureItem>\n <FeatureItem Title=\"Accessible\" Description=\"WAI-ARIA roles and keyboard navigation.\">\n <Icon><Blazicon Svg=\"Lucide.Accessibility\" class=\"h-5 w-5\" /></Icon>\n </FeatureItem>\n <FeatureItem Title=\"Density\" Description=\"Flip a panel between compact and spacious.\">\n <Icon><Blazicon Svg=\"Lucide.Rows3\" class=\"h-5 w-5\" /></Icon>\n </FeatureItem>\n</FeatureGrid>"
25732
+ },
25733
+ {
25734
+ "title": "Two Columns",
25735
+ "code": "<FeatureGrid Columns=\"2\" Title=\"Built for Blazor\">\n <FeatureItem Title=\"Native components\" Description=\"Pure Razor with thin interop where it counts.\" />\n <FeatureItem Title=\"Source generators\" Description=\"The [LumeoForm] generator wires up validation and binding.\" />\n</FeatureGrid>"
25736
+ },
25737
+ {
25738
+ "title": "Standalone Feature Item",
25739
+ "code": "<FeatureItem Title=\"Fast by default\" Description=\"A small CSS bundle keeps your app lean.\">\n <Icon><Blazicon Svg=\"Lucide.Zap\" class=\"h-5 w-5\" /></Icon>\n</FeatureItem>"
25740
+ }
25741
+ ],
22603
25742
  "subComponents": {},
22604
25743
  "parseFailed": false,
22605
25744
  "parseError": null
22606
25745
  },
22607
25746
  "FeatureItem": {
22608
25747
  "name": "FeatureItem",
22609
- "category": "Utility",
25748
+ "category": "Marketing",
22610
25749
  "subcategory": null,
22611
25750
  "description": "Feature Item component.",
22612
25751
  "nugetPackage": "Lumeo",
@@ -24515,364 +27654,381 @@
24515
27654
  "events": [],
24516
27655
  "enums": [
24517
27656
  {
24518
- "name": "GaugeVariant",
27657
+ "name": "GaugeVariant",
27658
+ "values": [
27659
+ "Radial",
27660
+ "Linear",
27661
+ "Arc"
27662
+ ],
27663
+ "description": null
27664
+ }
27665
+ ],
27666
+ "records": [
27667
+ {
27668
+ "name": "GaugeThreshold",
27669
+ "signature": "GaugeThreshold(double Value, string Color)",
27670
+ "description": null
27671
+ }
27672
+ ],
27673
+ "gotchas": [],
27674
+ "cssVars": [
27675
+ "--color-foreground"
27676
+ ],
27677
+ "examples": [
27678
+ {
27679
+ "title": "Radial (default)",
27680
+ "code": "<Gauge Value=\"25\" />\n<Gauge Value=\"60\" />\n<Gauge Value=\"90\" />"
27681
+ },
27682
+ {
27683
+ "title": "Arc (semicircle)",
27684
+ "code": "<Gauge Value=\"30\" Variant=\"Gauge.GaugeVariant.Arc\" />\n<Gauge Value=\"65\" Variant=\"Gauge.GaugeVariant.Arc\" />\n<Gauge Value=\"95\" Variant=\"Gauge.GaugeVariant.Arc\" />"
27685
+ },
27686
+ {
27687
+ "title": "Linear",
27688
+ "code": "<Gauge Value=\"40\" Variant=\"Gauge.GaugeVariant.Linear\" Size=\"200\" />\n<Gauge Value=\"70\" Variant=\"Gauge.GaugeVariant.Linear\" Size=\"200\" Color=\"success\" />\n<Gauge Value=\"90\" Variant=\"Gauge.GaugeVariant.Linear\" Size=\"200\" Color=\"destructive\" />"
27689
+ },
27690
+ {
27691
+ "title": "Custom Label",
27692
+ "code": "<Gauge Value=\"72\" Label=\"CPU\" Size=\"120\" />\n<Gauge Value=\"48\" Label=\"RAM\" Size=\"120\" />\n<Gauge Value=\"33\" Label=\"Disk\" Size=\"120\" />"
27693
+ }
27694
+ ],
27695
+ "subComponents": {},
27696
+ "parseFailed": false,
27697
+ "parseError": null
27698
+ },
27699
+ "Grid": {
27700
+ "name": "Grid",
27701
+ "category": "Layout",
27702
+ "subcategory": null,
27703
+ "description": "CSS grid wrapper with columns + gap as props.",
27704
+ "nugetPackage": "Lumeo",
27705
+ "files": [
27706
+ "UI/Grid/Grid.razor"
27707
+ ],
27708
+ "namespace": "Lumeo",
27709
+ "inheritsFrom": null,
27710
+ "implements": [],
27711
+ "parameters": [
27712
+ {
27713
+ "name": "Columns",
27714
+ "type": "int",
27715
+ "default": "1",
27716
+ "description": null,
27717
+ "isCascading": false,
27718
+ "captureUnmatched": false
27719
+ },
27720
+ {
27721
+ "name": "Gap",
27722
+ "type": "string?",
27723
+ "default": "\"4\"",
27724
+ "description": null,
27725
+ "isCascading": false,
27726
+ "captureUnmatched": false
27727
+ },
27728
+ {
27729
+ "name": "RowGap",
27730
+ "type": "string?",
27731
+ "default": null,
27732
+ "description": null,
27733
+ "isCascading": false,
27734
+ "captureUnmatched": false
27735
+ },
27736
+ {
27737
+ "name": "ColGap",
27738
+ "type": "string?",
27739
+ "default": null,
27740
+ "description": null,
27741
+ "isCascading": false,
27742
+ "captureUnmatched": false
27743
+ },
27744
+ {
27745
+ "name": "ChildContent",
27746
+ "type": "RenderFragment?",
27747
+ "default": null,
27748
+ "description": null,
27749
+ "isCascading": false,
27750
+ "captureUnmatched": false
27751
+ },
27752
+ {
27753
+ "name": "Class",
27754
+ "type": "string?",
27755
+ "default": null,
27756
+ "description": null,
27757
+ "isCascading": false,
27758
+ "captureUnmatched": false
27759
+ },
27760
+ {
27761
+ "name": "AdditionalAttributes",
27762
+ "type": "Dictionary<string, object>?",
27763
+ "default": null,
27764
+ "description": null,
27765
+ "isCascading": false,
27766
+ "captureUnmatched": true
27767
+ }
27768
+ ],
27769
+ "events": [],
27770
+ "enums": [],
27771
+ "records": [],
27772
+ "gotchas": [],
27773
+ "cssVars": [
27774
+ "--color-foreground"
27775
+ ],
27776
+ "examples": [
27777
+ {
27778
+ "title": "Basic 3-Column",
27779
+ "code": "<Grid Columns=\"3\" Gap=\"4\">\n <div>1</div>\n <div>2</div>\n <div>3</div>\n <div>4</div>\n <div>5</div>\n <div>6</div>\n</Grid>"
27780
+ },
27781
+ {
27782
+ "title": "Responsive Columns",
27783
+ "code": "<Grid Columns=\"2\" Gap=\"4\" Class=\"md:grid-cols-4\">\n <div>1</div>\n <div>2</div>\n <!-- ... -->\n</Grid>"
27784
+ },
27785
+ {
27786
+ "title": "Different Gaps",
27787
+ "code": "<Grid Columns=\"3\" RowGap=\"6\" ColGap=\"2\">\n <div>1</div>\n <div>2</div>\n <!-- ... -->\n</Grid>"
27788
+ },
27789
+ {
27790
+ "title": "Columns — interactive",
27791
+ "code": "<Grid Columns=\"4\" Gap=\"3\">\n @for (var i = 1; i <= 12; i++)\n {\n <div>@i</div>\n }\n</Grid>"
27792
+ }
27793
+ ],
27794
+ "subComponents": {},
27795
+ "parseFailed": false,
27796
+ "parseError": null
27797
+ },
27798
+ "Heading": {
27799
+ "name": "Heading",
27800
+ "category": "Typography",
27801
+ "subcategory": null,
27802
+ "description": "Semantic h1-h6 heading with Lumeo typographic scale.",
27803
+ "nugetPackage": "Lumeo",
27804
+ "files": [
27805
+ "UI/Heading/Heading.razor"
27806
+ ],
27807
+ "namespace": "Lumeo",
27808
+ "inheritsFrom": null,
27809
+ "implements": [],
27810
+ "parameters": [
27811
+ {
27812
+ "name": "Level",
27813
+ "type": "int",
27814
+ "default": "2",
27815
+ "description": null,
27816
+ "isCascading": false,
27817
+ "captureUnmatched": false
27818
+ },
27819
+ {
27820
+ "name": "Size",
27821
+ "type": "string?",
27822
+ "default": null,
27823
+ "description": null,
27824
+ "isCascading": false,
27825
+ "captureUnmatched": false
27826
+ },
27827
+ {
27828
+ "name": "Weight",
27829
+ "type": "string?",
27830
+ "default": null,
27831
+ "description": null,
27832
+ "isCascading": false,
27833
+ "captureUnmatched": false
27834
+ },
27835
+ {
27836
+ "name": "Tracking",
27837
+ "type": "string?",
27838
+ "default": null,
27839
+ "description": null,
27840
+ "isCascading": false,
27841
+ "captureUnmatched": false
27842
+ },
27843
+ {
27844
+ "name": "ChildContent",
27845
+ "type": "RenderFragment?",
27846
+ "default": null,
27847
+ "description": null,
27848
+ "isCascading": false,
27849
+ "captureUnmatched": false
27850
+ },
27851
+ {
27852
+ "name": "Class",
27853
+ "type": "string?",
27854
+ "default": null,
27855
+ "description": null,
27856
+ "isCascading": false,
27857
+ "captureUnmatched": false
27858
+ },
27859
+ {
27860
+ "name": "AdditionalAttributes",
27861
+ "type": "Dictionary<string, object>?",
27862
+ "default": null,
27863
+ "description": null,
27864
+ "isCascading": false,
27865
+ "captureUnmatched": true
27866
+ }
27867
+ ],
27868
+ "events": [],
27869
+ "enums": [],
27870
+ "records": [],
27871
+ "gotchas": [],
27872
+ "cssVars": [
27873
+ "--color-foreground"
27874
+ ],
27875
+ "examples": [
27876
+ {
27877
+ "title": "All Levels",
27878
+ "code": "<Heading Level=\"1\">Heading Level 1</Heading>\n<Heading Level=\"2\">Heading Level 2</Heading>\n<Heading Level=\"3\">Heading Level 3</Heading>\n<Heading Level=\"4\">Heading Level 4</Heading>\n<Heading Level=\"5\">Heading Level 5</Heading>\n<Heading Level=\"6\">Heading Level 6</Heading>"
27879
+ },
27880
+ {
27881
+ "title": "Custom Sizes",
27882
+ "code": "<Heading Level=\"2\" Size=\"sm\">h2 with small text</Heading>\n<Heading Level=\"3\" Size=\"3xl\">h3 with 3xl text</Heading>\n<Heading Level=\"4\" Size=\"lg\" Weight=\"normal\">h4 with lg text, normal weight</Heading>"
27883
+ },
27884
+ {
27885
+ "title": "Tracking",
27886
+ "code": "<Heading Level=\"1\">Default tight tracking</Heading>\n<Heading Level=\"1\" Tracking=\"normal\">Normal tracking</Heading>\n<Heading Level=\"1\" Tracking=\"wide\">Wide tracking</Heading>"
27887
+ },
27888
+ {
27889
+ "title": "Level — interactive",
27890
+ "code": "<Heading Level=\"2\">This is a level 2 heading</Heading>"
27891
+ }
27892
+ ],
27893
+ "subComponents": {},
27894
+ "parseFailed": false,
27895
+ "parseError": null
27896
+ },
27897
+ "Hero": {
27898
+ "name": "Hero",
27899
+ "category": "Marketing",
27900
+ "subcategory": null,
27901
+ "description": "Hero component.",
27902
+ "nugetPackage": "Lumeo",
27903
+ "files": [
27904
+ "UI/Hero/Hero.razor"
27905
+ ],
27906
+ "namespace": "Lumeo",
27907
+ "inheritsFrom": null,
27908
+ "implements": [],
27909
+ "parameters": [
27910
+ {
27911
+ "name": "Title",
27912
+ "type": "string?",
27913
+ "default": null,
27914
+ "description": null,
27915
+ "isCascading": false,
27916
+ "captureUnmatched": false
27917
+ },
27918
+ {
27919
+ "name": "TitleSlot",
27920
+ "type": "RenderFragment?",
27921
+ "default": null,
27922
+ "description": null,
27923
+ "isCascading": false,
27924
+ "captureUnmatched": false
27925
+ },
27926
+ {
27927
+ "name": "Subtitle",
27928
+ "type": "string?",
27929
+ "default": null,
27930
+ "description": null,
27931
+ "isCascading": false,
27932
+ "captureUnmatched": false
27933
+ },
27934
+ {
27935
+ "name": "SubtitleSlot",
27936
+ "type": "RenderFragment?",
27937
+ "default": null,
27938
+ "description": null,
27939
+ "isCascading": false,
27940
+ "captureUnmatched": false
27941
+ },
27942
+ {
27943
+ "name": "Eyebrow",
27944
+ "type": "RenderFragment?",
27945
+ "default": null,
27946
+ "description": null,
27947
+ "isCascading": false,
27948
+ "captureUnmatched": false
27949
+ },
27950
+ {
27951
+ "name": "Actions",
27952
+ "type": "RenderFragment?",
27953
+ "default": null,
27954
+ "description": null,
27955
+ "isCascading": false,
27956
+ "captureUnmatched": false
27957
+ },
27958
+ {
27959
+ "name": "Media",
27960
+ "type": "RenderFragment?",
27961
+ "default": null,
27962
+ "description": null,
27963
+ "isCascading": false,
27964
+ "captureUnmatched": false
27965
+ },
27966
+ {
27967
+ "name": "Alignment",
27968
+ "type": "HeroAlignment",
27969
+ "default": "HeroAlignment.Start",
27970
+ "description": null,
27971
+ "isCascading": false,
27972
+ "captureUnmatched": false
27973
+ },
27974
+ {
27975
+ "name": "Class",
27976
+ "type": "string?",
27977
+ "default": null,
27978
+ "description": null,
27979
+ "isCascading": false,
27980
+ "captureUnmatched": false
27981
+ },
27982
+ {
27983
+ "name": "AdditionalAttributes",
27984
+ "type": "Dictionary<string, object>?",
27985
+ "default": null,
27986
+ "description": null,
27987
+ "isCascading": false,
27988
+ "captureUnmatched": true
27989
+ }
27990
+ ],
27991
+ "events": [],
27992
+ "enums": [
27993
+ {
27994
+ "name": "HeroAlignment",
24519
27995
  "values": [
24520
- "Radial",
24521
- "Linear",
24522
- "Arc"
27996
+ "Start",
27997
+ "Center",
27998
+ "End"
24523
27999
  ],
24524
28000
  "description": null
24525
28001
  }
24526
28002
  ],
24527
- "records": [
24528
- {
24529
- "name": "GaugeThreshold",
24530
- "signature": "GaugeThreshold(double Value, string Color)",
24531
- "description": null
24532
- }
24533
- ],
24534
- "gotchas": [],
24535
- "cssVars": [
24536
- "--color-foreground"
24537
- ],
24538
- "examples": [
24539
- {
24540
- "title": "Radial (default)",
24541
- "code": "<Gauge Value=\"25\" />\n<Gauge Value=\"60\" />\n<Gauge Value=\"90\" />"
24542
- },
24543
- {
24544
- "title": "Arc (semicircle)",
24545
- "code": "<Gauge Value=\"30\" Variant=\"Gauge.GaugeVariant.Arc\" />\n<Gauge Value=\"65\" Variant=\"Gauge.GaugeVariant.Arc\" />\n<Gauge Value=\"95\" Variant=\"Gauge.GaugeVariant.Arc\" />"
24546
- },
24547
- {
24548
- "title": "Linear",
24549
- "code": "<Gauge Value=\"40\" Variant=\"Gauge.GaugeVariant.Linear\" Size=\"200\" />\n<Gauge Value=\"70\" Variant=\"Gauge.GaugeVariant.Linear\" Size=\"200\" Color=\"success\" />\n<Gauge Value=\"90\" Variant=\"Gauge.GaugeVariant.Linear\" Size=\"200\" Color=\"destructive\" />"
24550
- },
24551
- {
24552
- "title": "Custom Label",
24553
- "code": "<Gauge Value=\"72\" Label=\"CPU\" Size=\"120\" />\n<Gauge Value=\"48\" Label=\"RAM\" Size=\"120\" />\n<Gauge Value=\"33\" Label=\"Disk\" Size=\"120\" />"
24554
- }
24555
- ],
24556
- "subComponents": {},
24557
- "parseFailed": false,
24558
- "parseError": null
24559
- },
24560
- "Grid": {
24561
- "name": "Grid",
24562
- "category": "Layout",
24563
- "subcategory": null,
24564
- "description": "CSS grid wrapper with columns + gap as props.",
24565
- "nugetPackage": "Lumeo",
24566
- "files": [
24567
- "UI/Grid/Grid.razor"
24568
- ],
24569
- "namespace": "Lumeo",
24570
- "inheritsFrom": null,
24571
- "implements": [],
24572
- "parameters": [
24573
- {
24574
- "name": "Columns",
24575
- "type": "int",
24576
- "default": "1",
24577
- "description": null,
24578
- "isCascading": false,
24579
- "captureUnmatched": false
24580
- },
24581
- {
24582
- "name": "Gap",
24583
- "type": "string?",
24584
- "default": "\"4\"",
24585
- "description": null,
24586
- "isCascading": false,
24587
- "captureUnmatched": false
24588
- },
24589
- {
24590
- "name": "RowGap",
24591
- "type": "string?",
24592
- "default": null,
24593
- "description": null,
24594
- "isCascading": false,
24595
- "captureUnmatched": false
24596
- },
24597
- {
24598
- "name": "ColGap",
24599
- "type": "string?",
24600
- "default": null,
24601
- "description": null,
24602
- "isCascading": false,
24603
- "captureUnmatched": false
24604
- },
24605
- {
24606
- "name": "ChildContent",
24607
- "type": "RenderFragment?",
24608
- "default": null,
24609
- "description": null,
24610
- "isCascading": false,
24611
- "captureUnmatched": false
24612
- },
24613
- {
24614
- "name": "Class",
24615
- "type": "string?",
24616
- "default": null,
24617
- "description": null,
24618
- "isCascading": false,
24619
- "captureUnmatched": false
24620
- },
24621
- {
24622
- "name": "AdditionalAttributes",
24623
- "type": "Dictionary<string, object>?",
24624
- "default": null,
24625
- "description": null,
24626
- "isCascading": false,
24627
- "captureUnmatched": true
24628
- }
24629
- ],
24630
- "events": [],
24631
- "enums": [],
24632
28003
  "records": [],
24633
28004
  "gotchas": [],
24634
28005
  "cssVars": [
24635
- "--color-foreground"
24636
- ],
24637
- "examples": [
24638
- {
24639
- "title": "Basic 3-Column",
24640
- "code": "<Grid Columns=\"3\" Gap=\"4\">\n <div>1</div>\n <div>2</div>\n <div>3</div>\n <div>4</div>\n <div>5</div>\n <div>6</div>\n</Grid>"
24641
- },
24642
- {
24643
- "title": "Responsive Columns",
24644
- "code": "<Grid Columns=\"2\" Gap=\"4\" Class=\"md:grid-cols-4\">\n <div>1</div>\n <div>2</div>\n <!-- ... -->\n</Grid>"
24645
- },
24646
- {
24647
- "title": "Different Gaps",
24648
- "code": "<Grid Columns=\"3\" RowGap=\"6\" ColGap=\"2\">\n <div>1</div>\n <div>2</div>\n <!-- ... -->\n</Grid>"
24649
- },
24650
- {
24651
- "title": "Columns — interactive",
24652
- "code": "<Grid Columns=\"4\" Gap=\"3\">\n @for (var i = 1; i <= 12; i++)\n {\n <div>@i</div>\n }\n</Grid>"
24653
- }
24654
- ],
24655
- "subComponents": {},
24656
- "parseFailed": false,
24657
- "parseError": null
24658
- },
24659
- "Heading": {
24660
- "name": "Heading",
24661
- "category": "Typography",
24662
- "subcategory": null,
24663
- "description": "Semantic h1-h6 heading with Lumeo typographic scale.",
24664
- "nugetPackage": "Lumeo",
24665
- "files": [
24666
- "UI/Heading/Heading.razor"
24667
- ],
24668
- "namespace": "Lumeo",
24669
- "inheritsFrom": null,
24670
- "implements": [],
24671
- "parameters": [
24672
- {
24673
- "name": "Level",
24674
- "type": "int",
24675
- "default": "2",
24676
- "description": null,
24677
- "isCascading": false,
24678
- "captureUnmatched": false
24679
- },
24680
- {
24681
- "name": "Size",
24682
- "type": "string?",
24683
- "default": null,
24684
- "description": null,
24685
- "isCascading": false,
24686
- "captureUnmatched": false
24687
- },
24688
- {
24689
- "name": "Weight",
24690
- "type": "string?",
24691
- "default": null,
24692
- "description": null,
24693
- "isCascading": false,
24694
- "captureUnmatched": false
24695
- },
24696
- {
24697
- "name": "Tracking",
24698
- "type": "string?",
24699
- "default": null,
24700
- "description": null,
24701
- "isCascading": false,
24702
- "captureUnmatched": false
24703
- },
24704
- {
24705
- "name": "ChildContent",
24706
- "type": "RenderFragment?",
24707
- "default": null,
24708
- "description": null,
24709
- "isCascading": false,
24710
- "captureUnmatched": false
24711
- },
24712
- {
24713
- "name": "Class",
24714
- "type": "string?",
24715
- "default": null,
24716
- "description": null,
24717
- "isCascading": false,
24718
- "captureUnmatched": false
24719
- },
24720
- {
24721
- "name": "AdditionalAttributes",
24722
- "type": "Dictionary<string, object>?",
24723
- "default": null,
24724
- "description": null,
24725
- "isCascading": false,
24726
- "captureUnmatched": true
24727
- }
24728
- ],
24729
- "events": [],
24730
- "enums": [],
24731
- "records": [],
24732
- "gotchas": [],
24733
- "cssVars": [
24734
- "--color-foreground"
28006
+ "--color-foreground",
28007
+ "--color-muted",
28008
+ "--color-muted-foreground"
24735
28009
  ],
24736
28010
  "examples": [
24737
28011
  {
24738
- "title": "All Levels",
24739
- "code": "<Heading Level=\"1\">Heading Level 1</Heading>\n<Heading Level=\"2\">Heading Level 2</Heading>\n<Heading Level=\"3\">Heading Level 3</Heading>\n<Heading Level=\"4\">Heading Level 4</Heading>\n<Heading Level=\"5\">Heading Level 5</Heading>\n<Heading Level=\"6\">Heading Level 6</Heading>"
28012
+ "title": "Basic Hero",
28013
+ "code": "<Hero Title=\"Build faster with Lumeo\"\n Subtitle=\"A complete Blazor component library with theming, accessibility, and density built in.\">\n <Actions>\n <Button>Get started</Button>\n <Button Variant=\"Button.ButtonVariant.Outline\">View components</Button>\n </Actions>\n</Hero>"
24740
28014
  },
24741
28015
  {
24742
- "title": "Custom Sizes",
24743
- "code": "<Heading Level=\"2\" Size=\"sm\">h2 with small text</Heading>\n<Heading Level=\"3\" Size=\"3xl\">h3 with 3xl text</Heading>\n<Heading Level=\"4\" Size=\"lg\" Weight=\"normal\">h4 with lg text, normal weight</Heading>"
28016
+ "title": "With Eyebrow",
28017
+ "code": "<Hero Title=\"Version 3.5 is here\"\n Subtitle=\"Marketing blocks, density scopes, and a smaller bundle.\">\n <Eyebrow>\n <Badge Variant=\"Badge.BadgeVariant.Secondary\">New</Badge>\n </Eyebrow>\n <Actions>\n <Button>Read the changelog</Button>\n </Actions>\n</Hero>"
24744
28018
  },
24745
28019
  {
24746
- "title": "Tracking",
24747
- "code": "<Heading Level=\"1\">Default tight tracking</Heading>\n<Heading Level=\"1\" Tracking=\"normal\">Normal tracking</Heading>\n<Heading Level=\"1\" Tracking=\"wide\">Wide tracking</Heading>"
28020
+ "title": "Centered Alignment",
28021
+ "code": "<Hero Alignment=\"Hero.HeroAlignment.Center\"\n Title=\"Everything you need to ship\"\n Subtitle=\"Forms, overlays, data display, charts, and motion — all in one package.\">\n <Actions>\n <Button>Install</Button>\n <Button Variant=\"Button.ButtonVariant.Ghost\">Docs</Button>\n </Actions>\n</Hero>"
24748
28022
  },
24749
28023
  {
24750
- "title": "Level — interactive",
24751
- "code": "<Heading Level=\"2\">This is a level 2 heading</Heading>"
28024
+ "title": "With Media",
28025
+ "code": "<Hero Title=\"See it in action\"\n Subtitle=\"A two-column layout that collapses to a single column on small screens.\">\n <Actions>\n <Button>Try the playground</Button>\n </Actions>\n <Media>\n <img src=\"/screenshot.png\" alt=\"Product screenshot\" class=\"rounded-xl border border-border/40\" />\n </Media>\n</Hero>"
24752
28026
  }
24753
28027
  ],
24754
28028
  "subComponents": {},
24755
28029
  "parseFailed": false,
24756
28030
  "parseError": null
24757
28031
  },
24758
- "Hero": {
24759
- "name": "Hero",
24760
- "category": "Utility",
24761
- "subcategory": null,
24762
- "description": "Hero component.",
24763
- "nugetPackage": "Lumeo",
24764
- "files": [
24765
- "UI/Hero/Hero.razor"
24766
- ],
24767
- "namespace": "Lumeo",
24768
- "inheritsFrom": null,
24769
- "implements": [],
24770
- "parameters": [
24771
- {
24772
- "name": "Title",
24773
- "type": "string?",
24774
- "default": null,
24775
- "description": null,
24776
- "isCascading": false,
24777
- "captureUnmatched": false
24778
- },
24779
- {
24780
- "name": "TitleSlot",
24781
- "type": "RenderFragment?",
24782
- "default": null,
24783
- "description": null,
24784
- "isCascading": false,
24785
- "captureUnmatched": false
24786
- },
24787
- {
24788
- "name": "Subtitle",
24789
- "type": "string?",
24790
- "default": null,
24791
- "description": null,
24792
- "isCascading": false,
24793
- "captureUnmatched": false
24794
- },
24795
- {
24796
- "name": "SubtitleSlot",
24797
- "type": "RenderFragment?",
24798
- "default": null,
24799
- "description": null,
24800
- "isCascading": false,
24801
- "captureUnmatched": false
24802
- },
24803
- {
24804
- "name": "Eyebrow",
24805
- "type": "RenderFragment?",
24806
- "default": null,
24807
- "description": null,
24808
- "isCascading": false,
24809
- "captureUnmatched": false
24810
- },
24811
- {
24812
- "name": "Actions",
24813
- "type": "RenderFragment?",
24814
- "default": null,
24815
- "description": null,
24816
- "isCascading": false,
24817
- "captureUnmatched": false
24818
- },
24819
- {
24820
- "name": "Media",
24821
- "type": "RenderFragment?",
24822
- "default": null,
24823
- "description": null,
24824
- "isCascading": false,
24825
- "captureUnmatched": false
24826
- },
24827
- {
24828
- "name": "Alignment",
24829
- "type": "HeroAlignment",
24830
- "default": "HeroAlignment.Start",
24831
- "description": null,
24832
- "isCascading": false,
24833
- "captureUnmatched": false
24834
- },
24835
- {
24836
- "name": "Class",
24837
- "type": "string?",
24838
- "default": null,
24839
- "description": null,
24840
- "isCascading": false,
24841
- "captureUnmatched": false
24842
- },
24843
- {
24844
- "name": "AdditionalAttributes",
24845
- "type": "Dictionary<string, object>?",
24846
- "default": null,
24847
- "description": null,
24848
- "isCascading": false,
24849
- "captureUnmatched": true
24850
- }
24851
- ],
24852
- "events": [],
24853
- "enums": [
24854
- {
24855
- "name": "HeroAlignment",
24856
- "values": [
24857
- "Start",
24858
- "Center",
24859
- "End"
24860
- ],
24861
- "description": null
24862
- }
24863
- ],
24864
- "records": [],
24865
- "gotchas": [],
24866
- "cssVars": [
24867
- "--color-foreground",
24868
- "--color-muted",
24869
- "--color-muted-foreground"
24870
- ],
24871
- "examples": [],
24872
- "subComponents": {},
24873
- "parseFailed": false,
24874
- "parseError": null
24875
- },
24876
28032
  "Highlighter": {
24877
28033
  "name": "Highlighter",
24878
28034
  "category": "Typography",
@@ -30737,7 +33893,7 @@
30737
33893
  },
30738
33894
  "OverlayForm": {
30739
33895
  "name": "OverlayForm",
30740
- "category": "Utility",
33896
+ "category": "Forms",
30741
33897
  "subcategory": null,
30742
33898
  "description": "Overlay Form component.",
30743
33899
  "nugetPackage": "Lumeo",
@@ -30841,7 +33997,12 @@
30841
33997
  "cssVars": [
30842
33998
  "--color-border"
30843
33999
  ],
30844
- "examples": [],
34000
+ "examples": [
34001
+ {
34002
+ "title": "Basic Overlay Form",
34003
+ "code": "<OverlayForm Model=\"@_model\" OnValidSubmit=\"HandleSave\">\n <Header>\n <Heading Level=\"3\" Class=\"text-base font-semibold\">Edit contact</Heading>\n </Header>\n <Body>\n <Stack Gap=\"4\">\n <Label>Name</Label>\n <Input @bind-Value=\"_model.Name\" Placeholder=\"Jane Doe\" />\n <Label>Email</Label>\n <Input @bind-Value=\"_model.Email\" Placeholder=\"jane@example.com\" />\n <Label>Notes</Label>\n <Textarea @bind-Value=\"_model.Notes\" />\n </Stack>\n </Body>\n <Footer>\n <Button Variant=\"Button.ButtonVariant.Outline\">Cancel</Button>\n <Button Type=\"Button.ButtonType.Submit\">Save</Button>\n </Footer>\n</OverlayForm>\n\n@code {\n private ContactModel _model = new();\n private void HandleSave(EditContext ctx) { /* persist _model */ }\n}"
34004
+ }
34005
+ ],
30845
34006
  "subComponents": {},
30846
34007
  "parseFailed": false,
30847
34008
  "parseError": null
@@ -45293,7 +48454,7 @@
45293
48454
  },
45294
48455
  "UploadTrigger": {
45295
48456
  "name": "UploadTrigger",
45296
- "category": "Utility",
48457
+ "category": "Forms",
45297
48458
  "subcategory": null,
45298
48459
  "description": "Upload Trigger component.",
45299
48460
  "nugetPackage": "Lumeo",
@@ -45417,7 +48578,24 @@
45417
48578
  "--color-secondary-foreground",
45418
48579
  "--radius"
45419
48580
  ],
45420
- "examples": [],
48581
+ "examples": [
48582
+ {
48583
+ "title": "Basic Trigger",
48584
+ "code": "<UploadTrigger Text=\"Upload file\" OnFilesSelected=\"@HandleFiles\" />\n\n@code {\n private void HandleFiles(InputFileChangeEventArgs e)\n {\n // read e.File / e.GetMultipleFiles() and upload\n }\n}"
48585
+ },
48586
+ {
48587
+ "title": "Variants",
48588
+ "code": "<UploadTrigger Variant=\"Button.ButtonVariant.Default\" Text=\"Default\" OnFilesSelected=\"@HandleFiles\" />\n<UploadTrigger Variant=\"Button.ButtonVariant.Secondary\" Text=\"Secondary\" OnFilesSelected=\"@HandleFiles\" />\n<UploadTrigger Variant=\"Button.ButtonVariant.Outline\" Text=\"Outline\" OnFilesSelected=\"@HandleFiles\" />\n<UploadTrigger Variant=\"Button.ButtonVariant.Ghost\" Text=\"Ghost\" OnFilesSelected=\"@HandleFiles\" />"
48589
+ },
48590
+ {
48591
+ "title": "Accept Filter and Multiple",
48592
+ "code": "<UploadTrigger Text=\"Pick images\" Accept=\"image/*\" Multiple=\"true\" OnFilesSelected=\"@HandleFiles\" />\n<UploadTrigger Text=\"Pick a PDF\" Accept=\".pdf,.docx\" OnFilesSelected=\"@HandleFiles\" />"
48593
+ },
48594
+ {
48595
+ "title": "Custom Label and Icon",
48596
+ "code": "<UploadTrigger Variant=\"Button.ButtonVariant.Outline\" OnFilesSelected=\"@HandleFiles\">\n <Icon>\n <Blazicon Svg=\"Lucide.Image\" class=\"h-4 w-4\" />\n </Icon>\n <ChildContent>\n <span>Replace photo</span>\n </ChildContent>\n</UploadTrigger>\n\n<UploadTrigger Size=\"Button.ButtonSize.Icon\" Variant=\"Button.ButtonVariant.Ghost\" OnFilesSelected=\"@HandleFiles\" aria-label=\"Attach file\">\n <Icon>\n <Blazicon Svg=\"Lucide.Paperclip\" class=\"h-4 w-4\" />\n </Icon>\n @* Empty ChildContent suppresses the default text label *@\n <ChildContent></ChildContent>\n</UploadTrigger>"
48597
+ }
48598
+ ],
45421
48599
  "subComponents": {},
45422
48600
  "parseFailed": false,
45423
48601
  "parseError": null