@react-fabric/core 1.0.0-beta.3 → 1.0.0-beta.31

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 (207) hide show
  1. package/css/index.js +14 -14
  2. package/css/reset/_reset.css +1 -1
  3. package/dist/cjs/components/actionLabel/ActionLabel.js +1 -0
  4. package/dist/cjs/components/animations/Animations.js +14 -7
  5. package/dist/cjs/components/avatar/Avatar.js +8 -10
  6. package/dist/cjs/components/avatar/AvatarGroup.js +1 -0
  7. package/dist/cjs/components/badge/Badge.js +5 -4
  8. package/dist/cjs/components/breadcrumbs/Breadcrumbs.js +5 -2
  9. package/dist/cjs/components/button/Button.js +5 -4
  10. package/dist/cjs/components/button/Button.module.css +1 -1
  11. package/dist/cjs/components/button/ButtonGroup.js +3 -1
  12. package/dist/cjs/components/button/ConfirmButton.js +7 -2
  13. package/dist/cjs/components/button/ToggleButtonGroup.js +2 -1
  14. package/dist/cjs/components/callout/Callout.js +7 -2
  15. package/dist/cjs/components/card/Card.js +5 -3
  16. package/dist/cjs/components/card/CardCover.js +1 -1
  17. package/dist/cjs/components/chip/Chip.js +9 -4
  18. package/dist/cjs/components/chip/Chip.module.css +1 -1
  19. package/dist/cjs/components/collapsable/Collapsable.js +3 -2
  20. package/dist/cjs/components/divider/Divider.js +4 -3
  21. package/dist/cjs/components/divider/Divider.module.css +1 -0
  22. package/dist/cjs/components/dropdown/Dropdown.js +4 -2
  23. package/dist/cjs/components/dropdown/DropdownTool.js +4 -3
  24. package/dist/cjs/components/icon/Icon.js +14 -12
  25. package/dist/cjs/components/icon/Icon.module.css +1 -1
  26. package/dist/cjs/components/menu/ContextMenu.js +30 -10
  27. package/dist/cjs/components/menu/Menu.js +39 -20
  28. package/dist/cjs/components/menu/MenuItem.js +29 -14
  29. package/dist/cjs/components/navigator/Navigator.js +16 -9
  30. package/dist/cjs/components/panel/Panel.js +3 -1
  31. package/dist/cjs/components/progress/ProgressBar.js +2 -1
  32. package/dist/cjs/components/progress/ProgressCircle.js +2 -1
  33. package/dist/cjs/components/tabpanel/Tab.js +58 -37
  34. package/dist/cjs/components/tabpanel/TabPanel.js +19 -14
  35. package/dist/cjs/components/tabpanel/TabPanel.module.css +1 -1
  36. package/dist/cjs/core/aside/Aside.js +6 -2
  37. package/dist/cjs/core/content/Content.js +8 -5
  38. package/dist/cjs/core/headfoot/HeadFoot.js +3 -2
  39. package/dist/cjs/core/headfoot/HeadFoot.module.css +1 -1
  40. package/dist/cjs/core/page/Page.js +1 -0
  41. package/dist/cjs/core/responsive/Responsive.js +1 -1
  42. package/dist/cjs/core/section/Section.module.css +1 -1
  43. package/dist/cjs/hooks/useNavigator.js +6 -4
  44. package/dist/cjs/index.js +7 -2
  45. package/dist/cjs/overlays/alert/Alert.js +42 -17
  46. package/dist/cjs/overlays/alert/Alert.module.css +1 -1
  47. package/dist/cjs/overlays/flyout/Flyout.js +40 -42
  48. package/dist/cjs/overlays/message/Message.js +1 -1
  49. package/dist/cjs/overlays/modal/Modal.js +4 -5
  50. package/dist/cjs/overlays/toast/Toast.js +1 -1
  51. package/dist/cjs/overlays/tooltip/Tooltip.js +3 -3
  52. package/dist/cjs/overlays/tooltip/Tooltip.module.css +1 -1
  53. package/dist/cjs/types/icons.js +3 -0
  54. package/dist/cjs/typography/Abbr.js +1 -1
  55. package/dist/cjs/typography/{Link.js → Anchor.js} +4 -3
  56. package/dist/cjs/typography/Mark.js +1 -1
  57. package/dist/cjs/typography/Text.js +2 -2
  58. package/dist/cjs/typography/Title.js +3 -2
  59. package/dist/cjs/typography/Typography.module.css +1 -1
  60. package/dist/cjs/utils/cloneElement.js +44 -0
  61. package/dist/esm/components/actionLabel/ActionLabel.js +1 -0
  62. package/dist/esm/components/animations/Animations.js +14 -7
  63. package/dist/esm/components/avatar/Avatar.js +9 -11
  64. package/dist/esm/components/avatar/AvatarGroup.js +1 -0
  65. package/dist/esm/components/badge/Badge.js +5 -4
  66. package/dist/esm/components/breadcrumbs/Breadcrumbs.js +5 -2
  67. package/dist/esm/components/button/Button.js +5 -4
  68. package/dist/esm/components/button/Button.module.css +1 -1
  69. package/dist/esm/components/button/ButtonGroup.js +4 -2
  70. package/dist/esm/components/button/ConfirmButton.js +7 -2
  71. package/dist/esm/components/button/ToggleButtonGroup.js +3 -2
  72. package/dist/esm/components/callout/Callout.js +7 -2
  73. package/dist/esm/components/card/Card.js +5 -3
  74. package/dist/esm/components/card/CardCover.js +1 -1
  75. package/dist/esm/components/chip/Chip.js +9 -4
  76. package/dist/esm/components/chip/Chip.module.css +1 -1
  77. package/dist/esm/components/collapsable/Collapsable.js +3 -2
  78. package/dist/esm/components/divider/Divider.js +4 -3
  79. package/dist/esm/components/divider/Divider.module.css +1 -0
  80. package/dist/esm/components/dropdown/Dropdown.js +4 -2
  81. package/dist/esm/components/dropdown/DropdownTool.js +4 -3
  82. package/dist/esm/components/icon/Icon.js +14 -12
  83. package/dist/esm/components/icon/Icon.module.css +1 -1
  84. package/dist/esm/components/menu/ContextMenu.js +32 -12
  85. package/dist/esm/components/menu/Menu.js +41 -22
  86. package/dist/esm/components/menu/MenuItem.js +23 -8
  87. package/dist/esm/components/navigator/Navigator.js +16 -9
  88. package/dist/esm/components/panel/Panel.js +3 -1
  89. package/dist/esm/components/progress/ProgressBar.js +2 -1
  90. package/dist/esm/components/progress/ProgressCircle.js +2 -1
  91. package/dist/esm/components/tabpanel/Tab.js +59 -38
  92. package/dist/esm/components/tabpanel/TabPanel.js +19 -14
  93. package/dist/esm/components/tabpanel/TabPanel.module.css +1 -1
  94. package/dist/esm/core/aside/Aside.js +6 -2
  95. package/dist/esm/core/content/Content.js +8 -5
  96. package/dist/esm/core/headfoot/HeadFoot.js +3 -2
  97. package/dist/esm/core/headfoot/HeadFoot.module.css +1 -1
  98. package/dist/esm/core/page/Page.js +1 -0
  99. package/dist/esm/core/responsive/Responsive.js +1 -1
  100. package/dist/esm/core/section/Section.module.css +1 -1
  101. package/dist/esm/hooks/useNavigator.js +7 -5
  102. package/dist/esm/index.js +4 -1
  103. package/dist/esm/overlays/alert/Alert.js +31 -6
  104. package/dist/esm/overlays/alert/Alert.module.css +1 -1
  105. package/dist/esm/overlays/flyout/Flyout.js +41 -43
  106. package/dist/esm/overlays/message/Message.js +1 -1
  107. package/dist/esm/overlays/modal/Modal.js +5 -6
  108. package/dist/esm/overlays/toast/Toast.js +1 -1
  109. package/dist/esm/overlays/tooltip/Tooltip.js +3 -3
  110. package/dist/esm/overlays/tooltip/Tooltip.module.css +1 -1
  111. package/dist/esm/types/icons.js +3 -0
  112. package/dist/esm/typography/Abbr.js +1 -1
  113. package/dist/esm/typography/{Link.js → Anchor.js} +4 -3
  114. package/dist/esm/typography/Mark.js +1 -1
  115. package/dist/esm/typography/Text.js +2 -2
  116. package/dist/esm/typography/Title.js +3 -2
  117. package/dist/esm/typography/Typography.module.css +1 -1
  118. package/dist/esm/utils/cloneElement.js +44 -0
  119. package/dist/types/components/actionLabel/ActionLabel.d.ts +2 -2
  120. package/dist/types/components/animations/Animations.d.ts +1 -1
  121. package/dist/types/components/badge/Badge.d.ts +5 -1
  122. package/dist/types/components/breadcrumbs/Breadcrumbs.d.ts +2 -2
  123. package/dist/types/components/button/Button.d.ts +5 -3
  124. package/dist/types/components/button/ConfirmButton.d.ts +6 -1
  125. package/dist/types/components/card/Card.d.ts +3 -3
  126. package/dist/types/components/chip/Chip.d.ts +1 -1
  127. package/dist/types/components/collapsable/Collapsable.d.ts +5 -1
  128. package/dist/types/components/dropdown/DropdownTool.d.ts +2 -1
  129. package/dist/types/components/media/Media.d.ts +2 -2
  130. package/dist/types/components/menu/ContextMenu.d.ts +2 -1
  131. package/dist/types/components/menu/MenuItem.d.ts +1 -1
  132. package/dist/types/components/navigator/Navigator.d.ts +3 -3
  133. package/dist/types/components/tabpanel/Tab.d.ts +4 -4
  134. package/dist/types/components/tabpanel/TabPanel.d.ts +10 -1
  135. package/dist/types/core/aside/Aside.d.ts +7 -3
  136. package/dist/types/core/content/Content.d.ts +3 -2
  137. package/dist/types/core/responsive/Responsive.d.ts +1 -1
  138. package/dist/types/core/theme/ThemeProvider.d.ts +1 -1
  139. package/dist/types/hooks/useOverlayService.d.ts +3 -3
  140. package/dist/types/index.d.ts +3 -0
  141. package/dist/types/overlays/alert/Alert.d.ts +9 -1
  142. package/dist/types/overlays/flyout/Flyout.d.ts +3 -2
  143. package/dist/types/overlays/modal/Modal.d.ts +4 -3
  144. package/dist/types/types/icons.d.ts +3 -0
  145. package/dist/types/types/index.d.ts +8 -1
  146. package/dist/types/typography/{Link.d.ts → Anchor.d.ts} +2 -2
  147. package/dist/types/typography/index.d.ts +1 -1
  148. package/dist/types/utils/cloneElement.d.ts +2 -0
  149. package/dist/types/utils/index.d.ts +1 -0
  150. package/package.json +5 -5
  151. package/src/components/actionLabel/ActionLabel.tsx +13 -3
  152. package/src/components/animations/Animations.tsx +9 -3
  153. package/src/components/avatar/Avatar.tsx +69 -81
  154. package/src/components/avatar/AvatarGroup.tsx +1 -0
  155. package/src/components/badge/Badge.tsx +9 -4
  156. package/src/components/breadcrumbs/Breadcrumbs.tsx +9 -4
  157. package/src/components/button/Button.module.css +8 -1
  158. package/src/components/button/Button.tsx +12 -9
  159. package/src/components/button/ButtonGroup.tsx +3 -2
  160. package/src/components/button/ConfirmButton.tsx +15 -5
  161. package/src/components/button/ToggleButtonGroup.tsx +3 -2
  162. package/src/components/callout/Callout.tsx +12 -3
  163. package/src/components/card/Card.tsx +4 -0
  164. package/src/components/chip/Chip.module.css +4 -1
  165. package/src/components/chip/Chip.tsx +9 -4
  166. package/src/components/collapsable/Collapsable.tsx +6 -0
  167. package/src/components/divider/Divider.module.css +32 -0
  168. package/src/components/divider/Divider.tsx +3 -2
  169. package/src/components/dropdown/Dropdown.tsx +3 -2
  170. package/src/components/dropdown/DropdownTool.tsx +4 -2
  171. package/src/components/icon/Icon.module.css +0 -1
  172. package/src/components/icon/Icon.tsx +48 -58
  173. package/src/components/media/Media.tsx +2 -2
  174. package/src/components/menu/ContextMenu.tsx +36 -11
  175. package/src/components/menu/Menu.tsx +51 -30
  176. package/src/components/menu/MenuItem.tsx +14 -3
  177. package/src/components/navigator/Navigator.tsx +17 -4
  178. package/src/components/panel/Panel.tsx +3 -1
  179. package/src/components/tabpanel/Tab.tsx +77 -61
  180. package/src/components/tabpanel/TabPanel.module.css +54 -65
  181. package/src/components/tabpanel/TabPanel.tsx +33 -10
  182. package/src/core/aside/Aside.tsx +17 -3
  183. package/src/core/content/Content.tsx +16 -10
  184. package/src/core/headfoot/HeadFoot.module.css +2 -0
  185. package/src/core/headfoot/HeadFoot.tsx +1 -1
  186. package/src/core/page/Page.tsx +1 -0
  187. package/src/core/responsive/Responsive.tsx +3 -2
  188. package/src/core/section/Section.module.css +1 -1
  189. package/src/core/theme/ThemeProvider.tsx +1 -1
  190. package/src/hooks/useNavigator.tsx +10 -5
  191. package/src/hooks/useOverlayService.tsx +12 -4
  192. package/src/index.ts +4 -0
  193. package/src/overlays/alert/Alert.module.css +1 -1
  194. package/src/overlays/alert/Alert.tsx +30 -4
  195. package/src/overlays/flyout/Flyout.tsx +63 -62
  196. package/src/overlays/modal/Modal.tsx +13 -8
  197. package/src/overlays/tooltip/Tooltip.module.css +7 -7
  198. package/src/overlays/tooltip/Tooltip.tsx +4 -4
  199. package/src/types/icons.ts +6 -0
  200. package/src/types/index.ts +10 -9
  201. package/src/typography/{Link.tsx → Anchor.tsx} +3 -3
  202. package/src/typography/Text.tsx +1 -1
  203. package/src/typography/Title.tsx +0 -1
  204. package/src/typography/Typography.module.css +4 -2
  205. package/src/typography/index.ts +1 -1
  206. package/src/utils/cloneElement.ts +44 -0
  207. package/src/utils/index.ts +1 -0
@@ -3,11 +3,13 @@
3
3
  import _defineProperty from '@babel/runtime/helpers/defineProperty';
4
4
  import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
5
5
  import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
6
- import { useFloatingParentNodeId, FloatingTree, useFloatingTree, useFloatingNodeId, useFloating, offset, flip, shift, autoUpdate, useHover, safePolygon, useClick, useRole, useDismiss, useListNavigation, useTypeahead, useInteractions, FloatingNode, FloatingList, FloatingOverlay, FloatingFocusManager, FloatingPortal } from '@floating-ui/react';
6
+ import { useFloatingParentNodeId, useFloatingTree, FloatingTree, useFloatingNodeId, useFloating, offset, flip, shift, autoUpdate, useHover, safePolygon, useClick, useRole, useDismiss, useListNavigation, useTypeahead, useInteractions, FloatingNode, FloatingList, FloatingOverlay, FloatingFocusManager, FloatingPortal } from '@floating-ui/react';
7
7
  import { mergeRefs } from '@react-fabric/utilities';
8
8
  import classNames from 'classnames';
9
- import { useState, useRef, useEffect, useCallback, Children, cloneElement, Fragment } from 'react';
9
+ import { useState, useRef, useEffect, useCallback, cloneElement, Fragment } from 'react';
10
+ import { HotKeyWrapper } from '../../hotkeys/HotKeyWrapper.js';
10
11
  import { CoreIcons } from '../../types/icons.js';
12
+ import { cloneChildren } from '../../utils/cloneElement.js';
11
13
  import { nodeCheck } from '../../utils/nodeCheck.js';
12
14
  import { MenuItem } from './MenuItem.js';
13
15
  import { jsx, jsxs } from 'react/jsx-runtime';
@@ -64,8 +66,9 @@ var MenuComponent = function MenuComponent(_ref) {
64
66
  })
65
67
  });
66
68
  var click = useClick(context, {
67
- toggle: true,
68
- ignoreMouse: true
69
+ event: "mousedown",
70
+ toggle: !isNested,
71
+ ignoreMouse: isNested
69
72
  });
70
73
  var role = useRole(context, {
71
74
  role: "menu"
@@ -137,6 +140,16 @@ var MenuComponent = function MenuComponent(_ref) {
137
140
  });
138
141
  }, 100);
139
142
  }, [isOpen]);
143
+ useEffect(function () {
144
+ if ((!isNested || isOpen) && activeIndex) {
145
+ setTimeout(function () {
146
+ var _elementsRef$current$;
147
+ (_elementsRef$current$ = elementsRef.current[activeIndex]) === null || _elementsRef$current$ === void 0 || _elementsRef$current$.scrollIntoView({
148
+ block: "nearest"
149
+ });
150
+ }, 100);
151
+ }
152
+ }, [isOpen, activeIndex]);
140
153
  return /*#__PURE__*/jsxs(FloatingNode, {
141
154
  id: nodeId,
142
155
  children: [isNested && /*#__PURE__*/jsx(MenuItem, _objectSpread(_objectSpread({}, getReferenceProps(_objectSpread(_objectSpread({}, rest), {}, {
@@ -155,21 +168,21 @@ var MenuComponent = function MenuComponent(_ref) {
155
168
  elementsRef: elementsRef,
156
169
  labelsRef: labelsRef,
157
170
  children: (!isNested || isOpen) && /*#__PURE__*/jsxs(Wrapper, _objectSpread(_objectSpread({}, wrapperProps), {}, {
158
- children: [isNested && /*#__PURE__*/jsx(FloatingOverlay, {}), /*#__PURE__*/jsx(FloatingFocusManager, {
159
- context: context,
160
- modal: !isNested,
161
- initialFocus: isNested ? -1 : 0,
162
- returnFocus: !isNested,
163
- children: /*#__PURE__*/jsx("div", _objectSpread(_objectSpread({
164
- className: classNames(menuClassName, "flex flex-col bg-base p-1 menu-list", isNested && "outline shadow-lg rounded-capped max-h-96 overflow-auto scroll-thin z-[var(--z-popover)]"),
165
- autoFocus: true,
166
- ref: mergeRefs(refs.setFloating, isNested ? undefined : ref)
167
- }, getFloatingProps({
168
- onClick: isNested ? undefined : handleClick
169
- })), {}, {
170
- style: !isNested ? rest.style : floatingStyles,
171
- children: Children.map(children, function (child, index) {
172
- if (child) {
171
+ children: [isNested && /*#__PURE__*/jsx(FloatingOverlay, {}), /*#__PURE__*/jsx(HotKeyWrapper, {
172
+ children: /*#__PURE__*/jsx(FloatingFocusManager, {
173
+ context: context,
174
+ modal: !isNested,
175
+ initialFocus: isNested ? -1 : 0,
176
+ returnFocus: !isNested,
177
+ children: /*#__PURE__*/jsx("div", _objectSpread(_objectSpread({
178
+ className: classNames(menuClassName, "flex flex-col bg-base p-1 menu-list", isNested && "outline shadow-lg rounded-capped max-h-96 overflow-auto scroll-thin z-[var(--z-popover)]"),
179
+ autoFocus: true,
180
+ ref: mergeRefs(isNested ? refs.setFloating : ref)
181
+ }, getFloatingProps({
182
+ onClick: isNested ? undefined : handleClick
183
+ })), {}, {
184
+ style: !isNested ? rest.style : floatingStyles,
185
+ children: cloneChildren(children, function (child, index) {
173
186
  labelsRef.current[index] = child.props.label;
174
187
  return /*#__PURE__*/cloneElement(child, nodeCheck(child, MenuItem, Menu, MenuComponent) ? _objectSpread({
175
188
  minimal: !isNested && minimal,
@@ -181,9 +194,9 @@ var MenuComponent = function MenuComponent(_ref) {
181
194
  onClick: child.props.onClick,
182
195
  tabIndex: activeIndex === index ? 0 : -1
183
196
  })) : {});
184
- }
185
- })
186
- }))
197
+ })
198
+ }))
199
+ })
187
200
  })]
188
201
  }))
189
202
  })]
@@ -191,6 +204,7 @@ var MenuComponent = function MenuComponent(_ref) {
191
204
  };
192
205
  var Menu = function Menu(props) {
193
206
  var parentId = useFloatingParentNodeId();
207
+ var tree = useFloatingTree();
194
208
  if (parentId === null) {
195
209
  return /*#__PURE__*/jsx(FloatingTree, {
196
210
  children: /*#__PURE__*/jsx(MenuComponent, _objectSpread(_objectSpread({}, props), {}, {
@@ -198,6 +212,11 @@ var Menu = function Menu(props) {
198
212
  }))
199
213
  });
200
214
  }
215
+ if (tree) {
216
+ return /*#__PURE__*/jsx(MenuComponent, _objectSpread(_objectSpread({}, props), {}, {
217
+ menuClassName: props.className
218
+ }));
219
+ }
201
220
  return /*#__PURE__*/jsx(MenuComponent, _objectSpread({}, props));
202
221
  };
203
222
 
@@ -3,22 +3,23 @@
3
3
  import _defineProperty from '@babel/runtime/helpers/defineProperty';
4
4
  import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
5
5
  import { useFloatingTree } from '@floating-ui/react';
6
- import { iconToken } from '@react-fabric/utilities';
6
+ import { iconToken, mergeRefs } from '@react-fabric/utilities';
7
7
  import classNames from 'classnames';
8
- import { useMemo, useCallback, Fragment } from 'react';
8
+ import { useRef, useMemo, useEffect, useCallback, Fragment } from 'react';
9
+ import { HotKey } from '../../hotkeys/HotKey.js';
9
10
  import { HotKeyLabel } from '../../hotkeys/HotKeyLabel.js';
11
+ import '@babel/runtime/helpers/slicedToArray';
10
12
  import 'react-i18next';
11
13
  import '../../hooks/useEffectDebugger.js';
12
14
  import { jsx, jsxs } from 'react/jsx-runtime';
13
- import '@babel/runtime/helpers/slicedToArray';
14
- import '../../hotkeys/HotKeyWrapper.js';
15
15
  import { Tooltip } from '../../overlays/tooltip/Tooltip.js';
16
16
  import { getBadgeProps, Badge } from '../badge/Badge.js';
17
17
  import { Icon } from '../icon/Icon.js';
18
18
  import '../../types/icons.js';
19
+ import '../../hotkeys/HotKeyWrapper.js';
19
20
  import classes from './Menu.module.css';
20
21
 
21
- var _excluded = ["as", "label", "color", "className", "icon", "iconBg", "iconColor", "appendLabel", "rtlFlip", "altIcon", "id", "active", "disabled", "onClick", "badge", "hotKey", "minimal", "data-open", "ref"],
22
+ var _excluded = ["as", "label", "color", "className", "icon", "iconBg", "iconColor", "appendLabel", "rtlFlip", "altIcon", "id", "active", "disabled", "onClick", "badge", "hotKey", "tabIndex", "minimal", "data-open", "ref"],
22
23
  _excluded2 = ["children"];
23
24
  function ownKeys(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; }
24
25
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
@@ -40,14 +41,21 @@ var MenuItem = function MenuItem(_ref) {
40
41
  _onClick = _ref.onClick,
41
42
  badge = _ref.badge,
42
43
  hotKey = _ref.hotKey,
44
+ _ref$tabIndex = _ref.tabIndex,
45
+ tabIndex = _ref$tabIndex === void 0 ? -1 : _ref$tabIndex,
43
46
  minimal = _ref.minimal,
44
47
  childOpen = _ref["data-open"],
45
48
  ref = _ref.ref,
46
49
  aria = _objectWithoutProperties(_ref, _excluded);
50
+ var elRef = useRef(null);
47
51
  var tree = useFloatingTree();
48
52
  var badgeProps = useMemo(function () {
49
53
  return getBadgeProps(badge);
50
54
  }, [badge]);
55
+ useEffect(function () {
56
+ var _elRef$current;
57
+ tabIndex === 0 && ((_elRef$current = elRef.current) === null || _elRef$current === void 0 ? void 0 : _elRef$current.focus());
58
+ }, [tabIndex]);
51
59
  var iconEl = useMemo(function () {
52
60
  var _path;
53
61
  var path = icon;
@@ -98,8 +106,8 @@ var MenuItem = function MenuItem(_ref) {
98
106
  }, [iconEl, minimal, appendLabel, label, badge, badgeProps, hotKey, active]);
99
107
  var E = as !== null && as !== void 0 ? as : "button";
100
108
  return /*#__PURE__*/jsx(Wrapper, _objectSpread(_objectSpread({}, aria), {}, {
101
- children: /*#__PURE__*/jsx(E, _objectSpread(_objectSpread({
102
- ref: ref,
109
+ children: /*#__PURE__*/jsxs(E, _objectSpread(_objectSpread({
110
+ ref: mergeRefs(ref, elRef),
103
111
  "data-dropdown-dismiss": true,
104
112
  "data-color": color,
105
113
  className: classNames(classes.menuItem, className, active && classes.active, minimal && classes.minimal, disabled && classes.disabled, "rounded-capped relative max-w-[50vw] my-0.5"),
@@ -107,11 +115,18 @@ var MenuItem = function MenuItem(_ref) {
107
115
  "data-open": childOpen,
108
116
  disabled: disabled,
109
117
  "data-id": id,
118
+ tabIndex: tabIndex,
110
119
  onClick: function onClick(e) {
111
120
  (_onClick === null || _onClick === void 0 ? void 0 : _onClick(e)) !== false && (tree === null || tree === void 0 ? void 0 : tree.events.emit("click"));
112
121
  }
113
122
  }, minimal ? {} : aria), {}, {
114
- children: menuLabel
123
+ children: [hotKey && /*#__PURE__*/jsx(HotKey, {
124
+ keyCombo: hotKey,
125
+ handler: function handler() {
126
+ var _elRef$current2, _elRef$current2$click;
127
+ return (_elRef$current2 = elRef.current) === null || _elRef$current2 === void 0 || (_elRef$current2$click = _elRef$current2.click) === null || _elRef$current2$click === void 0 ? void 0 : _elRef$current2$click.call(_elRef$current2);
128
+ }
129
+ }), menuLabel]
115
130
  }))
116
131
  }));
117
132
  };
@@ -6,43 +6,50 @@ import classNames from 'classnames';
6
6
  import { HotKey } from '../../hotkeys/HotKey.js';
7
7
  import { CoreIcons } from '../../types/icons.js';
8
8
  import { Icon } from '../icon/Icon.js';
9
+ import { useCallback } from 'react';
9
10
  import { jsxs, jsx } from 'react/jsx-runtime';
10
11
 
11
- var _excluded = ["className", "onNavigate", "color"];
12
+ var _excluded = ["className", "onNavigate", "color", "children"];
12
13
  function ownKeys(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; }
13
14
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
14
15
  var Navigator = function Navigator(_ref) {
15
16
  var className = _ref.className,
16
17
  onNavigate = _ref.onNavigate,
17
18
  color = _ref.color,
19
+ children = _ref.children,
18
20
  aria = _objectWithoutProperties(_ref, _excluded);
21
+ var navPrev = useCallback(function () {
22
+ return onNavigate(-1);
23
+ }, [onNavigate]);
24
+ var navNext = useCallback(function () {
25
+ return onNavigate(+1);
26
+ }, [onNavigate]);
19
27
  return /*#__PURE__*/jsxs("div", _objectSpread(_objectSpread({
20
- className: classNames(className, "inline-block leading-none")
28
+ "data-ref": "navigator",
29
+ className: classNames(className, "inline-flex items-center leading-none")
21
30
  }, aria), {}, {
22
31
  children: [/*#__PURE__*/jsx(HotKey, {
23
32
  keyCombo: "left",
24
- handler: function handler() {
25
- return onNavigate(-1);
26
- }
33
+ handler: navPrev
27
34
  }), /*#__PURE__*/jsx(HotKey, {
28
35
  keyCombo: "right",
29
- handler: function handler() {
30
- return onNavigate(1);
31
- }
36
+ handler: navNext
32
37
  }), /*#__PURE__*/jsx(Icon, {
33
38
  rtlFlip: true,
34
39
  color: color,
35
40
  className: "text-[1em] p-1",
36
41
  "aria-label": "previous",
42
+ "data-ref": "previous",
37
43
  icon: CoreIcons.chevronLeft,
38
44
  onClick: function onClick(e) {
39
45
  return [e.stopPropagation(), onNavigate(-1)];
40
46
  }
41
- }), /*#__PURE__*/jsx(Icon, {
47
+ }), children, /*#__PURE__*/jsx(Icon, {
42
48
  rtlFlip: true,
43
49
  className: "text-[1em] p-1",
44
50
  color: color,
45
51
  "aria-label": "next",
52
+ "data-ref": "next",
46
53
  icon: CoreIcons.chevronRight,
47
54
  onClick: function onClick(e) {
48
55
  return [e.stopPropagation(), onNavigate(1)];
@@ -74,6 +74,7 @@ var Panel = function Panel(_ref) {
74
74
  children: [/*#__PURE__*/jsxs("header", {
75
75
  role: "none",
76
76
  className: classNames(classes.panelHeader, headerClassName, "flex flex-nowrap items-center area-head"),
77
+ "data-ref": "panelHeader",
77
78
  onClick: collapsable ? toggleCollapse : undefined,
78
79
  children: [onBack && /*#__PURE__*/jsx(Icon, {
79
80
  "data-ref": "panelBack",
@@ -90,7 +91,7 @@ var Panel = function Panel(_ref) {
90
91
  className: classNames(titleClassName, "flex-1 select-none truncate", title && "py-1 first:px-2"),
91
92
  children: title
92
93
  }), /*#__PURE__*/jsx("div", {
93
- className: "px-1",
94
+ className: "px-1 leading-none",
94
95
  children: actions
95
96
  }), hasTools && /*#__PURE__*/jsxs("div", {
96
97
  role: "none",
@@ -116,6 +117,7 @@ var Panel = function Panel(_ref) {
116
117
  })]
117
118
  })]
118
119
  }), (!collapsed || expanded) && /*#__PURE__*/jsxs("div", {
120
+ "data-ref": "panelBody",
119
121
  className: classNames(classes.panelBody, "area-content grid overflow-hidden"),
120
122
  children: [loading && /*#__PURE__*/jsx(Loading, {}), children]
121
123
  })]
@@ -4,9 +4,10 @@ import _defineProperty from '@babel/runtime/helpers/defineProperty';
4
4
  import { Format } from '@react-fabric/utilities';
5
5
  import classNames from 'classnames';
6
6
  import { useMemoDebugger } from '../../hooks/useEffectDebugger.js';
7
+ import 'react';
8
+ import { jsxs, jsx } from 'react/jsx-runtime';
7
9
  import { getColorClass } from '../../utils/getColor.js';
8
10
  import classes from './Progress.module.css';
9
- import { jsxs, jsx } from 'react/jsx-runtime';
10
11
 
11
12
  function ownKeys(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; }
12
13
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
@@ -3,8 +3,9 @@
3
3
  import { Format } from '@react-fabric/utilities';
4
4
  import classNames from 'classnames';
5
5
  import { useMemoDebugger } from '../../hooks/useEffectDebugger.js';
6
- import { getColorClass } from '../../utils/getColor.js';
6
+ import 'react';
7
7
  import { jsxs, jsx } from 'react/jsx-runtime';
8
+ import { getColorClass } from '../../utils/getColor.js';
8
9
 
9
10
  /*
10
11
  * React Fabric
@@ -2,15 +2,23 @@
2
2
 
3
3
  import _defineProperty from '@babel/runtime/helpers/defineProperty';
4
4
  import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
5
+ import { isString } from '@react-fabric/utilities';
5
6
  import classNames from 'classnames';
6
- import { useMemo } from 'react';
7
+ import { useMemo, Fragment } from 'react';
8
+ import '@babel/runtime/helpers/slicedToArray';
9
+ import '@floating-ui/react';
10
+ import 'react-i18next';
11
+ import '../../hooks/useEffectDebugger.js';
12
+ import { jsx, jsxs } from 'react/jsx-runtime';
13
+ import '../../hotkeys/HotKeyWrapper.js';
14
+ import { Tooltip } from '../../overlays/tooltip/Tooltip.js';
7
15
  import { getBadgeProps, Badge } from '../badge/Badge.js';
8
- import { DropdownTool } from '../dropdown/DropdownTool.js';
9
16
  import { Icon } from '../icon/Icon.js';
17
+ import '../../types/icons.js';
18
+ import { DropdownTool } from '../dropdown/DropdownTool.js';
10
19
  import classes from './TabPanel.module.css';
11
- import { jsxs, jsx } from 'react/jsx-runtime';
12
20
 
13
- var _excluded = ["ref", "as", "id", "className", "label", "icon", "iconBg", "iconColor", "rtlFlip", "badge", "disabled", "onClose", "active", "minimal", "onClick", "tabFlex", "color", "actions", "activeClassName"];
21
+ var _excluded = ["ref", "as", "id", "className", "label", "icon", "iconBg", "iconColor", "rtlFlip", "badge", "disabled", "onClose", "active", "onClick", "tabFlex", "color", "actions", "tooltip", "activeClassName"];
14
22
  function ownKeys(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; }
15
23
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
16
24
  var Tab = function Tab(_ref) {
@@ -27,51 +35,64 @@ var Tab = function Tab(_ref) {
27
35
  disabled = _ref.disabled,
28
36
  onClose = _ref.onClose,
29
37
  active = _ref.active,
30
- minimal = _ref.minimal,
31
38
  _onClick = _ref.onClick,
32
39
  tabFlex = _ref.tabFlex,
33
40
  color = _ref.color,
34
41
  actions = _ref.actions,
42
+ tooltip = _ref.tooltip,
35
43
  activeClassName = _ref.activeClassName,
36
44
  aria = _objectWithoutProperties(_ref, _excluded);
37
45
  var badgeProps = useMemo(function () {
38
46
  return getBadgeProps(badge);
39
47
  }, [badge]);
48
+ var minimal = useMemo(function () {
49
+ return !label;
50
+ }, [label]);
51
+ var tooltipProps = useMemo(function () {
52
+ if (isString(tooltip)) return {
53
+ content: tooltip
54
+ };
55
+ return tooltip !== null && tooltip !== void 0 ? tooltip : {};
56
+ }, [tooltip]);
40
57
  var E = as !== null && as !== void 0 ? as : "button";
41
- return /*#__PURE__*/jsxs(E, _objectSpread(_objectSpread({
42
- "data-id": id,
43
- disabled: disabled,
44
- "data-color": color,
45
- className: classNames(classes.tabButton, className, active && "active pointer-events-none", active && activeClassName, disabled && "text-tint-500 pointer-events-none", tabFlex ? "flex-1" : "flex-initial max-w-36 min-w-24", "flex items-center justify-center px-1 rounded overflow-hidden"),
46
- onClick: function onClick() {
47
- return !active && (_onClick === null || _onClick === void 0 ? void 0 : _onClick(id));
48
- },
49
- ref: ref
50
- }, aria), {}, {
51
- children: [icon && /*#__PURE__*/jsx(Icon, {
52
- icon: icon,
53
- bg: iconBg,
54
- color: iconColor,
55
- rtlFlip: rtlFlip,
56
- className: "flex-content"
57
- }), !minimal && /*#__PURE__*/jsx("label", {
58
- className: "flex-initial truncate text-center px-1 py-1",
59
- children: label
60
- }), badge && /*#__PURE__*/jsx(Badge, _objectSpread(_objectSpread({}, badgeProps), {}, {
61
- placement: minimal ? "end" : "",
62
- className: classNames("me-1", badgeProps.className)
63
- })), actions && active && /*#__PURE__*/jsx(DropdownTool, {
64
- className: "bg-base/20 me-1 z-5",
65
- children: actions
66
- }), onClose && /*#__PURE__*/jsx("span", {
67
- role: "none",
68
- className: classNames("cursor-pointer me-1 opacity-65 hover:opacity-90 pointer-events-auto"),
69
- onClick: function onClick(e) {
70
- onClose === null || onClose === void 0 || onClose();
71
- e.stopPropagation();
58
+ var W = tooltip ? Tooltip : Fragment;
59
+ return /*#__PURE__*/jsx(W, _objectSpread(_objectSpread({}, tooltipProps), {}, {
60
+ children: /*#__PURE__*/jsxs(E, _objectSpread(_objectSpread({
61
+ "data-id": id,
62
+ disabled: disabled,
63
+ "data-color": color,
64
+ "data-inner-clickable": true,
65
+ className: classNames(classes.tabButton, className, active && "active pointer-events-none", active && activeClassName, disabled && "text-tint-500 pointer-events-none", tabFlex ? "flex-1" : "flex-initial max-w-36", minimal ? "min-w-6 px-2 py-1" : "min-w-18", "flex items-center justify-center px-1 rounded overflow-hidden"),
66
+ onClick: function onClick() {
67
+ return !active && (_onClick === null || _onClick === void 0 ? void 0 : _onClick(id));
72
68
  },
73
- children: "\xD7"
74
- })]
69
+ ref: ref
70
+ }, aria), {}, {
71
+ children: [icon && /*#__PURE__*/jsx(Icon, {
72
+ icon: icon,
73
+ bg: iconBg,
74
+ color: iconColor,
75
+ rtlFlip: rtlFlip,
76
+ className: "flex-content"
77
+ }), !minimal && /*#__PURE__*/jsx("label", {
78
+ className: "flex-initial truncate text-center px-1 py-1",
79
+ children: label
80
+ }), badge && /*#__PURE__*/jsx(Badge, _objectSpread(_objectSpread({}, badgeProps), {}, {
81
+ placement: minimal ? "end" : "",
82
+ className: classNames("me-1", badgeProps.className)
83
+ })), actions && active && /*#__PURE__*/jsx(DropdownTool, {
84
+ className: "bg-base/20 me-1 z-5",
85
+ children: actions
86
+ }), onClose && /*#__PURE__*/jsx("span", {
87
+ role: "none",
88
+ className: classNames("cursor-pointer me-1 opacity-65 hover:opacity-90 pointer-events-auto"),
89
+ onClick: function onClick(e) {
90
+ onClose === null || onClose === void 0 || onClose();
91
+ e.stopPropagation();
92
+ },
93
+ children: "\xD7"
94
+ })]
95
+ }))
75
96
  }));
76
97
  };
77
98
 
@@ -3,11 +3,11 @@
3
3
  import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
4
4
  import classNames from 'classnames';
5
5
  import { useState, useMemo, Children, useEffect, useCallback, cloneElement } from 'react';
6
+ import { jsxs, jsx } from 'react/jsx-runtime';
6
7
  import '@react-fabric/utilities';
7
8
  import { nodeCheck } from '../../utils/nodeCheck.js';
8
9
  import { Tab } from './Tab.js';
9
10
  import classes from './TabPanel.module.css';
10
- import { jsxs, jsx } from 'react/jsx-runtime';
11
11
 
12
12
  // TODO: implement append/prepend tab-bar items
13
13
 
@@ -20,6 +20,8 @@ var TabPanel = function TabPanel(_ref) {
20
20
  justify = _ref.justify,
21
21
  variant = _ref.variant,
22
22
  tabFlex = _ref.tabFlex,
23
+ append = _ref.append,
24
+ prepend = _ref.prepend,
23
25
  gap = _ref.gap,
24
26
  onBeforeChange = _ref.onBeforeChange,
25
27
  onChange = _ref.onChange;
@@ -57,19 +59,22 @@ var TabPanel = function TabPanel(_ref) {
57
59
  className: classNames(classes.tabPanel, "area-content grid bg-base overflow-hidden"),
58
60
  "data-orientation": orientation,
59
61
  "data-variant": variant !== null && variant !== void 0 ? variant : "default",
60
- children: [/*#__PURE__*/jsx("div", {
61
- className: classNames(classes.tabList, headerClassName, justify && "justify-".concat(justify), ["start", "end"].includes(orientation) && "flex-col", "flex flex-nowrap overflow-auto scroll-thin"),
62
- style: {
63
- gap: gap
64
- },
65
- children: tabs.map(function (node) {
66
- var _node$props$tabFlex;
67
- return /*#__PURE__*/cloneElement(node, {
68
- tabFlex: (_node$props$tabFlex = node.props.tabFlex) !== null && _node$props$tabFlex !== void 0 ? _node$props$tabFlex : tabFlex,
69
- onClick: handleClick,
70
- active: node.props.id === active
71
- });
72
- })
62
+ children: [/*#__PURE__*/jsxs("div", {
63
+ className: classNames(classes.tabHeader, headerClassName, justify && "justify-".concat(justify), ["start", "end"].includes(orientation) && "flex-col", "flex flex-nowrap overflow-hidden items-center"),
64
+ children: [prepend, /*#__PURE__*/jsx("div", {
65
+ className: classNames(classes.tabList, justify && "justify-".concat(justify), ["start", "end"].includes(orientation) && "flex-col", ["bottom", "end"].includes(orientation) ? "self-start" : "self-end", "flex flex-1 flex-nowrap overflow-auto scroll-thin"),
66
+ style: {
67
+ gap: gap
68
+ },
69
+ children: tabs.map(function (node) {
70
+ var _node$props$tabFlex;
71
+ return /*#__PURE__*/cloneElement(node, {
72
+ tabFlex: (_node$props$tabFlex = node.props.tabFlex) !== null && _node$props$tabFlex !== void 0 ? _node$props$tabFlex : tabFlex,
73
+ onClick: handleClick,
74
+ active: node.props.id === active
75
+ });
76
+ })
77
+ }), append]
73
78
  }), rest, activeTabPanel]
74
79
  });
75
80
  };
@@ -1 +1 @@
1
- @layer comp{.tabPanel{--color:theme(colors.primary.500);&>.tabList{grid-area:tablist;&>.tabButton{&[data-color=accent]{--color:theme(colors.accent.500)}&[data-color=info]{--color:theme(colors.info.500)}&[data-color=danger]{--color:theme(colors.danger.500)}&[data-color=success]{--color:theme(colors.success.500)}&[data-color=warning]{--color:theme(colors.warning.500)}&:not(:global(.active)):hover{background-color:theme(colors.tint.100/50%);color:color-mix(in lab,var(--color) 65%,var(--fabric-text))}&:global(.active){--active-color:var(--color);color:color-mix(in lab,var(--color) 65%,var(--fabric-text));font-weight:500}}}&[data-variant=outline]{&>.tabList>.tabButton:global(.active){--active-color:theme(backgroundColor.base);--active-border:0 0 0 1px theme(borderColor.base) inset;background-color:theme(backgroundColor.base)}}&[data-variant=solid]{&>.tabList>.tabButton:global(.active){background-color:var(--color);color:theme(colors.white)}}&[data-variant=soft]{&>.tabList>.tabButton:global(.active){background-color:color-mix(in lab,var(--color) 20%,var(--fabric-bg))}}&[data-orientation=top]{grid-template:"tablist" auto "content" 1fr/1fr;padding-inline:2px;&[data-variant=outline]>.tabList,&[data-variant=soft]>.tabList,&[data-variant=solid]>.tabList{box-shadow:inset 0 -1px 0 theme(borderColor.dimmed)}}&[data-orientation=bottom]{grid-template:"content" 1fr "tablist" auto/1fr;padding-inline:2px;&[data-variant=outline]>.tabList,&[data-variant=soft]>.tabList,&[data-variant=solid]>.tabList{box-shadow:inset 0 1px 0 theme(borderColor.dimmed)}}&[data-orientation=start]{grid-template:"tablist content" 1fr/auto 1fr;padding-block:2px;&[data-variant=outline]>.tabList,&[data-variant=soft]>.tabList,&[data-variant=solid]>.tabList{box-shadow:inset -1px 0 0 theme(borderColor.dimmed)}}&[data-orientation=end]{grid-template:"content tablist" 1fr/1fr auto;padding-block:2px;&[data-variant=outline]>.tabList,&[data-variant=soft]>.tabList,&[data-variant=solid]>.tabList{box-shadow:inset 1px 0 0 theme(borderColor.dimmed)}}}}@layer util{.tabPanel{&>.tabList>.tabButton:global(.active){pointer-events:none}&[data-orientation=top]>.tabList{&>.tabButton:global(.active){box-shadow:0 -2px 0 var(--active-color) inset,var(--active-border,0 0 0 transparent)}}&[data-orientation=bottom]>.tabList{&>.tabButton:global(.active){box-shadow:0 2px 0 var(--active-color) inset,var(--active-border,0 0 0 transparent)}}&[data-orientation=start]>.tabList{&>.tabButton:global(.active){box-shadow:-2px 0 0 var(--active-color) inset,var(--active-border,0 0 0 transparent)}}&[data-orientation=end]>.tabList{&>.tabButton:global(.active){box-shadow:2px 0 0 var(--active-color) inset,var(--active-border,0 0 0 transparent)}}&[data-orientation=top]>.tabList>.tabButton{border-end-end-radius:0;border-end-start-radius:0;margin-top:2px;margin-inline:1px}&[data-orientation=bottom]>.tabList>.tabButton{border-start-end-radius:0;border-start-start-radius:0;margin-bottom:2px;margin-inline:1px}&[data-orientation=start]>.tabList>.tabButton{border-end-end-radius:0;border-start-end-radius:0;margin-block:1px;margin-inline-start:2px}&[data-orientation=end]>.tabList>.tabButton{border-end-start-radius:0;border-start-start-radius:0;margin-block:1px;margin-inline-end:2px}}}
1
+ @layer comp{.tabPanel{--color:theme(colors.primary.500);&[data-orientation=top]{grid-template:"tablist" auto "content" 1fr/1fr;.tabHeader{box-shadow:inset 0 -1px 0 theme(borderColor.dimmed)}}&[data-orientation=bottom]{grid-template:"content" 1fr "tablist" auto/1fr;.tabHeader{box-shadow:inset 0 1px 0 theme(borderColor.dimmed);margin-top:1px}}&[data-orientation=start]{grid-template:"tablist content" 1fr/auto 1fr;.tabHeader{box-shadow:inset -1px 0 0 theme(borderColor.dimmed)}}&[data-orientation=end]{grid-template:"content tablist" 1fr/1fr auto;.tabHeader{box-shadow:inset 1px 0 0 theme(borderColor.dimmed)}}}}@layer util{.tabPanel{& .tabList>.tabButton:global(.active){pointer-events:none}&>.tabHeader{grid-area:tablist;&>.tabList>.tabButton{&[data-color=accent]{--color:theme(colors.accent.500)}&[data-color=info]{--color:theme(colors.info.500)}&[data-color=danger]{--color:theme(colors.danger.500)}&[data-color=success]{--color:theme(colors.success.500)}&[data-color=warning]{--color:theme(colors.warning.500)}&:not(:global(.active)):hover{background-color:theme(colors.tint.100/50%);color:color-mix(in lab,var(--color) 65%,var(--fabric-text))}&:global(.active){--active-color:var(--color);color:color-mix(in lab,var(--color) 65%,var(--fabric-text));font-weight:500}}}&[data-variant=outline]{& .tabList>.tabButton:global(.active){--active-color:theme(backgroundColor.base);--active-border:0 0 0 1px theme(borderColor.base) inset;background-color:theme(backgroundColor.base)}}&[data-variant=solid]{& .tabList>.tabButton:global(.active){background-color:var(--color);color:theme(colors.white)}}&[data-variant=soft]{& .tabList>.tabButton:global(.active){background-color:color-mix(in lab,var(--color) 20%,var(--fabric-bg))}}&[data-orientation=top] .tabList{&>.tabButton:global(.active){box-shadow:0 -2px 0 var(--active-color) inset,var(--active-border,0 0 0 transparent)}}&[data-orientation=bottom] .tabList{&>.tabButton:global(.active){box-shadow:0 2px 0 var(--active-color) inset,var(--active-border,0 0 0 transparent)}}&[data-orientation=start] .tabList{&>.tabButton:global(.active){box-shadow:-2px 0 0 var(--active-color) inset,var(--active-border,0 0 0 transparent)}}&[data-orientation=end] .tabList{&>.tabButton:global(.active){box-shadow:2px 0 0 var(--active-color) inset,var(--active-border,0 0 0 transparent)}}&[data-orientation=top] .tabList>.tabButton{border-end-end-radius:0;border-end-start-radius:0;margin-top:2px;margin-inline:1px}&[data-orientation=bottom] .tabList>.tabButton{border-start-end-radius:0;border-start-start-radius:0;margin-bottom:2px;margin-inline:1px}&[data-orientation=start] .tabList>.tabButton{border-end-end-radius:0;border-start-end-radius:0;margin-block:1px;margin-inline-start:2px}&[data-orientation=end] .tabList>.tabButton{border-end-start-radius:0;border-start-start-radius:0;margin-block:1px;margin-inline-end:2px}}}
@@ -26,6 +26,8 @@ var Aside = function Aside(_ref) {
26
26
  iconBg = _ref.iconBg,
27
27
  iconColor = _ref.iconColor,
28
28
  rtlFlip = _ref.rtlFlip,
29
+ className = _ref.className,
30
+ bodyClassName = _ref.bodyClassName,
29
31
  headerClassName = _ref.headerClassName,
30
32
  resizeable = _ref.resizeable,
31
33
  flyout = _ref.flyout,
@@ -101,15 +103,17 @@ var Aside = function Aside(_ref) {
101
103
  };
102
104
  }, [width, minWidth, maxWidth]);
103
105
  return /*#__PURE__*/jsxs("aside", {
104
- className: classNames(classes.aside, "overflow-hidden grid"),
106
+ className: classNames(classes.aside, className, "overflow-hidden grid"),
105
107
  "data-align": align,
106
108
  "data-flyout": peek,
109
+ "data-loading": loading,
107
110
  "data-collapsed": isCollapsed,
108
111
  style: isCollapsed ? undefined : widthStyles,
109
112
  "data-testid": testId,
110
113
  "data-test-value": testValue,
111
114
  children: [/*#__PURE__*/jsxs("header", {
112
115
  className: classNames(classes.asideHeader, headerClassName, "grid area-head items-center"),
116
+ "data-ref": "asideHeader",
113
117
  children: [title && /*#__PURE__*/jsx("div", {
114
118
  className: classNames(classes.asideTitle, "truncate py-0.5 px-1 select-none pointer-events-none"),
115
119
  children: title
@@ -138,7 +142,7 @@ var Aside = function Aside(_ref) {
138
142
  }), /*#__PURE__*/jsx("section", {
139
143
  ref: elementRef,
140
144
  "data-ref": "asideBody",
141
- className: classNames(classes.asideBody, "overflow-hidden grid"),
145
+ className: classNames(classes.asideBody, bodyClassName, "overflow-hidden grid"),
142
146
  style: isCollapsed ? widthStyles : undefined,
143
147
  children: /*#__PURE__*/jsx(ErrorBoundary, {
144
148
  children: children
@@ -44,12 +44,15 @@ var Content = function Content(_ref) {
44
44
  testValue = _ref["data-test-value"];
45
45
  var resizeHandle = useResizeObserver(onResize);
46
46
  var scrollHandler = useDebounce(function (e) {
47
+ var el = e.target;
47
48
  onScroll === null || onScroll === void 0 || onScroll({
48
- // @ts-expect-error ignore
49
- left: e.target.scrollLeft,
50
- // @ts-expect-error ignore
51
- top: e.target.scrollTop
52
- });
49
+ left: el.scrollLeft,
50
+ top: el.scrollTop,
51
+ scrollHeight: el.scrollHeight,
52
+ scrollWidth: el.scrollWidth,
53
+ width: el.offsetWidth,
54
+ height: el.offsetHeight
55
+ }, e);
53
56
  }, [onScroll]);
54
57
  useImperativeHandle(ref, function () {
55
58
  return resizeHandle.current;
@@ -4,10 +4,11 @@ import _defineProperty from '@babel/runtime/helpers/defineProperty';
4
4
  import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
5
5
  import classNames from 'classnames';
6
6
  import { useMemoDebugger } from '../../hooks/useEffectDebugger.js';
7
+ import 'react';
8
+ import { jsx } from 'react/jsx-runtime';
7
9
  import { getColor, getBgClass, getColorClass } from '../../utils/getColor.js';
8
10
  import '@react-fabric/utilities';
9
11
  import classes from './HeadFoot.module.css';
10
- import { jsx } from 'react/jsx-runtime';
11
12
 
12
13
  var _excluded = ["as", "children", "className", "bg", "color", "flex", "area", "dir", "align", "justify"];
13
14
  function ownKeys(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; }
@@ -39,7 +40,7 @@ var HeadFoot = function HeadFoot(_ref) {
39
40
  }, [bg], "HeadFoot styles");
40
41
  return /*#__PURE__*/jsx(E, _objectSpread(_objectSpread({
41
42
  dir: dir,
42
- className: classNames(classes.headfoot, className, bg && getBgClass(bg), color && getColorClass(color), area === "head" ? "area-head" : "area-foot", "leading-none", flex && "flex flex-nowrap gap-px", align && "items-".concat(align), justify && "justify-".concat(justify)),
43
+ className: classNames(classes.headfoot, className, bg && getBgClass(bg), color && getColorClass(color), area === "head" ? "area-head" : "area-foot", "leading-none", flex && "flex flex-nowrap", align && "items-".concat(align), justify && "justify-".concat(justify)),
43
44
  style: styles
44
45
  }, aria), {}, {
45
46
  children: children
@@ -1 +1 @@
1
- @layer comp{.headfoot{.buttonWrapper+.buttonWrapper{margin-inline-start:.25rem}}}@layer util{.headfoot{height:unset;margin:unset;width:unset}}
1
+ @layer comp{.headfoot{gap:2px;.buttonWrapper+.buttonWrapper{margin-inline-start:.25rem}}}@layer util{.headfoot{height:unset;margin:unset;width:unset}}
@@ -47,6 +47,7 @@ var Page = function Page(_ref) {
47
47
  return /*#__PURE__*/jsxs("div", {
48
48
  "data-testid": testId,
49
49
  "data-test-value": testValue,
50
+ "data-loading": loading,
50
51
  className: classNames(classes.page, "overflow-hidden grid area-content", paper && "shadow-paper m-[6px] rounded-capped"),
51
52
  children: [title && /*#__PURE__*/jsxs("div", {
52
53
  "data-ref": "pageTitle",
@@ -53,7 +53,7 @@ var Col = function Col(_ref3) {
53
53
  stretchContent = _ref3.stretchContent,
54
54
  aria = _objectWithoutProperties(_ref3, _excluded3);
55
55
  return /*#__PURE__*/jsx("div", _objectSpread(_objectSpread({
56
- className: classNames(classes.col, className, stretchContent && classes.stretchContent, flex === "auto" && "flex-content", flex === "fill" && "flex-1", flex === "full" && "flex-full", align && "self-".concat(align))
56
+ className: classNames(classes.col, className, stretchContent && classes.stretchContent, flex === "fill" && "flex-1", flex === "full" && "flex-full", flex === "auto" && "flex-initial", flex === "content" && "flex-content", align && "self-".concat(align))
57
57
  }, aria), {}, {
58
58
  children: children
59
59
  }));
@@ -1 +1 @@
1
- @layer comp{.section{grid-template:"head head head" auto "side-s content side-e" 1fr "foot foot foot" auto/auto 1fr auto}}
1
+ @layer comp{.section{grid-template:". loader ." auto "head head head" auto "side-s content side-e" 1fr "foot foot foot" auto/auto 1fr auto}}