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

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 (112) hide show
  1. package/dist/lib/browser/index.mjs +743 -65
  2. package/dist/lib/browser/index.mjs.map +4 -4
  3. package/dist/lib/browser/meta.json +1 -1
  4. package/dist/lib/browser/playwright/index.mjs +10 -23
  5. package/dist/lib/browser/playwright/index.mjs.map +2 -2
  6. package/dist/lib/node-esm/index.mjs +744 -65
  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/playwright/index.mjs +10 -23
  10. package/dist/lib/node-esm/playwright/index.mjs.map +2 -2
  11. package/dist/types/src/components/Stack/Stack.d.ts +8 -8
  12. package/dist/types/src/components/Stack/Stack.d.ts.map +1 -1
  13. package/dist/types/src/components/StackContext.d.ts +2 -2
  14. package/dist/types/src/components/StackContext.d.ts.map +1 -1
  15. package/dist/types/src/components/StackItem/MenuSignifier.d.ts.map +1 -1
  16. package/dist/types/src/components/StackItem/StackItem.d.ts +6 -10
  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/StackItemContent.d.ts +2 -43
  20. package/dist/types/src/components/StackItem/StackItemContent.d.ts.map +1 -1
  21. package/dist/types/src/components/StackItem/StackItemDragHandle.d.ts.map +1 -1
  22. package/dist/types/src/components/StackItem/StackItemHeading.d.ts.map +1 -1
  23. package/dist/types/src/components/StackItem/StackItemResizeHandle.d.ts +1 -1
  24. package/dist/types/src/components/StackItem/StackItemResizeHandle.d.ts.map +1 -1
  25. package/dist/types/src/components/StackItem/StackItemSigil.d.ts +2 -2
  26. package/dist/types/src/components/StackItem/StackItemSigil.d.ts.map +1 -1
  27. package/dist/types/src/components/index.d.ts +1 -2
  28. package/dist/types/src/components/index.d.ts.map +1 -1
  29. package/dist/types/src/components/{defs.d.ts → types.d.ts} +1 -1
  30. package/dist/types/src/components/types.d.ts.map +1 -0
  31. package/dist/types/src/hooks/useStackDropForElements.d.ts +8 -6
  32. package/dist/types/src/hooks/useStackDropForElements.d.ts.map +1 -1
  33. package/dist/types/src/index.d.ts +0 -1
  34. package/dist/types/src/index.d.ts.map +1 -1
  35. package/dist/types/src/translations.d.ts +2 -2
  36. package/dist/types/src/translations.d.ts.map +1 -1
  37. package/dist/types/tsconfig.tsbuildinfo +1 -1
  38. package/package.json +41 -38
  39. package/src/components/Stack/Stack.stories.tsx +2 -2
  40. package/src/components/Stack/Stack.tsx +27 -25
  41. package/src/components/StackContext.tsx +2 -2
  42. package/src/components/StackItem/MenuSignifier.tsx +2 -9
  43. package/src/components/StackItem/StackItem.stories.tsx +6 -4
  44. package/src/components/StackItem/StackItem.tsx +26 -14
  45. package/src/components/StackItem/StackItemContent.tsx +23 -54
  46. package/src/components/StackItem/StackItemDragHandle.tsx +4 -3
  47. package/src/components/StackItem/StackItemHeading.tsx +12 -11
  48. package/src/components/StackItem/StackItemResizeHandle.tsx +1 -1
  49. package/src/components/StackItem/StackItemSigil.tsx +8 -5
  50. package/src/components/index.ts +2 -2
  51. package/src/hooks/useStackDropForElements.ts +58 -44
  52. package/src/index.ts +0 -3
  53. package/src/playwright/playwright.config.ts +1 -1
  54. package/src/translations.ts +1 -1
  55. package/dist/lib/browser/chunk-SM27YTH3.mjs +0 -1418
  56. package/dist/lib/browser/chunk-SM27YTH3.mjs.map +0 -7
  57. package/dist/lib/browser/testing/index.mjs +0 -31
  58. package/dist/lib/browser/testing/index.mjs.map +0 -7
  59. package/dist/lib/node-esm/chunk-MMAOXKOM.mjs +0 -1420
  60. package/dist/lib/node-esm/chunk-MMAOXKOM.mjs.map +0 -7
  61. package/dist/lib/node-esm/testing/index.mjs +0 -32
  62. package/dist/lib/node-esm/testing/index.mjs.map +0 -7
  63. package/dist/types/src/components/Image/Image.d.ts +0 -11
  64. package/dist/types/src/components/Image/Image.d.ts.map +0 -1
  65. package/dist/types/src/components/Image/Image.stories.d.ts +0 -30
  66. package/dist/types/src/components/Image/Image.stories.d.ts.map +0 -1
  67. package/dist/types/src/components/Image/index.d.ts +0 -2
  68. package/dist/types/src/components/Image/index.d.ts.map +0 -1
  69. package/dist/types/src/components/defs.d.ts.map +0 -1
  70. package/dist/types/src/components/deprecated/LayoutControls.d.ts +0 -19
  71. package/dist/types/src/components/deprecated/LayoutControls.d.ts.map +0 -1
  72. package/dist/types/src/exemplars/Card/Card.d.ts +0 -65
  73. package/dist/types/src/exemplars/Card/Card.d.ts.map +0 -1
  74. package/dist/types/src/exemplars/Card/Card.stories.d.ts +0 -21
  75. package/dist/types/src/exemplars/Card/Card.stories.d.ts.map +0 -1
  76. package/dist/types/src/exemplars/Card/CardDragPreview.d.ts +0 -6
  77. package/dist/types/src/exemplars/Card/CardDragPreview.d.ts.map +0 -1
  78. package/dist/types/src/exemplars/Card/fragments.d.ts +0 -13
  79. package/dist/types/src/exemplars/Card/fragments.d.ts.map +0 -1
  80. package/dist/types/src/exemplars/Card/index.d.ts +0 -4
  81. package/dist/types/src/exemplars/Card/index.d.ts.map +0 -1
  82. package/dist/types/src/exemplars/CardStack/CardStack.d.ts +0 -42
  83. package/dist/types/src/exemplars/CardStack/CardStack.d.ts.map +0 -1
  84. package/dist/types/src/exemplars/CardStack/CardStack.stories.d.ts +0 -15
  85. package/dist/types/src/exemplars/CardStack/CardStack.stories.d.ts.map +0 -1
  86. package/dist/types/src/exemplars/CardStack/CardStackDragPreview.d.ts +0 -9
  87. package/dist/types/src/exemplars/CardStack/CardStackDragPreview.d.ts.map +0 -1
  88. package/dist/types/src/exemplars/CardStack/index.d.ts +0 -3
  89. package/dist/types/src/exemplars/CardStack/index.d.ts.map +0 -1
  90. package/dist/types/src/exemplars/index.d.ts +0 -3
  91. package/dist/types/src/exemplars/index.d.ts.map +0 -1
  92. package/dist/types/src/testing/CardContainer.d.ts +0 -6
  93. package/dist/types/src/testing/CardContainer.d.ts.map +0 -1
  94. package/dist/types/src/testing/index.d.ts +0 -2
  95. package/dist/types/src/testing/index.d.ts.map +0 -1
  96. package/src/components/Image/Image.stories.tsx +0 -56
  97. package/src/components/Image/Image.tsx +0 -137
  98. package/src/components/Image/index.ts +0 -5
  99. package/src/components/deprecated/LayoutControls.tsx +0 -109
  100. package/src/exemplars/Card/Card.stories.tsx +0 -64
  101. package/src/exemplars/Card/Card.tsx +0 -204
  102. package/src/exemplars/Card/CardDragPreview.tsx +0 -22
  103. package/src/exemplars/Card/fragments.ts +0 -24
  104. package/src/exemplars/Card/index.ts +0 -7
  105. package/src/exemplars/CardStack/CardStack.stories.tsx +0 -173
  106. package/src/exemplars/CardStack/CardStack.tsx +0 -139
  107. package/src/exemplars/CardStack/CardStackDragPreview.tsx +0 -61
  108. package/src/exemplars/CardStack/index.ts +0 -6
  109. package/src/exemplars/index.ts +0 -6
  110. package/src/testing/CardContainer.tsx +0 -37
  111. package/src/testing/index.ts +0 -5
  112. /package/src/components/{defs.ts → types.ts} +0 -0
@@ -2,6 +2,7 @@
2
2
  // Copyright 2024 DXOS.org
3
3
  //
4
4
 
5
+ import { Primitive } from '@radix-ui/react-primitive';
5
6
  import { Slot } from '@radix-ui/react-slot';
6
7
  import React, {
7
8
  type ComponentPropsWithRef,
@@ -12,7 +13,7 @@ import React, {
12
13
 
13
14
  import { type ThemedClassName } from '@dxos/react-ui';
14
15
  import { type AttendableId, type Related, useAttention } from '@dxos/react-ui-attention';
15
- import { mx } from '@dxos/react-ui-theme';
16
+ import { mx } from '@dxos/ui-theme';
16
17
 
17
18
  import { useStack } from '../StackContext';
18
19
 
@@ -30,30 +31,30 @@ export const StackItemHeading = ({
30
31
  }: StackItemHeadingProps) => {
31
32
  const { orientation } = useStack();
32
33
 
33
- const Root = asChild ? Slot : 'div';
34
+ const Comp = asChild ? Slot : Primitive.div;
34
35
 
35
36
  return (
36
- <Root
37
+ <Comp
37
38
  role='heading'
38
39
  {...props}
39
40
  className={mx(
40
- 'flex items-center !border-is-0 bg-headerSurface',
41
+ 'flex items-center border-x-0! bg-header-surface',
41
42
  separateOnScroll
42
- ? 'border-transparent [[data-scroll-separator="true"]_&]:border-subduedSeparator'
43
- : 'border-subduedSeparator',
44
- orientation === 'horizontal' ? 'bs-[--rail-size]' : 'is-[--rail-size] flex-col',
45
- orientation === 'horizontal' ? 'border-be' : 'border-ie',
43
+ ? 'border-transparent [[data-scroll-separator="true"]_&]:border-subdued-separator'
44
+ : 'border-subdued-separator',
45
+ orientation === 'horizontal' ? 'h-(--dx-rail-size)' : 'w-(--dx-rail-size) flex-col',
46
+ orientation === 'horizontal' ? 'border-b' : 'border-e',
46
47
  classNames,
47
48
  )}
48
49
  >
49
50
  {children}
50
- </Root>
51
+ </Comp>
51
52
  );
52
53
  };
53
54
 
54
55
  export const StackItemHeadingStickyContent = ({ children }: PropsWithChildren<{}>) => {
55
56
  return (
56
- <div role='none' className='sticky block-start-0 bg-[--sticky-bg] p-1 is-full'>
57
+ <div role='none' className='sticky top-0 bg-(--sticky-bg) p-1 w-full'>
57
58
  {children}
58
59
  </div>
59
60
  );
@@ -70,7 +71,7 @@ export const StackItemHeadingLabel = forwardRef<HTMLHeadingElement, StackItemHea
70
71
  {...props}
71
72
  data-attention={((related && isRelated) || hasAttention || isAncestor).toString()}
72
73
  className={mx(
73
- 'pli-1 min-is-0 is-0 grow truncate font-medium text-baseText data-[attention=true]:text-accentText self-center',
74
+ 'px-1 min-w-0 w-0 grow truncate font-medium text-base-surface-text data-[attention=true]:text-accent-text self-center',
74
75
  classNames,
75
76
  )}
76
77
  ref={forwardedRef}
@@ -15,7 +15,7 @@ const MIN_HEIGHT = 3;
15
15
 
16
16
  export type StackItemResizeHandleProps = {};
17
17
 
18
- export const StackItemResizeHandle = () => {
18
+ export const StackItemResizeHandle = (_: StackItemResizeHandleProps) => {
19
19
  const { orientation } = useStack();
20
20
  const { setSize, size } = useStackItem();
21
21
 
@@ -4,11 +4,11 @@
4
4
 
5
5
  import React, { Fragment, type PropsWithChildren, forwardRef, useState } from 'react';
6
6
 
7
- import { type ActionLike } from '@dxos/app-graph';
7
+ import { type Node } from '@dxos/app-graph';
8
8
  import { keySymbols } from '@dxos/keyboard';
9
9
  import { Button, type ButtonProps, DropdownMenu, Icon, toLocalizedString, useTranslation } from '@dxos/react-ui';
10
10
  import { type AttendableId, type Related, useAttention } from '@dxos/react-ui-attention';
11
- import { descriptionText, mx } from '@dxos/react-ui-theme';
11
+ import { mx } from '@dxos/ui-theme';
12
12
  import { getHostPlatform } from '@dxos/util';
13
13
 
14
14
  import { translationKey } from '../../translations';
@@ -23,7 +23,7 @@ export type KeyBinding = {
23
23
  unknown?: string;
24
24
  };
25
25
 
26
- export type StackItemSigilAction = Pick<ActionLike, 'id' | 'properties' | 'data'>;
26
+ export type StackItemSigilAction = Pick<Node.ActionLike, 'id' | 'properties' | 'data'>;
27
27
 
28
28
  export type StackItemSigilButtonProps = Omit<ButtonProps, 'variant'> &
29
29
  AttendableId &
@@ -40,7 +40,10 @@ export const StackItemSigilButton = forwardRef<HTMLButtonElement, StackItemSigil
40
40
  <Button
41
41
  {...props}
42
42
  variant={variant}
43
- classNames={['shrink-0 pli-0 min-bs-0 is-[--rail-action] bs-[--rail-action] relative app-no-drag', classNames]}
43
+ classNames={[
44
+ 'shrink-0 px-0 min-h-0 w-(--dx-rail-action) h-(--dx-rail-action) relative dx-app-no-drag',
45
+ classNames,
46
+ ]}
44
47
  ref={forwardedRef}
45
48
  >
46
49
  {isMenu && <MenuSignifierHorizontal />}
@@ -133,7 +136,7 @@ export const StackItemSigil = forwardRef<HTMLButtonElement, StackItemSigilProps>
133
136
  </DropdownMenu.ItemIndicator>
134
137
  )}
135
138
  {shortcut && (
136
- <span className={mx('shrink-0', descriptionText)}>{keySymbols(shortcut).join('')}</span>
139
+ <span className={mx('shrink-0', 'text-description')}>{keySymbols(shortcut).join('')}</span>
137
140
  )}
138
141
  </Root>
139
142
  );
@@ -2,8 +2,8 @@
2
2
  // Copyright 2024 DXOS.org
3
3
  //
4
4
 
5
- export type * from './defs';
5
+ export type * from './types';
6
6
 
7
- export * from './Image';
8
7
  export * from './Stack';
8
+
9
9
  export * from './StackItem';
@@ -10,68 +10,82 @@ import { useLayoutEffect, useState } from 'react';
10
10
 
11
11
  import { type Orientation, type StackItemData, type StackItemRearrangeHandler } from '../components';
12
12
 
13
+ const noop = () => {};
14
+
15
+ export type UseStackDropForElementsProps = {
16
+ id?: string;
17
+ element: HTMLDivElement | null;
18
+ scrollElement?: HTMLDivElement | null;
19
+ orientation: Orientation;
20
+ selfDroppable: boolean;
21
+ onRearrange?: StackItemRearrangeHandler;
22
+ };
23
+
24
+ export type UseStackDropForElements = {
25
+ dropping: boolean;
26
+ };
27
+
13
28
  /**
14
- * Hook to handle drag and drop functionality for Stack components.
29
+ * Hook to handle drag-and-drop functionality for Stack components.
15
30
  */
16
31
  export const useStackDropForElements = ({
17
32
  id,
18
33
  element,
19
34
  scrollElement = element,
20
- selfDroppable,
21
35
  orientation,
36
+ selfDroppable,
22
37
  onRearrange,
23
- }: {
24
- id?: string;
25
- element: HTMLDivElement | null;
26
- scrollElement?: HTMLDivElement | null;
27
- selfDroppable: boolean;
28
- orientation: Orientation;
29
- onRearrange?: StackItemRearrangeHandler;
30
- }) => {
38
+ }: UseStackDropForElementsProps): UseStackDropForElements => {
31
39
  const [dropping, setDropping] = useState(false);
32
40
 
33
41
  useLayoutEffect(() => {
34
- if (!element || !selfDroppable) {
42
+ if (!element) {
35
43
  return;
36
44
  }
37
45
 
38
46
  const acceptSourceType = orientation === 'horizontal' ? 'column' : 'card';
39
47
 
48
+ // TODO(burdon): Use monitor?
40
49
  return combine(
41
- dropTargetForElements({
42
- element,
43
- getData: ({ input, element }) => {
44
- return attachClosestEdge(
45
- { id, type: orientation === 'horizontal' ? 'card' : 'column' },
46
- { input, element, allowedEdges: [orientation === 'horizontal' ? 'left' : 'top'] },
47
- );
48
- },
49
- onDragEnter: ({ source }) => {
50
- if (source.data.type === acceptSourceType) {
51
- setDropping(true);
52
- }
53
- },
54
- onDrag: ({ source }) => {
55
- if (source.data.type === acceptSourceType) {
56
- setDropping(true);
57
- }
58
- },
59
- onDragLeave: () => {
60
- return setDropping(false);
61
- },
62
- onDrop: ({ self, source }) => {
63
- setDropping(false);
64
- if (source.data.type === acceptSourceType && selfDroppable && onRearrange) {
65
- onRearrange(source.data as StackItemData, self.data as StackItemData, extractClosestEdge(self.data));
66
- }
67
- },
68
- }),
69
- autoScrollForElements({
70
- element: scrollElement as Element,
71
- getAllowedAxis: () => orientation,
72
- }),
50
+ selfDroppable
51
+ ? dropTargetForElements({
52
+ element,
53
+ getData: ({ input, element }) => {
54
+ return attachClosestEdge(
55
+ { id, type: orientation === 'horizontal' ? 'card' : 'column' },
56
+ { input, element, allowedEdges: [orientation === 'horizontal' ? 'left' : 'top'] },
57
+ );
58
+ },
59
+ onDragEnter: ({ source }) => {
60
+ if (source.data.type === acceptSourceType) {
61
+ setDropping(true);
62
+ }
63
+ },
64
+ onDrag: ({ source }) => {
65
+ if (source.data.type === acceptSourceType) {
66
+ setDropping(true);
67
+ }
68
+ },
69
+ onDragLeave: () => {
70
+ return setDropping(false);
71
+ },
72
+ onDrop: ({ self, source }) => {
73
+ setDropping(false);
74
+ if (source.data.type === acceptSourceType && selfDroppable && onRearrange) {
75
+ onRearrange(source.data as StackItemData, self.data as StackItemData, extractClosestEdge(self.data));
76
+ }
77
+ },
78
+ })
79
+ : noop,
80
+
81
+ scrollElement
82
+ ? autoScrollForElements({
83
+ element: scrollElement,
84
+ getAllowedAxis: () => orientation,
85
+ })
86
+ : noop,
73
87
  );
74
- }, [element, scrollElement, selfDroppable, orientation, id, onRearrange]);
88
+ }, [id, element, scrollElement, selfDroppable, orientation, onRearrange]);
75
89
 
76
90
  return { dropping };
77
91
  };
package/src/index.ts CHANGED
@@ -2,8 +2,5 @@
2
2
  // Copyright 2022 DXOS.org
3
3
  //
4
4
 
5
- // TODO(thure): Consider exporting exemplars from separate endpoints.
6
-
7
5
  export * from './components';
8
- export * from './exemplars';
9
6
  export * from './translations';
@@ -10,7 +10,7 @@ export default defineConfig({
10
10
  ...e2ePreset(import.meta.dirname),
11
11
  // TODO(wittjosiah): Avoid hard-coding ports.
12
12
  webServer: {
13
- command: 'moon run storybook:serve-e2e -- --port=9003',
13
+ command: 'pnpm storybook dev --ci --quiet --port=9003 --config-dir=.storybook',
14
14
  port: 9003,
15
15
  reuseExistingServer: false,
16
16
  },
@@ -4,7 +4,7 @@
4
4
 
5
5
  import { type Resource } from '@dxos/react-ui';
6
6
 
7
- export const translationKey = 'react-ui-stack';
7
+ export const translationKey = '@dxos/react-ui-stack';
8
8
 
9
9
  export const translations = [
10
10
  {