@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.esm.js CHANGED
@@ -3490,6 +3490,11 @@ var Select = /*#__PURE__*/React__default.forwardRef(function (_ref, forwardedRef
3490
3490
  _useState10 = _slicedToArray(_useState1, 2),
3491
3491
  menuMaxHeight = _useState10[0],
3492
3492
  setMenuMaxHeight = _useState10[1]; // px or null
3493
+ // Fixed-position coordinates for the portaled menu (anchored to the trigger).
3494
+ var _useState11 = useState(null),
3495
+ _useState12 = _slicedToArray(_useState11, 2),
3496
+ menuCoords = _useState12[0],
3497
+ setMenuCoords = _useState12[1]; // { left, top, width } in viewport px
3493
3498
  useImperativeHandle(forwardedRef, function () {
3494
3499
  return selectRef.current;
3495
3500
  }, []);
@@ -3552,16 +3557,47 @@ var Select = /*#__PURE__*/React__default.forwardRef(function (_ref, forwardedRef
3552
3557
  desiredMenuHeight = Math.min(menuRef.current.scrollHeight, DEFAULT_MENU_MAX);
3553
3558
  }
3554
3559
  // decide placement: prefer bottom unless not enough space and top has more space
3560
+ var nextPlacement;
3561
+ var nextMaxHeight;
3555
3562
  if (spaceBelow >= desiredMenuHeight || spaceBelow >= spaceAbove) {
3556
- setPlacement("bottom");
3557
- setMenuMaxHeight(Math.min(desiredMenuHeight, Math.max(80, spaceBelow)));
3563
+ nextPlacement = "bottom";
3564
+ nextMaxHeight = Math.min(desiredMenuHeight, Math.max(80, spaceBelow));
3565
+ } else {
3566
+ nextPlacement = "top";
3567
+ nextMaxHeight = Math.min(desiredMenuHeight, Math.max(80, spaceAbove));
3568
+ }
3569
+ setPlacement(nextPlacement);
3570
+ setMenuMaxHeight(nextMaxHeight);
3571
+ // The menu is portaled to document.body with position:fixed, so it floats
3572
+ // above any ancestor with overflow:hidden|auto|scroll. Anchor it to the
3573
+ // trigger via the viewport-relative rect (no scroll offset for fixed).
3574
+ // maxHeight here mirrors the inline style applied to the menu (+10 fudge).
3575
+ var renderedMaxHeight = nextMaxHeight + 10;
3576
+ var next = {
3577
+ left: rect.left,
3578
+ width: rect.width
3579
+ };
3580
+ if (nextPlacement === "bottom") {
3581
+ next.top = rect.bottom + 4; // ~mt-1
3558
3582
  } else {
3559
- setPlacement("top");
3560
- setMenuMaxHeight(Math.min(desiredMenuHeight, Math.max(80, spaceAbove)));
3583
+ // place above the trigger; bottom of menu sits just above the trigger top
3584
+ next.top = Math.max(MARGIN, rect.top - 4 - renderedMaxHeight);
3561
3585
  }
3586
+ setMenuCoords(next);
3562
3587
  };
3588
+ // Anchor the portaled menu BEFORE the browser paints, so it never flashes
3589
+ // at (0,0). The menu is already in the DOM (createPortal runs during render),
3590
+ // we just need its fixed coords set synchronously.
3591
+ useLayoutEffect(function () {
3592
+ if (isOpen) calculatePlacement();
3593
+ // eslint-disable-next-line react-hooks/exhaustive-deps
3594
+ }, [isOpen, filtered.length]);
3563
3595
  useEffect(function () {
3564
- if (!isOpen) return;
3596
+ if (!isOpen) {
3597
+ // drop stale coords so the next open re-anchors from scratch
3598
+ setMenuCoords(null);
3599
+ return;
3600
+ }
3565
3601
  // initial calc on open; wait a tick to allow DOM to render
3566
3602
  var raf = requestAnimationFrame(function () {
3567
3603
  var _searchRef$current;
@@ -3569,7 +3605,10 @@ var Select = /*#__PURE__*/React__default.forwardRef(function (_ref, forwardedRef
3569
3605
  // focus search input if available
3570
3606
  if (searchable) (_searchRef$current = searchRef.current) === null || _searchRef$current === void 0 || _searchRef$current.focus();
3571
3607
  });
3572
- // update on resize/scroll (throttle by requestAnimationFrame)
3608
+ // Reposition on resize/scroll while open (throttled by rAF). Use
3609
+ // capture-phase scroll so we also catch any scrolling ancestor — the
3610
+ // menu is portaled with position:fixed, so its coords must track the
3611
+ // trigger as the page (or a scroll container) moves.
3573
3612
  var rafId = null;
3574
3613
  var onWindowChange = function onWindowChange() {
3575
3614
  if (rafId) cancelAnimationFrame(rafId);
@@ -3581,13 +3620,16 @@ var Select = /*#__PURE__*/React__default.forwardRef(function (_ref, forwardedRef
3581
3620
  passive: true
3582
3621
  });
3583
3622
  window.addEventListener("scroll", onWindowChange, {
3584
- passive: true
3623
+ passive: true,
3624
+ capture: true
3585
3625
  });
3586
3626
  return function () {
3587
3627
  cancelAnimationFrame(raf);
3588
3628
  if (rafId) cancelAnimationFrame(rafId);
3589
3629
  window.removeEventListener("resize", onWindowChange);
3590
- window.removeEventListener("scroll", onWindowChange);
3630
+ window.removeEventListener("scroll", onWindowChange, {
3631
+ capture: true
3632
+ });
3591
3633
  };
3592
3634
  // eslint-disable-next-line react-hooks/exhaustive-deps
3593
3635
  }, [isOpen, searchable, filtered.length]);
@@ -3677,7 +3719,13 @@ var Select = /*#__PURE__*/React__default.forwardRef(function (_ref, forwardedRef
3677
3719
  }
3678
3720
  };
3679
3721
  var handleClickOutside = function handleClickOutside(e) {
3680
- if (selectRef.current && !selectRef.current.contains(e.target)) {
3722
+ // The menu is portaled to document.body, so it lives OUTSIDE selectRef's
3723
+ // DOM subtree. Treat clicks inside the portaled menu as "inside" too —
3724
+ // otherwise selecting an option would close the menu before the option's
3725
+ // own click handler runs.
3726
+ var inTrigger = selectRef.current && selectRef.current.contains(e.target);
3727
+ var inMenu = menuRef.current && menuRef.current.contains(e.target);
3728
+ if (!inTrigger && !inMenu) {
3681
3729
  setIsOpen(false);
3682
3730
  setFocusedIndex(-1);
3683
3731
  }
@@ -3901,19 +3949,23 @@ var Select = /*#__PURE__*/React__default.forwardRef(function (_ref, forwardedRef
3901
3949
  type: "hidden",
3902
3950
  name: name,
3903
3951
  value: selectedValues !== null && selectedValues !== void 0 ? selectedValues : ""
3904
- })), isOpen && jsxs("div", {
3952
+ })), isOpen && typeof document !== "undefined" && /*#__PURE__*/createPortal(jsxs("div", {
3905
3953
  ref: menuRef,
3906
- className: cn$1("absolute z-50 w-full rounded-md border border-gray-300 bg-white shadow-lg", {
3907
- // if placement is bottom, place it below with margin-top; if top, place it above with bottom full and margin-bottom
3908
- "mt-1 top-full": placement === "bottom",
3909
- "mb-1 bottom-full": placement === "top"
3910
- }),
3954
+ className: cn$1("fixed z-50 rounded-md border border-gray-300 bg-white shadow-lg"),
3911
3955
  role: "dialog",
3912
- // set inline style for maxHeight based on available space (converted to px)
3913
- style: menuMaxHeight ? {
3956
+ "data-placement": placement,
3957
+ // Portaled to document.body with position:fixed so the menu
3958
+ // escapes any ancestor overflow:hidden|auto|scroll. Coordinates
3959
+ // are anchored to the trigger's viewport rect; width matches the
3960
+ // trigger; maxHeight is driven by available space.
3961
+ style: _objectSpread$C({
3962
+ left: menuCoords ? "".concat(menuCoords.left, "px") : undefined,
3963
+ top: menuCoords ? "".concat(menuCoords.top, "px") : undefined,
3964
+ width: menuCoords ? "".concat(menuCoords.width, "px") : undefined
3965
+ }, menuMaxHeight ? {
3914
3966
  maxHeight: "".concat(menuMaxHeight + 10, "px"),
3915
3967
  overflow: "auto"
3916
- } : {},
3968
+ } : {}),
3917
3969
  children: [searchable && jsx("div", {
3918
3970
  className: "border-b border-gray-200 p-2",
3919
3971
  children: jsxs("div", {
@@ -3956,7 +4008,7 @@ var Select = /*#__PURE__*/React__default.forwardRef(function (_ref, forwardedRef
3956
4008
  "aria-multiselectable": multiSelect,
3957
4009
  children: grouped ? renderGroupedOptions() : renderFlatOptions()
3958
4010
  })]
3959
- })]
4011
+ }), document.body)]
3960
4012
  }), error && jsx("p", {
3961
4013
  className: "mt-1 text-sm text-error-500",
3962
4014
  children: error
@@ -4741,7 +4793,7 @@ function MobileCard(_ref) {
4741
4793
  }, key);
4742
4794
  }
4743
4795
 
4744
- 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"];
4796
+ 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"];
4745
4797
  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; }
4746
4798
  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; }
4747
4799
  var DEFAULT_DATA = [];
@@ -4809,6 +4861,7 @@ var Table = function Table(_ref) {
4809
4861
  _ref$totalRecords = _ref.totalRecords,
4810
4862
  totalRecords = _ref$totalRecords === void 0 ? 0 : _ref$totalRecords,
4811
4863
  pageNumber = _ref.pageNumber,
4864
+ onPageChange = _ref.onPageChange,
4812
4865
  _ref$TheadComponent = _ref.TheadComponent,
4813
4866
  TheadComponent = _ref$TheadComponent === void 0 ? null : _ref$TheadComponent,
4814
4867
  _ref$TfootComponent = _ref.TfootComponent,
@@ -5149,7 +5202,8 @@ var Table = function Table(_ref) {
5149
5202
  }, [applyGlobalSearch]);
5150
5203
  var handlePageChange = useCallback(function (newPage) {
5151
5204
  setCurrentPage(newPage);
5152
- }, []);
5205
+ onPageChange === null || onPageChange === void 0 || onPageChange(newPage);
5206
+ }, [onPageChange]);
5153
5207
  var renderCell = useCallback(function (column, row, globalIndex) {
5154
5208
  if (column.render) return column.render(row, globalIndex);
5155
5209
  return row === null || row === void 0 ? void 0 : row[column.key];
@@ -16556,7 +16610,7 @@ function _objectSpread$h(e) { for (var r = 1; r < arguments.length; r++) { var t
16556
16610
  * - isMobileOpen, setIsMobileOpen
16557
16611
  * - showCollapsedTooltips: boolean (default true)
16558
16612
  */
16559
- var Sidebar = function Sidebar(_ref2) {
16613
+ var Sidebar = /*#__PURE__*/React__default.forwardRef(function (_ref2, ref) {
16560
16614
  var _ref2$items = _ref2.items,
16561
16615
  items = _ref2$items === void 0 ? [] : _ref2$items,
16562
16616
  _ref2$collapsed = _ref2.collapsed,
@@ -16799,6 +16853,7 @@ var Sidebar = function Sidebar(_ref2) {
16799
16853
  children: [jsx("div", {
16800
16854
  className: "hidden md:flex sticky top-0 h-screen",
16801
16855
  children: jsx("div", _objectSpread$h(_objectSpread$h({
16856
+ ref: ref,
16802
16857
  className: cn$1(desktopPlacementClass, className)
16803
16858
  }, props), {}, {
16804
16859
  children: SidebarContent
@@ -16819,7 +16874,8 @@ var Sidebar = function Sidebar(_ref2) {
16819
16874
  children: SidebarContent
16820
16875
  })]
16821
16876
  });
16822
- };
16877
+ });
16878
+ Sidebar.displayName = "Sidebar";
16823
16879
 
16824
16880
  var _excluded$c = ["trigger", "children", "placement", "className"];
16825
16881
  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; }
@@ -16871,7 +16927,7 @@ var Dropdown = function Dropdown(_ref) {
16871
16927
  };
16872
16928
 
16873
16929
  var _excluded$b = ["emitter", "content", "notifications"],
16874
- _excluded2$2 = ["emitter", "logo", "items", "user", "notifications", "searchable", "onSearch", "leftIcon", "rightMenuContent", "onLeftIconClick", "onLoginClick", "onLogoutClick", "className"];
16930
+ _excluded2$2 = ["emitter", "logo", "items", "user", "notifications", "searchable", "onSearch", "leftIcon", "rightMenuContent", "onLeftIconClick", "onLoginClick", "onLogoutClick", "className", "onFetch", "isMobileOpen", "setIsMobileOpen"];
16875
16931
  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; }
16876
16932
  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; }
16877
16933
  // Simplified Notifications, uses notifications from props and a single effect for fetch/update
@@ -17018,7 +17074,7 @@ var styledClassNames = {
17018
17074
  icon: "h-6 w-6",
17019
17075
  dropdown: "w-56 rounded-md border border-gray-200 bg-white py-1 shadow-lg"
17020
17076
  };
17021
- var Navbar = function Navbar(_ref3) {
17077
+ var Navbar = /*#__PURE__*/React__default.forwardRef(function (_ref3, ref) {
17022
17078
  var emitter = _ref3.emitter,
17023
17079
  logo = _ref3.logo,
17024
17080
  _ref3$items = _ref3.items,
@@ -17042,7 +17098,10 @@ var Navbar = function Navbar(_ref3) {
17042
17098
  return console.log("invoked onLogoutClick");
17043
17099
  } : _ref3$onLogoutClick,
17044
17100
  className = _ref3.className,
17045
- props = _objectWithoutProperties$1(_ref3, _excluded2$2);
17101
+ onFetch = _ref3.onFetch;
17102
+ _ref3.isMobileOpen;
17103
+ _ref3.setIsMobileOpen;
17104
+ var props = _objectWithoutProperties$1(_ref3, _excluded2$2);
17046
17105
  var _useState3 = useState(false),
17047
17106
  _useState4 = _slicedToArray(_useState3, 2),
17048
17107
  isMobileMenuOpen = _useState4[0],
@@ -17111,6 +17170,7 @@ var Navbar = function Navbar(_ref3) {
17111
17170
  }, rest));
17112
17171
  };
17113
17172
  return jsxs("nav", _objectSpread$f(_objectSpread$f({
17173
+ ref: ref,
17114
17174
  className: cn$1("bg-white border-b border-gray-200 px-4 sm:px-6 lg:px-8", className)
17115
17175
  }, props), {}, {
17116
17176
  children: [jsxs("div", {
@@ -17155,7 +17215,8 @@ var Navbar = function Navbar(_ref3) {
17155
17215
  })]
17156
17216
  })
17157
17217
  }), jsx(RightMenuComponent, {
17158
- notifications: notifications
17218
+ notifications: notifications,
17219
+ onFetch: onFetch
17159
17220
  }), !user && jsx("button", {
17160
17221
  className: styledClassNames.button,
17161
17222
  onClick: handleLoginClick,
@@ -17247,7 +17308,7 @@ var Navbar = function Navbar(_ref3) {
17247
17308
  })
17248
17309
  })]
17249
17310
  }));
17250
- };
17311
+ });
17251
17312
  Navbar.displayName = "Navbar";
17252
17313
  Navbar.propTypes = {
17253
17314
  emitter: PropTypes.object.isRequired,
@@ -17262,12 +17323,13 @@ Navbar.propTypes = {
17262
17323
  var _excluded$a = ["items", "className"];
17263
17324
  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; }
17264
17325
  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; }
17265
- var FootNav = function FootNav(_ref) {
17326
+ var FootNav = /*#__PURE__*/React__default.forwardRef(function (_ref, ref) {
17266
17327
  var _ref$items = _ref.items,
17267
17328
  items = _ref$items === void 0 ? [] : _ref$items,
17268
17329
  className = _ref.className,
17269
17330
  props = _objectWithoutProperties$1(_ref, _excluded$a);
17270
17331
  return jsx("nav", _objectSpread$e(_objectSpread$e({
17332
+ ref: ref,
17271
17333
  className: cn$1('fixed bottom-0 left-0 right-0 bg-white border-t border-gray-200 px-4 py-2 md:hidden', className)
17272
17334
  }, props), {}, {
17273
17335
  children: jsx("div", {
@@ -17295,12 +17357,13 @@ var FootNav = function FootNav(_ref) {
17295
17357
  })
17296
17358
  })
17297
17359
  }));
17298
- };
17360
+ });
17361
+ FootNav.displayName = 'FootNav';
17299
17362
 
17300
17363
  var _excluded$9 = ["items", "separator", "showHome", "homeIcon", "onHomeClick", "className"];
17301
17364
  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; }
17302
17365
  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; }
17303
- var Breadcrumbs = function Breadcrumbs(_ref) {
17366
+ var Breadcrumbs = /*#__PURE__*/React__default.forwardRef(function (_ref, ref) {
17304
17367
  var _ref$items = _ref.items,
17305
17368
  items = _ref$items === void 0 ? [] : _ref$items,
17306
17369
  _ref$separator = _ref.separator,
@@ -17324,6 +17387,7 @@ var Breadcrumbs = function Breadcrumbs(_ref) {
17324
17387
  onClick: onHomeClick
17325
17388
  }].concat(_toConsumableArray$1(items)) : items;
17326
17389
  return jsx("nav", _objectSpread$d(_objectSpread$d({
17390
+ ref: ref,
17327
17391
  className: cn$1('flex items-center space-x-1 text-sm', className),
17328
17392
  "aria-label": "Breadcrumb"
17329
17393
  }, props), {}, {
@@ -17357,7 +17421,8 @@ var Breadcrumbs = function Breadcrumbs(_ref) {
17357
17421
  }, item.id);
17358
17422
  })
17359
17423
  }));
17360
- };
17424
+ });
17425
+ Breadcrumbs.displayName = 'Breadcrumbs';
17361
17426
 
17362
17427
  var _excluded$8 = ["isOpen", "onClose", "title", "children", "size", "dismissible", "showCloseButton", "footer", "className", "onOpen"],
17363
17428
  _excluded2$1 = ["children", "className"],
@@ -17373,7 +17438,19 @@ var getFocusable = function getFocusable(root) {
17373
17438
  return el.getAttribute('aria-hidden') !== 'true';
17374
17439
  }) : [];
17375
17440
  };
17376
- var Dialog = function Dialog(_ref) {
17441
+ // Assign one node to several refs (callback or object). Lets the dialog keep
17442
+ // its internal `dialogRef` for the focus trap while still exposing the panel
17443
+ // node to a consumer-supplied `ref` (issue #56).
17444
+ var setRefs = function setRefs(node) {
17445
+ for (var _len = arguments.length, refs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
17446
+ refs[_key - 1] = arguments[_key];
17447
+ }
17448
+ refs.forEach(function (ref) {
17449
+ if (!ref) return;
17450
+ if (typeof ref === 'function') ref(node);else ref.current = node;
17451
+ });
17452
+ };
17453
+ var Dialog = /*#__PURE__*/React__default.forwardRef(function (_ref, _ref3) {
17377
17454
  var isOpen = _ref.isOpen,
17378
17455
  onClose = _ref.onClose,
17379
17456
  title = _ref.title,
@@ -17464,7 +17541,9 @@ var Dialog = function Dialog(_ref) {
17464
17541
  className: "fixed inset-0 z-50 flex items-center justify-center bg-black bg-opacity-50 p-4",
17465
17542
  onClick: handleBackdropClick,
17466
17543
  children: jsxs("div", _objectSpread$c(_objectSpread$c({
17467
- ref: dialogRef,
17544
+ ref: function ref(node) {
17545
+ return setRefs(node, dialogRef, _ref3);
17546
+ },
17468
17547
  className: cn$1('w-full rounded-lg bg-white shadow-xl animate-scale-in motion-reduce:animate-none', sizeClasses[size], className),
17469
17548
  tabIndex: -1,
17470
17549
  role: "dialog",
@@ -17495,32 +17574,33 @@ var Dialog = function Dialog(_ref) {
17495
17574
  })]
17496
17575
  }))
17497
17576
  }), document.body);
17498
- };
17577
+ });
17578
+ Dialog.displayName = 'Dialog';
17499
17579
  // Dialog components for composition
17500
- Dialog.Header = function (_ref3) {
17501
- var children = _ref3.children,
17502
- className = _ref3.className,
17503
- props = _objectWithoutProperties$1(_ref3, _excluded2$1);
17580
+ Dialog.Header = function (_ref4) {
17581
+ var children = _ref4.children,
17582
+ className = _ref4.className,
17583
+ props = _objectWithoutProperties$1(_ref4, _excluded2$1);
17504
17584
  return jsx("div", _objectSpread$c(_objectSpread$c({
17505
17585
  className: cn$1('border-b border-gray-200 px-6 py-4', className)
17506
17586
  }, props), {}, {
17507
17587
  children: children
17508
17588
  }));
17509
17589
  };
17510
- Dialog.Body = function (_ref4) {
17511
- var children = _ref4.children,
17512
- className = _ref4.className,
17513
- props = _objectWithoutProperties$1(_ref4, _excluded3$1);
17590
+ Dialog.Body = function (_ref5) {
17591
+ var children = _ref5.children,
17592
+ className = _ref5.className,
17593
+ props = _objectWithoutProperties$1(_ref5, _excluded3$1);
17514
17594
  return jsx("div", _objectSpread$c(_objectSpread$c({
17515
17595
  className: cn$1('px-6 py-4', className)
17516
17596
  }, props), {}, {
17517
17597
  children: children
17518
17598
  }));
17519
17599
  };
17520
- Dialog.Footer = function (_ref5) {
17521
- var children = _ref5.children,
17522
- className = _ref5.className,
17523
- props = _objectWithoutProperties$1(_ref5, _excluded4$1);
17600
+ Dialog.Footer = function (_ref6) {
17601
+ var children = _ref6.children,
17602
+ className = _ref6.className,
17603
+ props = _objectWithoutProperties$1(_ref6, _excluded4$1);
17524
17604
  return jsx("div", _objectSpread$c(_objectSpread$c({
17525
17605
  className: cn$1('flex items-center justify-end gap-3 border-t border-gray-200 px-6 py-4', className)
17526
17606
  }, props), {}, {
@@ -17531,7 +17611,7 @@ Dialog.Footer = function (_ref5) {
17531
17611
  var _excluded$7 = ["id", "title", "message", "type", "duration", "onClose", "position"];
17532
17612
  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; }
17533
17613
  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; }
17534
- var Toast = function Toast(_ref) {
17614
+ var Toast = /*#__PURE__*/React__default.forwardRef(function (_ref, ref) {
17535
17615
  var id = _ref.id,
17536
17616
  title = _ref.title,
17537
17617
  message = _ref.message,
@@ -17587,6 +17667,7 @@ var Toast = function Toast(_ref) {
17587
17667
  };
17588
17668
  if (!isVisible) return null;
17589
17669
  return /*#__PURE__*/createPortal(jsx("div", _objectSpread$b(_objectSpread$b({
17670
+ ref: ref,
17590
17671
  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])
17591
17672
  }, props), {}, {
17592
17673
  children: jsxs("div", {
@@ -17613,7 +17694,8 @@ var Toast = function Toast(_ref) {
17613
17694
  })]
17614
17695
  })
17615
17696
  })), document.body);
17616
- };
17697
+ });
17698
+ Toast.displayName = 'Toast';
17617
17699
  // Toast Container Component
17618
17700
  var ToastContainer = function ToastContainer(_ref2) {
17619
17701
  var _ref2$toasts = _ref2.toasts,
@@ -17693,7 +17775,7 @@ var useToast = function useToast() {
17693
17775
  var _excluded$6 = ["variant", "title", "children", "dismissible", "onDismiss", "className"];
17694
17776
  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; }
17695
17777
  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; }
17696
- var Alert = function Alert(_ref) {
17778
+ var Alert = /*#__PURE__*/React__default.forwardRef(function (_ref, ref) {
17697
17779
  var _ref$variant = _ref.variant,
17698
17780
  variant = _ref$variant === void 0 ? 'info' : _ref$variant,
17699
17781
  title = _ref.title,
@@ -17739,6 +17821,7 @@ var Alert = function Alert(_ref) {
17739
17821
  };
17740
17822
  var variantStyles = variants[variant];
17741
17823
  return jsx("div", _objectSpread$a(_objectSpread$a({
17824
+ ref: ref,
17742
17825
  className: cn$1('rounded-md border p-4', variantStyles.container, className),
17743
17826
  role: "alert"
17744
17827
  }, props), {}, {
@@ -17776,12 +17859,13 @@ var Alert = function Alert(_ref) {
17776
17859
  })]
17777
17860
  })
17778
17861
  }));
17779
- };
17862
+ });
17863
+ Alert.displayName = 'Alert';
17780
17864
 
17781
17865
  var _excluded$5 = ["children", "variant", "size", "rounded", "className"];
17782
17866
  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; }
17783
17867
  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; }
17784
- var Badge = function Badge(_ref) {
17868
+ var Badge = /*#__PURE__*/React__default.forwardRef(function (_ref, ref) {
17785
17869
  var children = _ref.children,
17786
17870
  _ref$variant = _ref.variant,
17787
17871
  variant = _ref$variant === void 0 ? 'default' : _ref$variant,
@@ -17806,6 +17890,7 @@ var Badge = function Badge(_ref) {
17806
17890
  lg: 'px-3 py-1 text-base'
17807
17891
  };
17808
17892
  return jsx("span", _objectSpread$9(_objectSpread$9({
17893
+ ref: ref,
17809
17894
  className: cn$1('inline-flex items-center font-medium', variants[variant], sizes[size], {
17810
17895
  'rounded-full': rounded,
17811
17896
  'rounded-md': !rounded
@@ -17813,12 +17898,13 @@ var Badge = function Badge(_ref) {
17813
17898
  }, props), {}, {
17814
17899
  children: children
17815
17900
  }));
17816
- };
17901
+ });
17902
+ Badge.displayName = 'Badge';
17817
17903
 
17818
17904
  var _excluded$4 = ["src", "alt", "name", "size", "shape", "status", "className"];
17819
17905
  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; }
17820
17906
  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; }
17821
- var Avatar = function Avatar(_ref) {
17907
+ var Avatar = /*#__PURE__*/React__default.forwardRef(function (_ref, ref) {
17822
17908
  var src = _ref.src,
17823
17909
  alt = _ref.alt,
17824
17910
  name = _ref.name,
@@ -17858,6 +17944,7 @@ var Avatar = function Avatar(_ref) {
17858
17944
  '2xl': 'h-5 w-5'
17859
17945
  };
17860
17946
  return jsxs("div", {
17947
+ ref: ref,
17861
17948
  className: "relative inline-block",
17862
17949
  children: [jsxs("div", _objectSpread$8(_objectSpread$8({
17863
17950
  className: cn$1('flex items-center justify-center bg-gray-100 text-primary-600 font-medium', sizes[size], {
@@ -17894,7 +17981,8 @@ var Avatar = function Avatar(_ref) {
17894
17981
  className: cn$1('absolute bottom-0 right-0 rounded-full border-2 border-white', statusColors[status], statusSizes[size])
17895
17982
  })]
17896
17983
  });
17897
- };
17984
+ });
17985
+ Avatar.displayName = 'Avatar';
17898
17986
 
17899
17987
  var _excluded$3 = ["children", "className", "hover"],
17900
17988
  _excluded2 = ["children", "className"],
@@ -17904,20 +17992,22 @@ var _excluded$3 = ["children", "className", "hover"],
17904
17992
  _excluded6 = ["children", "className"];
17905
17993
  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; }
17906
17994
  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; }
17907
- var Card = function Card(_ref) {
17995
+ var Card = /*#__PURE__*/React__default.forwardRef(function (_ref, ref) {
17908
17996
  var children = _ref.children,
17909
17997
  className = _ref.className,
17910
17998
  _ref$hover = _ref.hover,
17911
17999
  hover = _ref$hover === void 0 ? false : _ref$hover,
17912
18000
  props = _objectWithoutProperties$1(_ref, _excluded$3);
17913
18001
  return jsx("div", _objectSpread$7(_objectSpread$7({
18002
+ ref: ref,
17914
18003
  className: cn$1('rounded-lg border border-gray-200 bg-white shadow-sm', {
17915
18004
  'hover:shadow-md transition-shadow': hover
17916
18005
  }, className)
17917
18006
  }, props), {}, {
17918
18007
  children: children
17919
18008
  }));
17920
- };
18009
+ });
18010
+ Card.displayName = 'Card';
17921
18011
  var CardHeader = function CardHeader(_ref2) {
17922
18012
  var children = _ref2.children,
17923
18013
  className = _ref2.className,
@@ -17977,7 +18067,7 @@ Card.Footer = CardFooter;
17977
18067
  var _excluded$2 = ["currentPage", "totalPages", "onPageChange", "showFirstLast", "showPrevNext", "maxVisiblePages", "className"];
17978
18068
  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; }
17979
18069
  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; }
17980
- var Pagination = function Pagination(_ref) {
18070
+ var Pagination = /*#__PURE__*/React__default.forwardRef(function (_ref, ref) {
17981
18071
  var _ref$currentPage = _ref.currentPage,
17982
18072
  currentPage = _ref$currentPage === void 0 ? 1 : _ref$currentPage,
17983
18073
  _ref$totalPages = _ref.totalPages,
@@ -18017,6 +18107,7 @@ var Pagination = function Pagination(_ref) {
18017
18107
  };
18018
18108
  if (totalPages <= 1) return null;
18019
18109
  return jsxs("nav", _objectSpread$6(_objectSpread$6({
18110
+ ref: ref,
18020
18111
  className: cn$1('flex items-center justify-center space-x-1', className),
18021
18112
  "aria-label": "Pagination"
18022
18113
  }, props), {}, {
@@ -18075,12 +18166,13 @@ var Pagination = function Pagination(_ref) {
18075
18166
  children: totalPages
18076
18167
  })]
18077
18168
  }));
18078
- };
18169
+ });
18170
+ Pagination.displayName = 'Pagination';
18079
18171
 
18080
18172
  var _excluded$1 = ["steps", "currentStep", "orientation", "variant", "onStepClick", "className"];
18081
18173
  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; }
18082
18174
  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; }
18083
- var Stepper = function Stepper(_ref) {
18175
+ var Stepper = /*#__PURE__*/React__default.forwardRef(function (_ref, ref) {
18084
18176
  var _ref$steps = _ref.steps,
18085
18177
  steps = _ref$steps === void 0 ? [] : _ref$steps,
18086
18178
  _ref$currentStep = _ref.currentStep,
@@ -18114,6 +18206,7 @@ var Stepper = function Stepper(_ref) {
18114
18206
  }
18115
18207
  };
18116
18208
  return jsx("nav", _objectSpread$5(_objectSpread$5({
18209
+ ref: ref,
18117
18210
  className: cn$1('flex', {
18118
18211
  'flex-col': orientation === 'vertical',
18119
18212
  'flex-row': orientation === 'horizontal'
@@ -18168,12 +18261,13 @@ var Stepper = function Stepper(_ref) {
18168
18261
  }, step.id || stepIndex);
18169
18262
  })
18170
18263
  }));
18171
- };
18264
+ });
18265
+ Stepper.displayName = 'Stepper';
18172
18266
 
18173
18267
  var _excluded = ["accept", "multiple", "maxSize", "onFileSelect", "onFileRemove", "files", "disabled", "className"];
18174
18268
  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; }
18175
18269
  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; }
18176
- var FileUpload = function FileUpload(_ref) {
18270
+ var FileUpload = /*#__PURE__*/React__default.forwardRef(function (_ref, ref) {
18177
18271
  var accept = _ref.accept,
18178
18272
  _ref$multiple = _ref.multiple,
18179
18273
  multiple = _ref$multiple === void 0 ? false : _ref$multiple,
@@ -18265,6 +18359,7 @@ var FileUpload = function FileUpload(_ref) {
18265
18359
  }
18266
18360
  };
18267
18361
  return jsxs("div", _objectSpread$4(_objectSpread$4({
18362
+ ref: ref,
18268
18363
  className: cn$1('w-full', className)
18269
18364
  }, props), {}, {
18270
18365
  children: [jsxs("div", {
@@ -18337,7 +18432,8 @@ var FileUpload = function FileUpload(_ref) {
18337
18432
  })
18338
18433
  })]
18339
18434
  }));
18340
- };
18435
+ });
18436
+ FileUpload.displayName = 'FileUpload';
18341
18437
 
18342
18438
  var Condition = function Condition(_ref) {
18343
18439
  var condition = _ref.condition,
@@ -18347,7 +18443,7 @@ var Condition = function Condition(_ref) {
18347
18443
  return condition ? children : fallback;
18348
18444
  };
18349
18445
 
18350
- function Carousel(props) {
18446
+ var Carousel = /*#__PURE__*/React__default.forwardRef(function Carousel(props, ref) {
18351
18447
  var children = props.children,
18352
18448
  _props$autoPlay = props.autoPlay,
18353
18449
  autoPlay = _props$autoPlay === void 0 ? false : _props$autoPlay,
@@ -18387,6 +18483,7 @@ function Carousel(props) {
18387
18483
  }, [autoPlay, isPaused, next, interval]);
18388
18484
  var childrenArray = React__default.Children.toArray(children);
18389
18485
  return jsxs("div", {
18486
+ ref: ref,
18390
18487
  className: cn$1("relative group overflow-hidden rounded-xl bg-card border border-border/50 shadow-sm", className),
18391
18488
  onMouseEnter: function onMouseEnter() {
18392
18489
  return setIsPaused(true);
@@ -18432,7 +18529,8 @@ function Carousel(props) {
18432
18529
  })
18433
18530
  })]
18434
18531
  });
18435
- }
18532
+ });
18533
+ Carousel.displayName = "Carousel";
18436
18534
 
18437
18535
  var ThemeContext = /*#__PURE__*/createContext(undefined);
18438
18536
  var useTheme = function useTheme() {