@dreamtree-org/twreact-ui 1.1.63 → 1.1.65

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 (35) hide show
  1. package/dist/components/core/Select.d.ts.map +1 -1
  2. package/dist/components/core/Table/Table.d.ts +2 -1
  3. package/dist/components/core/Table/Table.d.ts.map +1 -1
  4. package/dist/components/feedback/Alert.d.ts +2 -9
  5. package/dist/components/feedback/Alert.d.ts.map +1 -1
  6. package/dist/components/feedback/Dialog.d.ts +1 -30
  7. package/dist/components/feedback/Dialog.d.ts.map +1 -1
  8. package/dist/components/feedback/Toast.d.ts +1 -10
  9. package/dist/components/feedback/Toast.d.ts.map +1 -1
  10. package/dist/components/navigation/Breadcrumbs.d.ts +2 -9
  11. package/dist/components/navigation/Breadcrumbs.d.ts.map +1 -1
  12. package/dist/components/navigation/FootNav.d.ts +2 -5
  13. package/dist/components/navigation/FootNav.d.ts.map +1 -1
  14. package/dist/components/navigation/Navbar.d.ts +2 -29
  15. package/dist/components/navigation/Navbar.d.ts.map +1 -1
  16. package/dist/components/navigation/Sidebar.d.ts +2 -15
  17. package/dist/components/navigation/Sidebar.d.ts.map +1 -1
  18. package/dist/components/utility/Avatar.d.ts +2 -10
  19. package/dist/components/utility/Avatar.d.ts.map +1 -1
  20. package/dist/components/utility/Badge.d.ts +2 -8
  21. package/dist/components/utility/Badge.d.ts.map +1 -1
  22. package/dist/components/utility/Card.d.ts +2 -38
  23. package/dist/components/utility/Card.d.ts.map +1 -1
  24. package/dist/components/utility/Carousel.d.ts +2 -1
  25. package/dist/components/utility/Carousel.d.ts.map +1 -1
  26. package/dist/components/utility/FileUpload.d.ts +2 -11
  27. package/dist/components/utility/FileUpload.d.ts.map +1 -1
  28. package/dist/components/utility/Pagination.d.ts +2 -10
  29. package/dist/components/utility/Pagination.d.ts.map +1 -1
  30. package/dist/components/utility/Stepper.d.ts +2 -9
  31. package/dist/components/utility/Stepper.d.ts.map +1 -1
  32. package/dist/index.esm.js +163 -65
  33. package/dist/index.js +163 -65
  34. package/mcp/catalog.snapshot.json +16 -4
  35. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -3510,6 +3510,11 @@ var Select = /*#__PURE__*/React.forwardRef(function (_ref, forwardedRef) {
3510
3510
  _useState10 = _slicedToArray(_useState1, 2),
3511
3511
  menuMaxHeight = _useState10[0],
3512
3512
  setMenuMaxHeight = _useState10[1]; // px or null
3513
+ // Fixed-position coordinates for the portaled menu (anchored to the trigger).
3514
+ var _useState11 = React.useState(null),
3515
+ _useState12 = _slicedToArray(_useState11, 2),
3516
+ menuCoords = _useState12[0],
3517
+ setMenuCoords = _useState12[1]; // { left, top, width } in viewport px
3513
3518
  React.useImperativeHandle(forwardedRef, function () {
3514
3519
  return selectRef.current;
3515
3520
  }, []);
@@ -3572,16 +3577,47 @@ var Select = /*#__PURE__*/React.forwardRef(function (_ref, forwardedRef) {
3572
3577
  desiredMenuHeight = Math.min(menuRef.current.scrollHeight, DEFAULT_MENU_MAX);
3573
3578
  }
3574
3579
  // decide placement: prefer bottom unless not enough space and top has more space
3580
+ var nextPlacement;
3581
+ var nextMaxHeight;
3575
3582
  if (spaceBelow >= desiredMenuHeight || spaceBelow >= spaceAbove) {
3576
- setPlacement("bottom");
3577
- setMenuMaxHeight(Math.min(desiredMenuHeight, Math.max(80, spaceBelow)));
3583
+ nextPlacement = "bottom";
3584
+ nextMaxHeight = Math.min(desiredMenuHeight, Math.max(80, spaceBelow));
3585
+ } else {
3586
+ nextPlacement = "top";
3587
+ nextMaxHeight = Math.min(desiredMenuHeight, Math.max(80, spaceAbove));
3588
+ }
3589
+ setPlacement(nextPlacement);
3590
+ setMenuMaxHeight(nextMaxHeight);
3591
+ // The menu is portaled to document.body with position:fixed, so it floats
3592
+ // above any ancestor with overflow:hidden|auto|scroll. Anchor it to the
3593
+ // trigger via the viewport-relative rect (no scroll offset for fixed).
3594
+ // maxHeight here mirrors the inline style applied to the menu (+10 fudge).
3595
+ var renderedMaxHeight = nextMaxHeight + 10;
3596
+ var next = {
3597
+ left: rect.left,
3598
+ width: rect.width
3599
+ };
3600
+ if (nextPlacement === "bottom") {
3601
+ next.top = rect.bottom + 4; // ~mt-1
3578
3602
  } else {
3579
- setPlacement("top");
3580
- setMenuMaxHeight(Math.min(desiredMenuHeight, Math.max(80, spaceAbove)));
3603
+ // place above the trigger; bottom of menu sits just above the trigger top
3604
+ next.top = Math.max(MARGIN, rect.top - 4 - renderedMaxHeight);
3581
3605
  }
3606
+ setMenuCoords(next);
3582
3607
  };
3608
+ // Anchor the portaled menu BEFORE the browser paints, so it never flashes
3609
+ // at (0,0). The menu is already in the DOM (createPortal runs during render),
3610
+ // we just need its fixed coords set synchronously.
3611
+ React.useLayoutEffect(function () {
3612
+ if (isOpen) calculatePlacement();
3613
+ // eslint-disable-next-line react-hooks/exhaustive-deps
3614
+ }, [isOpen, filtered.length]);
3583
3615
  React.useEffect(function () {
3584
- if (!isOpen) return;
3616
+ if (!isOpen) {
3617
+ // drop stale coords so the next open re-anchors from scratch
3618
+ setMenuCoords(null);
3619
+ return;
3620
+ }
3585
3621
  // initial calc on open; wait a tick to allow DOM to render
3586
3622
  var raf = requestAnimationFrame(function () {
3587
3623
  var _searchRef$current;
@@ -3589,7 +3625,10 @@ var Select = /*#__PURE__*/React.forwardRef(function (_ref, forwardedRef) {
3589
3625
  // focus search input if available
3590
3626
  if (searchable) (_searchRef$current = searchRef.current) === null || _searchRef$current === void 0 || _searchRef$current.focus();
3591
3627
  });
3592
- // update on resize/scroll (throttle by requestAnimationFrame)
3628
+ // Reposition on resize/scroll while open (throttled by rAF). Use
3629
+ // capture-phase scroll so we also catch any scrolling ancestor — the
3630
+ // menu is portaled with position:fixed, so its coords must track the
3631
+ // trigger as the page (or a scroll container) moves.
3593
3632
  var rafId = null;
3594
3633
  var onWindowChange = function onWindowChange() {
3595
3634
  if (rafId) cancelAnimationFrame(rafId);
@@ -3601,13 +3640,16 @@ var Select = /*#__PURE__*/React.forwardRef(function (_ref, forwardedRef) {
3601
3640
  passive: true
3602
3641
  });
3603
3642
  window.addEventListener("scroll", onWindowChange, {
3604
- passive: true
3643
+ passive: true,
3644
+ capture: true
3605
3645
  });
3606
3646
  return function () {
3607
3647
  cancelAnimationFrame(raf);
3608
3648
  if (rafId) cancelAnimationFrame(rafId);
3609
3649
  window.removeEventListener("resize", onWindowChange);
3610
- window.removeEventListener("scroll", onWindowChange);
3650
+ window.removeEventListener("scroll", onWindowChange, {
3651
+ capture: true
3652
+ });
3611
3653
  };
3612
3654
  // eslint-disable-next-line react-hooks/exhaustive-deps
3613
3655
  }, [isOpen, searchable, filtered.length]);
@@ -3697,7 +3739,13 @@ var Select = /*#__PURE__*/React.forwardRef(function (_ref, forwardedRef) {
3697
3739
  }
3698
3740
  };
3699
3741
  var handleClickOutside = function handleClickOutside(e) {
3700
- if (selectRef.current && !selectRef.current.contains(e.target)) {
3742
+ // The menu is portaled to document.body, so it lives OUTSIDE selectRef's
3743
+ // DOM subtree. Treat clicks inside the portaled menu as "inside" too —
3744
+ // otherwise selecting an option would close the menu before the option's
3745
+ // own click handler runs.
3746
+ var inTrigger = selectRef.current && selectRef.current.contains(e.target);
3747
+ var inMenu = menuRef.current && menuRef.current.contains(e.target);
3748
+ if (!inTrigger && !inMenu) {
3701
3749
  setIsOpen(false);
3702
3750
  setFocusedIndex(-1);
3703
3751
  }
@@ -3921,19 +3969,23 @@ var Select = /*#__PURE__*/React.forwardRef(function (_ref, forwardedRef) {
3921
3969
  type: "hidden",
3922
3970
  name: name,
3923
3971
  value: selectedValues !== null && selectedValues !== void 0 ? selectedValues : ""
3924
- })), isOpen && jsxRuntime.jsxs("div", {
3972
+ })), isOpen && typeof document !== "undefined" && /*#__PURE__*/ReactDOM.createPortal(jsxRuntime.jsxs("div", {
3925
3973
  ref: menuRef,
3926
- className: cn$1("absolute z-50 w-full rounded-md border border-gray-300 bg-white shadow-lg", {
3927
- // if placement is bottom, place it below with margin-top; if top, place it above with bottom full and margin-bottom
3928
- "mt-1 top-full": placement === "bottom",
3929
- "mb-1 bottom-full": placement === "top"
3930
- }),
3974
+ className: cn$1("fixed z-50 rounded-md border border-gray-300 bg-white shadow-lg"),
3931
3975
  role: "dialog",
3932
- // set inline style for maxHeight based on available space (converted to px)
3933
- style: menuMaxHeight ? {
3976
+ "data-placement": placement,
3977
+ // Portaled to document.body with position:fixed so the menu
3978
+ // escapes any ancestor overflow:hidden|auto|scroll. Coordinates
3979
+ // are anchored to the trigger's viewport rect; width matches the
3980
+ // trigger; maxHeight is driven by available space.
3981
+ style: _objectSpread$C({
3982
+ left: menuCoords ? "".concat(menuCoords.left, "px") : undefined,
3983
+ top: menuCoords ? "".concat(menuCoords.top, "px") : undefined,
3984
+ width: menuCoords ? "".concat(menuCoords.width, "px") : undefined
3985
+ }, menuMaxHeight ? {
3934
3986
  maxHeight: "".concat(menuMaxHeight + 10, "px"),
3935
3987
  overflow: "auto"
3936
- } : {},
3988
+ } : {}),
3937
3989
  children: [searchable && jsxRuntime.jsx("div", {
3938
3990
  className: "border-b border-gray-200 p-2",
3939
3991
  children: jsxRuntime.jsxs("div", {
@@ -3976,7 +4028,7 @@ var Select = /*#__PURE__*/React.forwardRef(function (_ref, forwardedRef) {
3976
4028
  "aria-multiselectable": multiSelect,
3977
4029
  children: grouped ? renderGroupedOptions() : renderFlatOptions()
3978
4030
  })]
3979
- })]
4031
+ }), document.body)]
3980
4032
  }), error && jsxRuntime.jsx("p", {
3981
4033
  className: "mt-1 text-sm text-error-500",
3982
4034
  children: error
@@ -4761,7 +4813,7 @@ function MobileCard(_ref) {
4761
4813
  }, key);
4762
4814
  }
4763
4815
 
4764
- var _excluded$x = ["data", "columns", "sortable", "filterable", "selectable", "pagination", "pageSize", "onSort", "onFilter", "onFetch", "onFilterChange", "onSelectionChange", "onRowClick", "hasDetails", "DetailsComponent", "className", "withAction", "onAction", "actions", "showSerial", "cellClass", "rowClass", "globalSearch", "limitOptions", "showLimitSelector", "onLimitChange", "showReloadButton", "renderReloadButton", "onReload", "stripedRows", "theme", "responsiveBreakpoint", "serverSide", "totalRecords", "pageNumber", "TheadComponent", "TfootComponent"];
4816
+ var _excluded$x = ["data", "columns", "sortable", "filterable", "selectable", "pagination", "pageSize", "onSort", "onFilter", "onFetch", "onFilterChange", "onSelectionChange", "onRowClick", "hasDetails", "DetailsComponent", "className", "withAction", "onAction", "actions", "showSerial", "cellClass", "rowClass", "globalSearch", "limitOptions", "showLimitSelector", "onLimitChange", "showReloadButton", "renderReloadButton", "onReload", "stripedRows", "theme", "responsiveBreakpoint", "serverSide", "totalRecords", "pageNumber", "onPageChange", "TheadComponent", "TfootComponent"];
4765
4817
  function ownKeys$B(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
4766
4818
  function _objectSpread$B(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$B(Object(t), true).forEach(function (r) { _defineProperty$4(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$B(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
4767
4819
  var DEFAULT_DATA = [];
@@ -4829,6 +4881,7 @@ var Table = function Table(_ref) {
4829
4881
  _ref$totalRecords = _ref.totalRecords,
4830
4882
  totalRecords = _ref$totalRecords === void 0 ? 0 : _ref$totalRecords,
4831
4883
  pageNumber = _ref.pageNumber,
4884
+ onPageChange = _ref.onPageChange,
4832
4885
  _ref$TheadComponent = _ref.TheadComponent,
4833
4886
  TheadComponent = _ref$TheadComponent === void 0 ? null : _ref$TheadComponent,
4834
4887
  _ref$TfootComponent = _ref.TfootComponent,
@@ -5169,7 +5222,8 @@ var Table = function Table(_ref) {
5169
5222
  }, [applyGlobalSearch]);
5170
5223
  var handlePageChange = React.useCallback(function (newPage) {
5171
5224
  setCurrentPage(newPage);
5172
- }, []);
5225
+ onPageChange === null || onPageChange === void 0 || onPageChange(newPage);
5226
+ }, [onPageChange]);
5173
5227
  var renderCell = React.useCallback(function (column, row, globalIndex) {
5174
5228
  if (column.render) return column.render(row, globalIndex);
5175
5229
  return row === null || row === void 0 ? void 0 : row[column.key];
@@ -16576,7 +16630,7 @@ function _objectSpread$h(e) { for (var r = 1; r < arguments.length; r++) { var t
16576
16630
  * - isMobileOpen, setIsMobileOpen
16577
16631
  * - showCollapsedTooltips: boolean (default true)
16578
16632
  */
16579
- var Sidebar = function Sidebar(_ref2) {
16633
+ var Sidebar = /*#__PURE__*/React.forwardRef(function (_ref2, ref) {
16580
16634
  var _ref2$items = _ref2.items,
16581
16635
  items = _ref2$items === void 0 ? [] : _ref2$items,
16582
16636
  _ref2$collapsed = _ref2.collapsed,
@@ -16819,6 +16873,7 @@ var Sidebar = function Sidebar(_ref2) {
16819
16873
  children: [jsxRuntime.jsx("div", {
16820
16874
  className: "hidden md:flex sticky top-0 h-screen",
16821
16875
  children: jsxRuntime.jsx("div", _objectSpread$h(_objectSpread$h({
16876
+ ref: ref,
16822
16877
  className: cn$1(desktopPlacementClass, className)
16823
16878
  }, props), {}, {
16824
16879
  children: SidebarContent
@@ -16839,7 +16894,8 @@ var Sidebar = function Sidebar(_ref2) {
16839
16894
  children: SidebarContent
16840
16895
  })]
16841
16896
  });
16842
- };
16897
+ });
16898
+ Sidebar.displayName = "Sidebar";
16843
16899
 
16844
16900
  var _excluded$c = ["trigger", "children", "placement", "className"];
16845
16901
  function ownKeys$g(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
@@ -16891,7 +16947,7 @@ var Dropdown = function Dropdown(_ref) {
16891
16947
  };
16892
16948
 
16893
16949
  var _excluded$b = ["emitter", "content", "notifications"],
16894
- _excluded2$2 = ["emitter", "logo", "items", "user", "notifications", "searchable", "onSearch", "leftIcon", "rightMenuContent", "onLeftIconClick", "onLoginClick", "onLogoutClick", "className"];
16950
+ _excluded2$2 = ["emitter", "logo", "items", "user", "notifications", "searchable", "onSearch", "leftIcon", "rightMenuContent", "onLeftIconClick", "onLoginClick", "onLogoutClick", "className", "onFetch", "isMobileOpen", "setIsMobileOpen"];
16895
16951
  function ownKeys$f(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
16896
16952
  function _objectSpread$f(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$f(Object(t), true).forEach(function (r) { _defineProperty$4(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$f(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
16897
16953
  // Simplified Notifications, uses notifications from props and a single effect for fetch/update
@@ -17038,7 +17094,7 @@ var styledClassNames = {
17038
17094
  icon: "h-6 w-6",
17039
17095
  dropdown: "w-56 rounded-md border border-gray-200 bg-white py-1 shadow-lg"
17040
17096
  };
17041
- var Navbar = function Navbar(_ref3) {
17097
+ var Navbar = /*#__PURE__*/React.forwardRef(function (_ref3, ref) {
17042
17098
  var emitter = _ref3.emitter,
17043
17099
  logo = _ref3.logo,
17044
17100
  _ref3$items = _ref3.items,
@@ -17062,7 +17118,10 @@ var Navbar = function Navbar(_ref3) {
17062
17118
  return console.log("invoked onLogoutClick");
17063
17119
  } : _ref3$onLogoutClick,
17064
17120
  className = _ref3.className,
17065
- props = _objectWithoutProperties$1(_ref3, _excluded2$2);
17121
+ onFetch = _ref3.onFetch;
17122
+ _ref3.isMobileOpen;
17123
+ _ref3.setIsMobileOpen;
17124
+ var props = _objectWithoutProperties$1(_ref3, _excluded2$2);
17066
17125
  var _useState3 = React.useState(false),
17067
17126
  _useState4 = _slicedToArray(_useState3, 2),
17068
17127
  isMobileMenuOpen = _useState4[0],
@@ -17131,6 +17190,7 @@ var Navbar = function Navbar(_ref3) {
17131
17190
  }, rest));
17132
17191
  };
17133
17192
  return jsxRuntime.jsxs("nav", _objectSpread$f(_objectSpread$f({
17193
+ ref: ref,
17134
17194
  className: cn$1("bg-white border-b border-gray-200 px-4 sm:px-6 lg:px-8", className)
17135
17195
  }, props), {}, {
17136
17196
  children: [jsxRuntime.jsxs("div", {
@@ -17175,7 +17235,8 @@ var Navbar = function Navbar(_ref3) {
17175
17235
  })]
17176
17236
  })
17177
17237
  }), jsxRuntime.jsx(RightMenuComponent, {
17178
- notifications: notifications
17238
+ notifications: notifications,
17239
+ onFetch: onFetch
17179
17240
  }), !user && jsxRuntime.jsx("button", {
17180
17241
  className: styledClassNames.button,
17181
17242
  onClick: handleLoginClick,
@@ -17267,7 +17328,7 @@ var Navbar = function Navbar(_ref3) {
17267
17328
  })
17268
17329
  })]
17269
17330
  }));
17270
- };
17331
+ });
17271
17332
  Navbar.displayName = "Navbar";
17272
17333
  Navbar.propTypes = {
17273
17334
  emitter: PropTypes.object.isRequired,
@@ -17282,12 +17343,13 @@ Navbar.propTypes = {
17282
17343
  var _excluded$a = ["items", "className"];
17283
17344
  function ownKeys$e(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
17284
17345
  function _objectSpread$e(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$e(Object(t), true).forEach(function (r) { _defineProperty$4(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$e(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
17285
- var FootNav = function FootNav(_ref) {
17346
+ var FootNav = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
17286
17347
  var _ref$items = _ref.items,
17287
17348
  items = _ref$items === void 0 ? [] : _ref$items,
17288
17349
  className = _ref.className,
17289
17350
  props = _objectWithoutProperties$1(_ref, _excluded$a);
17290
17351
  return jsxRuntime.jsx("nav", _objectSpread$e(_objectSpread$e({
17352
+ ref: ref,
17291
17353
  className: cn$1('fixed bottom-0 left-0 right-0 bg-white border-t border-gray-200 px-4 py-2 md:hidden', className)
17292
17354
  }, props), {}, {
17293
17355
  children: jsxRuntime.jsx("div", {
@@ -17315,12 +17377,13 @@ var FootNav = function FootNav(_ref) {
17315
17377
  })
17316
17378
  })
17317
17379
  }));
17318
- };
17380
+ });
17381
+ FootNav.displayName = 'FootNav';
17319
17382
 
17320
17383
  var _excluded$9 = ["items", "separator", "showHome", "homeIcon", "onHomeClick", "className"];
17321
17384
  function ownKeys$d(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
17322
17385
  function _objectSpread$d(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$d(Object(t), true).forEach(function (r) { _defineProperty$4(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$d(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
17323
- var Breadcrumbs = function Breadcrumbs(_ref) {
17386
+ var Breadcrumbs = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
17324
17387
  var _ref$items = _ref.items,
17325
17388
  items = _ref$items === void 0 ? [] : _ref$items,
17326
17389
  _ref$separator = _ref.separator,
@@ -17344,6 +17407,7 @@ var Breadcrumbs = function Breadcrumbs(_ref) {
17344
17407
  onClick: onHomeClick
17345
17408
  }].concat(_toConsumableArray$1(items)) : items;
17346
17409
  return jsxRuntime.jsx("nav", _objectSpread$d(_objectSpread$d({
17410
+ ref: ref,
17347
17411
  className: cn$1('flex items-center space-x-1 text-sm', className),
17348
17412
  "aria-label": "Breadcrumb"
17349
17413
  }, props), {}, {
@@ -17377,7 +17441,8 @@ var Breadcrumbs = function Breadcrumbs(_ref) {
17377
17441
  }, item.id);
17378
17442
  })
17379
17443
  }));
17380
- };
17444
+ });
17445
+ Breadcrumbs.displayName = 'Breadcrumbs';
17381
17446
 
17382
17447
  var _excluded$8 = ["isOpen", "onClose", "title", "children", "size", "dismissible", "showCloseButton", "footer", "className", "onOpen"],
17383
17448
  _excluded2$1 = ["children", "className"],
@@ -17393,7 +17458,19 @@ var getFocusable = function getFocusable(root) {
17393
17458
  return el.getAttribute('aria-hidden') !== 'true';
17394
17459
  }) : [];
17395
17460
  };
17396
- var Dialog = function Dialog(_ref) {
17461
+ // Assign one node to several refs (callback or object). Lets the dialog keep
17462
+ // its internal `dialogRef` for the focus trap while still exposing the panel
17463
+ // node to a consumer-supplied `ref` (issue #56).
17464
+ var setRefs = function setRefs(node) {
17465
+ for (var _len = arguments.length, refs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
17466
+ refs[_key - 1] = arguments[_key];
17467
+ }
17468
+ refs.forEach(function (ref) {
17469
+ if (!ref) return;
17470
+ if (typeof ref === 'function') ref(node);else ref.current = node;
17471
+ });
17472
+ };
17473
+ var Dialog = /*#__PURE__*/React.forwardRef(function (_ref, _ref3) {
17397
17474
  var isOpen = _ref.isOpen,
17398
17475
  onClose = _ref.onClose,
17399
17476
  title = _ref.title,
@@ -17484,7 +17561,9 @@ var Dialog = function Dialog(_ref) {
17484
17561
  className: "fixed inset-0 z-50 flex items-center justify-center bg-black bg-opacity-50 p-4",
17485
17562
  onClick: handleBackdropClick,
17486
17563
  children: jsxRuntime.jsxs("div", _objectSpread$c(_objectSpread$c({
17487
- ref: dialogRef,
17564
+ ref: function ref(node) {
17565
+ return setRefs(node, dialogRef, _ref3);
17566
+ },
17488
17567
  className: cn$1('w-full rounded-lg bg-white shadow-xl animate-scale-in motion-reduce:animate-none', sizeClasses[size], className),
17489
17568
  tabIndex: -1,
17490
17569
  role: "dialog",
@@ -17515,32 +17594,33 @@ var Dialog = function Dialog(_ref) {
17515
17594
  })]
17516
17595
  }))
17517
17596
  }), document.body);
17518
- };
17597
+ });
17598
+ Dialog.displayName = 'Dialog';
17519
17599
  // Dialog components for composition
17520
- Dialog.Header = function (_ref3) {
17521
- var children = _ref3.children,
17522
- className = _ref3.className,
17523
- props = _objectWithoutProperties$1(_ref3, _excluded2$1);
17600
+ Dialog.Header = function (_ref4) {
17601
+ var children = _ref4.children,
17602
+ className = _ref4.className,
17603
+ props = _objectWithoutProperties$1(_ref4, _excluded2$1);
17524
17604
  return jsxRuntime.jsx("div", _objectSpread$c(_objectSpread$c({
17525
17605
  className: cn$1('border-b border-gray-200 px-6 py-4', className)
17526
17606
  }, props), {}, {
17527
17607
  children: children
17528
17608
  }));
17529
17609
  };
17530
- Dialog.Body = function (_ref4) {
17531
- var children = _ref4.children,
17532
- className = _ref4.className,
17533
- props = _objectWithoutProperties$1(_ref4, _excluded3$1);
17610
+ Dialog.Body = function (_ref5) {
17611
+ var children = _ref5.children,
17612
+ className = _ref5.className,
17613
+ props = _objectWithoutProperties$1(_ref5, _excluded3$1);
17534
17614
  return jsxRuntime.jsx("div", _objectSpread$c(_objectSpread$c({
17535
17615
  className: cn$1('px-6 py-4', className)
17536
17616
  }, props), {}, {
17537
17617
  children: children
17538
17618
  }));
17539
17619
  };
17540
- Dialog.Footer = function (_ref5) {
17541
- var children = _ref5.children,
17542
- className = _ref5.className,
17543
- props = _objectWithoutProperties$1(_ref5, _excluded4$1);
17620
+ Dialog.Footer = function (_ref6) {
17621
+ var children = _ref6.children,
17622
+ className = _ref6.className,
17623
+ props = _objectWithoutProperties$1(_ref6, _excluded4$1);
17544
17624
  return jsxRuntime.jsx("div", _objectSpread$c(_objectSpread$c({
17545
17625
  className: cn$1('flex items-center justify-end gap-3 border-t border-gray-200 px-6 py-4', className)
17546
17626
  }, props), {}, {
@@ -17551,7 +17631,7 @@ Dialog.Footer = function (_ref5) {
17551
17631
  var _excluded$7 = ["id", "title", "message", "type", "duration", "onClose", "position"];
17552
17632
  function ownKeys$b(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
17553
17633
  function _objectSpread$b(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$b(Object(t), true).forEach(function (r) { _defineProperty$4(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$b(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
17554
- var Toast = function Toast(_ref) {
17634
+ var Toast = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
17555
17635
  var id = _ref.id,
17556
17636
  title = _ref.title,
17557
17637
  message = _ref.message,
@@ -17607,6 +17687,7 @@ var Toast = function Toast(_ref) {
17607
17687
  };
17608
17688
  if (!isVisible) return null;
17609
17689
  return /*#__PURE__*/ReactDOM.createPortal(jsxRuntime.jsx("div", _objectSpread$b(_objectSpread$b({
17690
+ ref: ref,
17610
17691
  className: cn$1('fixed z-50 max-w-sm rounded-lg border border-gray-200 bg-white p-4 shadow-lg animate-slide-up', positionClasses[position])
17611
17692
  }, props), {}, {
17612
17693
  children: jsxRuntime.jsxs("div", {
@@ -17633,7 +17714,8 @@ var Toast = function Toast(_ref) {
17633
17714
  })]
17634
17715
  })
17635
17716
  })), document.body);
17636
- };
17717
+ });
17718
+ Toast.displayName = 'Toast';
17637
17719
  // Toast Container Component
17638
17720
  var ToastContainer = function ToastContainer(_ref2) {
17639
17721
  var _ref2$toasts = _ref2.toasts,
@@ -17713,7 +17795,7 @@ var useToast = function useToast() {
17713
17795
  var _excluded$6 = ["variant", "title", "children", "dismissible", "onDismiss", "className"];
17714
17796
  function ownKeys$a(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
17715
17797
  function _objectSpread$a(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$a(Object(t), true).forEach(function (r) { _defineProperty$4(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$a(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
17716
- var Alert = function Alert(_ref) {
17798
+ var Alert = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
17717
17799
  var _ref$variant = _ref.variant,
17718
17800
  variant = _ref$variant === void 0 ? 'info' : _ref$variant,
17719
17801
  title = _ref.title,
@@ -17759,6 +17841,7 @@ var Alert = function Alert(_ref) {
17759
17841
  };
17760
17842
  var variantStyles = variants[variant];
17761
17843
  return jsxRuntime.jsx("div", _objectSpread$a(_objectSpread$a({
17844
+ ref: ref,
17762
17845
  className: cn$1('rounded-md border p-4', variantStyles.container, className),
17763
17846
  role: "alert"
17764
17847
  }, props), {}, {
@@ -17796,12 +17879,13 @@ var Alert = function Alert(_ref) {
17796
17879
  })]
17797
17880
  })
17798
17881
  }));
17799
- };
17882
+ });
17883
+ Alert.displayName = 'Alert';
17800
17884
 
17801
17885
  var _excluded$5 = ["children", "variant", "size", "rounded", "className"];
17802
17886
  function ownKeys$9(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
17803
17887
  function _objectSpread$9(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$9(Object(t), true).forEach(function (r) { _defineProperty$4(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$9(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
17804
- var Badge = function Badge(_ref) {
17888
+ var Badge = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
17805
17889
  var children = _ref.children,
17806
17890
  _ref$variant = _ref.variant,
17807
17891
  variant = _ref$variant === void 0 ? 'default' : _ref$variant,
@@ -17826,6 +17910,7 @@ var Badge = function Badge(_ref) {
17826
17910
  lg: 'px-3 py-1 text-base'
17827
17911
  };
17828
17912
  return jsxRuntime.jsx("span", _objectSpread$9(_objectSpread$9({
17913
+ ref: ref,
17829
17914
  className: cn$1('inline-flex items-center font-medium', variants[variant], sizes[size], {
17830
17915
  'rounded-full': rounded,
17831
17916
  'rounded-md': !rounded
@@ -17833,12 +17918,13 @@ var Badge = function Badge(_ref) {
17833
17918
  }, props), {}, {
17834
17919
  children: children
17835
17920
  }));
17836
- };
17921
+ });
17922
+ Badge.displayName = 'Badge';
17837
17923
 
17838
17924
  var _excluded$4 = ["src", "alt", "name", "size", "shape", "status", "className"];
17839
17925
  function ownKeys$8(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
17840
17926
  function _objectSpread$8(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$8(Object(t), true).forEach(function (r) { _defineProperty$4(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$8(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
17841
- var Avatar = function Avatar(_ref) {
17927
+ var Avatar = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
17842
17928
  var src = _ref.src,
17843
17929
  alt = _ref.alt,
17844
17930
  name = _ref.name,
@@ -17878,6 +17964,7 @@ var Avatar = function Avatar(_ref) {
17878
17964
  '2xl': 'h-5 w-5'
17879
17965
  };
17880
17966
  return jsxRuntime.jsxs("div", {
17967
+ ref: ref,
17881
17968
  className: "relative inline-block",
17882
17969
  children: [jsxRuntime.jsxs("div", _objectSpread$8(_objectSpread$8({
17883
17970
  className: cn$1('flex items-center justify-center bg-gray-100 text-primary-600 font-medium', sizes[size], {
@@ -17914,7 +18001,8 @@ var Avatar = function Avatar(_ref) {
17914
18001
  className: cn$1('absolute bottom-0 right-0 rounded-full border-2 border-white', statusColors[status], statusSizes[size])
17915
18002
  })]
17916
18003
  });
17917
- };
18004
+ });
18005
+ Avatar.displayName = 'Avatar';
17918
18006
 
17919
18007
  var _excluded$3 = ["children", "className", "hover"],
17920
18008
  _excluded2 = ["children", "className"],
@@ -17924,20 +18012,22 @@ var _excluded$3 = ["children", "className", "hover"],
17924
18012
  _excluded6 = ["children", "className"];
17925
18013
  function ownKeys$7(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
17926
18014
  function _objectSpread$7(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$7(Object(t), true).forEach(function (r) { _defineProperty$4(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$7(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
17927
- var Card = function Card(_ref) {
18015
+ var Card = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
17928
18016
  var children = _ref.children,
17929
18017
  className = _ref.className,
17930
18018
  _ref$hover = _ref.hover,
17931
18019
  hover = _ref$hover === void 0 ? false : _ref$hover,
17932
18020
  props = _objectWithoutProperties$1(_ref, _excluded$3);
17933
18021
  return jsxRuntime.jsx("div", _objectSpread$7(_objectSpread$7({
18022
+ ref: ref,
17934
18023
  className: cn$1('rounded-lg border border-gray-200 bg-white shadow-sm', {
17935
18024
  'hover:shadow-md transition-shadow': hover
17936
18025
  }, className)
17937
18026
  }, props), {}, {
17938
18027
  children: children
17939
18028
  }));
17940
- };
18029
+ });
18030
+ Card.displayName = 'Card';
17941
18031
  var CardHeader = function CardHeader(_ref2) {
17942
18032
  var children = _ref2.children,
17943
18033
  className = _ref2.className,
@@ -17997,7 +18087,7 @@ Card.Footer = CardFooter;
17997
18087
  var _excluded$2 = ["currentPage", "totalPages", "onPageChange", "showFirstLast", "showPrevNext", "maxVisiblePages", "className"];
17998
18088
  function ownKeys$6(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
17999
18089
  function _objectSpread$6(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$6(Object(t), true).forEach(function (r) { _defineProperty$4(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$6(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
18000
- var Pagination = function Pagination(_ref) {
18090
+ var Pagination = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
18001
18091
  var _ref$currentPage = _ref.currentPage,
18002
18092
  currentPage = _ref$currentPage === void 0 ? 1 : _ref$currentPage,
18003
18093
  _ref$totalPages = _ref.totalPages,
@@ -18037,6 +18127,7 @@ var Pagination = function Pagination(_ref) {
18037
18127
  };
18038
18128
  if (totalPages <= 1) return null;
18039
18129
  return jsxRuntime.jsxs("nav", _objectSpread$6(_objectSpread$6({
18130
+ ref: ref,
18040
18131
  className: cn$1('flex items-center justify-center space-x-1', className),
18041
18132
  "aria-label": "Pagination"
18042
18133
  }, props), {}, {
@@ -18095,12 +18186,13 @@ var Pagination = function Pagination(_ref) {
18095
18186
  children: totalPages
18096
18187
  })]
18097
18188
  }));
18098
- };
18189
+ });
18190
+ Pagination.displayName = 'Pagination';
18099
18191
 
18100
18192
  var _excluded$1 = ["steps", "currentStep", "orientation", "variant", "onStepClick", "className"];
18101
18193
  function ownKeys$5(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
18102
18194
  function _objectSpread$5(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$5(Object(t), true).forEach(function (r) { _defineProperty$4(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$5(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
18103
- var Stepper = function Stepper(_ref) {
18195
+ var Stepper = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
18104
18196
  var _ref$steps = _ref.steps,
18105
18197
  steps = _ref$steps === void 0 ? [] : _ref$steps,
18106
18198
  _ref$currentStep = _ref.currentStep,
@@ -18134,6 +18226,7 @@ var Stepper = function Stepper(_ref) {
18134
18226
  }
18135
18227
  };
18136
18228
  return jsxRuntime.jsx("nav", _objectSpread$5(_objectSpread$5({
18229
+ ref: ref,
18137
18230
  className: cn$1('flex', {
18138
18231
  'flex-col': orientation === 'vertical',
18139
18232
  'flex-row': orientation === 'horizontal'
@@ -18188,12 +18281,13 @@ var Stepper = function Stepper(_ref) {
18188
18281
  }, step.id || stepIndex);
18189
18282
  })
18190
18283
  }));
18191
- };
18284
+ });
18285
+ Stepper.displayName = 'Stepper';
18192
18286
 
18193
18287
  var _excluded = ["accept", "multiple", "maxSize", "onFileSelect", "onFileRemove", "files", "disabled", "className"];
18194
18288
  function ownKeys$4(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
18195
18289
  function _objectSpread$4(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$4(Object(t), true).forEach(function (r) { _defineProperty$4(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$4(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
18196
- var FileUpload = function FileUpload(_ref) {
18290
+ var FileUpload = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
18197
18291
  var accept = _ref.accept,
18198
18292
  _ref$multiple = _ref.multiple,
18199
18293
  multiple = _ref$multiple === void 0 ? false : _ref$multiple,
@@ -18285,6 +18379,7 @@ var FileUpload = function FileUpload(_ref) {
18285
18379
  }
18286
18380
  };
18287
18381
  return jsxRuntime.jsxs("div", _objectSpread$4(_objectSpread$4({
18382
+ ref: ref,
18288
18383
  className: cn$1('w-full', className)
18289
18384
  }, props), {}, {
18290
18385
  children: [jsxRuntime.jsxs("div", {
@@ -18357,7 +18452,8 @@ var FileUpload = function FileUpload(_ref) {
18357
18452
  })
18358
18453
  })]
18359
18454
  }));
18360
- };
18455
+ });
18456
+ FileUpload.displayName = 'FileUpload';
18361
18457
 
18362
18458
  var Condition = function Condition(_ref) {
18363
18459
  var condition = _ref.condition,
@@ -18367,7 +18463,7 @@ var Condition = function Condition(_ref) {
18367
18463
  return condition ? children : fallback;
18368
18464
  };
18369
18465
 
18370
- function Carousel(props) {
18466
+ var Carousel = /*#__PURE__*/React.forwardRef(function Carousel(props, ref) {
18371
18467
  var children = props.children,
18372
18468
  _props$autoPlay = props.autoPlay,
18373
18469
  autoPlay = _props$autoPlay === void 0 ? false : _props$autoPlay,
@@ -18407,6 +18503,7 @@ function Carousel(props) {
18407
18503
  }, [autoPlay, isPaused, next, interval]);
18408
18504
  var childrenArray = React.Children.toArray(children);
18409
18505
  return jsxRuntime.jsxs("div", {
18506
+ ref: ref,
18410
18507
  className: cn$1("relative group overflow-hidden rounded-xl bg-card border border-border/50 shadow-sm", className),
18411
18508
  onMouseEnter: function onMouseEnter() {
18412
18509
  return setIsPaused(true);
@@ -18452,7 +18549,8 @@ function Carousel(props) {
18452
18549
  })
18453
18550
  })]
18454
18551
  });
18455
- }
18552
+ });
18553
+ Carousel.displayName = "Carousel";
18456
18554
 
18457
18555
  var ThemeContext = /*#__PURE__*/React.createContext(undefined);
18458
18556
  var useTheme = function useTheme() {