@expcat/tigercat-core 1.2.47 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -636,6 +636,138 @@ var expandChevronIcon16PathD = "M6 3l5 5-5 5V3z";
636
636
  var lockClosedIcon24PathD = "M17 8h-1V6a4 4 0 10-8 0v2H7a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2V10a2 2 0 00-2-2zm-7-2a2 2 0 114 0v2h-4V6z";
637
637
  var lockOpenIcon24PathD = "M17 8h-1V6a4 4 0 00-7.75-1.41 1 1 0 101.9.62A2 2 0 0114 6v2H7a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2V10a2 2 0 00-2-2zm0 12H7V10h10v10z";
638
638
 
639
+ // src/utils/icons/registry.ts
640
+ var stroke24 = (...paths) => ({
641
+ viewBox: "0 0 24 24",
642
+ paths,
643
+ mode: "stroke"
644
+ });
645
+ var iconRegistry = {
646
+ // --- Reused internal glyphs ---
647
+ close: stroke24(closeIconPathD),
648
+ success: stroke24(statusSuccessIconPath),
649
+ warning: stroke24(statusWarningIconPath),
650
+ error: stroke24(statusErrorIconPath),
651
+ info: stroke24(statusInfoIconPath),
652
+ // --- Curated outline set (Heroicons-style, 24x24) ---
653
+ check: stroke24("m4.5 12.75 6 6 9-13.5"),
654
+ "chevron-up": stroke24("m4.5 15.75 7.5-7.5 7.5 7.5"),
655
+ "chevron-down": stroke24("m19.5 8.25-7.5 7.5-7.5-7.5"),
656
+ "chevron-left": stroke24("M15.75 19.5 8.25 12l7.5-7.5"),
657
+ "chevron-right": stroke24("m8.25 4.5 7.5 7.5-7.5 7.5"),
658
+ "arrow-left": stroke24("M10.5 19.5 3 12m0 0 7.5-7.5M3 12h18"),
659
+ "arrow-right": stroke24("M13.5 4.5 21 12m0 0-7.5 7.5M21 12H3"),
660
+ "arrow-up": stroke24("M4.5 10.5 12 3m0 0 7.5 7.5M12 3v18"),
661
+ "arrow-down": stroke24("M19.5 13.5 12 21m0 0-7.5-7.5M12 21V3"),
662
+ search: stroke24(
663
+ "m21 21-5.197-5.197m0 0A7.5 7.5 0 1 0 5.196 5.196a7.5 7.5 0 0 0 10.607 10.607Z"
664
+ ),
665
+ plus: stroke24("M12 4.5v15m7.5-7.5h-15"),
666
+ minus: stroke24("M5 12h14"),
667
+ edit: stroke24(
668
+ "m16.862 4.487 1.687-1.688a1.875 1.875 0 1 1 2.652 2.652L10.582 16.07a4.5 4.5 0 0 1-1.897 1.13L6 18l.8-2.685a4.5 4.5 0 0 1 1.13-1.897l8.932-8.931Zm0 0L19.5 7.125M18 14v4.75A2.25 2.25 0 0 1 15.75 21H5.25A2.25 2.25 0 0 1 3 18.75V8.25A2.25 2.25 0 0 1 5.25 6H10"
669
+ ),
670
+ trash: stroke24(
671
+ "m14.74 9-.346 9m-4.788 0L9.26 9m9.968-3.21c.342.052.682.107 1.022.166m-1.022-.165L18.16 19.673a2.25 2.25 0 0 1-2.244 2.077H8.084a2.25 2.25 0 0 1-2.244-2.077L4.772 5.79m14.456 0a48.108 48.108 0 0 0-3.478-.397m-12 .562c.34-.059.68-.114 1.022-.165m0 0a48.11 48.11 0 0 1 3.478-.397m7.5 0v-.916c0-1.18-.91-2.164-2.09-2.201a51.964 51.964 0 0 0-3.32 0c-1.18.037-2.09 1.022-2.09 2.201v.916m7.5 0a48.667 48.667 0 0 0-7.5 0"
672
+ ),
673
+ user: stroke24(
674
+ "M15.75 6a3.75 3.75 0 1 1-7.5 0 3.75 3.75 0 0 1 7.5 0ZM4.501 20.118a7.5 7.5 0 0 1 14.998 0A17.933 17.933 0 0 1 12 21.75c-2.676 0-5.216-.584-7.499-1.632Z"
675
+ ),
676
+ settings: stroke24(
677
+ "M9.594 3.94c.09-.542.56-.94 1.11-.94h2.593c.55 0 1.02.398 1.11.94l.213 1.281c.063.374.313.686.645.87.074.04.147.083.22.127.324.196.72.257 1.075.124l1.217-.456a1.125 1.125 0 0 1 1.37.49l1.296 2.247a1.125 1.125 0 0 1-.26 1.431l-1.003.827c-.293.24-.438.613-.43.992a7.723 7.723 0 0 1 0 .255c-.008.378.137.75.43.99l1.004.828c.424.35.534.954.26 1.43l-1.298 2.247a1.125 1.125 0 0 1-1.369.491l-1.217-.456c-.355-.133-.75-.072-1.076.124a6.47 6.47 0 0 1-.22.128c-.331.183-.581.495-.644.869l-.213 1.281c-.09.543-.56.94-1.11.94h-2.594c-.55 0-1.019-.398-1.11-.94l-.213-1.281c-.062-.374-.312-.686-.644-.87a6.52 6.52 0 0 1-.22-.127c-.325-.196-.72-.257-1.076-.124l-1.217.456a1.125 1.125 0 0 1-1.369-.49l-1.297-2.247a1.125 1.125 0 0 1 .26-1.431l1.004-.827c.292-.24.437-.613.43-.992a7.723 7.723 0 0 1 0-.255c.007-.378-.138-.75-.43-.99l-1.004-.828a1.125 1.125 0 0 1-.26-1.43l1.297-2.247a1.125 1.125 0 0 1 1.37-.491l1.216.456c.356.133.751.072 1.076-.124.072-.044.146-.087.22-.128.332-.183.582-.495.644-.869l.214-1.281Z",
678
+ "M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z"
679
+ ),
680
+ eye: stroke24(
681
+ "M2.036 12.322a1.012 1.012 0 0 1 0-.639C3.423 7.51 7.36 4.5 12 4.5c4.638 0 8.573 3.007 9.963 7.178.07.207.07.431 0 .639C20.577 16.49 16.64 19.5 12 19.5c-4.638 0-8.573-3.007-9.963-7.178Z",
682
+ "M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z"
683
+ ),
684
+ "eye-off": stroke24(
685
+ "M3.98 8.223A10.477 10.477 0 0 0 1.934 12C3.226 16.338 7.244 19.5 12 19.5c.993 0 1.953-.138 2.863-.395M6.228 6.228A10.451 10.451 0 0 1 12 4.5c4.756 0 8.773 3.162 10.065 7.498a10.523 10.523 0 0 1-4.293 5.774M6.228 6.228 3 3m3.228 3.228 3.65 3.65m7.894 7.894L21 21m-3.228-3.228-3.65-3.65m0 0a3 3 0 1 0-4.243-4.243m4.242 4.242L9.88 9.88"
686
+ ),
687
+ calendar: stroke24(
688
+ "M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 0 1 2.25-2.25h13.5A2.25 2.25 0 0 1 21 7.5v11.25m-18 0A2.25 2.25 0 0 0 5.25 21h13.5A2.25 2.25 0 0 0 21 18.75m-18 0v-7.5A2.25 2.25 0 0 1 5.25 9h13.5A2.25 2.25 0 0 1 21 11.25v7.5"
689
+ ),
690
+ clock: stroke24("M12 6v6h4.5m4.5 0a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z"),
691
+ menu: stroke24("M3.75 6.75h16.5M3.75 12h16.5m-16.5 5.25h16.5"),
692
+ "more-horizontal": stroke24(
693
+ "M6.75 12a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0ZM12.75 12a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0ZM18.75 12a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0Z"
694
+ ),
695
+ "more-vertical": stroke24(
696
+ "M12 6.75a.75.75 0 1 1 0-1.5.75.75 0 0 1 0 1.5ZM12 12.75a.75.75 0 1 1 0-1.5.75.75 0 0 1 0 1.5ZM12 18.75a.75.75 0 1 1 0-1.5.75.75 0 0 1 0 1.5Z"
697
+ ),
698
+ "external-link": stroke24(
699
+ "M13.5 6H5.25A2.25 2.25 0 0 0 3 8.25v10.5A2.25 2.25 0 0 0 5.25 21h10.5A2.25 2.25 0 0 0 18 18.75V10.5m-10.5 6L21 3m0 0h-5.25M21 3v5.25"
700
+ ),
701
+ // --- Common application glyphs (Heroicons-style, 24x24) ---
702
+ home: stroke24(
703
+ "m2.25 12 8.954-8.955c.44-.439 1.152-.439 1.591 0L21.75 12M4.5 9.75v10.125c0 .621.504 1.125 1.125 1.125H9.75v-4.875c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125V21h4.125c.621 0 1.125-.504 1.125-1.125V9.75M8.25 21h8.25"
704
+ ),
705
+ bell: stroke24(
706
+ "M14.857 17.082a23.848 23.848 0 0 0 5.454-1.31A8.967 8.967 0 0 1 18 9.75V9A6 6 0 0 0 6 9v.75a8.967 8.967 0 0 1-2.312 6.022c1.733.64 3.56 1.085 5.455 1.31m5.714 0a24.255 24.255 0 0 1-5.714 0m5.714 0a3 3 0 1 1-5.714 0"
707
+ ),
708
+ mail: stroke24(
709
+ "M21.75 6.75v10.5a2.25 2.25 0 0 1-2.25 2.25h-15a2.25 2.25 0 0 1-2.25-2.25V6.75m19.5 0A2.25 2.25 0 0 0 19.5 4.5h-15a2.25 2.25 0 0 0-2.25 2.25m19.5 0v.243a2.25 2.25 0 0 1-1.07 1.916l-7.5 4.615a2.25 2.25 0 0 1-2.36 0L3.32 8.91a2.25 2.25 0 0 1-1.07-1.916V6.75"
710
+ ),
711
+ phone: stroke24(
712
+ "M2.25 6.75c0 8.284 6.716 15 15 15h2.25a2.25 2.25 0 0 0 2.25-2.25v-1.372c0-.516-.351-.966-.852-1.091l-4.423-1.106c-.44-.11-.902.055-1.173.417l-.97 1.293c-.282.376-.769.542-1.21.38a12.035 12.035 0 0 1-7.143-7.143c-.162-.441.004-.928.38-1.21l1.293-.97c.363-.271.527-.734.417-1.173L6.963 3.102a1.125 1.125 0 0 0-1.091-.852H4.5A2.25 2.25 0 0 0 2.25 4.5v2.25Z"
713
+ ),
714
+ download: stroke24(
715
+ "M3 16.5v2.25A2.25 2.25 0 0 0 5.25 21h13.5A2.25 2.25 0 0 0 21 18.75V16.5M16.5 12 12 16.5m0 0L7.5 12m4.5 4.5V3"
716
+ ),
717
+ upload: stroke24(
718
+ "M3 16.5v2.25A2.25 2.25 0 0 0 5.25 21h13.5A2.25 2.25 0 0 0 21 18.75V16.5m-13.5-9L12 3m0 0 4.5 4.5M12 3v13.5"
719
+ ),
720
+ filter: stroke24(
721
+ "M12 3c2.755 0 5.455.232 8.083.678.533.09.917.556.917 1.096v1.044a2.25 2.25 0 0 1-.659 1.591l-5.432 5.432a2.25 2.25 0 0 0-.659 1.591v2.927a2.25 2.25 0 0 1-1.244 2.013L9.75 21v-6.568a2.25 2.25 0 0 0-.659-1.591L3.659 7.409A2.25 2.25 0 0 1 3 5.818V4.774c0-.54.384-1.006.917-1.096A48.32 48.32 0 0 1 12 3Z"
722
+ ),
723
+ refresh: stroke24(
724
+ "M16.023 9.348h4.992v-.001M2.985 19.644v-4.992m0 0h4.992m-4.993 0 3.181 3.183a8.25 8.25 0 0 0 13.803-3.7M4.031 9.865a8.25 8.25 0 0 1 13.803-3.7l3.181 3.182m0-4.991v4.99"
725
+ ),
726
+ logout: stroke24(
727
+ "M15.75 9V5.25A2.25 2.25 0 0 0 13.5 3h-6a2.25 2.25 0 0 0-2.25 2.25v13.5A2.25 2.25 0 0 0 7.5 21h6a2.25 2.25 0 0 0 2.25-2.25V15M12 9l-3 3m0 0 3 3m-3-3h12.75"
728
+ ),
729
+ lock: stroke24(
730
+ "M16.5 10.5V6.75a4.5 4.5 0 1 0-9 0v3.75m-.75 11.25h10.5a2.25 2.25 0 0 0 2.25-2.25v-6.75a2.25 2.25 0 0 0-2.25-2.25H6.75a2.25 2.25 0 0 0-2.25 2.25v6.75a2.25 2.25 0 0 0 2.25 2.25Z"
731
+ ),
732
+ star: stroke24(
733
+ "M11.48 3.499a.562.562 0 0 1 1.04 0l2.125 5.111a.563.563 0 0 0 .475.345l5.518.442c.499.04.701.663.321.988l-4.204 3.602a.563.563 0 0 0-.182.557l1.285 5.385a.562.562 0 0 1-.84.61l-4.725-2.885a.562.562 0 0 0-.586 0L6.982 20.54a.562.562 0 0 1-.84-.61l1.285-5.386a.562.562 0 0 0-.182-.557l-4.204-3.602a.562.562 0 0 1 .321-.988l5.518-.442a.563.563 0 0 0 .475-.345L11.48 3.5Z"
734
+ ),
735
+ heart: stroke24(
736
+ "M21 8.25c0-2.485-2.099-4.5-4.688-4.5-1.935 0-3.597 1.126-4.312 2.733-.715-1.607-2.377-2.733-4.313-2.733C5.1 3.75 3 5.765 3 8.25c0 7.22 9 12 9 12s9-4.78 9-12Z"
737
+ ),
738
+ copy: stroke24(
739
+ "M15.75 17.25v3.375c0 .621-.504 1.125-1.125 1.125h-9.75a1.125 1.125 0 0 1-1.125-1.125V7.875c0-.621.504-1.125 1.125-1.125H6.75a9.06 9.06 0 0 1 1.5.124m7.5 10.376h3.375c.621 0 1.125-.504 1.125-1.125V11.25c0-4.46-3.243-8.161-7.5-8.876a9.06 9.06 0 0 0-1.5-.124H9.375c-.621 0-1.125.504-1.125 1.125v3.5m7.5 10.375H9.375a1.125 1.125 0 0 1-1.125-1.125v-9.25m12 6.625v-1.875a3.375 3.375 0 0 0-3.375-3.375h-1.5a1.125 1.125 0 0 1-1.125-1.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H9.75"
740
+ ),
741
+ link: stroke24(
742
+ "M13.19 8.688a4.5 4.5 0 0 1 1.242 7.244l-4.5 4.5a4.5 4.5 0 0 1-6.364-6.364l1.757-1.757m13.35-.622 1.757-1.757a4.5 4.5 0 0 0-6.364-6.364l-4.5 4.5a4.5 4.5 0 0 0 1.242 7.244"
743
+ ),
744
+ document: stroke24(
745
+ "M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m0 12.75h7.5m-7.5 3H12M10.5 2.25H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9Z"
746
+ ),
747
+ folder: stroke24(
748
+ "M2.25 12.75V12A2.25 2.25 0 0 1 4.5 9.75h15A2.25 2.25 0 0 1 21.75 12v.75m-8.69-6.44-2.12-2.12a1.5 1.5 0 0 0-1.061-.44H4.5A2.25 2.25 0 0 0 2.25 6v12a2.25 2.25 0 0 0 2.25 2.25h15A2.25 2.25 0 0 0 21.75 18V9a2.25 2.25 0 0 0-2.25-2.25h-5.379a1.5 1.5 0 0 1-1.06-.44Z"
749
+ ),
750
+ image: stroke24(
751
+ "m2.25 15.75 5.159-5.159a2.25 2.25 0 0 1 3.182 0l5.159 5.159m-1.5-1.5 1.409-1.409a2.25 2.25 0 0 1 3.182 0l2.909 2.909m-18 3.75h16.5a1.5 1.5 0 0 0 1.5-1.5V6a1.5 1.5 0 0 0-1.5-1.5H3.75A1.5 1.5 0 0 0 2.25 6v12a1.5 1.5 0 0 0 1.5 1.5Zm10.5-11.25h.008v.008h-.008V8.25Zm.375 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Z"
752
+ ),
753
+ "map-pin": stroke24(
754
+ "M15 10.5a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z",
755
+ "M19.5 10.5c0 7.142-7.5 11.25-7.5 11.25S4.5 17.642 4.5 10.5a7.5 7.5 0 1 1 15 0Z"
756
+ ),
757
+ "check-circle": stroke24("M9 12.75 11.25 15 15 9.75M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z"),
758
+ "x-circle": stroke24("m9.75 9.75 4.5 4.5m0-4.5-4.5 4.5M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z"),
759
+ users: stroke24(
760
+ "M15 19.128a9.38 9.38 0 0 0 2.625.372 9.337 9.337 0 0 0 4.121-.952 4.125 4.125 0 0 0-7.533-2.493M15 19.128v-.003c0-1.113-.285-2.16-.786-3.07M15 19.128v.106A12.318 12.318 0 0 1 8.624 21c-2.331 0-4.512-.645-6.374-1.766l-.001-.109a6.375 6.375 0 0 1 11.964-3.07M12 6.375a3.375 3.375 0 1 1-6.75 0 3.375 3.375 0 0 1 6.75 0Zm8.25 2.25a2.625 2.625 0 1 1-5.25 0 2.625 2.625 0 0 1 5.25 0Z"
761
+ ),
762
+ dashboard: stroke24(
763
+ "M3.75 6A2.25 2.25 0 0 1 6 3.75h2.25A2.25 2.25 0 0 1 10.5 6v2.25a2.25 2.25 0 0 1-2.25 2.25H6a2.25 2.25 0 0 1-2.25-2.25V6ZM3.75 15.75A2.25 2.25 0 0 1 6 13.5h2.25a2.25 2.25 0 0 1 2.25 2.25V18a2.25 2.25 0 0 1-2.25 2.25H6A2.25 2.25 0 0 1 3.75 18v-2.25ZM13.5 6a2.25 2.25 0 0 1 2.25-2.25H18A2.25 2.25 0 0 1 20.25 6v2.25A2.25 2.25 0 0 1 18 10.5h-2.25a2.25 2.25 0 0 1-2.25-2.25V6ZM13.5 15.75a2.25 2.25 0 0 1 2.25-2.25H18a2.25 2.25 0 0 1 2.25 2.25V18A2.25 2.25 0 0 1 18 20.25h-2.25A2.25 2.25 0 0 1 13.5 18v-2.25Z"
764
+ )
765
+ };
766
+ var iconNames = Object.keys(iconRegistry);
767
+ function getIconDefinition(name) {
768
+ return iconRegistry[name];
769
+ }
770
+
639
771
  // src/utils/svg-attrs.ts
640
772
  var SVG_DEFAULT_XMLNS = "http://www.w3.org/2000/svg";
641
773
  var SVG_DEFAULT_VIEWBOX_24 = "0 0 24 24";
@@ -2008,7 +2140,8 @@ function getFormItemClasses(options = {}) {
2008
2140
  );
2009
2141
  }
2010
2142
  function getFormItemLabelClasses(options = {}) {
2011
- const { size = "md", labelPosition = "right", labelAlign = "right", isRequired = false } = options;
2143
+ const { size = "md", labelPosition = "right", isRequired = false } = options;
2144
+ const labelAlign = options.labelAlign ?? (labelPosition === "top" ? "left" : "right");
2012
2145
  const alignClass = labelAlign === "right" ? "text-right" : "text-left";
2013
2146
  const positionClasses = labelPosition === "top" ? "w-full" : "shrink-0";
2014
2147
  const paddingClass = labelPosition === "top" ? "" : LABEL_PADDING_TOP[size];
@@ -3693,13 +3826,27 @@ function getDividerStyle(orientation, color, thickness) {
3693
3826
  // src/utils/layout-utils.ts
3694
3827
  var layoutRootClasses = "tiger-layout flex flex-col min-h-screen";
3695
3828
  var layoutHeaderClasses = "tiger-header bg-[var(--tiger-surface,#ffffff)] border-b border-[var(--tiger-border,#e5e7eb)]";
3829
+ var layoutHeaderVariantClasses = {
3830
+ default: "",
3831
+ translucent: "bg-[var(--tiger-surface,#ffffff)]/80 backdrop-blur-[var(--tiger-blur-glass,16px)] backdrop-saturate-[var(--tiger-header-saturate,1.8)] supports-[backdrop-filter]:bg-[var(--tiger-surface,#ffffff)]/70 border-[color:var(--tiger-header-border,var(--tiger-border,#e5e7eb))]",
3832
+ blur: "bg-[var(--tiger-surface,#ffffff)]/80 backdrop-blur-[var(--tiger-blur-glass-strong,24px)] backdrop-saturate-[var(--tiger-header-saturate,1.8)] supports-[backdrop-filter]:bg-[var(--tiger-surface,#ffffff)]/70 shadow-[var(--tiger-header-shadow,0_1px_2px_0_rgb(0_0_0/0.05))] border-[color:var(--tiger-header-border,var(--tiger-border,#e5e7eb))]"
3833
+ };
3834
+ function getLayoutHeaderClasses(variant = "default") {
3835
+ return classNames(layoutHeaderClasses, layoutHeaderVariantClasses[variant]);
3836
+ }
3696
3837
  var layoutSidebarClasses = "tiger-sidebar bg-[var(--tiger-surface,#ffffff)] border-r border-[var(--tiger-border,#e5e7eb)] overflow-hidden transition-all duration-300";
3697
3838
  var layoutSidebarCollapsedClasses = "tiger-sidebar-collapsed";
3698
3839
  function getSidebarStyle(collapsed, width = "256px", collapsedWidth = "64px") {
3699
3840
  const w = collapsed ? collapsedWidth : width;
3700
3841
  return { width: w, minWidth: w };
3701
3842
  }
3702
- var layoutContentClasses = "tiger-content flex-1 bg-[var(--tiger-layout-content-bg,#f9fafb)] p-6";
3843
+ var layoutContentClasses = "tiger-content flex-1 bg-[var(--tiger-layout-content-bg,#f9fafb)]";
3844
+ function getLayoutContentClasses(padding = true) {
3845
+ return classNames(
3846
+ layoutContentClasses,
3847
+ padding === false ? void 0 : typeof padding === "string" ? padding : "p-6"
3848
+ );
3849
+ }
3703
3850
  var layoutFooterClasses = "tiger-footer bg-[var(--tiger-surface,#ffffff)] border-t border-[var(--tiger-border,#e5e7eb)] p-4";
3704
3851
 
3705
3852
  // src/utils/container-utils.ts
@@ -3774,7 +3921,13 @@ var CARD_LIST_CLASSES = {
3774
3921
  md: "hidden max-md:grid max-md:gap-3 max-md:p-3",
3775
3922
  lg: "hidden max-lg:grid max-lg:gap-3 max-lg:p-3"
3776
3923
  };
3777
- var tableResponsiveCardClasses = "rounded-[var(--tiger-radius-md,0.5rem)] border border-[var(--tiger-border,#e5e7eb)] bg-[var(--tiger-surface,#ffffff)] p-3 shadow-sm";
3924
+ var tableResponsiveCardClasses = "rounded-[var(--tiger-radius-md,0.5rem)] border border-[var(--tiger-border,#e5e7eb)] bg-[var(--tiger-surface,#ffffff)] shadow-sm";
3925
+ function getTableResponsiveCardClasses(cardPadding) {
3926
+ return classNames(
3927
+ tableResponsiveCardClasses,
3928
+ cardPadding === false ? void 0 : cardPadding ?? "p-3"
3929
+ );
3930
+ }
3778
3931
  var tableResponsiveCardRowClasses = "grid grid-cols-[minmax(7rem,40%)_1fr] gap-3 border-b border-[var(--tiger-border,#e5e7eb)] py-2 last:border-b-0";
3779
3932
  var tableResponsiveCardLabelClasses = "text-xs font-medium uppercase tracking-wider text-[var(--tiger-text-muted,#6b7280)]";
3780
3933
  var tableResponsiveCardValueClasses = "min-w-0 text-sm text-[var(--tiger-text,#111827)] break-words";
@@ -4163,12 +4316,18 @@ function getCardGridInfo(column, layoutItem) {
4163
4316
  const rowSpan = layoutItem?.rowSpan !== void 0 ? layoutItem.rowSpan : column.cardGrid?.rowSpan;
4164
4317
  const hideLabel = layoutItem?.hideLabel !== void 0 ? layoutItem.hideLabel : column.cardGrid?.hideLabel ?? false;
4165
4318
  const labelPosition = layoutItem?.labelPosition !== void 0 ? layoutItem.labelPosition : column.cardGrid?.labelPosition ?? "left";
4319
+ const divider = layoutItem?.divider !== void 0 ? layoutItem.divider : column.cardGrid?.divider ?? false;
4320
+ const labelClassName = layoutItem?.labelClassName !== void 0 ? layoutItem.labelClassName : column.cardGrid?.labelClassName;
4321
+ const valueClassName = layoutItem?.valueClassName !== void 0 ? layoutItem.valueClassName : column.cardGrid?.valueClassName;
4166
4322
  const colClass = colSpan && COL_SPAN_CLASSES[colSpan] ? classNames("col-span-12", COL_SPAN_CLASSES[colSpan]) : "col-span-12";
4167
4323
  const rowClass = rowSpan && ROW_SPAN_CLASSES[rowSpan] ? ROW_SPAN_CLASSES[rowSpan] : "";
4168
4324
  return {
4169
4325
  className: classNames(colClass, rowClass, "min-w-0 break-words", layoutItem?.className),
4170
4326
  hideLabel,
4171
- labelPosition
4327
+ labelPosition,
4328
+ divider,
4329
+ labelClassName,
4330
+ valueClassName
4172
4331
  };
4173
4332
  }
4174
4333
 
@@ -4246,6 +4405,11 @@ var cardFooterClasses = "border-t border-[var(--tiger-border,#e5e7eb)] pt-3 mt-3
4246
4405
  var cardCoverClasses = "w-full h-48 object-cover";
4247
4406
  var cardCoverWrapperClasses = "overflow-hidden";
4248
4407
  var cardActionsClasses = "flex gap-2 justify-end";
4408
+ function resolveCardPadding(size, padding) {
4409
+ if (padding === false) return void 0;
4410
+ if (typeof padding === "string") return padding;
4411
+ return cardSizeClasses[size];
4412
+ }
4249
4413
  function getCardClasses(variant, hoverable) {
4250
4414
  const classes = [cardBaseClasses, cardVariantClasses[variant]];
4251
4415
  if (hoverable) {
@@ -5111,6 +5275,7 @@ var menuItemSelectedLightClasses = "bg-[var(--tiger-outline-bg-hover,#eff6ff)] t
5111
5275
  var menuItemSelectedDarkClasses = "bg-[var(--tiger-outline-bg-hover,#2563eb1a)] text-[var(--tiger-primary,#60a5fa)] font-medium";
5112
5276
  var menuItemDisabledClasses = "opacity-50 cursor-not-allowed pointer-events-none";
5113
5277
  var menuItemIconClasses = "mr-2 flex-shrink-0";
5278
+ var menuCollapsedIconClasses = "flex-shrink-0";
5114
5279
  var submenuTitleClasses = "flex w-full items-center justify-between px-4 py-2 text-left bg-transparent border-0 cursor-pointer transition-colors duration-200 select-none appearance-none focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--tiger-focus-ring,var(--tiger-primary,#2563eb))]/40 focus-visible:ring-inset active:opacity-90";
5115
5280
  var submenuExpandIconClasses = "ml-2 transition-transform duration-200";
5116
5281
  var submenuExpandIconExpandedClasses = "transform rotate-180";
@@ -6037,8 +6202,9 @@ function isDrawerSwipeCloseGesture(placement, gesture) {
6037
6202
  function getDrawerHeaderClasses() {
6038
6203
  return "flex items-center justify-between px-6 py-4 border-b border-[var(--tiger-border,#e5e7eb)]";
6039
6204
  }
6040
- function getDrawerBodyClasses(customClass) {
6041
- return classNames("flex-1 overflow-y-auto px-6 py-4", customClass);
6205
+ function getDrawerBodyClasses(customClass, bodyPadding) {
6206
+ const padding = bodyPadding === false ? void 0 : typeof bodyPadding === "string" ? bodyPadding : "px-6 py-4";
6207
+ return classNames("flex-1 overflow-y-auto", padding, customClass);
6042
6208
  }
6043
6209
  function getDrawerFooterClasses() {
6044
6210
  return "px-6 py-4 border-t border-[var(--tiger-border,#e5e7eb)]";
@@ -9987,6 +10153,28 @@ function applyFloatingStyles(element, result) {
9987
10153
  element.style.top = `${result.y}px`;
9988
10154
  }
9989
10155
 
10156
+ // src/utils/dev-warn.ts
10157
+ function isDevEnvironment() {
10158
+ const proc = globalThis.process;
10159
+ return !proc?.env || proc.env.NODE_ENV !== "production";
10160
+ }
10161
+ var warnedKeys = /* @__PURE__ */ new Set();
10162
+ function devWarn(key, message) {
10163
+ if (!isDevEnvironment() || warnedKeys.has(key)) return;
10164
+ warnedKeys.add(key);
10165
+ console.warn(message);
10166
+ }
10167
+ function warnUnsupportedColorProp(component, props) {
10168
+ if (!("color" in props)) return;
10169
+ devWarn(
10170
+ `${component}.color`,
10171
+ `[Tigercat] ${component} does not support color. Use variant instead.`
10172
+ );
10173
+ }
10174
+ function resetDevWarnCache() {
10175
+ warnedKeys.clear();
10176
+ }
10177
+
9990
10178
  // src/utils/chat-window-utils.ts
9991
10179
  var defaultChatMessageStatusInfo = {
9992
10180
  sending: { text: "\u53D1\u9001\u4E2D", className: "text-[var(--tiger-text-muted,#6b7280)]" },
@@ -11214,6 +11402,9 @@ function getPickerNavigationIndex(items, current, key, isDisabled = defaultIsDis
11214
11402
  function getPickerOptionId(listboxId, index) {
11215
11403
  return `${listboxId}-option-${index}`;
11216
11404
  }
11405
+ function getDisclosureStateAttr(open) {
11406
+ return { "data-state": open ? "open" : "closed" };
11407
+ }
11217
11408
  function getPickerComboboxAria({
11218
11409
  expanded,
11219
11410
  listboxId,
@@ -11225,7 +11416,8 @@ function getPickerComboboxAria({
11225
11416
  "aria-expanded": expanded,
11226
11417
  "aria-haspopup": "listbox",
11227
11418
  "aria-controls": expanded ? listboxId : void 0,
11228
- "aria-activedescendant": expanded ? activeOptionId ?? (activeIndex >= 0 ? getPickerOptionId(listboxId, activeIndex) : void 0) : void 0
11419
+ "aria-activedescendant": expanded ? activeOptionId ?? (activeIndex >= 0 ? getPickerOptionId(listboxId, activeIndex) : void 0) : void 0,
11420
+ "data-state": expanded ? "open" : "closed"
11229
11421
  };
11230
11422
  }
11231
11423
  function getPickerListboxAria({ id, label } = {}) {
@@ -15433,11 +15625,22 @@ var MODERN_BASE_TOKENS_LIGHT = {
15433
15625
  "--tiger-shadow-md": "0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)",
15434
15626
  "--tiger-shadow-lg": "0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)",
15435
15627
  "--tiger-shadow-xl": "0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)",
15436
- // Glass — disabled by default (no backdrop blur, no inset highlights)
15628
+ // Glass — inset highlights stay disabled by default (kept flat), but a
15629
+ // sensible backdrop blur is enabled out of the box so opt-in surfaces like
15630
+ // `Header variant="translucent"/"blur"` render glass without the consumer
15631
+ // having to set these tokens. Override to `0px` to fully disable blur.
15437
15632
  "--tiger-shadow-glass": "0 1px 2px 0 rgb(0 0 0 / 0.05)",
15438
15633
  "--tiger-shadow-glass-strong": "0 4px 6px -1px rgb(0 0 0 / 0.1)",
15439
- "--tiger-blur-glass": "0px",
15440
- "--tiger-blur-glass-strong": "0px",
15634
+ "--tiger-blur-glass": "16px",
15635
+ "--tiger-blur-glass-strong": "24px",
15636
+ // Header variant tuning — all overridable without `!important`. `saturate`
15637
+ // enriches the blurred backdrop; `--tiger-header-shadow` lets consumers
15638
+ // swap the `blur` variant's shadow; `--tiger-header-border` scopes the
15639
+ // header's border color (falls back to the global `--tiger-border`) so the
15640
+ // glass header border can be tuned without touching every other border.
15641
+ "--tiger-header-saturate": "1.8",
15642
+ "--tiger-header-shadow": "0 1px 2px 0 rgb(0 0 0 / 0.05)",
15643
+ "--tiger-header-border": "var(--tiger-border, #e5e7eb)",
15441
15644
  // Gradients — fall back to solid color via a no-op linear-gradient
15442
15645
  "--tiger-gradient-primary": "linear-gradient(180deg, var(--tiger-primary), var(--tiger-primary))",
15443
15646
  "--tiger-gradient-surface": "linear-gradient(180deg, var(--tiger-surface), var(--tiger-surface))",
@@ -15464,7 +15667,11 @@ var MODERN_BASE_TOKENS_DARK = {
15464
15667
  "--tiger-shadow-lg": "0 10px 15px -3px rgb(0 0 0 / 0.3), 0 4px 6px -4px rgb(0 0 0 / 0.25)",
15465
15668
  "--tiger-shadow-xl": "0 20px 25px -5px rgb(0 0 0 / 0.3), 0 8px 10px -6px rgb(0 0 0 / 0.25)",
15466
15669
  "--tiger-shadow-glass": "0 1px 2px 0 rgb(0 0 0 / 0.2)",
15467
- "--tiger-shadow-glass-strong": "0 4px 6px -1px rgb(0 0 0 / 0.3)"
15670
+ "--tiger-shadow-glass-strong": "0 4px 6px -1px rgb(0 0 0 / 0.3)",
15671
+ // Header `blur` variant shadow — slightly deeper for dark surfaces.
15672
+ "--tiger-header-shadow": "0 1px 2px 0 rgb(0 0 0 / 0.3)",
15673
+ // Header border tracks the dark-mode global border by default.
15674
+ "--tiger-header-border": "var(--tiger-border)"
15468
15675
  };
15469
15676
  var MODERN_OVERRIDE_TOKENS_LIGHT = {
15470
15677
  // Rounder corners
@@ -17336,6 +17543,7 @@ export {
17336
17543
  descriptionsVerticalWrapperClasses,
17337
17544
  descriptionsWrapperClasses,
17338
17545
  designTokens,
17546
+ devWarn,
17339
17547
  dotSizeClasses,
17340
17548
  dotsVariantConfig,
17341
17549
  downloadChartBlob,
@@ -17589,6 +17797,7 @@ export {
17589
17797
  getDescriptionsLabelClasses,
17590
17798
  getDescriptionsTableClasses,
17591
17799
  getDescriptionsVerticalItemClasses,
17800
+ getDisclosureStateAttr,
17592
17801
  getDividerClasses,
17593
17802
  getDividerStyle,
17594
17803
  getDragAreaClasses,
@@ -17651,6 +17860,7 @@ export {
17651
17860
  getGroupHeaderCellClasses,
17652
17861
  getGutterStyles,
17653
17862
  getHeatmapCellIndexAtPoint,
17863
+ getIconDefinition,
17654
17864
  getImageAnnotationCenter,
17655
17865
  getImageAnnotationPathData,
17656
17866
  getImageAnnotationPointFromClient,
@@ -17688,6 +17898,8 @@ export {
17688
17898
  getIntlPluralCategory,
17689
17899
  getJustifyClasses,
17690
17900
  getKanbanContainerClasses,
17901
+ getLayoutContentClasses,
17902
+ getLayoutHeaderClasses,
17691
17903
  getLeafKeys,
17692
17904
  getLineGradientPrefix,
17693
17905
  getLineNumberClasses,
@@ -17894,6 +18106,7 @@ export {
17894
18106
  getTableHeaderCellClasses,
17895
18107
  getTableHeaderClasses,
17896
18108
  getTableLabels,
18109
+ getTableResponsiveCardClasses,
17897
18110
  getTableResponsiveCardListClasses,
17898
18111
  getTableResponsiveTableClasses,
17899
18112
  getTableRowClasses,
@@ -17993,6 +18206,8 @@ export {
17993
18206
  icon24PathStrokeLinejoin,
17994
18207
  icon24StrokeWidth,
17995
18208
  icon24ViewBox,
18209
+ iconNames,
18210
+ iconRegistry,
17996
18211
  iconSizeClasses,
17997
18212
  iconSvgBaseClasses,
17998
18213
  iconSvgDefaultStrokeLinecap,
@@ -18181,6 +18396,7 @@ export {
18181
18396
  mentionsDropdownClasses,
18182
18397
  menuBaseClasses,
18183
18398
  menuCollapsedClasses,
18399
+ menuCollapsedIconClasses,
18184
18400
  menuCollapsedItemClasses,
18185
18401
  menuCollapsedModeClasses,
18186
18402
  menuDarkThemeClasses,
@@ -18359,6 +18575,7 @@ export {
18359
18575
  replaceKeys,
18360
18576
  resetAreaGradientCounter,
18361
18577
  resetBarGradientCounter,
18578
+ resetDevWarnCache,
18362
18579
  resetFunnelGradientCounter,
18363
18580
  resetGaugeGradientCounter,
18364
18581
  resetIconPath,
@@ -18376,6 +18593,7 @@ export {
18376
18593
  resizeCropRect,
18377
18594
  resizePanes,
18378
18595
  resolveAffixTarget,
18596
+ resolveCardPadding,
18379
18597
  resolveCarouselSwipeDirection,
18380
18598
  resolveChartPalette,
18381
18599
  resolveChartTooltipContent,
@@ -18718,6 +18936,7 @@ export {
18718
18936
  virtualTableRowHoverClasses,
18719
18937
  virtualTableRowSelectedClasses,
18720
18938
  virtualTableRowStripedClasses,
18939
+ warnUnsupportedColorProp,
18721
18940
  watermarkDefaults,
18722
18941
  watermarkFontDefaults,
18723
18942
  watermarkWrapperClasses,
@@ -180,6 +180,7 @@ interface PageSizeChangeInfo {
180
180
  type TableSize = 'sm' | 'md' | 'lg';
181
181
  type TableExportFormat = 'csv' | 'excel';
182
182
  type TableResponsiveMode = 'card' | 'scroll';
183
+ type TableCardSelectionPosition = 'controls-row' | 'title-inline';
183
184
  /**
184
185
  * Viewport breakpoint below which `responsiveMode="card"` activates.
185
186
  * Maps to Tailwind's `sm` (640px), `md` (768px), and `lg` (1024px) widths.
@@ -289,6 +290,19 @@ interface TableColumnCardGrid {
289
290
  * @default 'left'
290
291
  */
291
292
  labelPosition?: 'left' | 'top';
293
+ /**
294
+ * Whether to render a divider above this field in card mode.
295
+ * @default false
296
+ */
297
+ divider?: boolean;
298
+ /**
299
+ * Custom CSS class name for the field label in card mode.
300
+ */
301
+ labelClassName?: string;
302
+ /**
303
+ * Custom CSS class name for the field value in card mode.
304
+ */
305
+ valueClassName?: string;
292
306
  }
293
307
  /**
294
308
  * Table column configuration
@@ -564,6 +578,18 @@ interface TableCardLayoutItem {
564
578
  * Layout direction of the field label and value.
565
579
  */
566
580
  labelPosition?: 'left' | 'top';
581
+ /**
582
+ * Whether to render a divider above this field in card mode.
583
+ */
584
+ divider?: boolean;
585
+ /**
586
+ * Custom CSS class name for the field label in card mode.
587
+ */
588
+ labelClassName?: string;
589
+ /**
590
+ * Custom CSS class name for the field value in card mode.
591
+ */
592
+ valueClassName?: string;
567
593
  /**
568
594
  * Custom CSS class name for card item container.
569
595
  */
@@ -715,6 +741,24 @@ interface TableProps<T = Record<string, unknown>> {
715
741
  * Dedicated layout definitions for card grid mode.
716
742
  */
717
743
  cardLayout?: TableCardLayoutItem[];
744
+ /**
745
+ * Position of row selection controls in default card rendering.
746
+ * @default 'controls-row'
747
+ */
748
+ cardSelectionPosition?: TableCardSelectionPosition;
749
+ /**
750
+ * Padding class for default card containers. Set to false to remove the
751
+ * built-in padding.
752
+ * @default 'p-3'
753
+ */
754
+ cardPadding?: string | false;
755
+ /**
756
+ * Gap utility class applied between fields in the default `cardLayout` grid.
757
+ * Provide a full Tailwind gap class (e.g. `'gap-2'`, `'gap-y-4'`) since the
758
+ * class string must be statically present for the JIT compiler.
759
+ * @default 'gap-3'
760
+ */
761
+ cardFieldGap?: string;
718
762
  /**
719
763
  * Enable virtual scrolling for large datasets
720
764
  * @default false
@@ -835,4 +879,4 @@ declare function downloadTableExport(content: string, filename?: string, format?
835
879
  */
836
880
  declare const tableExportButtonClasses = "inline-flex items-center gap-1.5 px-3 py-1.5 text-sm font-medium rounded-[var(--tiger-radius-md,0.5rem)] border border-[var(--tiger-border,#e5e7eb)] text-[var(--tiger-text,#111827)] bg-[var(--tiger-surface,#ffffff)] hover:bg-[var(--tiger-surface-muted,#f9fafb)] transition-colors";
837
881
 
838
- export { type TableCardRowSpan as A, type TableColumnCardGrid as B, type ColumnAlign as C, type TableCardRenderContext as D, type ExpandableConfig as E, type FilterOption as F, type PaginationPageSizeOption as G, type PaginationPageSizeOptionItem as H, type PaginationProps as I, type PageChangeInfo as J, type PageSizeChangeInfo as K, type PaginationQuickJumperValidationOptions as P, type RowSelectionConfig as R, type SortDirection as S, type TableResponsiveMode as T, type TableCardBreakpoint as a, type TableColumn as b, type TableFixedPosition as c, type TableSize as d, type TableCardLayoutItem as e, type PaginationAlign as f, type PaginationSize as g, type TableProps as h, type PaginationConfig as i, type FilterRule as j, type ColumnFilter as k, type SortState as l, exportTableToCsv as m, exportTableToExcel as n, downloadCsv as o, downloadExcel as p, exportTableData as q, downloadTableExport as r, type TableExportFormat as s, tableExportButtonClasses as t, type TableFixedHeaderClassNameContext as u, type TableFixedCellClassNameContext as v, type TableFixedHeaderClassName as w, type TableFixedCellClassName as x, type FilterType as y, type TableCardColSpan as z };
882
+ export { type TableCardColSpan as A, type TableCardRowSpan as B, type ColumnAlign as C, type TableColumnCardGrid as D, type ExpandableConfig as E, type FilterOption as F, type TableCardRenderContext as G, type PaginationPageSizeOption as H, type PaginationPageSizeOptionItem as I, type PaginationProps as J, type PageChangeInfo as K, type PageSizeChangeInfo as L, type PaginationQuickJumperValidationOptions as P, type RowSelectionConfig as R, type SortDirection as S, type TableResponsiveMode as T, type TableCardBreakpoint as a, type TableColumn as b, type TableFixedPosition as c, type TableSize as d, type TableCardLayoutItem as e, type PaginationAlign as f, type PaginationSize as g, type TableProps as h, type PaginationConfig as i, type FilterRule as j, type ColumnFilter as k, type SortState as l, exportTableToCsv as m, exportTableToExcel as n, downloadCsv as o, downloadExcel as p, exportTableData as q, downloadTableExport as r, type TableExportFormat as s, tableExportButtonClasses as t, type TableCardSelectionPosition as u, type TableFixedHeaderClassNameContext as v, type TableFixedCellClassNameContext as w, type TableFixedHeaderClassName as x, type TableFixedCellClassName as y, type FilterType as z };
@@ -180,6 +180,7 @@ interface PageSizeChangeInfo {
180
180
  type TableSize = 'sm' | 'md' | 'lg';
181
181
  type TableExportFormat = 'csv' | 'excel';
182
182
  type TableResponsiveMode = 'card' | 'scroll';
183
+ type TableCardSelectionPosition = 'controls-row' | 'title-inline';
183
184
  /**
184
185
  * Viewport breakpoint below which `responsiveMode="card"` activates.
185
186
  * Maps to Tailwind's `sm` (640px), `md` (768px), and `lg` (1024px) widths.
@@ -289,6 +290,19 @@ interface TableColumnCardGrid {
289
290
  * @default 'left'
290
291
  */
291
292
  labelPosition?: 'left' | 'top';
293
+ /**
294
+ * Whether to render a divider above this field in card mode.
295
+ * @default false
296
+ */
297
+ divider?: boolean;
298
+ /**
299
+ * Custom CSS class name for the field label in card mode.
300
+ */
301
+ labelClassName?: string;
302
+ /**
303
+ * Custom CSS class name for the field value in card mode.
304
+ */
305
+ valueClassName?: string;
292
306
  }
293
307
  /**
294
308
  * Table column configuration
@@ -564,6 +578,18 @@ interface TableCardLayoutItem {
564
578
  * Layout direction of the field label and value.
565
579
  */
566
580
  labelPosition?: 'left' | 'top';
581
+ /**
582
+ * Whether to render a divider above this field in card mode.
583
+ */
584
+ divider?: boolean;
585
+ /**
586
+ * Custom CSS class name for the field label in card mode.
587
+ */
588
+ labelClassName?: string;
589
+ /**
590
+ * Custom CSS class name for the field value in card mode.
591
+ */
592
+ valueClassName?: string;
567
593
  /**
568
594
  * Custom CSS class name for card item container.
569
595
  */
@@ -715,6 +741,24 @@ interface TableProps<T = Record<string, unknown>> {
715
741
  * Dedicated layout definitions for card grid mode.
716
742
  */
717
743
  cardLayout?: TableCardLayoutItem[];
744
+ /**
745
+ * Position of row selection controls in default card rendering.
746
+ * @default 'controls-row'
747
+ */
748
+ cardSelectionPosition?: TableCardSelectionPosition;
749
+ /**
750
+ * Padding class for default card containers. Set to false to remove the
751
+ * built-in padding.
752
+ * @default 'p-3'
753
+ */
754
+ cardPadding?: string | false;
755
+ /**
756
+ * Gap utility class applied between fields in the default `cardLayout` grid.
757
+ * Provide a full Tailwind gap class (e.g. `'gap-2'`, `'gap-y-4'`) since the
758
+ * class string must be statically present for the JIT compiler.
759
+ * @default 'gap-3'
760
+ */
761
+ cardFieldGap?: string;
718
762
  /**
719
763
  * Enable virtual scrolling for large datasets
720
764
  * @default false
@@ -835,4 +879,4 @@ declare function downloadTableExport(content: string, filename?: string, format?
835
879
  */
836
880
  declare const tableExportButtonClasses = "inline-flex items-center gap-1.5 px-3 py-1.5 text-sm font-medium rounded-[var(--tiger-radius-md,0.5rem)] border border-[var(--tiger-border,#e5e7eb)] text-[var(--tiger-text,#111827)] bg-[var(--tiger-surface,#ffffff)] hover:bg-[var(--tiger-surface-muted,#f9fafb)] transition-colors";
837
881
 
838
- export { type TableCardRowSpan as A, type TableColumnCardGrid as B, type ColumnAlign as C, type TableCardRenderContext as D, type ExpandableConfig as E, type FilterOption as F, type PaginationPageSizeOption as G, type PaginationPageSizeOptionItem as H, type PaginationProps as I, type PageChangeInfo as J, type PageSizeChangeInfo as K, type PaginationQuickJumperValidationOptions as P, type RowSelectionConfig as R, type SortDirection as S, type TableResponsiveMode as T, type TableCardBreakpoint as a, type TableColumn as b, type TableFixedPosition as c, type TableSize as d, type TableCardLayoutItem as e, type PaginationAlign as f, type PaginationSize as g, type TableProps as h, type PaginationConfig as i, type FilterRule as j, type ColumnFilter as k, type SortState as l, exportTableToCsv as m, exportTableToExcel as n, downloadCsv as o, downloadExcel as p, exportTableData as q, downloadTableExport as r, type TableExportFormat as s, tableExportButtonClasses as t, type TableFixedHeaderClassNameContext as u, type TableFixedCellClassNameContext as v, type TableFixedHeaderClassName as w, type TableFixedCellClassName as x, type FilterType as y, type TableCardColSpan as z };
882
+ export { type TableCardColSpan as A, type TableCardRowSpan as B, type ColumnAlign as C, type TableColumnCardGrid as D, type ExpandableConfig as E, type FilterOption as F, type TableCardRenderContext as G, type PaginationPageSizeOption as H, type PaginationPageSizeOptionItem as I, type PaginationProps as J, type PageChangeInfo as K, type PageSizeChangeInfo as L, type PaginationQuickJumperValidationOptions as P, type RowSelectionConfig as R, type SortDirection as S, type TableResponsiveMode as T, type TableCardBreakpoint as a, type TableColumn as b, type TableFixedPosition as c, type TableSize as d, type TableCardLayoutItem as e, type PaginationAlign as f, type PaginationSize as g, type TableProps as h, type PaginationConfig as i, type FilterRule as j, type ColumnFilter as k, type SortState as l, exportTableToCsv as m, exportTableToExcel as n, downloadCsv as o, downloadExcel as p, exportTableData as q, downloadTableExport as r, type TableExportFormat as s, tableExportButtonClasses as t, type TableCardSelectionPosition as u, type TableFixedHeaderClassNameContext as v, type TableFixedCellClassNameContext as w, type TableFixedHeaderClassName as x, type TableFixedCellClassName as y, type FilterType as z };
@@ -98,11 +98,22 @@ var MODERN_BASE_TOKENS_LIGHT = {
98
98
  "--tiger-shadow-md": "0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)",
99
99
  "--tiger-shadow-lg": "0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)",
100
100
  "--tiger-shadow-xl": "0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)",
101
- // Glass — disabled by default (no backdrop blur, no inset highlights)
101
+ // Glass — inset highlights stay disabled by default (kept flat), but a
102
+ // sensible backdrop blur is enabled out of the box so opt-in surfaces like
103
+ // `Header variant="translucent"/"blur"` render glass without the consumer
104
+ // having to set these tokens. Override to `0px` to fully disable blur.
102
105
  "--tiger-shadow-glass": "0 1px 2px 0 rgb(0 0 0 / 0.05)",
103
106
  "--tiger-shadow-glass-strong": "0 4px 6px -1px rgb(0 0 0 / 0.1)",
104
- "--tiger-blur-glass": "0px",
105
- "--tiger-blur-glass-strong": "0px",
107
+ "--tiger-blur-glass": "16px",
108
+ "--tiger-blur-glass-strong": "24px",
109
+ // Header variant tuning — all overridable without `!important`. `saturate`
110
+ // enriches the blurred backdrop; `--tiger-header-shadow` lets consumers
111
+ // swap the `blur` variant's shadow; `--tiger-header-border` scopes the
112
+ // header's border color (falls back to the global `--tiger-border`) so the
113
+ // glass header border can be tuned without touching every other border.
114
+ "--tiger-header-saturate": "1.8",
115
+ "--tiger-header-shadow": "0 1px 2px 0 rgb(0 0 0 / 0.05)",
116
+ "--tiger-header-border": "var(--tiger-border, #e5e7eb)",
106
117
  // Gradients — fall back to solid color via a no-op linear-gradient
107
118
  "--tiger-gradient-primary": "linear-gradient(180deg, var(--tiger-primary), var(--tiger-primary))",
108
119
  "--tiger-gradient-surface": "linear-gradient(180deg, var(--tiger-surface), var(--tiger-surface))",
@@ -129,7 +140,11 @@ var MODERN_BASE_TOKENS_DARK = {
129
140
  "--tiger-shadow-lg": "0 10px 15px -3px rgb(0 0 0 / 0.3), 0 4px 6px -4px rgb(0 0 0 / 0.25)",
130
141
  "--tiger-shadow-xl": "0 20px 25px -5px rgb(0 0 0 / 0.3), 0 8px 10px -6px rgb(0 0 0 / 0.25)",
131
142
  "--tiger-shadow-glass": "0 1px 2px 0 rgb(0 0 0 / 0.2)",
132
- "--tiger-shadow-glass-strong": "0 4px 6px -1px rgb(0 0 0 / 0.3)"
143
+ "--tiger-shadow-glass-strong": "0 4px 6px -1px rgb(0 0 0 / 0.3)",
144
+ // Header `blur` variant shadow — slightly deeper for dark surfaces.
145
+ "--tiger-header-shadow": "0 1px 2px 0 rgb(0 0 0 / 0.3)",
146
+ // Header border tracks the dark-mode global border by default.
147
+ "--tiger-header-border": "var(--tiger-border)"
133
148
  };
134
149
  var MODERN_OVERRIDE_TOKENS_LIGHT = {
135
150
  // Rounder corners
@@ -62,11 +62,22 @@ var MODERN_BASE_TOKENS_LIGHT = {
62
62
  "--tiger-shadow-md": "0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)",
63
63
  "--tiger-shadow-lg": "0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)",
64
64
  "--tiger-shadow-xl": "0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)",
65
- // Glass — disabled by default (no backdrop blur, no inset highlights)
65
+ // Glass — inset highlights stay disabled by default (kept flat), but a
66
+ // sensible backdrop blur is enabled out of the box so opt-in surfaces like
67
+ // `Header variant="translucent"/"blur"` render glass without the consumer
68
+ // having to set these tokens. Override to `0px` to fully disable blur.
66
69
  "--tiger-shadow-glass": "0 1px 2px 0 rgb(0 0 0 / 0.05)",
67
70
  "--tiger-shadow-glass-strong": "0 4px 6px -1px rgb(0 0 0 / 0.1)",
68
- "--tiger-blur-glass": "0px",
69
- "--tiger-blur-glass-strong": "0px",
71
+ "--tiger-blur-glass": "16px",
72
+ "--tiger-blur-glass-strong": "24px",
73
+ // Header variant tuning — all overridable without `!important`. `saturate`
74
+ // enriches the blurred backdrop; `--tiger-header-shadow` lets consumers
75
+ // swap the `blur` variant's shadow; `--tiger-header-border` scopes the
76
+ // header's border color (falls back to the global `--tiger-border`) so the
77
+ // glass header border can be tuned without touching every other border.
78
+ "--tiger-header-saturate": "1.8",
79
+ "--tiger-header-shadow": "0 1px 2px 0 rgb(0 0 0 / 0.05)",
80
+ "--tiger-header-border": "var(--tiger-border, #e5e7eb)",
70
81
  // Gradients — fall back to solid color via a no-op linear-gradient
71
82
  "--tiger-gradient-primary": "linear-gradient(180deg, var(--tiger-primary), var(--tiger-primary))",
72
83
  "--tiger-gradient-surface": "linear-gradient(180deg, var(--tiger-surface), var(--tiger-surface))",
@@ -93,7 +104,11 @@ var MODERN_BASE_TOKENS_DARK = {
93
104
  "--tiger-shadow-lg": "0 10px 15px -3px rgb(0 0 0 / 0.3), 0 4px 6px -4px rgb(0 0 0 / 0.25)",
94
105
  "--tiger-shadow-xl": "0 20px 25px -5px rgb(0 0 0 / 0.3), 0 8px 10px -6px rgb(0 0 0 / 0.25)",
95
106
  "--tiger-shadow-glass": "0 1px 2px 0 rgb(0 0 0 / 0.2)",
96
- "--tiger-shadow-glass-strong": "0 4px 6px -1px rgb(0 0 0 / 0.3)"
107
+ "--tiger-shadow-glass-strong": "0 4px 6px -1px rgb(0 0 0 / 0.3)",
108
+ // Header `blur` variant shadow — slightly deeper for dark surfaces.
109
+ "--tiger-header-shadow": "0 1px 2px 0 rgb(0 0 0 / 0.3)",
110
+ // Header border tracks the dark-mode global border by default.
111
+ "--tiger-header-border": "var(--tiger-border)"
97
112
  };
98
113
  var MODERN_OVERRIDE_TOKENS_LIGHT = {
99
114
  // Rounder corners