@expcat/tigercat-vue 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.
Files changed (135) hide show
  1. package/dist/{chunk-6GPX4ONB.mjs → chunk-35NT2WJR.mjs} +1 -1
  2. package/dist/{chunk-ICECZVMX.js → chunk-3XCQRM3L.js} +5 -5
  3. package/dist/{chunk-VKW2O36D.mjs → chunk-5HNDLUUM.mjs} +2 -1
  4. package/dist/{chunk-UETVHC4K.mjs → chunk-6BFGY5W7.mjs} +2 -2
  5. package/dist/{chunk-5TJI4HOT.js → chunk-6YI6UAEY.js} +2 -2
  6. package/dist/{chunk-CKXZONMO.js → chunk-72DDCIVL.js} +9 -1
  7. package/dist/{chunk-DMNOK6OP.js → chunk-7VHDBN6U.js} +3 -3
  8. package/dist/{chunk-LFKY2QRD.mjs → chunk-7WQN5BYE.mjs} +5 -2
  9. package/dist/{chunk-IGSAOYXD.mjs → chunk-BC74Z6IG.mjs} +10 -2
  10. package/dist/{chunk-G36MH6G4.mjs → chunk-BH4AJQTL.mjs} +1 -1
  11. package/dist/{chunk-2KDSHEZT.js → chunk-BPAZBRCR.js} +2 -0
  12. package/dist/{chunk-JKJ7HMFO.mjs → chunk-BWIHL7LK.mjs} +2 -2
  13. package/dist/{chunk-WQXZ3234.mjs → chunk-DBCSR4WY.mjs} +30 -5
  14. package/dist/{chunk-V6T5GRLE.js → chunk-EW2IW2JW.js} +5 -5
  15. package/dist/{chunk-3G4VPV4D.mjs → chunk-G6ULKE6H.mjs} +3 -1
  16. package/dist/{chunk-SGAUVRUS.js → chunk-H6V26X2R.js} +66 -8
  17. package/dist/{chunk-4VLNT2ED.js → chunk-HA5QZ76M.js} +2 -0
  18. package/dist/{chunk-BXS7OSVF.js → chunk-HFRPZA5S.js} +3 -3
  19. package/dist/{chunk-WH4J6PHF.mjs → chunk-IORFQMZH.mjs} +1 -1
  20. package/dist/{chunk-FRI62O2J.js → chunk-JJXYM6QR.js} +2 -2
  21. package/dist/{chunk-I4LQXUMW.js → chunk-JTVFVAM3.js} +9 -1
  22. package/dist/{chunk-BPRKQVIL.mjs → chunk-K4VUUEFQ.mjs} +2 -2
  23. package/dist/{chunk-RY2I56HB.js → chunk-K6DYTMBE.js} +30 -5
  24. package/dist/{chunk-SZFEDBLT.mjs → chunk-LA5YKXPH.mjs} +9 -1
  25. package/dist/{chunk-QIXG7OIN.mjs → chunk-MJP2SNLK.mjs} +3 -3
  26. package/dist/{chunk-BIDBJNTL.mjs → chunk-NF5O27AM.mjs} +137 -81
  27. package/dist/{chunk-B2RH4CMG.js → chunk-NKVEXKM5.js} +5 -2
  28. package/dist/{chunk-WIQPVVUQ.js → chunk-NYR6OQO4.js} +7 -7
  29. package/dist/{chunk-PXSV3J2H.js → chunk-O4V7VULF.js} +136 -80
  30. package/dist/{chunk-OHCC6NNC.mjs → chunk-OU6PJQXN.mjs} +51 -7
  31. package/dist/{chunk-QJLFHHI2.js → chunk-Q3IZQUW7.js} +9 -1
  32. package/dist/{chunk-YS6FW775.js → chunk-Q47OK3FR.js} +2 -2
  33. package/dist/{chunk-7IVLFDZI.js → chunk-R62HQDKS.js} +2 -1
  34. package/dist/{chunk-27T3QDSF.js → chunk-RBHF7NOQ.js} +3 -1
  35. package/dist/{chunk-NP6KUJ4X.mjs → chunk-RGAHV6QG.mjs} +32 -13
  36. package/dist/{chunk-V2IDOR7Y.mjs → chunk-RNQOMMLM.mjs} +1 -1
  37. package/dist/{chunk-GQPSQJ5I.mjs → chunk-SL5KAVZK.mjs} +10 -2
  38. package/dist/{chunk-KOTSKHPQ.mjs → chunk-TC6ZPQFT.mjs} +13 -3
  39. package/dist/{chunk-L6W3XL3A.js → chunk-TZDNF5SK.js} +12 -12
  40. package/dist/{chunk-XGXGAK27.js → chunk-UG6O4F2A.js} +12 -2
  41. package/dist/{chunk-LBGTABIU.mjs → chunk-VCBBWDOV.mjs} +3 -1
  42. package/dist/{chunk-JE7AWY34.js → chunk-W5GVB54A.js} +32 -13
  43. package/dist/{chunk-VWEH6TGR.mjs → chunk-W6VKVYWZ.mjs} +66 -8
  44. package/dist/{chunk-ROMVD7LS.mjs → chunk-XP6C3MNM.mjs} +1 -1
  45. package/dist/{chunk-PO5GVU4Q.mjs → chunk-YZBQ6IR7.mjs} +3 -1
  46. package/dist/{chunk-6WM7E6C4.js → chunk-ZONC44YH.js} +60 -16
  47. package/dist/components/ActivityFeed.js +5 -5
  48. package/dist/components/ActivityFeed.mjs +4 -4
  49. package/dist/components/Button.js +2 -2
  50. package/dist/components/Button.mjs +1 -1
  51. package/dist/components/Card.d.mts +20 -0
  52. package/dist/components/Card.d.ts +20 -0
  53. package/dist/components/Card.js +2 -2
  54. package/dist/components/Card.mjs +1 -1
  55. package/dist/components/ChatWindow.js +3 -3
  56. package/dist/components/ChatWindow.mjs +2 -2
  57. package/dist/components/CommentThread.js +4 -4
  58. package/dist/components/CommentThread.mjs +3 -3
  59. package/dist/components/Content.d.mts +18 -0
  60. package/dist/components/Content.d.ts +18 -0
  61. package/dist/components/Content.js +2 -2
  62. package/dist/components/Content.mjs +1 -1
  63. package/dist/components/CropUpload.js +4 -4
  64. package/dist/components/CropUpload.mjs +3 -3
  65. package/dist/components/DataTableWithToolbar.d.mts +25 -3
  66. package/dist/components/DataTableWithToolbar.d.ts +25 -3
  67. package/dist/components/DataTableWithToolbar.js +4 -4
  68. package/dist/components/DataTableWithToolbar.mjs +3 -3
  69. package/dist/components/Drawer.d.mts +19 -1
  70. package/dist/components/Drawer.d.ts +19 -1
  71. package/dist/components/Drawer.js +2 -2
  72. package/dist/components/Drawer.mjs +1 -1
  73. package/dist/components/Dropdown.d.mts +1 -1
  74. package/dist/components/Dropdown.d.ts +1 -1
  75. package/dist/components/Dropdown.js +2 -2
  76. package/dist/components/Dropdown.mjs +1 -1
  77. package/dist/components/DropdownItem.js +3 -3
  78. package/dist/components/DropdownItem.mjs +2 -2
  79. package/dist/components/DropdownMenu.js +3 -3
  80. package/dist/components/DropdownMenu.mjs +1 -1
  81. package/dist/components/Form.d.mts +2 -2
  82. package/dist/components/Form.d.ts +2 -2
  83. package/dist/components/Form.js +2 -2
  84. package/dist/components/Form.mjs +1 -1
  85. package/dist/components/FormItem.js +3 -3
  86. package/dist/components/FormItem.mjs +2 -2
  87. package/dist/components/FormWizard.js +3 -3
  88. package/dist/components/FormWizard.mjs +2 -2
  89. package/dist/components/Header.d.mts +19 -0
  90. package/dist/components/Header.d.ts +19 -0
  91. package/dist/components/Header.js +2 -2
  92. package/dist/components/Header.mjs +1 -1
  93. package/dist/components/Icon.d.mts +19 -1
  94. package/dist/components/Icon.d.ts +19 -1
  95. package/dist/components/Icon.js +2 -2
  96. package/dist/components/Icon.mjs +1 -1
  97. package/dist/components/Image.d.mts +11 -1
  98. package/dist/components/Image.d.ts +11 -1
  99. package/dist/components/Image.js +4 -2
  100. package/dist/components/Image.mjs +3 -1
  101. package/dist/components/ImagePreview.d.mts +1 -1
  102. package/dist/components/ImagePreview.d.ts +1 -1
  103. package/dist/components/Menu.d.mts +2 -2
  104. package/dist/components/Menu.d.ts +2 -2
  105. package/dist/components/Menu.js +2 -2
  106. package/dist/components/Menu.mjs +1 -1
  107. package/dist/components/MenuItem.js +3 -3
  108. package/dist/components/MenuItem.mjs +1 -1
  109. package/dist/components/MenuItemGroup.js +3 -3
  110. package/dist/components/MenuItemGroup.mjs +1 -1
  111. package/dist/components/Modal.js +3 -3
  112. package/dist/components/Modal.mjs +2 -2
  113. package/dist/components/NotificationCenter.js +4 -4
  114. package/dist/components/NotificationCenter.mjs +3 -3
  115. package/dist/components/Popconfirm.d.mts +1 -1
  116. package/dist/components/Popconfirm.d.ts +1 -1
  117. package/dist/components/SubMenu.js +3 -3
  118. package/dist/components/SubMenu.mjs +1 -1
  119. package/dist/components/Table.d.mts +31 -1
  120. package/dist/components/Table.d.ts +31 -1
  121. package/dist/components/Table.js +2 -2
  122. package/dist/components/Table.mjs +1 -1
  123. package/dist/components/Tabs.d.mts +1 -1
  124. package/dist/components/Tabs.d.ts +1 -1
  125. package/dist/components/Tag.js +2 -2
  126. package/dist/components/Tag.mjs +1 -1
  127. package/dist/components/Timeline.js +2 -2
  128. package/dist/components/Timeline.mjs +1 -1
  129. package/dist/components/Tree.d.mts +1 -1
  130. package/dist/components/Tree.d.ts +1 -1
  131. package/dist/index.d.mts +1 -1
  132. package/dist/index.d.ts +1 -1
  133. package/dist/index.js +24 -24
  134. package/dist/index.mjs +23 -23
  135. package/package.json +2 -2
@@ -168,6 +168,18 @@ var tableProps = {
168
168
  renderCard: {
169
169
  type: Function
170
170
  },
171
+ cardSelectionPosition: {
172
+ type: String,
173
+ default: "controls-row"
174
+ },
175
+ cardPadding: {
176
+ type: [String, Boolean],
177
+ default: void 0
178
+ },
179
+ cardFieldGap: {
180
+ type: String,
181
+ default: "gap-3"
182
+ },
171
183
  // --- v0.6.0 props ---
172
184
  virtual: { type: Boolean, default: false },
173
185
  autoVirtual: { type: Boolean, default: true },
@@ -1430,44 +1442,48 @@ var Table = _vue.defineComponent.call(void 0, {
1430
1442
  }
1431
1443
  if (sortableColumns.length > 0) {
1432
1444
  cardChildren.push(
1433
- _vue.h.call(void 0, "div", {
1434
- class: "rounded-[var(--tiger-radius-md,0.5rem)] border border-[var(--tiger-border,#e5e7eb)] bg-[var(--tiger-surface,#ffffff)] px-3 py-2"
1435
- }, [
1436
- _vue.h.call(void 0, _chunkBGMAWKWVjs.Select, {
1437
- size: "sm",
1438
- modelValue: ctx.sortState.value.key && ctx.sortState.value.direction ? `${ctx.sortState.value.key}:${ctx.sortState.value.direction}` : "",
1439
- options: [
1440
- { label: tableLabels.value.clearSortText, value: "" },
1441
- ...sortableColumns.flatMap((column) => [
1442
- {
1443
- label: `${_tigercatcore.formatTableSortByText.call(void 0, tableLabels.value.sortByText, column.title)} \u2191`,
1444
- value: `${column.key}:asc`
1445
- },
1446
- {
1447
- label: `${_tigercatcore.formatTableSortByText.call(void 0, tableLabels.value.sortByText, column.title)} \u2193`,
1448
- value: `${column.key}:desc`
1445
+ _vue.h.call(void 0,
1446
+ "div",
1447
+ {
1448
+ class: "rounded-[var(--tiger-radius-md,0.5rem)] border border-[var(--tiger-border,#e5e7eb)] bg-[var(--tiger-surface,#ffffff)] px-3 py-2"
1449
+ },
1450
+ [
1451
+ _vue.h.call(void 0, _chunkBGMAWKWVjs.Select, {
1452
+ size: "sm",
1453
+ modelValue: ctx.sortState.value.key && ctx.sortState.value.direction ? `${ctx.sortState.value.key}:${ctx.sortState.value.direction}` : "",
1454
+ options: [
1455
+ { label: tableLabels.value.clearSortText, value: "" },
1456
+ ...sortableColumns.flatMap((column) => [
1457
+ {
1458
+ label: `${_tigercatcore.formatTableSortByText.call(void 0, tableLabels.value.sortByText, column.title)} \u2191`,
1459
+ value: `${column.key}:asc`
1460
+ },
1461
+ {
1462
+ label: `${_tigercatcore.formatTableSortByText.call(void 0, tableLabels.value.sortByText, column.title)} \u2193`,
1463
+ value: `${column.key}:desc`
1464
+ }
1465
+ ])
1466
+ ],
1467
+ clearable: false,
1468
+ "onUpdate:modelValue": (value) => {
1469
+ const nextValue = String(_nullishCoalesce(value, () => ( "")));
1470
+ if (!nextValue) {
1471
+ ctx.handleSetSort({ key: null, direction: null });
1472
+ return;
1449
1473
  }
1450
- ])
1451
- ],
1452
- clearable: false,
1453
- "onUpdate:modelValue": (value) => {
1454
- const nextValue = String(_nullishCoalesce(value, () => ( "")));
1455
- if (!nextValue) {
1456
- ctx.handleSetSort({ key: null, direction: null });
1457
- return;
1474
+ const separatorIndex = nextValue.lastIndexOf(":");
1475
+ const key = nextValue.slice(0, separatorIndex);
1476
+ const direction = nextValue.slice(separatorIndex + 1);
1477
+ ctx.handleSetSort({ key, direction });
1458
1478
  }
1459
- const separatorIndex = nextValue.lastIndexOf(":");
1460
- const key = nextValue.slice(0, separatorIndex);
1461
- const direction = nextValue.slice(separatorIndex + 1);
1462
- ctx.handleSetSort({ key, direction });
1463
- }
1464
- })
1465
- ])
1479
+ })
1480
+ ]
1481
+ )
1466
1482
  );
1467
1483
  }
1468
1484
  if (ctx.paginatedData.value.length === 0) {
1469
1485
  cardChildren.push(
1470
- _vue.h.call(void 0, "div", { class: _tigercatcore.tableResponsiveCardClasses }, [
1486
+ _vue.h.call(void 0, "div", { class: _tigercatcore.getTableResponsiveCardClasses.call(void 0, resolvedProps.cardPadding) }, [
1471
1487
  _vue.h.call(void 0, _chunkNOZ65AMOjs.Empty, { showImage: false, description: tableLabels.value.emptyText })
1472
1488
  ])
1473
1489
  );
@@ -1489,33 +1505,56 @@ var Table = _vue.defineComponent.call(void 0, {
1489
1505
  const rows = hasCustomCardLayout.value ? [
1490
1506
  _vue.h.call(void 0,
1491
1507
  "div",
1492
- { class: "grid grid-cols-12 gap-3 mt-2" },
1508
+ {
1509
+ class: _tigercatcore.classNames.call(void 0,
1510
+ "grid grid-cols-12 mt-2",
1511
+ _nullishCoalesce(resolvedProps.cardFieldGap, () => ( "gap-3"))
1512
+ )
1513
+ },
1493
1514
  bodyColumns.map((column) => {
1494
1515
  const layoutItem = cardLayoutMap.value.get(column.key);
1495
1516
  const gridInfo = _tigercatcore.getCardGridInfo.call(void 0, column, layoutItem);
1496
1517
  if (gridInfo.hideLabel) {
1497
1518
  return _vue.h.call(void 0,
1498
1519
  "div",
1499
- { key: column.key, class: gridInfo.className },
1520
+ {
1521
+ key: column.key,
1522
+ class: _tigercatcore.classNames.call(void 0,
1523
+ gridInfo.className,
1524
+ gridInfo.divider && "border-t border-[var(--tiger-border,#e5e7eb)] pt-3"
1525
+ )
1526
+ },
1500
1527
  [renderCardCellContent(column)]
1501
1528
  );
1502
1529
  }
1503
1530
  if (gridInfo.labelPosition === "top") {
1504
1531
  return _vue.h.call(void 0,
1505
1532
  "div",
1506
- { key: column.key, class: gridInfo.className },
1533
+ {
1534
+ key: column.key,
1535
+ class: _tigercatcore.classNames.call(void 0,
1536
+ gridInfo.className,
1537
+ gridInfo.divider && "border-t border-[var(--tiger-border,#e5e7eb)] pt-3"
1538
+ )
1539
+ },
1507
1540
  [
1508
1541
  _vue.h.call(void 0,
1509
1542
  "div",
1510
1543
  {
1511
- class: "text-xs font-medium uppercase tracking-wider text-[var(--tiger-text-muted,#6b7280)] mb-1"
1544
+ class: _tigercatcore.classNames.call(void 0,
1545
+ "text-xs font-medium uppercase tracking-wider text-[var(--tiger-text-muted,#6b7280)] mb-1",
1546
+ gridInfo.labelClassName
1547
+ )
1512
1548
  },
1513
1549
  column.title
1514
1550
  ),
1515
1551
  _vue.h.call(void 0,
1516
1552
  "div",
1517
1553
  {
1518
- class: "min-w-0 text-sm text-[var(--tiger-text,#111827)] break-words"
1554
+ class: _tigercatcore.classNames.call(void 0,
1555
+ "min-w-0 text-sm text-[var(--tiger-text,#111827)] break-words",
1556
+ gridInfo.valueClassName
1557
+ )
1519
1558
  },
1520
1559
  [renderCardCellContent(column)]
1521
1560
  )
@@ -1528,21 +1567,28 @@ var Table = _vue.defineComponent.call(void 0, {
1528
1567
  key: column.key,
1529
1568
  class: _tigercatcore.classNames.call(void 0,
1530
1569
  gridInfo.className,
1531
- "grid grid-cols-[auto_1fr] gap-2 items-baseline"
1570
+ "grid grid-cols-[auto_1fr] gap-2 items-baseline",
1571
+ gridInfo.divider && "border-t border-[var(--tiger-border,#e5e7eb)] pt-3"
1532
1572
  )
1533
1573
  },
1534
1574
  [
1535
1575
  _vue.h.call(void 0,
1536
1576
  "div",
1537
1577
  {
1538
- class: "text-xs font-medium uppercase tracking-wider text-[var(--tiger-text-muted,#6b7280)] shrink-0"
1578
+ class: _tigercatcore.classNames.call(void 0,
1579
+ "text-xs font-medium uppercase tracking-wider text-[var(--tiger-text-muted,#6b7280)] shrink-0",
1580
+ gridInfo.labelClassName
1581
+ )
1539
1582
  },
1540
1583
  column.title
1541
1584
  ),
1542
1585
  _vue.h.call(void 0,
1543
1586
  "div",
1544
1587
  {
1545
- class: "min-w-0 text-sm text-[var(--tiger-text,#111827)] break-words"
1588
+ class: _tigercatcore.classNames.call(void 0,
1589
+ "min-w-0 text-sm text-[var(--tiger-text,#111827)] break-words",
1590
+ gridInfo.valueClassName
1591
+ )
1546
1592
  },
1547
1593
  [renderCardCellContent(column)]
1548
1594
  )
@@ -1551,48 +1597,40 @@ var Table = _vue.defineComponent.call(void 0, {
1551
1597
  })
1552
1598
  )
1553
1599
  ] : bodyColumns.map(
1554
- (column) => _vue.h.call(void 0,
1555
- "div",
1556
- { key: column.key, class: _tigercatcore.tableResponsiveCardRowClasses },
1557
- [
1558
- _vue.h.call(void 0, "div", { class: _tigercatcore.tableResponsiveCardLabelClasses }, column.title),
1559
- _vue.h.call(void 0, "div", { class: _tigercatcore.tableResponsiveCardValueClasses }, [
1560
- renderCardCellContent(column)
1561
- ])
1562
- ]
1563
- )
1600
+ (column) => _vue.h.call(void 0, "div", { key: column.key, class: _tigercatcore.tableResponsiveCardRowClasses }, [
1601
+ _vue.h.call(void 0, "div", { class: _tigercatcore.tableResponsiveCardLabelClasses }, column.title),
1602
+ _vue.h.call(void 0, "div", { class: _tigercatcore.tableResponsiveCardValueClasses }, [
1603
+ renderCardCellContent(column)
1604
+ ])
1605
+ ])
1564
1606
  );
1565
1607
  const controls = [];
1566
1608
  if (resolvedProps.rowSelection && resolvedProps.rowSelection.showCheckbox !== false) {
1567
1609
  const checkboxProps = _optionalChain([resolvedProps, 'access', _88 => _88.rowSelection, 'access', _89 => _89.getCheckboxProps, 'optionalCall', _90 => _90(record)]) || {};
1568
1610
  controls.push(
1569
- _vue.h.call(void 0,
1570
- "span",
1571
- { onClick: (event) => event.stopPropagation() },
1572
- [
1573
- resolvedProps.rowSelection.type === "radio" ? _vue.h.call(void 0, _chunk3QV2D54Hjs.Radio, {
1574
- value: key,
1575
- checked: isSelected,
1576
- disabled: checkboxProps.disabled,
1577
- "aria-label": _tigercatcore.formatTableSelectRowAriaLabel.call(void 0,
1578
- tableLabels.value.selectRowAriaLabel,
1579
- index + 1,
1580
- _optionalChain([tableLocale, 'access', _91 => _91.value, 'optionalAccess', _92 => _92.locale])
1581
- ),
1582
- onChange: () => ctx.handleSelectRow(key, true)
1583
- }) : _vue.h.call(void 0, _chunk2YFXJUBTjs.Checkbox, {
1584
- size: "sm",
1585
- modelValue: isSelected,
1586
- disabled: checkboxProps.disabled,
1587
- "aria-label": _tigercatcore.formatTableSelectRowAriaLabel.call(void 0,
1588
- tableLabels.value.selectRowAriaLabel,
1589
- index + 1,
1590
- _optionalChain([tableLocale, 'access', _93 => _93.value, 'optionalAccess', _94 => _94.locale])
1591
- ),
1592
- onChange: (checked) => ctx.handleSelectRow(key, checked)
1593
- })
1594
- ]
1595
- )
1611
+ _vue.h.call(void 0, "span", { onClick: (event) => event.stopPropagation() }, [
1612
+ resolvedProps.rowSelection.type === "radio" ? _vue.h.call(void 0, _chunk3QV2D54Hjs.Radio, {
1613
+ value: key,
1614
+ checked: isSelected,
1615
+ disabled: checkboxProps.disabled,
1616
+ "aria-label": _tigercatcore.formatTableSelectRowAriaLabel.call(void 0,
1617
+ tableLabels.value.selectRowAriaLabel,
1618
+ index + 1,
1619
+ _optionalChain([tableLocale, 'access', _91 => _91.value, 'optionalAccess', _92 => _92.locale])
1620
+ ),
1621
+ onChange: () => ctx.handleSelectRow(key, true)
1622
+ }) : _vue.h.call(void 0, _chunk2YFXJUBTjs.Checkbox, {
1623
+ size: "sm",
1624
+ modelValue: isSelected,
1625
+ disabled: checkboxProps.disabled,
1626
+ "aria-label": _tigercatcore.formatTableSelectRowAriaLabel.call(void 0,
1627
+ tableLabels.value.selectRowAriaLabel,
1628
+ index + 1,
1629
+ _optionalChain([tableLocale, 'access', _93 => _93.value, 'optionalAccess', _94 => _94.locale])
1630
+ ),
1631
+ onChange: (checked) => ctx.handleSelectRow(key, checked)
1632
+ })
1633
+ ])
1596
1634
  );
1597
1635
  }
1598
1636
  if (resolvedProps.expandable && isRowExpandable) {
@@ -1612,6 +1650,21 @@ var Table = _vue.defineComponent.call(void 0, {
1612
1650
  )
1613
1651
  );
1614
1652
  }
1653
+ const titleWithInlineControls = titleNode && resolvedProps.cardSelectionPosition === "title-inline" && controls.length ? _vue.h.call(void 0,
1654
+ "div",
1655
+ {
1656
+ class: _tigercatcore.classNames.call(void 0,
1657
+ _tigercatcore.tableResponsiveCardTitleClasses,
1658
+ "flex items-center gap-3"
1659
+ )
1660
+ },
1661
+ [
1662
+ ...controls,
1663
+ _vue.h.call(void 0, "span", { class: "min-w-0 flex-1" }, [
1664
+ renderCardCellContent(titleColumn)
1665
+ ])
1666
+ ]
1667
+ ) : titleNode;
1615
1668
  const expandedContent = resolvedProps.expandable && isExpanded && isRowExpandable ? _nullishCoalesce(_optionalChain([slots, 'access', _95 => _95["expanded-row"], 'optionalCall', _96 => _96({ record, index })]), () => ( _optionalChain([resolvedProps, 'access', _97 => _97.expandable, 'access', _98 => _98.expandedRowRender, 'optionalCall', _99 => _99(record, index)]))) : null;
1616
1669
  const cardContext = {
1617
1670
  record,
@@ -1628,12 +1681,15 @@ var Table = _vue.defineComponent.call(void 0, {
1628
1681
  "div",
1629
1682
  {
1630
1683
  key,
1631
- class: _tigercatcore.classNames.call(void 0, _tigercatcore.tableResponsiveCardClasses, resolvedCardClassName),
1684
+ class: _tigercatcore.classNames.call(void 0,
1685
+ _tigercatcore.getTableResponsiveCardClasses.call(void 0, resolvedProps.cardPadding),
1686
+ resolvedCardClassName
1687
+ ),
1632
1688
  onClick: () => ctx.handleRowClick(record, index, key)
1633
1689
  },
1634
1690
  customCard !== void 0 && customCard !== null ? [customCard] : [
1635
- controls.length ? _vue.h.call(void 0, "div", { class: "mb-2 flex items-center gap-3" }, controls) : null,
1636
- titleNode,
1691
+ controls.length && (!titleNode || resolvedProps.cardSelectionPosition !== "title-inline") ? _vue.h.call(void 0, "div", { class: "mb-2 flex items-center gap-3" }, controls) : null,
1692
+ titleWithInlineControls,
1637
1693
  ...rows,
1638
1694
  expandedContent ? _vue.h.call(void 0,
1639
1695
  "div",
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  Table
3
- } from "./chunk-BIDBJNTL.mjs";
3
+ } from "./chunk-NF5O27AM.mjs";
4
4
  import {
5
5
  Select
6
6
  } from "./chunk-PYT5DTQQ.mjs";
@@ -18,7 +18,7 @@ import {
18
18
  } from "./chunk-2BNQGU7E.mjs";
19
19
  import {
20
20
  Button
21
- } from "./chunk-PO5GVU4Q.mjs";
21
+ } from "./chunk-YZBQ6IR7.mjs";
22
22
 
23
23
  // src/components/DataTableWithToolbar.ts
24
24
  import {
@@ -143,6 +143,14 @@ var DataTableWithToolbar = defineComponent({
143
143
  type: Array,
144
144
  default: void 0
145
145
  },
146
+ cardClassName: {
147
+ type: [String, Function],
148
+ default: void 0
149
+ },
150
+ renderCard: {
151
+ type: Function,
152
+ default: void 0
153
+ },
146
154
  toolbar: {
147
155
  type: Object,
148
156
  default: void 0
@@ -411,7 +419,21 @@ var DataTableWithToolbar = defineComponent({
411
419
  }
412
420
  );
413
421
  };
422
+ const toolbarRenderContext = () => ({
423
+ searchValue: searchValue.value ?? "",
424
+ setSearch: handleSearchChange,
425
+ submitSearch: handleSearchSubmit,
426
+ filters: resolvedFilters.value,
427
+ setFilter: (key, value) => setFilterValue(key, value),
428
+ selectedKeys: selectedKeys.value,
429
+ selectedCount: selectedCount.value,
430
+ hiddenColumnKeys: resolvedHiddenKeys.value,
431
+ setHiddenColumnKeys: handleHiddenColumnsChange
432
+ });
414
433
  const renderToolbar = () => {
434
+ if (slots.toolbar) {
435
+ return slots.toolbar(toolbarRenderContext());
436
+ }
415
437
  if (!hasSearch.value && !hasFilters.value && !hasFiltersExtra.value && !hasBulkActions.value && !hasColumnSettings.value)
416
438
  return null;
417
439
  const leftNodes = [];
@@ -420,7 +442,12 @@ var DataTableWithToolbar = defineComponent({
420
442
  leftNodes.push(
421
443
  h(
422
444
  "div",
423
- { class: "flex items-center gap-2 w-full sm:w-auto sm:min-w-[220px] sm:max-w-[320px]" },
445
+ {
446
+ class: classNames(
447
+ "flex items-center gap-2",
448
+ props.toolbar?.searchClassName ?? "w-full sm:w-auto sm:min-w-[220px] sm:max-w-[320px]"
449
+ )
450
+ },
424
451
  [
425
452
  h(
426
453
  Input,
@@ -489,14 +516,22 @@ var DataTableWithToolbar = defineComponent({
489
516
  leftNodes.push(
490
517
  h(
491
518
  "div",
492
- { key: filter.key, class: "w-full sm:w-auto" },
519
+ {
520
+ key: filter.key,
521
+ class: filter.itemClass ?? "w-full sm:w-auto",
522
+ style: filter.itemStyle
523
+ },
493
524
  filterNode == null ? [] : [filterNode]
494
525
  )
495
526
  );
496
527
  return;
497
528
  }
498
529
  leftNodes.push(
499
- h("div", { key: filter.key, class: "w-full sm:w-auto sm:min-w-[120px] sm:max-w-[180px]" }, [
530
+ h("div", {
531
+ key: filter.key,
532
+ class: filter.itemClass ?? "w-full sm:w-auto sm:min-w-[120px] sm:max-w-[180px]",
533
+ style: filter.itemStyle
534
+ }, [
500
535
  h(Select, {
501
536
  size: "sm",
502
537
  options: (filter.options ?? []).map((opt) => ({
@@ -565,8 +600,10 @@ var DataTableWithToolbar = defineComponent({
565
600
  {
566
601
  class: classNames(
567
602
  "tiger-data-table-toolbar flex flex-wrap items-center gap-3",
568
- props.bordered ? "bg-[var(--tiger-surface-muted,#f9fafb)] dark:bg-gray-800/10 px-4 py-3.5 border-b border-[var(--tiger-border,#e5e7eb)]" : "bg-[var(--tiger-surface-muted,#f9fafb)]/80 dark:bg-gray-800/30 px-4 py-3.5 border border-[var(--tiger-border,#e5e7eb)] rounded-[var(--tiger-radius-md,0.5rem)] shadow-sm"
603
+ props.bordered ? "bg-[var(--tiger-surface-muted,#f9fafb)] dark:bg-gray-800/10 px-4 py-3.5 border-b border-[var(--tiger-border,#e5e7eb)]" : "bg-[var(--tiger-surface-muted,#f9fafb)]/80 dark:bg-gray-800/30 px-4 py-3.5 border border-[var(--tiger-border,#e5e7eb)] rounded-[var(--tiger-radius-md,0.5rem)] shadow-sm",
604
+ props.toolbar?.className
569
605
  ),
606
+ style: props.toolbar?.style,
570
607
  role: "toolbar",
571
608
  "aria-label": tableLabels.value.toolbarAriaLabel
572
609
  },
@@ -613,10 +650,17 @@ var DataTableWithToolbar = defineComponent({
613
650
  responsiveMode: props.responsiveMode,
614
651
  cardBreakpoint: props.cardBreakpoint,
615
652
  cardLayout: props.cardLayout,
653
+ cardClassName: props.cardClassName,
654
+ renderCard: props.renderCard,
616
655
  class: props.bordered ? "border-none rounded-none shadow-none" : void 0,
617
656
  onSelectionChange: (keys) => emit("selection-change", keys),
618
657
  onPageChange: handleTablePageChange
619
658
  };
659
+ const {
660
+ toolbar: _toolbarSlot,
661
+ "filters-extra": _filtersExtraSlot,
662
+ ...tableSlots
663
+ } = slots;
620
664
  return h(
621
665
  "div",
622
666
  {
@@ -624,7 +668,7 @@ var DataTableWithToolbar = defineComponent({
624
668
  style: wrapperStyle.value,
625
669
  "data-tiger-data-table-with-toolbar": ""
626
670
  },
627
- [renderToolbar(), h(Table, tableProps)]
671
+ [renderToolbar(), h(Table, tableProps, tableSlots)]
628
672
  );
629
673
  };
630
674
  }
@@ -137,6 +137,14 @@ var Drawer = _vue.defineComponent.call(void 0, {
137
137
  type: String,
138
138
  default: void 0
139
139
  },
140
+ /**
141
+ * Padding override for the drawer body. `false` removes the built-in
142
+ * padding; a string supplies a custom padding utility class.
143
+ */
144
+ bodyPadding: {
145
+ type: [Boolean, String],
146
+ default: void 0
147
+ },
140
148
  /**
141
149
  * Whether to destroy content on close
142
150
  * @default false
@@ -343,7 +351,7 @@ var Drawer = _vue.defineComponent.call(void 0, {
343
351
  } : void 0;
344
352
  const mergedStyle = _tigercatcore.mergeStyleValues.call(void 0, attrs.style, props.panelStyle, props.style, widthStyle);
345
353
  const headerClasses = _tigercatcore.getDrawerHeaderClasses.call(void 0, );
346
- const bodyClasses = _tigercatcore.getDrawerBodyClasses.call(void 0, props.bodyClassName);
354
+ const bodyClasses = _tigercatcore.getDrawerBodyClasses.call(void 0, props.bodyClassName, props.bodyPadding);
347
355
  const footerClasses = _tigercatcore.getDrawerFooterClasses.call(void 0, );
348
356
  const closeButtonClasses = _tigercatcore.getDrawerCloseButtonClasses.call(void 0, );
349
357
  const titleClasses = _tigercatcore.getDrawerTitleClasses.call(void 0, );
@@ -12,7 +12,7 @@ var _chunkNOZ65AMOjs = require('./chunk-NOZ65AMO.js');
12
12
  var _chunk6FXYRDYHjs = require('./chunk-6FXYRDYH.js');
13
13
 
14
14
 
15
- var _chunk4VLNT2EDjs = require('./chunk-4VLNT2ED.js');
15
+ var _chunkHA5QZ76Mjs = require('./chunk-HA5QZ76M.js');
16
16
 
17
17
 
18
18
  var _chunkZ6HBM73Wjs = require('./chunk-Z6HBM73W.js');
@@ -353,7 +353,7 @@ var ChatWindow = _vue.defineComponent.call(void 0, {
353
353
  [
354
354
  _vue.h.call(void 0, "div", { class: "flex-1" }, [renderInput()]),
355
355
  _vue.h.call(void 0,
356
- _chunk4VLNT2EDjs.Button,
356
+ _chunkHA5QZ76Mjs.Button,
357
357
  {
358
358
  disabled: !canSend.value,
359
359
  onClick: handleSend,
@@ -337,7 +337,8 @@ var Dropdown = _vue.defineComponent.call(void 0, {
337
337
  onMouseleave: handleMouseLeave,
338
338
  "aria-haspopup": "menu",
339
339
  "aria-expanded": currentVisible.value,
340
- "aria-controls": currentVisible.value ? menuId : void 0
340
+ "aria-controls": currentVisible.value ? menuId : void 0,
341
+ "data-state": currentVisible.value ? "open" : "closed"
341
342
  },
342
343
  [triggerNode, chevronNode]
343
344
  ) : null;
@@ -134,7 +134,9 @@ var Timeline = _vue.defineComponent.call(void 0, {
134
134
  contentChildren.push(_vue.h.call(void 0, "div", { class: _tigercatcore.timelineLabelClasses }, item.label));
135
135
  }
136
136
  if (item.content) {
137
- contentChildren.push(_vue.h.call(void 0, "div", { class: _tigercatcore.timelineDescriptionClasses }, item.content));
137
+ contentChildren.push(
138
+ _vue.h.call(void 0, "div", { class: _tigercatcore.timelineDescriptionClasses }, item.content)
139
+ );
138
140
  }
139
141
  return _vue.h.call(void 0, "li", { key, class: itemClasses }, [
140
142
  _vue.h.call(void 0, "div", { class: tailClasses }),
@@ -32,6 +32,7 @@ import {
32
32
  isKeySelected,
33
33
  isKeyOpen,
34
34
  menuItemIconClasses,
35
+ menuCollapsedIconClasses,
35
36
  menuItemGroupTitleClasses,
36
37
  menuSearchFieldClasses,
37
38
  menuSearchEmptyClasses,
@@ -443,26 +444,36 @@ var MenuItem = defineComponent({
443
444
  return () => {
444
445
  const children = [];
445
446
  const effectiveCollapsed = props.collapsed ?? (menuContext ? menuContext.collapsed.value : false);
447
+ const iconClasses = effectiveCollapsed ? menuCollapsedIconClasses : menuItemIconClasses;
446
448
  if (props.icon) {
447
449
  if (typeof props.icon === "string") {
448
450
  children.push(
449
451
  h("span", {
450
- class: menuItemIconClasses,
452
+ class: iconClasses,
451
453
  innerHTML: props.icon
452
454
  })
453
455
  );
454
456
  } else {
455
- children.push(h("span", { class: menuItemIconClasses }, props.icon));
457
+ children.push(h("span", { class: iconClasses }, props.icon));
456
458
  }
457
459
  }
458
460
  if (!effectiveCollapsed && slots.default) {
459
461
  children.push(h("span", { class: "flex-1" }, slots.default()));
460
- } else if (effectiveCollapsed && !props.icon && slots.default) {
461
- const defaultSlot = slots.default();
462
- if (defaultSlot && defaultSlot.length > 0) {
463
- const text = String(defaultSlot[0].children || "");
464
- children.push(h("span", { class: "flex-1 text-center" }, text.charAt(0).toUpperCase()));
462
+ } else if (effectiveCollapsed && slots.default) {
463
+ if (!props.icon) {
464
+ const defaultSlot = slots.default();
465
+ if (defaultSlot && defaultSlot.length > 0) {
466
+ const text = String(defaultSlot[0].children || "");
467
+ children.push(
468
+ h(
469
+ "span",
470
+ { class: "flex-1 text-center", "aria-hidden": "true" },
471
+ text.charAt(0).toUpperCase()
472
+ )
473
+ );
474
+ }
465
475
  }
476
+ children.push(h("span", { class: "sr-only" }, slots.default()));
466
477
  }
467
478
  return h(
468
479
  "li",
@@ -872,16 +883,17 @@ var SubMenu = defineComponent({
872
883
  return () => {
873
884
  if (!menuContext) return null;
874
885
  const titleChildren = [];
886
+ const submenuIconClasses = effectiveCollapsed.value ? menuCollapsedIconClasses : menuItemIconClasses;
875
887
  if (props.icon) {
876
888
  if (typeof props.icon === "string") {
877
889
  titleChildren.push(
878
890
  h("span", {
879
- class: menuItemIconClasses,
891
+ class: submenuIconClasses,
880
892
  innerHTML: props.icon
881
893
  })
882
894
  );
883
895
  } else {
884
- titleChildren.push(h("span", { class: menuItemIconClasses }, props.icon));
896
+ titleChildren.push(h("span", { class: submenuIconClasses }, props.icon));
885
897
  }
886
898
  }
887
899
  if (!effectiveCollapsed.value) {
@@ -889,10 +901,17 @@ var SubMenu = defineComponent({
889
901
  if (menuContext.mode.value !== "horizontal" && !isPopup.value) {
890
902
  titleChildren.push(ExpandIcon(isExpanded.value));
891
903
  }
892
- } else if (!props.icon) {
893
- titleChildren.push(
894
- h("span", { class: "flex-1 text-center" }, props.title.charAt(0).toUpperCase())
895
- );
904
+ } else {
905
+ if (!props.icon) {
906
+ titleChildren.push(
907
+ h(
908
+ "span",
909
+ { class: "flex-1 text-center", "aria-hidden": "true" },
910
+ props.title.charAt(0).toUpperCase()
911
+ )
912
+ );
913
+ }
914
+ titleChildren.push(h("span", { class: "sr-only" }, props.title));
896
915
  }
897
916
  const titleNode = h(
898
917
  "button",
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-VG6E4NX6.mjs";
4
4
  import {
5
5
  Button
6
- } from "./chunk-PO5GVU4Q.mjs";
6
+ } from "./chunk-YZBQ6IR7.mjs";
7
7
  import {
8
8
  renderVueBodyTeleport,
9
9
  useVueBodyScrollLock,
@@ -1,6 +1,6 @@
1
1
  // src/components/Content.ts
2
2
  import { defineComponent, h, computed } from "vue";
3
- import { classNames, coerceClassValue, layoutContentClasses } from "@expcat/tigercat-core";
3
+ import { classNames, coerceClassValue, getLayoutContentClasses } from "@expcat/tigercat-core";
4
4
  var Content = defineComponent({
5
5
  name: "TigerContent",
6
6
  inheritAttrs: false,
@@ -12,6 +12,14 @@ var Content = defineComponent({
12
12
  type: String,
13
13
  default: void 0
14
14
  },
15
+ /**
16
+ * Built-in content padding.
17
+ * @default true
18
+ */
19
+ padding: {
20
+ type: [Boolean, String],
21
+ default: true
22
+ },
15
23
  /**
16
24
  * Custom styles
17
25
  */
@@ -23,7 +31,7 @@ var Content = defineComponent({
23
31
  setup(props, { slots, attrs }) {
24
32
  const contentClasses = computed(
25
33
  () => classNames(
26
- layoutContentClasses,
34
+ getLayoutContentClasses(props.padding),
27
35
  props.className,
28
36
  coerceClassValue(attrs.class)
29
37
  )