@expcat/tigercat-react 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 (109) hide show
  1. package/dist/{chunk-D4FXVNRW.mjs → chunk-3CJFNG54.mjs} +2 -2
  2. package/dist/{chunk-USWK2S3Y.mjs → chunk-5TE7KLE5.mjs} +3 -1
  3. package/dist/{chunk-VJJ76I7U.js → chunk-6HDMUF23.js} +2 -1
  4. package/dist/{chunk-CGIBGSNE.js → chunk-6TR7JB6C.js} +49 -8
  5. package/dist/{chunk-ZDGBH4NA.js → chunk-7DZWTHYM.js} +20 -8
  6. package/dist/{chunk-EWSYARW4.js → chunk-7GAMKBSL.js} +92 -58
  7. package/dist/{chunk-JLQBG5XU.js → chunk-AKUAI5FG.js} +1 -0
  8. package/dist/{chunk-FZIF5LZW.js → chunk-AW5M3EL4.js} +5 -5
  9. package/dist/{chunk-ZL44XLSB.mjs → chunk-BBWCJSVR.mjs} +1 -1
  10. package/dist/{chunk-CHS54PVQ.mjs → chunk-BWDQZSAB.mjs} +2 -1
  11. package/dist/{chunk-IHH2O7YK.js → chunk-C5BPHZXK.js} +19 -1
  12. package/dist/{chunk-UPPHGL64.js → chunk-CY5GRTAX.js} +4 -3
  13. package/dist/{chunk-AGHGG73I.mjs → chunk-DLJZMMD7.mjs} +145 -56
  14. package/dist/{chunk-H2YHUFMK.js → chunk-EEWHWEYO.js} +5 -5
  15. package/dist/{chunk-Y5E4XH6H.mjs → chunk-F6IXIH6B.mjs} +4 -3
  16. package/dist/{chunk-I5YYA7FB.mjs → chunk-FB34UWF7.mjs} +3 -3
  17. package/dist/{chunk-OFCKGWTS.js → chunk-FJDTVJTX.js} +7 -2
  18. package/dist/{chunk-UIO6O4MI.js → chunk-FQO7BKXW.js} +4 -2
  19. package/dist/{chunk-6KQYWZ6J.mjs → chunk-GN3TSQWW.mjs} +49 -8
  20. package/dist/{chunk-7JFP3MIW.js → chunk-GQFVVAEF.js} +3 -3
  21. package/dist/{chunk-TYZNV54N.mjs → chunk-H3DEILMB.mjs} +1 -0
  22. package/dist/{chunk-TUA5PDRX.mjs → chunk-HDCC4FBL.mjs} +19 -1
  23. package/dist/{chunk-RL6HARKE.mjs → chunk-I2AUOICV.mjs} +1 -1
  24. package/dist/{chunk-UVWLYRAC.js → chunk-I373B74W.js} +7 -7
  25. package/dist/{chunk-NF3OF7S5.mjs → chunk-IGAMV6ML.mjs} +1 -1
  26. package/dist/{chunk-P6E3DILH.mjs → chunk-IXV5YBCZ.mjs} +5 -3
  27. package/dist/{chunk-AE2QE2C6.js → chunk-JJUJRILK.js} +2 -2
  28. package/dist/{chunk-7E24KEVK.mjs → chunk-KGSDDVRC.mjs} +1 -1
  29. package/dist/{chunk-PKWHSCFK.mjs → chunk-L5AMVEQL.mjs} +2 -2
  30. package/dist/{chunk-BCQQYERG.js → chunk-N4PP3ENO.js} +2 -2
  31. package/dist/{chunk-56DP32W7.mjs → chunk-NVEIVIAW.mjs} +2 -2
  32. package/dist/{chunk-KVZE7UGH.mjs → chunk-OEZ3CSEM.mjs} +87 -53
  33. package/dist/{chunk-IFVIPIAA.js → chunk-OREZJC6O.js} +144 -55
  34. package/dist/{chunk-DSXII6ZF.js → chunk-OZD75CLT.js} +3 -3
  35. package/dist/{chunk-JCINYGGM.js → chunk-PUZDW7NR.js} +12 -12
  36. package/dist/{chunk-ABTJVM3X.js → chunk-RF2BA2N6.js} +2 -2
  37. package/dist/{chunk-TLU3ROLT.js → chunk-UMZ3PMUJ.js} +2 -1
  38. package/dist/{chunk-TGKNEMD4.mjs → chunk-WMPCN7OF.mjs} +3 -1
  39. package/dist/{chunk-HUMGEP7S.mjs → chunk-WX5VUIGT.mjs} +3 -2
  40. package/dist/{chunk-OXDX6CH2.mjs → chunk-Y5RQN5BO.mjs} +1 -1
  41. package/dist/{chunk-OQTPXPAP.mjs → chunk-YN5ZIWCE.mjs} +8 -3
  42. package/dist/{chunk-JVTAKNRO.mjs → chunk-ZA5EFHET.mjs} +1 -1
  43. package/dist/{chunk-VCULFIZ5.js → chunk-ZJI2VLIL.js} +2 -0
  44. package/dist/{chunk-XJXEAXWY.mjs → chunk-ZJXKVQ4G.mjs} +20 -8
  45. package/dist/{chunk-56ZV3VVY.js → chunk-ZLNBE4IS.js} +2 -0
  46. package/dist/{chunk-PR3PQUKM.js → chunk-ZZAR4IDS.js} +1 -1
  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.js +2 -2
  52. package/dist/components/Card.mjs +1 -1
  53. package/dist/components/ChatWindow.js +3 -3
  54. package/dist/components/ChatWindow.mjs +2 -2
  55. package/dist/components/CommentThread.js +4 -4
  56. package/dist/components/CommentThread.mjs +3 -3
  57. package/dist/components/Content.js +2 -2
  58. package/dist/components/Content.mjs +1 -1
  59. package/dist/components/CropUpload.js +4 -4
  60. package/dist/components/CropUpload.mjs +3 -3
  61. package/dist/components/DataTableWithToolbar.d.mts +10 -3
  62. package/dist/components/DataTableWithToolbar.d.ts +10 -3
  63. package/dist/components/DataTableWithToolbar.js +4 -4
  64. package/dist/components/DataTableWithToolbar.mjs +3 -3
  65. package/dist/components/Drawer.js +2 -2
  66. package/dist/components/Drawer.mjs +1 -1
  67. package/dist/components/Dropdown.js +2 -2
  68. package/dist/components/Dropdown.mjs +1 -1
  69. package/dist/components/DropdownItem.js +3 -3
  70. package/dist/components/DropdownItem.mjs +2 -2
  71. package/dist/components/DropdownMenu.js +2 -2
  72. package/dist/components/DropdownMenu.mjs +1 -1
  73. package/dist/components/Form.js +2 -2
  74. package/dist/components/Form.mjs +1 -1
  75. package/dist/components/FormItem.js +3 -3
  76. package/dist/components/FormItem.mjs +2 -2
  77. package/dist/components/FormWizard.js +3 -3
  78. package/dist/components/FormWizard.mjs +2 -2
  79. package/dist/components/Header.js +2 -2
  80. package/dist/components/Header.mjs +1 -1
  81. package/dist/components/Icon.js +2 -2
  82. package/dist/components/Icon.mjs +1 -1
  83. package/dist/components/Image.js +3 -2
  84. package/dist/components/Image.mjs +2 -1
  85. package/dist/components/Menu.js +2 -2
  86. package/dist/components/Menu.mjs +1 -1
  87. package/dist/components/MenuItem.js +2 -2
  88. package/dist/components/MenuItem.mjs +1 -1
  89. package/dist/components/MenuItemGroup.js +2 -2
  90. package/dist/components/MenuItemGroup.mjs +1 -1
  91. package/dist/components/Modal.js +3 -3
  92. package/dist/components/Modal.mjs +2 -2
  93. package/dist/components/NotificationCenter.js +4 -4
  94. package/dist/components/NotificationCenter.mjs +3 -3
  95. package/dist/components/SubMenu.js +2 -2
  96. package/dist/components/SubMenu.mjs +1 -1
  97. package/dist/components/Table.d.mts +1 -1
  98. package/dist/components/Table.d.ts +1 -1
  99. package/dist/components/Table.js +2 -2
  100. package/dist/components/Table.mjs +1 -1
  101. package/dist/components/Tag.js +2 -2
  102. package/dist/components/Tag.mjs +1 -1
  103. package/dist/components/Timeline.js +2 -2
  104. package/dist/components/Timeline.mjs +1 -1
  105. package/dist/index.d.mts +1 -1
  106. package/dist/index.d.ts +1 -1
  107. package/dist/index.js +24 -24
  108. package/dist/index.mjs +23 -23
  109. package/package.json +2 -2
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  Modal
3
- } from "./chunk-RL6HARKE.mjs";
3
+ } from "./chunk-I2AUOICV.mjs";
4
4
  import {
5
5
  ImageCropper
6
6
  } from "./chunk-SY23FAXK.mjs";
7
7
  import {
8
8
  Button
9
- } from "./chunk-USWK2S3Y.mjs";
9
+ } from "./chunk-5TE7KLE5.mjs";
10
10
 
11
11
  // src/components/CropUpload.tsx
12
12
  import { useState, useRef, useCallback, useMemo } from "react";
@@ -11,7 +11,8 @@ import {
11
11
  buttonDisabledClasses,
12
12
  buttonDangerClasses,
13
13
  getButtonVariantClasses,
14
- getSpinnerSVG
14
+ getSpinnerSVG,
15
+ warnUnsupportedColorProp
15
16
  } from "@expcat/tigercat-core";
16
17
  import { jsx, jsxs } from "react/jsx-runtime";
17
18
  var createDefaultSpinner = () => {
@@ -49,6 +50,7 @@ var Button = ({
49
50
  "aria-disabled": ariaDisabledProp,
50
51
  ...rest
51
52
  }) => {
53
+ warnUnsupportedColorProp("Button", rest);
52
54
  const group = useButtonGroupContext();
53
55
  const resolvedSize = size ?? group?.size ?? "md";
54
56
  const isDisabled = disabled || loading;
@@ -6,12 +6,13 @@ var _tigercatcore = require('@expcat/tigercat-core');
6
6
  var _jsxruntime = require('react/jsx-runtime');
7
7
  var Header = ({
8
8
  className,
9
+ variant = "default",
9
10
  height = "64px",
10
11
  style,
11
12
  children,
12
13
  ...props
13
14
  }) => {
14
- const headerClasses = _tigercatcore.classNames.call(void 0, _tigercatcore.layoutHeaderClasses, className);
15
+ const headerClasses = _tigercatcore.classNames.call(void 0, _tigercatcore.getLayoutHeaderClasses.call(void 0, variant), className);
15
16
  const headerStyle = { ...style, height };
16
17
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "header", { className: headerClasses, style: headerStyle, ...props, children });
17
18
  };
@@ -5,6 +5,12 @@ var _chunkMB6U72CIjs = require('./chunk-MB6U72CI.js');
5
5
 
6
6
  var _chunk4U5HSR2Hjs = require('./chunk-4U5HSR2H.js');
7
7
 
8
+
9
+ var _chunkJIFSUUGAjs = require('./chunk-JIFSUUGA.js');
10
+
11
+
12
+ var _chunkSTTQ5LXXjs = require('./chunk-STTQ5LXX.js');
13
+
8
14
  // src/components/Image.tsx
9
15
  var _react = require('react');
10
16
 
@@ -37,6 +43,7 @@ var Image = ({
37
43
  fit = "cover",
38
44
  fallbackSrc,
39
45
  preview = true,
46
+ previewTrigger = "click",
40
47
  lazy = false,
41
48
  className,
42
49
  errorRender,
@@ -54,6 +61,27 @@ var Image = ({
54
61
  const containerRef = _react.useRef.call(void 0, null);
55
62
  const group = _react.useContext.call(void 0, _chunkMB6U72CIjs.ImageGroupContext);
56
63
  const registeredIndexRef = _react.useRef.call(void 0, -1);
64
+ const hoverPreviewEnabled = preview && previewTrigger === "hover" && !group;
65
+ const clickPreviewEnabled = preview && previewTrigger !== "hover";
66
+ const {
67
+ currentVisible: hoverVisible,
68
+ triggerRef: hoverTriggerRef,
69
+ floatingRef: hoverFloatingRef,
70
+ floatingStyles: hoverFloatingStyles,
71
+ triggerHandlers: hoverTriggerHandlers
72
+ } = _chunkJIFSUUGAjs.usePopup.call(void 0, {
73
+ trigger: "hover",
74
+ placement: "right",
75
+ offset: 12,
76
+ disabled: !hoverPreviewEnabled
77
+ });
78
+ const setRootRef = _react.useCallback.call(void 0,
79
+ (el) => {
80
+ containerRef.current = el;
81
+ hoverTriggerRef.current = el;
82
+ },
83
+ [hoverTriggerRef]
84
+ );
57
85
  _react.useEffect.call(void 0, () => {
58
86
  if (group && src) {
59
87
  registeredIndexRef.current = group.register(src);
@@ -99,7 +127,7 @@ var Image = ({
99
127
  const handleClick = _react.useCallback.call(void 0,
100
128
  (e) => {
101
129
  _optionalChain([onClick, 'optionalCall', _3 => _3(e)]);
102
- if (!preview) return;
130
+ if (!clickPreviewEnabled) return;
103
131
  if (group) {
104
132
  group.openPreview(registeredIndexRef.current >= 0 ? registeredIndexRef.current : 0);
105
133
  } else {
@@ -107,17 +135,17 @@ var Image = ({
107
135
  _optionalChain([onPreviewOpenChange, 'optionalCall', _4 => _4(true)]);
108
136
  }
109
137
  },
110
- [preview, group, onClick, onPreviewOpenChange]
138
+ [clickPreviewEnabled, group, onClick, onPreviewOpenChange]
111
139
  );
112
140
  const handleKeyDown = _react.useCallback.call(void 0,
113
141
  (e) => {
114
142
  _optionalChain([onKeyDown, 'optionalCall', _5 => _5(e)]);
115
- if (preview && (e.key === "Enter" || e.key === " ")) {
143
+ if (clickPreviewEnabled && (e.key === "Enter" || e.key === " ")) {
116
144
  e.preventDefault();
117
145
  handleClick(e);
118
146
  }
119
147
  },
120
- [preview, handleClick, onKeyDown]
148
+ [clickPreviewEnabled, handleClick, onKeyDown]
121
149
  );
122
150
  const containerClasses = _react.useMemo.call(void 0,
123
151
  () => _tigercatcore.classNames.call(void 0, _tigercatcore.imageBaseClasses, preview && _tigercatcore.imagePreviewCursorClass, className),
@@ -154,14 +182,15 @@ var Image = ({
154
182
  "div",
155
183
  {
156
184
  ...props,
157
- ref: containerRef,
185
+ ref: setRootRef,
158
186
  className: containerClasses,
159
187
  style: containerStyle,
160
- role: preview ? "button" : void 0,
161
- tabIndex: preview ? 0 : void 0,
162
- "aria-label": preview ? `Preview ${alt || "image"}` : void 0,
188
+ role: clickPreviewEnabled ? "button" : void 0,
189
+ tabIndex: clickPreviewEnabled ? 0 : void 0,
190
+ "aria-label": clickPreviewEnabled ? `Preview ${alt || "image"}` : void 0,
163
191
  onClick: handleClick,
164
192
  onKeyDown: handleKeyDown,
193
+ ...hoverPreviewEnabled ? hoverTriggerHandlers : {},
165
194
  children: content
166
195
  }
167
196
  ),
@@ -176,6 +205,18 @@ var Image = ({
176
205
  _optionalChain([onPreviewOpenChange, 'optionalCall', _6 => _6(val)]);
177
206
  }
178
207
  }
208
+ ),
209
+ hoverPreviewEnabled && hoverVisible && src && _chunkSTTQ5LXXjs.renderBodyPortal.call(void 0,
210
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
211
+ "div",
212
+ {
213
+ ref: hoverFloatingRef,
214
+ style: hoverFloatingStyles,
215
+ "aria-hidden": true,
216
+ className: "rounded-[var(--tiger-radius-md,0.5rem)] border border-[var(--tiger-border,#e5e7eb)] bg-[var(--tiger-surface,#ffffff)] p-1 shadow-lg",
217
+ children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "img", { src, alt: "", className: "block max-w-[16rem] max-h-[16rem] object-contain" })
218
+ }
219
+ )
179
220
  )
180
221
  ] });
181
222
  };
@@ -43,6 +43,7 @@ var _react = require('react'); var _react2 = _interopRequireDefault(_react);
43
43
 
44
44
 
45
45
 
46
+
46
47
 
47
48
 
48
49
  var _tigercatcore = require('@expcat/tigercat-core');
@@ -259,18 +260,22 @@ var MenuItem = ({
259
260
  );
260
261
  const renderIcon = () => {
261
262
  if (!icon) return null;
263
+ const iconClasses = effectiveCollapsed ? _tigercatcore.menuCollapsedIconClasses : _tigercatcore.menuItemIconClasses;
262
264
  if (typeof icon === "string") {
263
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _tigercatcore.menuItemIconClasses, dangerouslySetInnerHTML: { __html: icon } });
265
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: iconClasses, dangerouslySetInnerHTML: { __html: icon } });
264
266
  }
265
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _tigercatcore.menuItemIconClasses, children: icon });
267
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: iconClasses, children: icon });
266
268
  };
267
269
  const renderLabel = () => {
268
270
  if (!effectiveCollapsed) return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "flex-1", children });
269
271
  if (!icon) {
270
272
  const text = String(children || "");
271
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "flex-1 text-center", children: text.charAt(0).toUpperCase() });
273
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
274
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "flex-1 text-center", "aria-hidden": "true", children: text.charAt(0).toUpperCase() }),
275
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "sr-only", children })
276
+ ] });
272
277
  }
273
- return null;
278
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "sr-only", children });
274
279
  };
275
280
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "li", { role: "none", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
276
281
  "button",
@@ -529,10 +534,11 @@ var SubMenu = ({
529
534
  if (!menuContext) return null;
530
535
  const renderIcon = () => {
531
536
  if (!icon) return null;
537
+ const iconClasses = effectiveCollapsed ? _tigercatcore.menuCollapsedIconClasses : _tigercatcore.menuItemIconClasses;
532
538
  if (typeof icon === "string") {
533
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _tigercatcore.menuItemIconClasses, dangerouslySetInnerHTML: { __html: icon } });
539
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: iconClasses, dangerouslySetInnerHTML: { __html: icon } });
534
540
  }
535
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _tigercatcore.menuItemIconClasses, children: icon });
541
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: iconClasses, children: icon });
536
542
  };
537
543
  const renderTitle = () => {
538
544
  if (!effectiveCollapsed) {
@@ -542,9 +548,15 @@ var SubMenu = ({
542
548
  menuContext.mode !== "horizontal" && !isPopup && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ExpandIcon, { expanded: isExpanded })
543
549
  ] });
544
550
  } else if (!icon) {
545
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "flex-1 text-center", children: title.charAt(0).toUpperCase() });
551
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
552
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "flex-1 text-center", "aria-hidden": "true", children: title.charAt(0).toUpperCase() }),
553
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "sr-only", children: title })
554
+ ] });
546
555
  } else {
547
- return renderIcon();
556
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
557
+ renderIcon(),
558
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "sr-only", children: title })
559
+ ] });
548
560
  }
549
561
  };
550
562
  const renderContent = () => {
@@ -1,6 +1,6 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
2
 
3
- var _chunkIFVIPIAAjs = require('./chunk-IFVIPIAA.js');
3
+ var _chunkOREZJC6Ojs = require('./chunk-OREZJC6O.js');
4
4
 
5
5
 
6
6
  var _chunk6Z4LLPZAjs = require('./chunk-6Z4LLPZA.js');
@@ -18,7 +18,7 @@ var _chunkZYJTHGQWjs = require('./chunk-ZYJTHGQW.js');
18
18
  var _chunkF7H4ALKNjs = require('./chunk-F7H4ALKN.js');
19
19
 
20
20
 
21
- var _chunk56ZV3VVYjs = require('./chunk-56ZV3VVY.js');
21
+ var _chunkZLNBE4ISjs = require('./chunk-ZLNBE4IS.js');
22
22
 
23
23
  // src/components/DataTableWithToolbar.tsx
24
24
  var _react = require('react');
@@ -225,7 +225,7 @@ var DataTableWithToolbar = ({
225
225
  );
226
226
  }) }),
227
227
  children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
228
- _chunk56ZV3VVYjs.Button,
228
+ _chunkZLNBE4ISjs.Button,
229
229
  {
230
230
  size: "sm",
231
231
  variant: "outline",
@@ -266,6 +266,20 @@ var DataTableWithToolbar = ({
266
266
  );
267
267
  };
268
268
  const renderToolbar = () => {
269
+ if (_optionalChain([toolbar, 'optionalAccess', _45 => _45.render]) !== void 0) {
270
+ const toolbarContext = {
271
+ searchValue: _nullishCoalesce(searchValue, () => ( "")),
272
+ setSearch: handleSearchChange,
273
+ submitSearch: handleSearchSubmit,
274
+ filters: resolvedFilters,
275
+ setFilter: (key, value) => setFilterValue(key, value),
276
+ selectedKeys,
277
+ selectedCount,
278
+ hiddenColumnKeys: resolvedHiddenKeys,
279
+ setHiddenColumnKeys: handleHiddenColumnsChange
280
+ };
281
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _jsxruntime.Fragment, { children: typeof toolbar.render === "function" ? toolbar.render(toolbarContext) : toolbar.render });
282
+ }
269
283
  if (!hasSearch && !hasFilters && !hasFiltersExtra && !hasBulkActions && !hasColumnSettings) {
270
284
  return null;
271
285
  }
@@ -273,81 +287,101 @@ var DataTableWithToolbar = ({
273
287
  filters: resolvedFilters,
274
288
  setFilter: (key, value) => setFilterValue(key, value)
275
289
  };
276
- const filtersExtra = typeof _optionalChain([toolbar, 'optionalAccess', _45 => _45.filtersExtra]) === "function" ? toolbar.filtersExtra(filtersExtraContext) : _optionalChain([toolbar, 'optionalAccess', _46 => _46.filtersExtra]);
290
+ const filtersExtra = typeof _optionalChain([toolbar, 'optionalAccess', _46 => _46.filtersExtra]) === "function" ? toolbar.filtersExtra(filtersExtraContext) : _optionalChain([toolbar, 'optionalAccess', _47 => _47.filtersExtra]);
277
291
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
278
292
  "div",
279
293
  {
280
294
  className: _tigercatcore.classNames.call(void 0,
281
295
  "tiger-data-table-toolbar flex flex-wrap items-center gap-3",
282
- 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"
296
+ 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",
297
+ _optionalChain([toolbar, 'optionalAccess', _48 => _48.className])
283
298
  ),
299
+ style: _optionalChain([toolbar, 'optionalAccess', _49 => _49.style]),
284
300
  role: "toolbar",
285
301
  "aria-label": tableLabels.toolbarAriaLabel,
286
302
  children: [
287
303
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-3 flex-wrap flex-1 min-w-0", children: [
288
- hasSearch ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-2 w-full sm:w-auto sm:min-w-[220px] sm:max-w-[320px]", children: [
289
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
290
- _chunkZYJTHGQWjs.Input,
291
- {
292
- type: "search",
293
- size: "sm",
294
- value: searchValue,
295
- placeholder: _nullishCoalesce(_optionalChain([toolbar, 'optionalAccess', _47 => _47.searchPlaceholder]), () => ( tableLabels.searchPlaceholder)),
296
- prefix: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
297
- "svg",
304
+ hasSearch ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
305
+ "div",
306
+ {
307
+ className: _tigercatcore.classNames.call(void 0,
308
+ "flex items-center gap-2",
309
+ _nullishCoalesce(_optionalChain([toolbar, 'optionalAccess', _50 => _50.searchClassName]), () => ( "w-full sm:w-auto sm:min-w-[220px] sm:max-w-[320px]"))
310
+ ),
311
+ children: [
312
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
313
+ _chunkZYJTHGQWjs.Input,
298
314
  {
299
- className: "w-3.5 h-3.5 text-[var(--tiger-text-secondary,#6b7280)] shrink-0",
300
- fill: "none",
301
- stroke: "currentColor",
302
- strokeWidth: "2",
303
- viewBox: "0 0 24 24",
304
- "aria-hidden": "true",
305
- children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
306
- "path",
315
+ type: "search",
316
+ size: "sm",
317
+ value: searchValue,
318
+ placeholder: _nullishCoalesce(_optionalChain([toolbar, 'optionalAccess', _51 => _51.searchPlaceholder]), () => ( tableLabels.searchPlaceholder)),
319
+ prefix: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
320
+ "svg",
307
321
  {
308
- strokeLinecap: "round",
309
- strokeLinejoin: "round",
310
- d: "M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"
322
+ className: "w-3.5 h-3.5 text-[var(--tiger-text-secondary,#6b7280)] shrink-0",
323
+ fill: "none",
324
+ stroke: "currentColor",
325
+ strokeWidth: "2",
326
+ viewBox: "0 0 24 24",
327
+ "aria-hidden": "true",
328
+ children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
329
+ "path",
330
+ {
331
+ strokeLinecap: "round",
332
+ strokeLinejoin: "round",
333
+ d: "M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"
334
+ }
335
+ )
336
+ }
337
+ ),
338
+ onChange: (event) => handleSearchChange(String(event.currentTarget.value)),
339
+ onKeyDown: (event) => {
340
+ if (event.key === "Enter") {
341
+ handleSearchSubmit();
311
342
  }
312
- )
343
+ }
313
344
  }
314
345
  ),
315
- onChange: (event) => handleSearchChange(String(event.currentTarget.value)),
316
- onKeyDown: (event) => {
317
- if (event.key === "Enter") {
318
- handleSearchSubmit();
346
+ _nullishCoalesce(_optionalChain([toolbar, 'optionalAccess', _52 => _52.showSearchButton]), () => ( true)) ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
347
+ _chunkZLNBE4ISjs.Button,
348
+ {
349
+ size: "sm",
350
+ variant: "primary",
351
+ className: "whitespace-nowrap shrink-0 rounded-[var(--tiger-radius-md,0.5rem)] px-3",
352
+ onClick: handleSearchSubmit,
353
+ disabled: !onSearch && !_optionalChain([toolbar, 'optionalAccess', _53 => _53.onSearch]),
354
+ children: _nullishCoalesce(_optionalChain([toolbar, 'optionalAccess', _54 => _54.searchButtonText]), () => ( tableLabels.searchButtonText))
319
355
  }
320
- }
321
- }
322
- ),
323
- _nullishCoalesce(_optionalChain([toolbar, 'optionalAccess', _48 => _48.showSearchButton]), () => ( true)) ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
324
- _chunk56ZV3VVYjs.Button,
325
- {
326
- size: "sm",
327
- variant: "primary",
328
- className: "whitespace-nowrap shrink-0 rounded-[var(--tiger-radius-md,0.5rem)] px-3",
329
- onClick: handleSearchSubmit,
330
- disabled: !onSearch && !_optionalChain([toolbar, 'optionalAccess', _49 => _49.onSearch]),
331
- children: _nullishCoalesce(_optionalChain([toolbar, 'optionalAccess', _50 => _50.searchButtonText]), () => ( tableLabels.searchButtonText))
332
- }
333
- ) : null
334
- ] }) : null,
335
- hasFilters ? _optionalChain([toolbar, 'optionalAccess', _51 => _51.filters, 'optionalAccess', _52 => _52.map, 'call', _53 => _53((filter) => {
356
+ ) : null
357
+ ]
358
+ }
359
+ ) : null,
360
+ hasFilters ? _optionalChain([toolbar, 'optionalAccess', _55 => _55.filters, 'optionalAccess', _56 => _56.map, 'call', _57 => _57((filter) => {
336
361
  const currentValue = resolvedFilters[filter.key];
337
362
  const clearable = filter.clearable !== false;
338
363
  if (filter.render) {
339
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full sm:w-auto", children: filter.render({
340
- filter,
341
- value: currentValue,
342
- filters: resolvedFilters,
343
- setValue: (value) => setFilterValue(filter.key, value, filter),
344
- setFilter: (key, value) => setFilterValue(key, value)
345
- }) }, filter.key);
364
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
365
+ "div",
366
+ {
367
+ className: _nullishCoalesce(filter.itemClass, () => ( "w-full sm:w-auto")),
368
+ style: filter.itemStyle,
369
+ children: filter.render({
370
+ filter,
371
+ value: currentValue,
372
+ filters: resolvedFilters,
373
+ setValue: (value) => setFilterValue(filter.key, value, filter),
374
+ setFilter: (key, value) => setFilterValue(key, value)
375
+ })
376
+ },
377
+ filter.key
378
+ );
346
379
  }
347
380
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
348
381
  "div",
349
382
  {
350
- className: "w-full sm:w-auto sm:min-w-[120px] sm:max-w-[180px]",
383
+ className: _nullishCoalesce(filter.itemClass, () => ( "w-full sm:w-auto sm:min-w-[120px] sm:max-w-[180px]")),
384
+ style: filter.itemStyle,
351
385
  children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
352
386
  _chunk6Z4LLPZAjs.Select,
353
387
  {
@@ -381,8 +415,8 @@ var DataTableWithToolbar = ({
381
415
  tableLabels.selectedItemsText
382
416
  ] })
383
417
  ] }) : null,
384
- _optionalChain([toolbar, 'optionalAccess', _54 => _54.bulkActions, 'optionalAccess', _55 => _55.map, 'call', _56 => _56((action) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
385
- _chunk56ZV3VVYjs.Button,
418
+ _optionalChain([toolbar, 'optionalAccess', _58 => _58.bulkActions, 'optionalAccess', _59 => _59.map, 'call', _60 => _60((action) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
419
+ _chunkZLNBE4ISjs.Button,
386
420
  {
387
421
  size: "sm",
388
422
  variant: _nullishCoalesce(action.variant, () => ( "outline")),
@@ -401,7 +435,7 @@ var DataTableWithToolbar = ({
401
435
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: wrapperClasses, "data-tiger-data-table-with-toolbar": true, children: [
402
436
  renderToolbar(),
403
437
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
404
- _chunkIFVIPIAAjs.Table,
438
+ _chunkOREZJC6Ojs.Table,
405
439
  {
406
440
  ...remainingTableProps,
407
441
  locale,
@@ -227,6 +227,7 @@ var Dropdown = ({
227
227
  "aria-haspopup": "menu",
228
228
  "aria-expanded": visible,
229
229
  "aria-controls": visible ? menuId : void 0,
230
+ "data-state": visible ? "open" : "closed",
230
231
  children: [
231
232
  triggerElement,
232
233
  chevronNode
@@ -7,7 +7,7 @@ var _chunkRFHPG4KNjs = require('./chunk-RFHPG4KN.js');
7
7
  var _chunkWG3YS2QVjs = require('./chunk-WG3YS2QV.js');
8
8
 
9
9
 
10
- var _chunk56ZV3VVYjs = require('./chunk-56ZV3VVY.js');
10
+ var _chunkZLNBE4ISjs = require('./chunk-ZLNBE4IS.js');
11
11
 
12
12
 
13
13
  var _chunk3MRP3XYIjs = require('./chunk-3MRP3XYI.js');
@@ -16,7 +16,7 @@ var _chunk3MRP3XYIjs = require('./chunk-3MRP3XYI.js');
16
16
  var _chunkUF3DXKCIjs = require('./chunk-UF3DXKCI.js');
17
17
 
18
18
 
19
- var _chunkUIO6O4MIjs = require('./chunk-UIO6O4MI.js');
19
+ var _chunkFQO7BKXWjs = require('./chunk-FQO7BKXW.js');
20
20
 
21
21
  // src/components/NotificationCenter.tsx
22
22
  var _react = require('react');
@@ -219,7 +219,7 @@ var NotificationCenter = ({
219
219
  ), children: item.description }) : null
220
220
  ] }),
221
221
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
222
- _chunk56ZV3VVYjs.Button,
222
+ _chunkZLNBE4ISjs.Button,
223
223
  {
224
224
  size: "sm",
225
225
  variant: "ghost",
@@ -272,7 +272,7 @@ var NotificationCenter = ({
272
272
  ...props,
273
273
  "data-tiger-notification-center": true,
274
274
  children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
275
- _chunkUIO6O4MIjs.Card,
275
+ _chunkFQO7BKXWjs.Card,
276
276
  {
277
277
  variant: "bordered",
278
278
  className: "w-full rounded-2xl border border-gray-100/80 dark:border-gray-800/80 bg-white/95 dark:bg-gray-950/90 backdrop-blur-md shadow-[0_8px_30px_rgb(0,0,0,0.04)] dark:shadow-[0_8px_30px_rgb(0,0,0,0.2)] transition-all duration-300 overflow-hidden",
@@ -283,7 +283,7 @@ var NotificationCenter = ({
283
283
  totalUnread > 0 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "inline-flex items-center justify-center min-w-[20px] h-5 px-1.5 text-[11px] font-bold rounded-full bg-gradient-to-r from-blue-500 to-indigo-600 text-white shadow-sm shadow-blue-500/20 animate-pulse", children: totalUnread }) : null
284
284
  ] }),
285
285
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
286
- _chunk56ZV3VVYjs.Button,
286
+ _chunkZLNBE4ISjs.Button,
287
287
  {
288
288
  size: "sm",
289
289
  variant: "ghost",
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  DropdownContext
3
- } from "./chunk-TYZNV54N.mjs";
3
+ } from "./chunk-H3DEILMB.mjs";
4
4
 
5
5
  // src/components/DropdownItem.tsx
6
6
  import { useContext } from "react";
@@ -69,6 +69,7 @@ var Drawer = ({
69
69
  zIndex = 1e3,
70
70
  className,
71
71
  bodyClassName,
72
+ bodyPadding,
72
73
  destroyOnClose = false,
73
74
  destroyOnCloseAfterLeave = false,
74
75
  fullscreenOnMobile = true,
@@ -223,7 +224,7 @@ var Drawer = ({
223
224
  panelClassName
224
225
  );
225
226
  const headerClasses = getDrawerHeaderClasses();
226
- const bodyClasses = getDrawerBodyClasses(bodyClassName);
227
+ const bodyClasses = getDrawerBodyClasses(bodyClassName, bodyPadding);
227
228
  const footerClasses = getDrawerFooterClasses();
228
229
  const closeButtonClasses = getDrawerCloseButtonClasses();
229
230
  const titleClasses = getDrawerTitleClasses();
@@ -12,9 +12,11 @@ var _react = require('react'); var _react2 = _interopRequireDefault(_react);
12
12
 
13
13
 
14
14
 
15
+
15
16
  var _tigercatcore = require('@expcat/tigercat-core');
16
17
  var _jsxruntime = require('react/jsx-runtime');
17
18
  var Icon = ({
19
+ name,
18
20
  size = "md",
19
21
  color = "currentColor",
20
22
  className,
@@ -25,6 +27,22 @@ var Icon = ({
25
27
  const iconClasses = _tigercatcore.classNames.call(void 0, _tigercatcore.iconWrapperClasses, className);
26
28
  const iconStyle = { ...style, color };
27
29
  const isDecorative = props["aria-label"] == null && props["aria-labelledby"] == null && props.role == null;
30
+ const hasChildren = _react2.default.Children.count(children) > 0;
31
+ const definition = !hasChildren && name ? _tigercatcore.getIconDefinition.call(void 0, name) : void 0;
32
+ const builtInSvg = definition ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
33
+ "svg",
34
+ {
35
+ className: _tigercatcore.classNames.call(void 0, _tigercatcore.iconSvgBaseClasses, _tigercatcore.iconSizeClasses[size]),
36
+ xmlns: _tigercatcore.SVG_DEFAULT_XMLNS,
37
+ viewBox: definition.viewBox,
38
+ fill: definition.mode === "fill" ? "currentColor" : _tigercatcore.SVG_DEFAULT_FILL,
39
+ stroke: definition.mode === "stroke" ? "currentColor" : _tigercatcore.SVG_DEFAULT_STROKE,
40
+ strokeWidth: definition.mode === "stroke" ? 1.5 : void 0,
41
+ strokeLinecap: definition.mode === "stroke" ? _tigercatcore.iconSvgDefaultStrokeLinecap : void 0,
42
+ strokeLinejoin: definition.mode === "stroke" ? _tigercatcore.iconSvgDefaultStrokeLinejoin : void 0,
43
+ children: definition.paths.map((d, i) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "path", { d }, i))
44
+ }
45
+ ) : null;
28
46
  const processedChildren = _react2.default.Children.map(children, (child) => {
29
47
  if (!_react2.default.isValidElement(child) || child.type !== "svg") {
30
48
  return child;
@@ -49,7 +67,7 @@ var Icon = ({
49
67
  className: iconClasses,
50
68
  style: iconStyle,
51
69
  ...isDecorative ? { "aria-hidden": true } : { role: _nullishCoalesce(props.role, () => ( "img")) },
52
- children: processedChildren
70
+ children: _nullishCoalesce(builtInSvg, () => ( processedChildren))
53
71
  }
54
72
  );
55
73
  };
@@ -38,7 +38,7 @@ var Form = _react.forwardRef.call(void 0,
38
38
  rules,
39
39
  labelWidth,
40
40
  labelPosition = "right",
41
- labelAlign = "right",
41
+ labelAlign,
42
42
  size = "md",
43
43
  inlineMessage = true,
44
44
  showRequiredAsterisk = true,
@@ -56,6 +56,7 @@ var Form = _react.forwardRef.call(void 0,
56
56
  maxHistorySize = 50,
57
57
  ...props
58
58
  }, ref) => {
59
+ const resolvedLabelAlign = _nullishCoalesce(labelAlign, () => ( (labelPosition === "top" ? "left" : "right")));
59
60
  const [errors, setErrors] = _react.useState.call(void 0, []);
60
61
  const [formValues, setFormValues] = _react.useState.call(void 0, model);
61
62
  const fieldRulesRef = _react2.default.useRef({});
@@ -400,7 +401,7 @@ var Form = _react.forwardRef.call(void 0,
400
401
  rules,
401
402
  labelWidth,
402
403
  labelPosition,
403
- labelAlign,
404
+ labelAlign: resolvedLabelAlign,
404
405
  size,
405
406
  inlineMessage,
406
407
  showRequiredAsterisk,
@@ -420,7 +421,7 @@ var Form = _react.forwardRef.call(void 0,
420
421
  rules,
421
422
  labelWidth,
422
423
  labelPosition,
423
- labelAlign,
424
+ resolvedLabelAlign,
424
425
  size,
425
426
  inlineMessage,
426
427
  showRequiredAsterisk,