@dxos/react-ui-stack 0.8.4-main.c85a9c8dae → 0.8.4-main.cb12b3f963

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 (42) hide show
  1. package/dist/lib/browser/index.mjs +129 -172
  2. package/dist/lib/browser/index.mjs.map +4 -4
  3. package/dist/lib/browser/meta.json +1 -1
  4. package/dist/lib/browser/translations.mjs +23 -0
  5. package/dist/lib/browser/translations.mjs.map +7 -0
  6. package/dist/lib/node-esm/index.mjs +129 -172
  7. package/dist/lib/node-esm/index.mjs.map +4 -4
  8. package/dist/lib/node-esm/meta.json +1 -1
  9. package/dist/lib/node-esm/translations.mjs +25 -0
  10. package/dist/lib/node-esm/translations.mjs.map +7 -0
  11. package/dist/types/src/components/Stack/Stack.d.ts +2 -7
  12. package/dist/types/src/components/Stack/Stack.d.ts.map +1 -1
  13. package/dist/types/src/components/Stack/Stack.stories.d.ts.map +1 -1
  14. package/dist/types/src/components/StackContext.d.ts +1 -1
  15. package/dist/types/src/components/StackContext.d.ts.map +1 -1
  16. package/dist/types/src/components/StackItem/StackItem.d.ts +4 -4
  17. package/dist/types/src/components/StackItem/StackItem.d.ts.map +1 -1
  18. package/dist/types/src/components/StackItem/StackItem.stories.d.ts.map +1 -1
  19. package/dist/types/src/components/StackItem/StackItemDragHandle.d.ts.map +1 -1
  20. package/dist/types/src/components/StackItem/StackItemHeading.d.ts +1 -1
  21. package/dist/types/src/components/StackItem/StackItemHeading.d.ts.map +1 -1
  22. package/dist/types/src/components/StackItem/StackItemResizeHandle.d.ts.map +1 -1
  23. package/dist/types/src/hooks/useStackDropForElements.d.ts.map +1 -1
  24. package/dist/types/src/index.d.ts +0 -1
  25. package/dist/types/src/index.d.ts.map +1 -1
  26. package/dist/types/src/playwright/playwright.config.d.ts.map +1 -1
  27. package/dist/types/src/playwright/stack-manager.d.ts.map +1 -1
  28. package/dist/types/src/translations.d.ts +8 -8
  29. package/dist/types/src/translations.d.ts.map +1 -1
  30. package/dist/types/tsconfig.tsbuildinfo +1 -1
  31. package/package.json +34 -35
  32. package/src/components/Stack/Stack.stories.tsx +8 -10
  33. package/src/components/Stack/Stack.tsx +193 -206
  34. package/src/components/StackContext.tsx +1 -1
  35. package/src/components/StackItem/StackItem.stories.tsx +1 -1
  36. package/src/components/StackItem/StackItem.tsx +13 -15
  37. package/src/components/StackItem/StackItemHeading.tsx +2 -2
  38. package/src/components/StackItem/StackItemResizeHandle.tsx +0 -1
  39. package/src/components/StackItem/StackItemSigil.tsx +2 -2
  40. package/src/hooks/useStackDropForElements.ts +2 -2
  41. package/src/index.ts +0 -1
  42. package/src/translations.ts +8 -8
@@ -1,14 +1,14 @@
1
1
  // src/components/Stack/Stack.tsx
2
2
  import { composeRefs } from "@radix-ui/react-compose-refs";
3
- import React, { Children, forwardRef, useCallback, useEffect, useMemo, useState as useState2 } from "react";
3
+ import React, { Children, forwardRef, useCallback, useEffect, useState as useState2 } from "react";
4
4
  import { ListItem, useId } from "@dxos/react-ui";
5
5
  import { mx } from "@dxos/ui-theme";
6
6
 
7
7
  // src/hooks/useStackDropForElements.ts
8
- import { combine } from "@atlaskit/pragmatic-drag-and-drop/combine";
9
- import { dropTargetForElements } from "@atlaskit/pragmatic-drag-and-drop/element/adapter";
10
8
  import { autoScrollForElements } from "@atlaskit/pragmatic-drag-and-drop-auto-scroll/element";
11
9
  import { attachClosestEdge, extractClosestEdge } from "@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge";
10
+ import { combine } from "@atlaskit/pragmatic-drag-and-drop/combine";
11
+ import { dropTargetForElements } from "@atlaskit/pragmatic-drag-and-drop/element/adapter";
12
12
  import { useLayoutEffect, useState } from "react";
13
13
  var noop = () => {
14
14
  };
@@ -95,11 +95,6 @@ var useStackItem = () => useContext(StackItemContext);
95
95
  // src/components/Stack/Stack.tsx
96
96
  var railGridHorizontal = "grid-rows-[[rail-start]_var(--dx-rail-size)_[content-start]_1fr_[content-end]]";
97
97
  var railGridVertical = "grid-cols-[[rail-start]_var(--dx-rail-size)_[content-start]_1fr_[content-end]]";
98
- var railGridHorizontalContainFitContent = "grid-rows-[[rail-start]_var(--dx-rail-size)_[content-start]_fit-content(calc(100%-var(--dx-rail-size)*2+2px))_[content-end]]";
99
- var railGridVerticalContainFitContent = "grid-cols-[[rail-start]_var(--dx-rail-size)_[content-start]_fit-content(calc(100%-var(--dx-rail-size)*2+2px))_[content-end]]";
100
- var autoScrollRootAttributes = {
101
- "data-drag-autoscroll": "idle"
102
- };
103
98
  var PERPENDICULAR_FOCUS_THRESHHOLD = 128;
104
99
  var scrollIntoViewAndFocus = (el, orientation) => {
105
100
  el.scrollIntoView({
@@ -108,18 +103,14 @@ var scrollIntoViewAndFocus = (el, orientation) => {
108
103
  });
109
104
  return el.focus();
110
105
  };
111
- var Stack = /* @__PURE__ */ forwardRef(({ children, classNames, style, orientation = "vertical", rail = true, size = "intrinsic", onRearrange, itemsCount = Children.count(children), getDropElement, separatorOnScroll, circularFocus, ...props }, forwardedRef) => {
112
- const stackId = useId("stack", props.id);
106
+ var Stack = /* @__PURE__ */ forwardRef(({ children, classNames, id, style, orientation = "vertical", rail = true, size = "intrinsic", itemsCount = Children.count(children), circularFocus, separatorOnScroll, getDropElement, onBlur, onKeyDown, onRearrange, ...props }, forwardedRef) => {
107
+ const stackId = useId("stack", id);
113
108
  const [stackElement, stackRef] = useState2(null);
114
109
  const [lastFocusedItem, setLastFocusedItem] = useState2();
115
110
  const composedItemRef = composeRefs(stackRef, forwardedRef);
116
- const styles = {
117
- [orientation === "horizontal" ? "gridTemplateColumns" : "gridTemplateRows"]: size === "split" ? `repeat(${itemsCount}, 1fr)` : `repeat(${itemsCount}, min-content) [tabster-dummies] 0`,
118
- ...style
119
- };
120
- const selfDroppable = !!(itemsCount < 1 && onRearrange && props.id);
111
+ const selfDroppable = !!(itemsCount < 1 && onRearrange && id);
121
112
  const { dropping } = useStackDropForElements({
122
- id: props.id,
113
+ id,
123
114
  element: getDropElement && stackElement ? getDropElement(stackElement) : stackElement,
124
115
  scrollElement: stackElement,
125
116
  selfDroppable,
@@ -150,116 +141,12 @@ var Stack = /* @__PURE__ */ forwardRef(({ children, classNames, style, orientati
150
141
  setLastFocusedItem(closestStackItem?.getAttribute("data-dx-item-id") ?? void 0);
151
142
  }
152
143
  }
153
- props.onBlur?.(event);
154
- }, [
155
- stackId,
156
- props.onBlur
157
- ]);
158
- const handleKeyDown = useCallback((event) => {
159
- const target = event.target;
160
- if (event.key.startsWith("Arrow") && !target.closest(`input, textarea, [role="textbox"], [data-tabster*="mover"], [data-arrow-keys="all"], [data-arrow-keys~="${event.key.toLowerCase().slice(5)}"]`)) {
161
- const closestOwnedItem = target.closest(`[data-dx-stack-item="${stackId}"]`);
162
- const closestStack = target.closest("[data-dx-stack]");
163
- const closestStackItems = Array.from(closestStack?.querySelectorAll(`[data-dx-stack-item="${stackId}"]`) ?? []);
164
- const closestStackOrientation = closestStack?.getAttribute("aria-orientation");
165
- const ancestorStack = closestStack?.parentElement?.closest("[data-dx-stack]");
166
- if (closestOwnedItem && closestStack) {
167
- const ancestorOrientation = ancestorStack?.getAttribute("aria-orientation");
168
- const parallelDelta = (closestStackOrientation === "vertical" ? event.key === "ArrowUp" : event.key === "ArrowLeft") ? -1 : (closestStackOrientation === "vertical" ? event.key === "ArrowDown" : event.key === "ArrowRight") ? 1 : 0;
169
- const perpendicularDelta = (closestStackOrientation === "vertical" ? event.key === "ArrowLeft" : event.key === "ArrowUp") ? -1 : (closestStackOrientation === "vertical" ? event.key === "ArrowRight" : event.key === "ArrowDown") ? 1 : 0;
170
- if (parallelDelta !== 0) {
171
- const currentIndex = closestStackItems.indexOf(closestOwnedItem);
172
- const nextIndex = currentIndex + parallelDelta;
173
- let adjacentItem;
174
- if (circularFocus) {
175
- adjacentItem = closestStackItems[(nextIndex + closestStackItems.length) % closestStackItems.length];
176
- } else {
177
- if (nextIndex >= 0 && nextIndex < closestStackItems.length) {
178
- adjacentItem = closestStackItems[nextIndex];
179
- }
180
- }
181
- if (adjacentItem) {
182
- event.preventDefault();
183
- scrollIntoViewAndFocus(adjacentItem, closestStackOrientation);
184
- }
185
- }
186
- if (perpendicularDelta !== 0) {
187
- if (ancestorStack && ancestorOrientation !== closestStackOrientation) {
188
- const siblingStacks = Array.from(ancestorStack.querySelectorAll(`[data-dx-stack-item="${ancestorStack.getAttribute("data-dx-stack")}"] [data-dx-stack]`));
189
- const currentStackIndex = siblingStacks.indexOf(closestStack);
190
- const nextStackIndex = currentStackIndex + perpendicularDelta;
191
- let adjacentStack;
192
- if (ancestorStack.getAttribute("data-dx-stack-circular-focus") === "true") {
193
- adjacentStack = siblingStacks[(nextStackIndex + siblingStacks.length) % siblingStacks.length];
194
- } else {
195
- if (nextStackIndex >= 0 && nextStackIndex < siblingStacks.length) {
196
- adjacentStack = siblingStacks[nextStackIndex];
197
- }
198
- }
199
- const adjacentStackSelfItem = adjacentStack?.closest(`[data-dx-stack-item=${ancestorStack.getAttribute("data-dx-stack")}]`);
200
- const adjacentStackItems = adjacentStack ? Array.from(adjacentStack.querySelectorAll(`[data-dx-stack-item="${adjacentStack.getAttribute("data-dx-stack")}"]`)) : [];
201
- if (adjacentStack && adjacentStackItems.length > 0) {
202
- let closestItem = adjacentStackItems[0];
203
- const lastFocusedItem2 = adjacentStack.querySelector(`[data-dx-item-id="${adjacentStack.getAttribute("data-dx-last-focused-item") ?? "never"}"]`);
204
- if (lastFocusedItem2) {
205
- closestItem = lastFocusedItem2;
206
- } else {
207
- const ownedItemRect = closestOwnedItem.getBoundingClientRect();
208
- const targetPosition = closestStackOrientation === "vertical" ? ownedItemRect.top : ownedItemRect.left;
209
- let closestDistance = Infinity;
210
- for (const item of adjacentStackItems) {
211
- const itemRect = item.getBoundingClientRect();
212
- const itemPosition = closestStackOrientation === "vertical" ? itemRect.top : itemRect.left;
213
- const distance = Math.abs(itemPosition - targetPosition);
214
- if (distance < closestDistance) {
215
- closestDistance = distance;
216
- closestItem = item;
217
- }
218
- if (closestDistance <= PERPENDICULAR_FOCUS_THRESHHOLD) {
219
- break;
220
- }
221
- }
222
- }
223
- event.preventDefault();
224
- scrollIntoViewAndFocus(closestItem, closestStackOrientation);
225
- } else if (adjacentStackSelfItem) {
226
- event.preventDefault();
227
- scrollIntoViewAndFocus(adjacentStackSelfItem, ancestorOrientation);
228
- }
229
- } else if (closestOwnedItem) {
230
- const closestOwnedItemStack = closestOwnedItem.querySelector("[data-dx-stack]");
231
- const closestOwnedItemStackItems = closestOwnedItemStack ? Array.from(closestOwnedItemStack.querySelectorAll(`[data-dx-stack-item="${closestOwnedItemStack.getAttribute("data-dx-stack")}"]`)) : [];
232
- if (closestOwnedItemStackItems.length > 0) {
233
- event.preventDefault();
234
- scrollIntoViewAndFocus(closestOwnedItemStackItems[[
235
- "ArrowUp",
236
- "ArrowLeft"
237
- ].includes(event.key) ? closestOwnedItemStackItems.length - 1 : 0], closestOwnedItemStack?.getAttribute("aria-orientation"));
238
- }
239
- }
240
- }
241
- }
242
- }
243
- props.onKeyDown?.(event);
144
+ onBlur?.(event);
244
145
  }, [
245
- props.onKeyDown,
246
146
  stackId,
247
- circularFocus
248
- ]);
249
- const gridClasses = useMemo(() => {
250
- if (!rail) {
251
- return orientation === "horizontal" ? "grid-rows-1 px-(--stack-gap)" : "grid-cols-1 py-(--stack-gap)";
252
- }
253
- if (orientation === "horizontal") {
254
- return railGridHorizontal;
255
- } else {
256
- return railGridVertical;
257
- }
258
- }, [
259
- rail,
260
- orientation,
261
- size
147
+ onBlur
262
148
  ]);
149
+ const handleKeyDown = useKeyDown(stackId, circularFocus, onKeyDown);
263
150
  useEffect(() => {
264
151
  if (!(stackElement && Number.isFinite(separatorOnScroll))) {
265
152
  return;
@@ -280,27 +167,30 @@ var Stack = /* @__PURE__ */ forwardRef(({ children, classNames, style, orientati
280
167
  ]);
281
168
  return /* @__PURE__ */ React.createElement(StackContext.Provider, {
282
169
  value: {
170
+ stackId,
283
171
  orientation,
284
172
  rail,
285
173
  size,
286
- onRearrange,
287
- stackId
174
+ onRearrange
288
175
  }
289
176
  }, /* @__PURE__ */ React.createElement("div", {
290
177
  ...props,
291
- className: mx("grid relative [--stack-gap:var(--spacing-trim-xs)]", gridClasses, size === "contain" && (orientation === "horizontal" ? "overflow-x-auto overscroll-x-contain min-h-0 max-h-full h-full" : "overflow-y-auto min-w-0 max-w-full w-full"), classNames),
292
- onKeyDown: handleKeyDown,
293
- onBlur: handleBlur,
178
+ ...Number.isFinite(separatorOnScroll) && {
179
+ onScroll: handleScroll
180
+ },
181
+ className: mx("relative grid [--stack-gap:var(--spacing-trim-xs)]", size === "contain" && (orientation === "horizontal" ? "overflow-x-auto overscroll-x-contain min-h-0 max-h-full h-full" : "overflow-y-auto min-w-0 max-w-full w-full"), rail ? orientation === "horizontal" ? railGridHorizontal : railGridVertical : orientation === "horizontal" ? "grid-rows-1 px-(--stack-gap)" : "grid-cols-1 py-(--stack-gap)", classNames),
182
+ style: {
183
+ [orientation === "horizontal" ? "gridTemplateColumns" : "gridTemplateRows"]: size === "split" ? `repeat(${itemsCount}, 1fr)` : `repeat(${itemsCount}, min-content) [tabster-dummies] 0`,
184
+ ...style
185
+ },
186
+ "aria-orientation": orientation,
294
187
  "data-dx-stack": stackId,
295
188
  "data-dx-stack-circular-focus": circularFocus,
296
189
  "data-dx-last-focused-item": lastFocusedItem,
297
190
  "data-rail": rail,
298
- "aria-orientation": orientation,
299
- style: styles,
300
- ref: composedItemRef,
301
- ...Number.isFinite(separatorOnScroll) && {
302
- onScroll: handleScroll
303
- }
191
+ onBlur: handleBlur,
192
+ onKeyDown: handleKeyDown,
193
+ ref: composedItemRef
304
194
  }, children, selfDroppable && dropping && /* @__PURE__ */ React.createElement(ListItem.DropIndicator, {
305
195
  lineInset: 8,
306
196
  terminalInset: -8,
@@ -308,28 +198,119 @@ var Stack = /* @__PURE__ */ forwardRef(({ children, classNames, style, orientati
308
198
  edge: orientation === "horizontal" ? "left" : "top"
309
199
  })));
310
200
  });
201
+ var useKeyDown = (stackId, circularFocus, onKeyDown) => useCallback((event) => {
202
+ const target = event.target;
203
+ if (event.key.startsWith("Arrow") && !target.closest(`input, textarea, [role="textbox"], [data-tabster*="mover"], [data-arrow-keys="all"], [data-arrow-keys~="${event.key.toLowerCase().slice(5)}"]`)) {
204
+ const closestOwnedItem = target.closest(`[data-dx-stack-item="${stackId}"]`);
205
+ const closestStack = target.closest("[data-dx-stack]");
206
+ const closestStackItems = Array.from(closestStack?.querySelectorAll(`[data-dx-stack-item="${stackId}"]`) ?? []);
207
+ const closestStackOrientation = closestStack?.getAttribute("aria-orientation");
208
+ const ancestorStack = closestStack?.parentElement?.closest("[data-dx-stack]");
209
+ if (closestOwnedItem && closestStack) {
210
+ const ancestorOrientation = ancestorStack?.getAttribute("aria-orientation");
211
+ const parallelDelta = (closestStackOrientation === "vertical" ? event.key === "ArrowUp" : event.key === "ArrowLeft") ? -1 : (closestStackOrientation === "vertical" ? event.key === "ArrowDown" : event.key === "ArrowRight") ? 1 : 0;
212
+ const perpendicularDelta = (closestStackOrientation === "vertical" ? event.key === "ArrowLeft" : event.key === "ArrowUp") ? -1 : (closestStackOrientation === "vertical" ? event.key === "ArrowRight" : event.key === "ArrowDown") ? 1 : 0;
213
+ if (parallelDelta !== 0) {
214
+ const currentIndex = closestStackItems.indexOf(closestOwnedItem);
215
+ const nextIndex = currentIndex + parallelDelta;
216
+ let adjacentItem;
217
+ if (circularFocus) {
218
+ adjacentItem = closestStackItems[(nextIndex + closestStackItems.length) % closestStackItems.length];
219
+ } else {
220
+ if (nextIndex >= 0 && nextIndex < closestStackItems.length) {
221
+ adjacentItem = closestStackItems[nextIndex];
222
+ }
223
+ }
224
+ if (adjacentItem) {
225
+ event.preventDefault();
226
+ scrollIntoViewAndFocus(adjacentItem, closestStackOrientation);
227
+ }
228
+ }
229
+ if (perpendicularDelta !== 0) {
230
+ if (ancestorStack && ancestorOrientation !== closestStackOrientation) {
231
+ const siblingStacks = Array.from(ancestorStack.querySelectorAll(`[data-dx-stack-item="${ancestorStack.getAttribute("data-dx-stack")}"] [data-dx-stack]`));
232
+ const currentStackIndex = siblingStacks.indexOf(closestStack);
233
+ const nextStackIndex = currentStackIndex + perpendicularDelta;
234
+ let adjacentStack;
235
+ if (ancestorStack.getAttribute("data-dx-stack-circular-focus") === "true") {
236
+ adjacentStack = siblingStacks[(nextStackIndex + siblingStacks.length) % siblingStacks.length];
237
+ } else {
238
+ if (nextStackIndex >= 0 && nextStackIndex < siblingStacks.length) {
239
+ adjacentStack = siblingStacks[nextStackIndex];
240
+ }
241
+ }
242
+ const adjacentStackSelfItem = adjacentStack?.closest(`[data-dx-stack-item=${ancestorStack.getAttribute("data-dx-stack")}]`);
243
+ const adjacentStackItems = adjacentStack ? Array.from(adjacentStack.querySelectorAll(`[data-dx-stack-item="${adjacentStack.getAttribute("data-dx-stack")}"]`)) : [];
244
+ if (adjacentStack && adjacentStackItems.length > 0) {
245
+ let closestItem = adjacentStackItems[0];
246
+ const lastFocusedItem = adjacentStack.querySelector(`[data-dx-item-id="${adjacentStack.getAttribute("data-dx-last-focused-item") ?? "never"}"]`);
247
+ if (lastFocusedItem) {
248
+ closestItem = lastFocusedItem;
249
+ } else {
250
+ const ownedItemRect = closestOwnedItem.getBoundingClientRect();
251
+ const targetPosition = closestStackOrientation === "vertical" ? ownedItemRect.top : ownedItemRect.left;
252
+ let closestDistance = Infinity;
253
+ for (const item of adjacentStackItems) {
254
+ const itemRect = item.getBoundingClientRect();
255
+ const itemPosition = closestStackOrientation === "vertical" ? itemRect.top : itemRect.left;
256
+ const distance = Math.abs(itemPosition - targetPosition);
257
+ if (distance < closestDistance) {
258
+ closestDistance = distance;
259
+ closestItem = item;
260
+ }
261
+ if (closestDistance <= PERPENDICULAR_FOCUS_THRESHHOLD) {
262
+ break;
263
+ }
264
+ }
265
+ }
266
+ event.preventDefault();
267
+ scrollIntoViewAndFocus(closestItem, closestStackOrientation);
268
+ } else if (adjacentStackSelfItem) {
269
+ event.preventDefault();
270
+ scrollIntoViewAndFocus(adjacentStackSelfItem, ancestorOrientation);
271
+ }
272
+ } else if (closestOwnedItem) {
273
+ const closestOwnedItemStack = closestOwnedItem.querySelector("[data-dx-stack]");
274
+ const closestOwnedItemStackItems = closestOwnedItemStack ? Array.from(closestOwnedItemStack.querySelectorAll(`[data-dx-stack-item="${closestOwnedItemStack.getAttribute("data-dx-stack")}"]`)) : [];
275
+ if (closestOwnedItemStackItems.length > 0) {
276
+ event.preventDefault();
277
+ scrollIntoViewAndFocus(closestOwnedItemStackItems[[
278
+ "ArrowUp",
279
+ "ArrowLeft"
280
+ ].includes(event.key) ? closestOwnedItemStackItems.length - 1 : 0], closestOwnedItemStack?.getAttribute("aria-orientation"));
281
+ }
282
+ }
283
+ }
284
+ }
285
+ }
286
+ onKeyDown?.(event);
287
+ }, [
288
+ onKeyDown,
289
+ stackId,
290
+ circularFocus
291
+ ]);
311
292
 
312
293
  // src/components/StackItem/StackItem.tsx
294
+ import { attachClosestEdge as attachClosestEdge2, extractClosestEdge as extractClosestEdge2 } from "@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge";
313
295
  import { combine as combine2 } from "@atlaskit/pragmatic-drag-and-drop/combine";
314
296
  import { draggable, dropTargetForElements as dropTargetForElements2 } from "@atlaskit/pragmatic-drag-and-drop/element/adapter";
315
297
  import { preserveOffsetOnSource } from "@atlaskit/pragmatic-drag-and-drop/element/preserve-offset-on-source";
316
298
  import { setCustomNativeDragPreview } from "@atlaskit/pragmatic-drag-and-drop/element/set-custom-native-drag-preview";
317
- import { attachClosestEdge as attachClosestEdge2, extractClosestEdge as extractClosestEdge2 } from "@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge";
318
299
  import { useFocusableGroup } from "@fluentui/react-tabster";
319
300
  import { composeRefs as composeRefs2 } from "@radix-ui/react-compose-refs";
320
- import React8, { forwardRef as forwardRef5, useCallback as useCallback2, useLayoutEffect as useLayoutEffect2, useMemo as useMemo3, useState as useState4 } from "react";
301
+ import React8, { forwardRef as forwardRef5, useCallback as useCallback2, useLayoutEffect as useLayoutEffect2, useMemo as useMemo2, useState as useState4 } from "react";
321
302
  import { createPortal } from "react-dom";
322
303
  import { ListItem as ListItem2 } from "@dxos/react-ui";
323
304
  import { resizeAttributes, sizeStyle } from "@dxos/react-ui-dnd";
324
305
  import { mx as mx5 } from "@dxos/ui-theme";
325
306
 
326
307
  // src/components/StackItem/StackItemContent.tsx
327
- import React2, { forwardRef as forwardRef2, useMemo as useMemo2 } from "react";
308
+ import React2, { forwardRef as forwardRef2, useMemo } from "react";
328
309
  import { mx as mx2 } from "@dxos/ui-theme";
329
310
  var StackItemContent = /* @__PURE__ */ forwardRef2(({ classNames, children, toolbar, statusbar, ...props }, forwardedRef) => {
330
311
  const { size: stackItemSize } = useStack();
331
312
  const { role } = useStackItem();
332
- const style = useMemo2(() => ({
313
+ const style = useMemo(() => ({
333
314
  gridTemplateRows: [
334
315
  toolbar && role === "section" ? "calc(var(--dx-toolbar-size) - 1px)" : "var(--dx-toolbar-size)",
335
316
  "1fr",
@@ -369,12 +350,12 @@ import { Slot as Slot2 } from "@radix-ui/react-slot";
369
350
  import React4, { forwardRef as forwardRef3 } from "react";
370
351
  import { useAttention } from "@dxos/react-ui-attention";
371
352
  import { mx as mx3 } from "@dxos/ui-theme";
372
- var StackItemHeading = ({ children, classNames, asChild, separateOnScroll, ...props }) => {
353
+ var StackItemHeading = ({ children, classNames, asChild, separateOnScroll, role, ...props }) => {
373
354
  const { orientation } = useStack();
374
355
  const Comp = asChild ? Slot2 : Primitive2.div;
375
356
  return /* @__PURE__ */ React4.createElement(Comp, {
376
- role: "heading",
377
357
  ...props,
358
+ role: role ?? "heading",
378
359
  className: mx3("flex items-center border-x-0! bg-header-surface", separateOnScroll ? 'border-transparent [[data-scroll-separator="true"]_&]:border-subdued-separator' : "border-subdued-separator", orientation === "horizontal" ? "h-(--dx-rail-size)" : "w-(--dx-rail-size) flex-col", orientation === "horizontal" ? "border-b" : "border-e", classNames)
379
360
  }, children);
380
361
  };
@@ -418,25 +399,7 @@ import { Button, DropdownMenu, Icon, toLocalizedString, useTranslation } from "@
418
399
  import { useAttention as useAttention2 } from "@dxos/react-ui-attention";
419
400
  import { mx as mx4 } from "@dxos/ui-theme";
420
401
  import { getHostPlatform } from "@dxos/util";
421
-
422
- // src/translations.ts
423
- var translationKey = "@dxos/react-ui-stack";
424
- var translations = [
425
- {
426
- "en-US": {
427
- [translationKey]: {
428
- "resize label": "Drag to resize",
429
- "drag handle label": "Drag to rearrange",
430
- "pin start label": "Pin to the left sidebar",
431
- "pin end label": "Pin to the right sidebar",
432
- "increment start label": "Move to the left",
433
- "increment end label": "Move to the right",
434
- "close label": "Close",
435
- "minify label": "Minify"
436
- }
437
- }
438
- }
439
- ];
402
+ import { translationKey } from "#translations";
440
403
 
441
404
  // src/components/StackItem/MenuSignifier.tsx
442
405
  import React6 from "react";
@@ -486,8 +449,7 @@ var StackItemSigil = /* @__PURE__ */ forwardRef4(({ actions: actionGroups, onAct
486
449
  }, /* @__PURE__ */ React7.createElement("span", {
487
450
  className: "sr-only"
488
451
  }, triggerLabel), /* @__PURE__ */ React7.createElement(Icon, {
489
- icon,
490
- size: 5
452
+ icon
491
453
  }));
492
454
  if (!hasActions) {
493
455
  return button;
@@ -542,10 +504,10 @@ var StackItemSigil = /* @__PURE__ */ forwardRef4(({ actions: actionGroups, onAct
542
504
  });
543
505
 
544
506
  // src/components/StackItem/StackItem.tsx
545
- var DEFAULT_HORIZONTAL_SIZE = 48;
546
507
  var DEFAULT_VERTICAL_SIZE = "min-content";
508
+ var DEFAULT_HORIZONTAL_SIZE = 50;
547
509
  var DEFAULT_EXTRINSIC_SIZE = DEFAULT_HORIZONTAL_SIZE;
548
- var StackItemRoot = /* @__PURE__ */ forwardRef5(({ item, children, classNames, size: propsSize, onSizeChange, role, order, prevSiblingId, nextSiblingId, style, disableRearrange, focusIndicatorVariant = "over-all", ...props }, forwardedRef) => {
510
+ var StackItemRoot = /* @__PURE__ */ forwardRef5(({ classNames, children, style, role, item, order, prevSiblingId, nextSiblingId, size: sizeProp, onSizeChange, disableRearrange, focusIndicatorVariant = "over-all", ...props }, forwardedRef) => {
549
511
  const [itemElement, itemRef] = useState4(null);
550
512
  const composedItemRef = composeRefs2(itemRef, forwardedRef);
551
513
  const [selfDragHandleElement, selfDragHandleRef] = useState4(null);
@@ -553,7 +515,7 @@ var StackItemRoot = /* @__PURE__ */ forwardRef5(({ item, children, classNames, s
553
515
  const [sourceId, setSourceId] = useState4(null);
554
516
  const [dragState, setDragState] = useState4(idle);
555
517
  const { orientation, rail, onRearrange, size: stackSize, stackId } = useStack();
556
- const [size = orientation === "horizontal" ? DEFAULT_HORIZONTAL_SIZE : DEFAULT_VERTICAL_SIZE, setInternalSize] = useState4(propsSize);
518
+ const [size = orientation === "horizontal" ? DEFAULT_HORIZONTAL_SIZE : DEFAULT_VERTICAL_SIZE, setInternalSize] = useState4(sizeProp);
557
519
  const Root = role ?? "div";
558
520
  const setSize = useCallback2((nextSize, commit) => {
559
521
  setInternalSize(nextSize);
@@ -607,7 +569,7 @@ var StackItemRoot = /* @__PURE__ */ forwardRef5(({ item, children, classNames, s
607
569
  document.body.removeAttribute("data-drag-preview");
608
570
  itemElement?.closest("[data-drag-autoscroll]")?.setAttribute("data-drag-autoscroll", "active");
609
571
  setDragState({
610
- type: "w-dragging",
572
+ type: "is-dragging",
611
573
  item
612
574
  });
613
575
  },
@@ -684,7 +646,7 @@ var StackItemRoot = /* @__PURE__ */ forwardRef5(({ item, children, classNames, s
684
646
  }
685
647
  return true;
686
648
  };
687
- const stackItemContextValue = useMemo3(() => ({
649
+ const stackItemContextValue = useMemo2(() => ({
688
650
  selfDragHandleRef,
689
651
  size,
690
652
  setSize,
@@ -748,12 +710,7 @@ export {
748
710
  Stack,
749
711
  StackContext,
750
712
  StackItem,
751
- autoScrollRootAttributes,
752
713
  railGridHorizontal,
753
- railGridHorizontalContainFitContent,
754
- railGridVertical,
755
- railGridVerticalContainFitContent,
756
- translationKey,
757
- translations
714
+ railGridVertical
758
715
  };
759
716
  //# sourceMappingURL=index.mjs.map