@expcat/tigercat-core 1.2.47 → 1.2.52

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,74 @@ 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
+ };
702
+ var iconNames = Object.keys(iconRegistry);
703
+ function getIconDefinition(name) {
704
+ return iconRegistry[name];
705
+ }
706
+
639
707
  // src/utils/svg-attrs.ts
640
708
  var SVG_DEFAULT_XMLNS = "http://www.w3.org/2000/svg";
641
709
  var SVG_DEFAULT_VIEWBOX_24 = "0 0 24 24";
@@ -3693,13 +3761,27 @@ function getDividerStyle(orientation, color, thickness) {
3693
3761
  // src/utils/layout-utils.ts
3694
3762
  var layoutRootClasses = "tiger-layout flex flex-col min-h-screen";
3695
3763
  var layoutHeaderClasses = "tiger-header bg-[var(--tiger-surface,#ffffff)] border-b border-[var(--tiger-border,#e5e7eb)]";
3764
+ var layoutHeaderVariantClasses = {
3765
+ default: "",
3766
+ translucent: "bg-[var(--tiger-surface,#ffffff)]/80 backdrop-blur-[var(--tiger-blur-glass,16px)] supports-[backdrop-filter]:bg-[var(--tiger-surface,#ffffff)]/70",
3767
+ blur: "bg-[var(--tiger-surface,#ffffff)]/80 backdrop-blur-[var(--tiger-blur-glass-strong,24px)] supports-[backdrop-filter]:bg-[var(--tiger-surface,#ffffff)]/70 shadow-sm"
3768
+ };
3769
+ function getLayoutHeaderClasses(variant = "default") {
3770
+ return classNames(layoutHeaderClasses, layoutHeaderVariantClasses[variant]);
3771
+ }
3696
3772
  var layoutSidebarClasses = "tiger-sidebar bg-[var(--tiger-surface,#ffffff)] border-r border-[var(--tiger-border,#e5e7eb)] overflow-hidden transition-all duration-300";
3697
3773
  var layoutSidebarCollapsedClasses = "tiger-sidebar-collapsed";
3698
3774
  function getSidebarStyle(collapsed, width = "256px", collapsedWidth = "64px") {
3699
3775
  const w = collapsed ? collapsedWidth : width;
3700
3776
  return { width: w, minWidth: w };
3701
3777
  }
3702
- var layoutContentClasses = "tiger-content flex-1 bg-[var(--tiger-layout-content-bg,#f9fafb)] p-6";
3778
+ var layoutContentClasses = "tiger-content flex-1 bg-[var(--tiger-layout-content-bg,#f9fafb)]";
3779
+ function getLayoutContentClasses(padding = true) {
3780
+ return classNames(
3781
+ layoutContentClasses,
3782
+ padding === false ? void 0 : typeof padding === "string" ? padding : "p-6"
3783
+ );
3784
+ }
3703
3785
  var layoutFooterClasses = "tiger-footer bg-[var(--tiger-surface,#ffffff)] border-t border-[var(--tiger-border,#e5e7eb)] p-4";
3704
3786
 
3705
3787
  // src/utils/container-utils.ts
@@ -3774,7 +3856,13 @@ var CARD_LIST_CLASSES = {
3774
3856
  md: "hidden max-md:grid max-md:gap-3 max-md:p-3",
3775
3857
  lg: "hidden max-lg:grid max-lg:gap-3 max-lg:p-3"
3776
3858
  };
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";
3859
+ var tableResponsiveCardClasses = "rounded-[var(--tiger-radius-md,0.5rem)] border border-[var(--tiger-border,#e5e7eb)] bg-[var(--tiger-surface,#ffffff)] shadow-sm";
3860
+ function getTableResponsiveCardClasses(cardPadding) {
3861
+ return classNames(
3862
+ tableResponsiveCardClasses,
3863
+ cardPadding === false ? void 0 : cardPadding ?? "p-3"
3864
+ );
3865
+ }
3778
3866
  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
3867
  var tableResponsiveCardLabelClasses = "text-xs font-medium uppercase tracking-wider text-[var(--tiger-text-muted,#6b7280)]";
3780
3868
  var tableResponsiveCardValueClasses = "min-w-0 text-sm text-[var(--tiger-text,#111827)] break-words";
@@ -4163,12 +4251,18 @@ function getCardGridInfo(column, layoutItem) {
4163
4251
  const rowSpan = layoutItem?.rowSpan !== void 0 ? layoutItem.rowSpan : column.cardGrid?.rowSpan;
4164
4252
  const hideLabel = layoutItem?.hideLabel !== void 0 ? layoutItem.hideLabel : column.cardGrid?.hideLabel ?? false;
4165
4253
  const labelPosition = layoutItem?.labelPosition !== void 0 ? layoutItem.labelPosition : column.cardGrid?.labelPosition ?? "left";
4254
+ const divider = layoutItem?.divider !== void 0 ? layoutItem.divider : column.cardGrid?.divider ?? false;
4255
+ const labelClassName = layoutItem?.labelClassName !== void 0 ? layoutItem.labelClassName : column.cardGrid?.labelClassName;
4256
+ const valueClassName = layoutItem?.valueClassName !== void 0 ? layoutItem.valueClassName : column.cardGrid?.valueClassName;
4166
4257
  const colClass = colSpan && COL_SPAN_CLASSES[colSpan] ? classNames("col-span-12", COL_SPAN_CLASSES[colSpan]) : "col-span-12";
4167
4258
  const rowClass = rowSpan && ROW_SPAN_CLASSES[rowSpan] ? ROW_SPAN_CLASSES[rowSpan] : "";
4168
4259
  return {
4169
4260
  className: classNames(colClass, rowClass, "min-w-0 break-words", layoutItem?.className),
4170
4261
  hideLabel,
4171
- labelPosition
4262
+ labelPosition,
4263
+ divider,
4264
+ labelClassName,
4265
+ valueClassName
4172
4266
  };
4173
4267
  }
4174
4268
 
@@ -4246,6 +4340,11 @@ var cardFooterClasses = "border-t border-[var(--tiger-border,#e5e7eb)] pt-3 mt-3
4246
4340
  var cardCoverClasses = "w-full h-48 object-cover";
4247
4341
  var cardCoverWrapperClasses = "overflow-hidden";
4248
4342
  var cardActionsClasses = "flex gap-2 justify-end";
4343
+ function resolveCardPadding(size, padding) {
4344
+ if (padding === false) return void 0;
4345
+ if (typeof padding === "string") return padding;
4346
+ return cardSizeClasses[size];
4347
+ }
4249
4348
  function getCardClasses(variant, hoverable) {
4250
4349
  const classes = [cardBaseClasses, cardVariantClasses[variant]];
4251
4350
  if (hoverable) {
@@ -5111,6 +5210,7 @@ var menuItemSelectedLightClasses = "bg-[var(--tiger-outline-bg-hover,#eff6ff)] t
5111
5210
  var menuItemSelectedDarkClasses = "bg-[var(--tiger-outline-bg-hover,#2563eb1a)] text-[var(--tiger-primary,#60a5fa)] font-medium";
5112
5211
  var menuItemDisabledClasses = "opacity-50 cursor-not-allowed pointer-events-none";
5113
5212
  var menuItemIconClasses = "mr-2 flex-shrink-0";
5213
+ var menuCollapsedIconClasses = "flex-shrink-0";
5114
5214
  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
5215
  var submenuExpandIconClasses = "ml-2 transition-transform duration-200";
5116
5216
  var submenuExpandIconExpandedClasses = "transform rotate-180";
@@ -6037,8 +6137,9 @@ function isDrawerSwipeCloseGesture(placement, gesture) {
6037
6137
  function getDrawerHeaderClasses() {
6038
6138
  return "flex items-center justify-between px-6 py-4 border-b border-[var(--tiger-border,#e5e7eb)]";
6039
6139
  }
6040
- function getDrawerBodyClasses(customClass) {
6041
- return classNames("flex-1 overflow-y-auto px-6 py-4", customClass);
6140
+ function getDrawerBodyClasses(customClass, bodyPadding) {
6141
+ const padding = bodyPadding === false ? void 0 : typeof bodyPadding === "string" ? bodyPadding : "px-6 py-4";
6142
+ return classNames("flex-1 overflow-y-auto", padding, customClass);
6042
6143
  }
6043
6144
  function getDrawerFooterClasses() {
6044
6145
  return "px-6 py-4 border-t border-[var(--tiger-border,#e5e7eb)]";
@@ -9987,6 +10088,28 @@ function applyFloatingStyles(element, result) {
9987
10088
  element.style.top = `${result.y}px`;
9988
10089
  }
9989
10090
 
10091
+ // src/utils/dev-warn.ts
10092
+ function isDevEnvironment() {
10093
+ const proc = globalThis.process;
10094
+ return !proc?.env || proc.env.NODE_ENV !== "production";
10095
+ }
10096
+ var warnedKeys = /* @__PURE__ */ new Set();
10097
+ function devWarn(key, message) {
10098
+ if (!isDevEnvironment() || warnedKeys.has(key)) return;
10099
+ warnedKeys.add(key);
10100
+ console.warn(message);
10101
+ }
10102
+ function warnUnsupportedColorProp(component, props) {
10103
+ if (!("color" in props)) return;
10104
+ devWarn(
10105
+ `${component}.color`,
10106
+ `[Tigercat] ${component} does not support color. Use variant instead.`
10107
+ );
10108
+ }
10109
+ function resetDevWarnCache() {
10110
+ warnedKeys.clear();
10111
+ }
10112
+
9990
10113
  // src/utils/chat-window-utils.ts
9991
10114
  var defaultChatMessageStatusInfo = {
9992
10115
  sending: { text: "\u53D1\u9001\u4E2D", className: "text-[var(--tiger-text-muted,#6b7280)]" },
@@ -17336,6 +17459,7 @@ export {
17336
17459
  descriptionsVerticalWrapperClasses,
17337
17460
  descriptionsWrapperClasses,
17338
17461
  designTokens,
17462
+ devWarn,
17339
17463
  dotSizeClasses,
17340
17464
  dotsVariantConfig,
17341
17465
  downloadChartBlob,
@@ -17651,6 +17775,7 @@ export {
17651
17775
  getGroupHeaderCellClasses,
17652
17776
  getGutterStyles,
17653
17777
  getHeatmapCellIndexAtPoint,
17778
+ getIconDefinition,
17654
17779
  getImageAnnotationCenter,
17655
17780
  getImageAnnotationPathData,
17656
17781
  getImageAnnotationPointFromClient,
@@ -17688,6 +17813,8 @@ export {
17688
17813
  getIntlPluralCategory,
17689
17814
  getJustifyClasses,
17690
17815
  getKanbanContainerClasses,
17816
+ getLayoutContentClasses,
17817
+ getLayoutHeaderClasses,
17691
17818
  getLeafKeys,
17692
17819
  getLineGradientPrefix,
17693
17820
  getLineNumberClasses,
@@ -17894,6 +18021,7 @@ export {
17894
18021
  getTableHeaderCellClasses,
17895
18022
  getTableHeaderClasses,
17896
18023
  getTableLabels,
18024
+ getTableResponsiveCardClasses,
17897
18025
  getTableResponsiveCardListClasses,
17898
18026
  getTableResponsiveTableClasses,
17899
18027
  getTableRowClasses,
@@ -17993,6 +18121,8 @@ export {
17993
18121
  icon24PathStrokeLinejoin,
17994
18122
  icon24StrokeWidth,
17995
18123
  icon24ViewBox,
18124
+ iconNames,
18125
+ iconRegistry,
17996
18126
  iconSizeClasses,
17997
18127
  iconSvgBaseClasses,
17998
18128
  iconSvgDefaultStrokeLinecap,
@@ -18181,6 +18311,7 @@ export {
18181
18311
  mentionsDropdownClasses,
18182
18312
  menuBaseClasses,
18183
18313
  menuCollapsedClasses,
18314
+ menuCollapsedIconClasses,
18184
18315
  menuCollapsedItemClasses,
18185
18316
  menuCollapsedModeClasses,
18186
18317
  menuDarkThemeClasses,
@@ -18359,6 +18490,7 @@ export {
18359
18490
  replaceKeys,
18360
18491
  resetAreaGradientCounter,
18361
18492
  resetBarGradientCounter,
18493
+ resetDevWarnCache,
18362
18494
  resetFunnelGradientCounter,
18363
18495
  resetGaugeGradientCounter,
18364
18496
  resetIconPath,
@@ -18376,6 +18508,7 @@ export {
18376
18508
  resizeCropRect,
18377
18509
  resizePanes,
18378
18510
  resolveAffixTarget,
18511
+ resolveCardPadding,
18379
18512
  resolveCarouselSwipeDirection,
18380
18513
  resolveChartPalette,
18381
18514
  resolveChartTooltipContent,
@@ -18718,6 +18851,7 @@ export {
18718
18851
  virtualTableRowHoverClasses,
18719
18852
  virtualTableRowSelectedClasses,
18720
18853
  virtualTableRowStripedClasses,
18854
+ warnUnsupportedColorProp,
18721
18855
  watermarkDefaults,
18722
18856
  watermarkFontDefaults,
18723
18857
  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 };
@@ -1,3 +1,3 @@
1
- export { o as downloadCsv, p as downloadExcel, r as downloadTableExport, q as exportTableData, m as exportTableToCsv, n as exportTableToExcel, t as tableExportButtonClasses } from '../table-export-DOU7hPr1.cjs';
1
+ export { o as downloadCsv, p as downloadExcel, r as downloadTableExport, q as exportTableData, m as exportTableToCsv, n as exportTableToExcel, t as tableExportButtonClasses } from '../table-export-CR2in2GM.cjs';
2
2
  import '../locale-BRmojkDM.cjs';
3
3
  import '../datepicker-DXzS_8l8.cjs';
@@ -1,3 +1,3 @@
1
- export { o as downloadCsv, p as downloadExcel, r as downloadTableExport, q as exportTableData, m as exportTableToCsv, n as exportTableToExcel, t as tableExportButtonClasses } from '../table-export-3lZdCB_o.js';
1
+ export { o as downloadCsv, p as downloadExcel, r as downloadTableExport, q as exportTableData, m as exportTableToCsv, n as exportTableToExcel, t as tableExportButtonClasses } from '../table-export-FvrNas0f.js';
2
2
  import '../locale-BxSSFEo2.js';
3
3
  import '../datepicker-DXzS_8l8.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@expcat/tigercat-core",
3
- "version": "1.2.47",
3
+ "version": "1.2.52",
4
4
  "type": "module",
5
5
  "description": "Core utilities for Tigercat UI library",
6
6
  "license": "MIT",
@@ -199,6 +199,11 @@
199
199
  "import": "./dist/icons/table.js",
200
200
  "require": "./dist/icons/table.cjs"
201
201
  },
202
+ "./icons/registry": {
203
+ "types": "./dist/icons/registry.d.ts",
204
+ "import": "./dist/icons/registry.js",
205
+ "require": "./dist/icons/registry.cjs"
206
+ },
202
207
  "./utils/table-export": {
203
208
  "types": "./dist/utils/table-export.d.ts",
204
209
  "import": "./dist/utils/table-export.js",