@hyphen/hyphen-components 7.3.0 → 7.3.2

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.
@@ -3899,9 +3899,13 @@ var _excluded$3 = ["defaultOpen", "open", "storageKey", "onOpenChange", "classNa
3899
3899
  _excluded14 = ["className"],
3900
3900
  _excluded15 = ["className"];
3901
3901
  var SIDEBAR_WIDTH = '16rem';
3902
+ var SIDEBAR_RIGHT_WIDTH = '24rem';
3902
3903
  var SIDEBAR_WIDTH_ICON = '44px';
3903
- var SIDEBAR_KEYBOARD_SHORTCUT = '[';
3904
- var SidebarContext = /*#__PURE__*/React.createContext(null);
3904
+ var SIDEBAR_KEYBOARD_SHORTCUT_LEFT = '[';
3905
+ var SIDEBAR_KEYBOARD_SHORTCUT_RIGHT = ']';
3906
+ var SidebarIsMobileContext = /*#__PURE__*/React.createContext(null);
3907
+ var SidebarLeftContext = /*#__PURE__*/React.createContext(null);
3908
+ var SidebarRightContext = /*#__PURE__*/React.createContext(null);
3905
3909
  var SidebarSideContext = /*#__PURE__*/React.createContext('left');
3906
3910
  var resolveSideValue = function resolveSideValue(value, side, fallback) {
3907
3911
  if (typeof value === 'boolean') {
@@ -3931,6 +3935,16 @@ var resolveStorageKey = function resolveStorageKey(storageKey, side) {
3931
3935
  }
3932
3936
  return side === 'left' ? 'sidebar_expanded' : 'sidebar_expanded_right';
3933
3937
  };
3938
+ var getSidebarWidth = function getSidebarWidth(state, collapsible) {
3939
+ return state === 'collapsed' && collapsible === 'icon' ? 'var(--sidebar-width-icon)' : state === 'collapsed' ? '0' : 'var(--sidebar-width)';
3940
+ };
3941
+ var getSidebarOffsetStyles = function getSidebarOffsetStyles(side, state, collapsible) {
3942
+ var isVisible = state === 'expanded' || collapsible === 'icon';
3943
+ return {
3944
+ left: side === 'left' ? isVisible ? '0' : 'calc(var(--sidebar-width)*-1)' : undefined,
3945
+ right: side === 'right' ? isVisible ? '0' : 'calc(var(--sidebar-width)*-1)' : undefined
3946
+ };
3947
+ };
3934
3948
  var useSidebarSideState = function useSidebarSideState(_ref) {
3935
3949
  var side = _ref.side,
3936
3950
  isMobile = _ref.isMobile,
@@ -3992,14 +4006,18 @@ var useSidebarSideState = function useSidebarSideState(_ref) {
3992
4006
  }, [state, open, setOpen, openMobile, setOpenMobile, toggleSidebar]);
3993
4007
  };
3994
4008
  function useSidebar(sideOverride) {
3995
- var context = React.useContext(SidebarContext);
3996
- if (!context) {
4009
+ var isMobile = React.useContext(SidebarIsMobileContext);
4010
+ if (typeof isMobile !== 'boolean') {
3997
4011
  throw new Error('useSidebar must be used within a SidebarProvider.');
3998
4012
  }
3999
4013
  var contextSide = React.useContext(SidebarSideContext);
4000
4014
  var side = sideOverride != null ? sideOverride : contextSide;
4001
- return _extends({}, context.sides[side], {
4002
- isMobile: context.isMobile,
4015
+ var sideContext = React.useContext(side === 'left' ? SidebarLeftContext : SidebarRightContext);
4016
+ if (!sideContext) {
4017
+ throw new Error('useSidebar must be used within a SidebarProvider.');
4018
+ }
4019
+ return _extends({}, sideContext, {
4020
+ isMobile: isMobile,
4003
4021
  side: side
4004
4022
  });
4005
4023
  }
@@ -4016,6 +4034,8 @@ var SidebarProvider = /*#__PURE__*/React.forwardRef(function (_ref2, ref) {
4016
4034
  props = _objectWithoutPropertiesLoose(_ref2, _excluded$3);
4017
4035
  var isMobile = useIsMobile();
4018
4036
  var lastToggledSideRef = React.useRef('left');
4037
+ var leftToggleRef = React.useRef(null);
4038
+ var rightToggleRef = React.useRef(null);
4019
4039
  var leftState = useSidebarSideState({
4020
4040
  side: 'left',
4021
4041
  isMobile: isMobile,
@@ -4034,31 +4054,37 @@ var SidebarProvider = /*#__PURE__*/React.forwardRef(function (_ref2, ref) {
4034
4054
  storageKey: storageKey,
4035
4055
  lastToggledSideRef: lastToggledSideRef
4036
4056
  });
4037
- // Keydown event handler for toggling sidebar
4057
+ React.useEffect(function () {
4058
+ leftToggleRef.current = leftState.toggleSidebar;
4059
+ }, [leftState.toggleSidebar]);
4060
+ React.useEffect(function () {
4061
+ rightToggleRef.current = rightState.toggleSidebar;
4062
+ }, [rightState.toggleSidebar]);
4038
4063
  React.useEffect(function () {
4039
4064
  var handleKeyDown = function handleKeyDown(event) {
4040
- if (event.key === SIDEBAR_KEYBOARD_SHORTCUT) {
4041
- event.preventDefault();
4042
- var sideToToggle = lastToggledSideRef.current;
4043
- (sideToToggle === 'left' ? leftState : rightState).toggleSidebar();
4065
+ var target = event.target;
4066
+ if (target && (target.tagName === 'INPUT' || target.tagName === 'TEXTAREA' || target.tagName === 'SELECT' || target.isContentEditable)) {
4067
+ return;
4068
+ }
4069
+ var shortcutSide = event.key === SIDEBAR_KEYBOARD_SHORTCUT_LEFT ? 'left' : event.key === SIDEBAR_KEYBOARD_SHORTCUT_RIGHT ? 'right' : null;
4070
+ if (!shortcutSide) {
4071
+ return;
4044
4072
  }
4073
+ event.preventDefault();
4074
+ var toggleSidebar = shortcutSide === 'left' ? leftToggleRef.current : rightToggleRef.current;
4075
+ toggleSidebar == null || toggleSidebar();
4045
4076
  };
4046
4077
  window.addEventListener('keydown', handleKeyDown);
4047
4078
  return function () {
4048
4079
  return window.removeEventListener('keydown', handleKeyDown);
4049
4080
  };
4050
- }, [leftState, rightState]);
4051
- var contextValue = React.useMemo(function () {
4052
- return {
4053
- isMobile: isMobile,
4054
- sides: {
4055
- left: leftState,
4056
- right: rightState
4057
- }
4058
- };
4059
- }, [isMobile, leftState, rightState]);
4060
- return React.createElement(SidebarContext.Provider, {
4061
- value: contextValue
4081
+ }, []);
4082
+ return React.createElement(SidebarIsMobileContext.Provider, {
4083
+ value: isMobile
4084
+ }, React.createElement(SidebarLeftContext.Provider, {
4085
+ value: leftState
4086
+ }, React.createElement(SidebarRightContext.Provider, {
4087
+ value: rightState
4062
4088
  }, React.createElement(TooltipProvider, {
4063
4089
  delayDuration: 0
4064
4090
  }, React.createElement("div", _extends({
@@ -4067,9 +4093,9 @@ var SidebarProvider = /*#__PURE__*/React.forwardRef(function (_ref2, ref) {
4067
4093
  '--sidebar-width-icon': SIDEBAR_WIDTH_ICON,
4068
4094
  minBlockSize: '100svh'
4069
4095
  }, style),
4070
- className: classNames('display-flex w-100 background-color-secondary', className),
4096
+ className: classNames('display-flex w-100 background-color-secondary overflow-hidden', className),
4071
4097
  ref: ref
4072
- }, props), children)));
4098
+ }, props), children)))));
4073
4099
  });
4074
4100
  SidebarProvider.displayName = 'SidebarProvider';
4075
4101
  var Sidebar = /*#__PURE__*/React.forwardRef(function (_ref3, ref) {
@@ -4085,6 +4111,7 @@ var Sidebar = /*#__PURE__*/React.forwardRef(function (_ref3, ref) {
4085
4111
  state = _useSidebar.state,
4086
4112
  openMobile = _useSidebar.openMobile,
4087
4113
  setOpenMobile = _useSidebar.setOpenMobile;
4114
+ var sidebarWidth = side === 'right' ? SIDEBAR_RIGHT_WIDTH : SIDEBAR_WIDTH;
4088
4115
  if (isMobile) {
4089
4116
  return React.createElement(SidebarSideContext.Provider, {
4090
4117
  value: side
@@ -4106,6 +4133,7 @@ var Sidebar = /*#__PURE__*/React.forwardRef(function (_ref3, ref) {
4106
4133
  }, React.createElement("div", _extends({
4107
4134
  className: classNames('group display-flex h-100 font-size-xs flex-direction-column background-color-secondary font-color-base', className),
4108
4135
  style: {
4136
+ '--sidebar-width': sidebarWidth,
4109
4137
  width: 'var(--sidebar-width)'
4110
4138
  },
4111
4139
  ref: ref
@@ -4123,9 +4151,9 @@ var Sidebar = /*#__PURE__*/React.forwardRef(function (_ref3, ref) {
4123
4151
  color: "base",
4124
4152
  fontSize: "sm",
4125
4153
  position: "relative",
4126
- style: side === 'right' && collapsible === 'offcanvas' ? {
4127
- overflowX: 'hidden'
4128
- } : undefined,
4154
+ style: {
4155
+ '--sidebar-width': sidebarWidth
4156
+ },
4129
4157
  "data-state": state,
4130
4158
  "data-collapsible": collapsible,
4131
4159
  "data-side": side,
@@ -4137,15 +4165,13 @@ var Sidebar = /*#__PURE__*/React.forwardRef(function (_ref3, ref) {
4137
4165
  transitionDuration: 'var(--sidebar-transition-duration, 200ms)',
4138
4166
  animationDuration: 'var(--sidebar-transition-duration, 200ms)',
4139
4167
  transitionProperty: 'width',
4140
- width: state === 'collapsed' && collapsible === 'icon' ? 'var(--sidebar-width-icon)' : state === 'collapsed' ? '0' : 'var(--sidebar-width)',
4168
+ width: getSidebarWidth(state, collapsible),
4141
4169
  height: '100svh'
4142
4170
  },
4143
4171
  className: classNames('position-relative', className)
4144
4172
  }), React.createElement("div", _extends({
4145
4173
  className: classNames('position-absolute display-none display-flex-desktop ', className),
4146
- style: {
4147
- left: side === 'left' && (state === 'expanded' || collapsible === 'icon') ? '0' : side === 'left' ? 'calc(var(--sidebar-width)*-1)' : undefined,
4148
- right: side === 'right' && (state === 'expanded' || collapsible === 'icon') ? '0' : side === 'right' ? 'calc(var(--sidebar-width)*-1)' : undefined,
4174
+ style: _extends({}, getSidebarOffsetStyles(side, state, collapsible), {
4149
4175
  top: '0',
4150
4176
  bottom: '0',
4151
4177
  zIndex: 'var(--size-z-index-drawer)',
@@ -4156,7 +4182,7 @@ var Sidebar = /*#__PURE__*/React.forwardRef(function (_ref3, ref) {
4156
4182
  transitionProperty: 'left, right, width',
4157
4183
  width: state === 'collapsed' && collapsible === 'icon' ? 'var(--sidebar-width-icon)' : 'var(--sidebar-width)',
4158
4184
  height: '100svh'
4159
- }
4185
+ })
4160
4186
  }, props), React.createElement("div", {
4161
4187
  "data-sidebar": "sidebar",
4162
4188
  className: classNames('display-flex h-100 w-100 flex-direction-column background-color-secondary font-color-base', {
@@ -4388,6 +4414,7 @@ var SidebarRail = /*#__PURE__*/React.forwardRef(function (_ref16, ref) {
4388
4414
  open = _useSidebar5.open,
4389
4415
  toggleSidebar = _useSidebar5.toggleSidebar,
4390
4416
  side = _useSidebar5.side;
4417
+ var shortcutLabel = side === 'left' ? SIDEBAR_KEYBOARD_SHORTCUT_LEFT : SIDEBAR_KEYBOARD_SHORTCUT_RIGHT;
4391
4418
  var caretIcon = open ? side === 'right' ? 'caret-sm-right' : 'caret-sm-left' : side === 'right' ? 'caret-sm-left' : 'caret-sm-right';
4392
4419
  return React.createElement("button", _extends({
4393
4420
  ref: ref,
@@ -4395,7 +4422,7 @@ var SidebarRail = /*#__PURE__*/React.forwardRef(function (_ref16, ref) {
4395
4422
  "aria-label": "Toggle Sidebar",
4396
4423
  tabIndex: -1,
4397
4424
  onClick: toggleSidebar,
4398
- title: "Toggle Sidebar [",
4425
+ title: "Toggle Sidebar " + shortcutLabel,
4399
4426
  className: classNames(styles$8.rail, 'hover-show-child background-color-transparent display-flex p-top-5xl p-left-xl p-right-0 justify-content-center position-absolute', {
4400
4427
  'cursor-w-resize': open && side === 'left' || !open && side === 'right',
4401
4428
  'cursor-e-resize': !open && side === 'left' || open && side === 'right'
@@ -4404,9 +4431,10 @@ var SidebarRail = /*#__PURE__*/React.forwardRef(function (_ref16, ref) {
4404
4431
  top: '20px',
4405
4432
  bottom: '20px',
4406
4433
  right: side === 'left' ? '-14px' : undefined,
4407
- left: side === 'right' ? '-14px' : undefined,
4434
+ left: side === 'right' ? '-18px' : undefined,
4408
4435
  width: '10px'
4409
- }
4436
+ },
4437
+ type: "button"
4410
4438
  }, props), React.createElement(Box, {
4411
4439
  radius: "xl",
4412
4440
  background: "primary",