@dxos/react-ui-stack 0.8.4-main.1f223c7 → 0.8.4-main.2244d791bb
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.
- package/dist/lib/browser/index.mjs +921 -54
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/playwright/index.mjs +10 -23
- package/dist/lib/browser/playwright/index.mjs.map +2 -2
- package/dist/lib/node-esm/index.mjs +922 -54
- package/dist/lib/node-esm/index.mjs.map +4 -4
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/playwright/index.mjs +10 -23
- package/dist/lib/node-esm/playwright/index.mjs.map +2 -2
- package/dist/types/src/{exemplars → components}/CardStack/CardStack.d.ts +20 -13
- package/dist/types/src/components/CardStack/CardStack.d.ts.map +1 -0
- package/dist/types/src/{exemplars → components}/CardStack/CardStack.stories.d.ts +3 -1
- package/dist/types/src/components/CardStack/CardStack.stories.d.ts.map +1 -0
- package/dist/types/src/{exemplars → components}/CardStack/CardStackDragPreview.d.ts +4 -1
- package/dist/types/src/components/CardStack/CardStackDragPreview.d.ts.map +1 -0
- package/dist/types/src/components/CardStack/index.d.ts.map +1 -0
- package/dist/types/src/components/Stack/Stack.d.ts +7 -6
- package/dist/types/src/components/Stack/Stack.d.ts.map +1 -1
- package/dist/types/src/components/Stack/Stack.stories.d.ts +1 -2
- package/dist/types/src/components/Stack/Stack.stories.d.ts.map +1 -1
- package/dist/types/src/components/StackContext.d.ts +1 -1
- package/dist/types/src/components/StackContext.d.ts.map +1 -1
- package/dist/types/src/components/StackItem/StackItem.d.ts +7 -10
- package/dist/types/src/components/StackItem/StackItem.d.ts.map +1 -1
- package/dist/types/src/components/StackItem/StackItem.stories.d.ts +0 -1
- package/dist/types/src/components/StackItem/StackItem.stories.d.ts.map +1 -1
- package/dist/types/src/components/StackItem/StackItemContent.d.ts +4 -37
- package/dist/types/src/components/StackItem/StackItemContent.d.ts.map +1 -1
- package/dist/types/src/components/StackItem/StackItemHeading.d.ts.map +1 -1
- package/dist/types/src/components/StackItem/StackItemSigil.d.ts +2 -2
- package/dist/types/src/components/StackItem/StackItemSigil.d.ts.map +1 -1
- package/dist/types/src/components/deprecated/LayoutControls.d.ts +3 -0
- package/dist/types/src/components/deprecated/LayoutControls.d.ts.map +1 -1
- package/dist/types/src/components/index.d.ts +2 -2
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/components/{defs.d.ts → types.d.ts} +1 -1
- package/dist/types/src/components/types.d.ts.map +1 -0
- package/dist/types/src/hooks/useStackDropForElements.d.ts +8 -6
- package/dist/types/src/hooks/useStackDropForElements.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +0 -1
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +2 -2
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +41 -38
- package/src/{exemplars → components}/CardStack/CardStack.stories.tsx +14 -13
- package/src/{exemplars → components}/CardStack/CardStack.tsx +113 -54
- package/src/{exemplars → components}/CardStack/CardStackDragPreview.tsx +12 -9
- package/src/components/Stack/Stack.stories.tsx +3 -5
- package/src/components/Stack/Stack.tsx +97 -40
- package/src/components/StackContext.tsx +1 -1
- package/src/components/StackItem/StackItem.stories.tsx +7 -7
- package/src/components/StackItem/StackItem.tsx +35 -16
- package/src/components/StackItem/StackItemContent.tsx +21 -41
- package/src/components/StackItem/StackItemHeading.tsx +2 -6
- package/src/components/StackItem/StackItemSigil.tsx +3 -3
- package/src/components/deprecated/LayoutControls.tsx +3 -0
- package/src/components/index.ts +2 -2
- package/src/hooks/useStackDropForElements.ts +58 -44
- package/src/index.ts +0 -3
- package/src/playwright/playwright.config.ts +1 -1
- package/src/translations.ts +1 -1
- package/dist/lib/browser/chunk-3V2YUQK5.mjs +0 -1375
- package/dist/lib/browser/chunk-3V2YUQK5.mjs.map +0 -7
- package/dist/lib/browser/testing/index.mjs +0 -31
- package/dist/lib/browser/testing/index.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-HE3BRF7A.mjs +0 -1377
- package/dist/lib/node-esm/chunk-HE3BRF7A.mjs.map +0 -7
- package/dist/lib/node-esm/testing/index.mjs +0 -32
- package/dist/lib/node-esm/testing/index.mjs.map +0 -7
- package/dist/types/src/components/Image/Image.d.ts +0 -11
- package/dist/types/src/components/Image/Image.d.ts.map +0 -1
- package/dist/types/src/components/Image/Image.stories.d.ts +0 -31
- package/dist/types/src/components/Image/Image.stories.d.ts.map +0 -1
- package/dist/types/src/components/Image/index.d.ts +0 -2
- package/dist/types/src/components/Image/index.d.ts.map +0 -1
- package/dist/types/src/components/defs.d.ts.map +0 -1
- package/dist/types/src/exemplars/Card/Card.d.ts +0 -58
- package/dist/types/src/exemplars/Card/Card.d.ts.map +0 -1
- package/dist/types/src/exemplars/Card/Card.stories.d.ts +0 -44
- package/dist/types/src/exemplars/Card/Card.stories.d.ts.map +0 -1
- package/dist/types/src/exemplars/Card/CardDragPreview.d.ts +0 -6
- package/dist/types/src/exemplars/Card/CardDragPreview.d.ts.map +0 -1
- package/dist/types/src/exemplars/Card/fragments.d.ts +0 -13
- package/dist/types/src/exemplars/Card/fragments.d.ts.map +0 -1
- package/dist/types/src/exemplars/Card/index.d.ts +0 -4
- package/dist/types/src/exemplars/Card/index.d.ts.map +0 -1
- package/dist/types/src/exemplars/CardStack/CardStack.d.ts.map +0 -1
- package/dist/types/src/exemplars/CardStack/CardStack.stories.d.ts.map +0 -1
- package/dist/types/src/exemplars/CardStack/CardStackDragPreview.d.ts.map +0 -1
- package/dist/types/src/exemplars/CardStack/index.d.ts.map +0 -1
- package/dist/types/src/exemplars/index.d.ts +0 -3
- package/dist/types/src/exemplars/index.d.ts.map +0 -1
- package/dist/types/src/testing/CardContainer.d.ts +0 -6
- package/dist/types/src/testing/CardContainer.d.ts.map +0 -1
- package/dist/types/src/testing/index.d.ts +0 -2
- package/dist/types/src/testing/index.d.ts.map +0 -1
- package/src/components/Image/Image.stories.tsx +0 -58
- package/src/components/Image/Image.tsx +0 -137
- package/src/components/Image/index.ts +0 -5
- package/src/exemplars/Card/Card.stories.tsx +0 -88
- package/src/exemplars/Card/Card.tsx +0 -186
- package/src/exemplars/Card/CardDragPreview.tsx +0 -22
- package/src/exemplars/Card/fragments.ts +0 -24
- package/src/exemplars/Card/index.ts +0 -7
- package/src/exemplars/index.ts +0 -6
- package/src/testing/CardContainer.tsx +0 -37
- package/src/testing/index.ts +0 -5
- /package/dist/types/src/{exemplars → components}/CardStack/index.d.ts +0 -0
- /package/src/{exemplars → components}/CardStack/index.ts +0 -0
- /package/src/components/{defs.ts → types.ts} +0 -0
package/package.json
CHANGED
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dxos/react-ui-stack",
|
|
3
|
-
"version": "0.8.4-main.
|
|
3
|
+
"version": "0.8.4-main.2244d791bb",
|
|
4
4
|
"description": "A stack component.",
|
|
5
5
|
"homepage": "https://dxos.org",
|
|
6
6
|
"bugs": "https://github.com/dxos/dxos/issues",
|
|
7
|
+
"repository": {
|
|
8
|
+
"type": "git",
|
|
9
|
+
"url": "https://github.com/dxos/dxos"
|
|
10
|
+
},
|
|
7
11
|
"license": "MIT",
|
|
8
12
|
"author": "DXOS.org",
|
|
9
|
-
"sideEffects":
|
|
13
|
+
"sideEffects": false,
|
|
10
14
|
"type": "module",
|
|
11
15
|
"exports": {
|
|
12
16
|
".": {
|
|
@@ -18,11 +22,6 @@
|
|
|
18
22
|
"types": "./dist/types/src/playwright/index.d.ts",
|
|
19
23
|
"browser": "./dist/lib/browser/playwright/index.mjs",
|
|
20
24
|
"node": "./dist/lib/node-esm/playwright/index.mjs"
|
|
21
|
-
},
|
|
22
|
-
"./testing": {
|
|
23
|
-
"types": "./dist/types/src/testing/index.d.ts",
|
|
24
|
-
"browser": "./dist/lib/browser/testing/index.mjs",
|
|
25
|
-
"node": "./dist/lib/node-esm/testing/index.mjs"
|
|
26
25
|
}
|
|
27
26
|
},
|
|
28
27
|
"types": "dist/types/src/index.d.ts",
|
|
@@ -41,11 +40,11 @@
|
|
|
41
40
|
"src"
|
|
42
41
|
],
|
|
43
42
|
"dependencies": {
|
|
44
|
-
"@atlaskit/pragmatic-drag-and-drop": "
|
|
45
|
-
"@atlaskit/pragmatic-drag-and-drop-auto-scroll": "^2.1.
|
|
46
|
-
"@atlaskit/pragmatic-drag-and-drop-hitbox": "
|
|
47
|
-
"@
|
|
48
|
-
"@
|
|
43
|
+
"@atlaskit/pragmatic-drag-and-drop": "1.7.7",
|
|
44
|
+
"@atlaskit/pragmatic-drag-and-drop-auto-scroll": "^2.1.2",
|
|
45
|
+
"@atlaskit/pragmatic-drag-and-drop-hitbox": "1.1.0",
|
|
46
|
+
"@atlaskit/pragmatic-drag-and-drop-react-drop-indicator": "3.2.10",
|
|
47
|
+
"@fluentui/react-tabster": "9.26.11",
|
|
49
48
|
"@radix-ui/primitive": "1.1.1",
|
|
50
49
|
"@radix-ui/react-compose-refs": "1.1.1",
|
|
51
50
|
"@radix-ui/react-context": "1.1.1",
|
|
@@ -54,36 +53,40 @@
|
|
|
54
53
|
"@radix-ui/react-slot": "1.1.2",
|
|
55
54
|
"@radix-ui/react-use-controllable-state": "1.1.0",
|
|
56
55
|
"react-resize-detector": "^11.0.1",
|
|
57
|
-
"@dxos/
|
|
58
|
-
"@dxos/
|
|
59
|
-
"@dxos/
|
|
60
|
-
"@dxos/
|
|
61
|
-
"@dxos/
|
|
62
|
-
"@dxos/
|
|
63
|
-
"@dxos/util": "0.8.4-main.1f223c7"
|
|
56
|
+
"@dxos/keyboard": "0.8.4-main.2244d791bb",
|
|
57
|
+
"@dxos/react-ui-attention": "0.8.4-main.2244d791bb",
|
|
58
|
+
"@dxos/react-ui-dnd": "0.8.4-main.2244d791bb",
|
|
59
|
+
"@dxos/echo": "0.8.4-main.2244d791bb",
|
|
60
|
+
"@dxos/util": "0.8.4-main.2244d791bb",
|
|
61
|
+
"@dxos/react-ui-mosaic": "0.8.4-main.2244d791bb"
|
|
64
62
|
},
|
|
65
63
|
"devDependencies": {
|
|
66
|
-
"@types/react": "~
|
|
67
|
-
"@types/react-dom": "~
|
|
68
|
-
"react": "~
|
|
69
|
-
"react-dom": "~
|
|
70
|
-
"vite": "7.1.
|
|
71
|
-
"@dxos/
|
|
72
|
-
"@dxos/
|
|
73
|
-
"@dxos/echo
|
|
74
|
-
"@dxos/
|
|
75
|
-
"@dxos/
|
|
76
|
-
"@dxos/
|
|
77
|
-
"@dxos/
|
|
78
|
-
"@dxos/
|
|
64
|
+
"@types/react": "~19.2.7",
|
|
65
|
+
"@types/react-dom": "~19.2.3",
|
|
66
|
+
"react": "~19.2.3",
|
|
67
|
+
"react-dom": "~19.2.3",
|
|
68
|
+
"vite": "7.1.9",
|
|
69
|
+
"@dxos/app-framework": "0.8.4-main.2244d791bb",
|
|
70
|
+
"@dxos/client": "0.8.4-main.2244d791bb",
|
|
71
|
+
"@dxos/echo": "0.8.4-main.2244d791bb",
|
|
72
|
+
"@dxos/echo-db": "0.8.4-main.2244d791bb",
|
|
73
|
+
"@dxos/app-graph": "0.8.4-main.2244d791bb",
|
|
74
|
+
"@dxos/react-client": "0.8.4-main.2244d791bb",
|
|
75
|
+
"@dxos/random": "0.8.4-main.2244d791bb",
|
|
76
|
+
"@dxos/react-ui": "0.8.4-main.2244d791bb",
|
|
77
|
+
"@dxos/schema": "0.8.4-main.2244d791bb",
|
|
78
|
+
"@dxos/test-utils": "0.8.4-main.2244d791bb",
|
|
79
|
+
"@dxos/ui-theme": "0.8.4-main.2244d791bb",
|
|
80
|
+
"@dxos/types": "0.8.4-main.2244d791bb",
|
|
81
|
+
"@dxos/storybook-utils": "0.8.4-main.2244d791bb"
|
|
79
82
|
},
|
|
80
83
|
"peerDependencies": {
|
|
81
|
-
"react": "~
|
|
82
|
-
"react-dom": "~
|
|
83
|
-
"@dxos/client": "0.8.4-main.
|
|
84
|
-
"@dxos/random": "0.8.4-main.
|
|
85
|
-
"@dxos/
|
|
86
|
-
"@dxos/react-ui
|
|
84
|
+
"react": "~19.2.3",
|
|
85
|
+
"react-dom": "~19.2.3",
|
|
86
|
+
"@dxos/client": "0.8.4-main.2244d791bb",
|
|
87
|
+
"@dxos/random": "0.8.4-main.2244d791bb",
|
|
88
|
+
"@dxos/ui-theme": "0.8.4-main.2244d791bb",
|
|
89
|
+
"@dxos/react-ui": "0.8.4-main.2244d791bb"
|
|
87
90
|
},
|
|
88
91
|
"publishConfig": {
|
|
89
92
|
"access": "public"
|
|
@@ -2,18 +2,16 @@
|
|
|
2
2
|
// Copyright 2025 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import '@dxos-theme';
|
|
6
|
-
|
|
7
5
|
import { type Edge } from '@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge';
|
|
8
6
|
import { type Meta, type StoryObj } from '@storybook/react-vite';
|
|
9
7
|
import React, { useCallback, useState } from 'react';
|
|
10
8
|
|
|
11
9
|
import { faker } from '@dxos/random';
|
|
12
10
|
import { IconButton } from '@dxos/react-ui';
|
|
13
|
-
import {
|
|
11
|
+
import { withTheme } from '@dxos/react-ui/testing';
|
|
12
|
+
import { Card, CardDragPreview } from '@dxos/react-ui-mosaic';
|
|
14
13
|
|
|
15
|
-
import { StackItem } from '
|
|
16
|
-
import { Card, CardDragPreview } from '../Card';
|
|
14
|
+
import { StackItem } from '../StackItem';
|
|
17
15
|
|
|
18
16
|
import { CardStack } from './CardStack';
|
|
19
17
|
|
|
@@ -96,7 +94,7 @@ const CardStackStory = () => {
|
|
|
96
94
|
|
|
97
95
|
return (
|
|
98
96
|
<CardStack.Root classNames='is-96'>
|
|
99
|
-
<CardStack.Content>
|
|
97
|
+
<CardStack.Content footer>
|
|
100
98
|
<CardStack.Stack id='story column' onRearrange={handleRearrange} itemsCount={column.length}>
|
|
101
99
|
{column.map((card, cardIndex, cardsArray) => {
|
|
102
100
|
const cardItem = { id: card.id, type: 'card' as const };
|
|
@@ -111,10 +109,10 @@ const CardStackStory = () => {
|
|
|
111
109
|
prevSiblingId={prevCardId}
|
|
112
110
|
nextSiblingId={nextCardId}
|
|
113
111
|
>
|
|
114
|
-
<Card.
|
|
112
|
+
<Card.Root>
|
|
115
113
|
<Card.Toolbar>
|
|
116
114
|
<StackItem.DragHandle asChild>
|
|
117
|
-
<Card.DragHandle
|
|
115
|
+
<Card.DragHandle />
|
|
118
116
|
</StackItem.DragHandle>
|
|
119
117
|
<Card.ToolbarSeparator variant='gap' />
|
|
120
118
|
<Card.ToolbarIconButton
|
|
@@ -127,18 +125,18 @@ const CardStackStory = () => {
|
|
|
127
125
|
</Card.Toolbar>
|
|
128
126
|
<Card.Poster alt={card.title} image={card.image} />
|
|
129
127
|
<Card.Heading>{card.title}</Card.Heading>
|
|
130
|
-
<Card.Text
|
|
131
|
-
</Card.
|
|
128
|
+
<Card.Text variant='description'>{card.description}</Card.Text>
|
|
129
|
+
</Card.Root>
|
|
132
130
|
<StackItem.DragPreview>
|
|
133
131
|
{() => (
|
|
134
132
|
<CardDragPreview.Root>
|
|
135
133
|
<CardDragPreview.Content>
|
|
136
134
|
<Card.Toolbar>
|
|
137
|
-
<Card.DragHandle
|
|
135
|
+
<Card.DragHandle />
|
|
138
136
|
</Card.Toolbar>
|
|
139
137
|
<Card.Poster alt={card.title} image={card.image} />
|
|
140
138
|
<Card.Heading>{card.title}</Card.Heading>
|
|
141
|
-
<Card.Text
|
|
139
|
+
<Card.Text variant='description'>{card.description}</Card.Text>
|
|
142
140
|
</CardDragPreview.Content>
|
|
143
141
|
</CardDragPreview.Root>
|
|
144
142
|
)}
|
|
@@ -162,7 +160,10 @@ const CardStackStory = () => {
|
|
|
162
160
|
const meta = {
|
|
163
161
|
title: 'ui/react-ui-stack/CardStack',
|
|
164
162
|
component: CardStackStory,
|
|
165
|
-
decorators: [withTheme
|
|
163
|
+
decorators: [withTheme()],
|
|
164
|
+
parameters: {
|
|
165
|
+
layout: 'fullscreen',
|
|
166
|
+
},
|
|
166
167
|
} satisfies Meta<typeof CardStackStory>;
|
|
167
168
|
|
|
168
169
|
export default meta;
|
|
@@ -6,17 +6,78 @@ import { Slot } from '@radix-ui/react-slot';
|
|
|
6
6
|
import React, { type ComponentPropsWithoutRef, forwardRef } from 'react';
|
|
7
7
|
|
|
8
8
|
import type { ThemedClassName } from '@dxos/react-ui';
|
|
9
|
-
import {
|
|
9
|
+
import { Card } from '@dxos/react-ui-mosaic';
|
|
10
|
+
import { cardDefaultInlineSize, mx } from '@dxos/ui-theme';
|
|
10
11
|
|
|
11
|
-
import { Stack, type StackProps, railGridHorizontalContainFitContent } from '
|
|
12
|
-
import { Card } from '../Card';
|
|
12
|
+
import { Stack, type StackProps, railGridHorizontalContainFitContent } from '../Stack';
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
/**
|
|
15
|
+
* This is `cardDefaultInlineSize` plus 2 times the sum of the inner and outer spacing applied by CardStack on the inline axis.
|
|
16
|
+
*/
|
|
17
|
+
const cardStackDefaultInlineSizeRem = cardDefaultInlineSize + 2.125;
|
|
18
|
+
|
|
19
|
+
//
|
|
20
|
+
// Root
|
|
21
|
+
//
|
|
22
|
+
|
|
23
|
+
const cardStackRoot = 'flex flex-col';
|
|
24
|
+
|
|
25
|
+
const CardStackRoot = forwardRef<HTMLDivElement, SharedCardStackProps>(
|
|
26
|
+
({ children, classNames, asChild, role = 'none', ...props }, forwardedRef) => {
|
|
27
|
+
const Root = asChild ? Slot : 'div';
|
|
28
|
+
const rootProps = asChild
|
|
29
|
+
? { classNames: [cardStackRoot, classNames] }
|
|
30
|
+
: { className: mx(cardStackRoot, classNames), role };
|
|
31
|
+
|
|
32
|
+
return (
|
|
33
|
+
<Root {...props} {...rootProps} ref={forwardedRef}>
|
|
34
|
+
{children}
|
|
35
|
+
</Root>
|
|
36
|
+
);
|
|
37
|
+
},
|
|
38
|
+
);
|
|
39
|
+
|
|
40
|
+
//
|
|
41
|
+
// Content
|
|
42
|
+
// TODO(burdon): Rename Viewport (should be the component that scrolls).
|
|
43
|
+
//
|
|
44
|
+
|
|
45
|
+
const cardStackContent = 'shrink min-bs-0 grid dx-focus-ring-group-x-indicator bg-baseSurface';
|
|
46
|
+
|
|
47
|
+
type CardStackContentProps = SharedCardStackProps & {
|
|
48
|
+
footer?: boolean;
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
const CardStackContent = forwardRef<HTMLDivElement, CardStackContentProps>(
|
|
52
|
+
({ children, classNames, asChild, role = 'none', footer, ...props }, forwardedRef) => {
|
|
53
|
+
const Root = asChild ? Slot : 'div';
|
|
54
|
+
const baseClassNames = footer ? [cardStackContent, railGridHorizontalContainFitContent] : [cardStackContent];
|
|
55
|
+
const rootProps = asChild
|
|
56
|
+
? { classNames: [...baseClassNames, classNames] }
|
|
57
|
+
: { className: mx(...baseClassNames, classNames), role };
|
|
58
|
+
|
|
59
|
+
return (
|
|
60
|
+
<Root {...props} {...rootProps} data-scroll-separator='false' ref={forwardedRef}>
|
|
61
|
+
{children}
|
|
62
|
+
</Root>
|
|
63
|
+
);
|
|
64
|
+
},
|
|
65
|
+
);
|
|
66
|
+
|
|
67
|
+
//
|
|
68
|
+
// Stack
|
|
69
|
+
// TODO(burdon): Rename Content.
|
|
70
|
+
//
|
|
71
|
+
|
|
72
|
+
type SharedCardStackProps = ThemedClassName<ComponentPropsWithoutRef<'div'>> & {
|
|
73
|
+
asChild?: boolean;
|
|
74
|
+
};
|
|
15
75
|
|
|
16
76
|
const CardStackStack = forwardRef<
|
|
17
77
|
HTMLDivElement,
|
|
18
78
|
Omit<StackProps, 'orientation' | 'size' | 'rail' | 'separatorOnScroll'>
|
|
19
79
|
>(({ children, classNames, itemsCount = 0, ...props }, forwardedRef) => {
|
|
80
|
+
// NOTE: Should not have horizontal padding since separatorOnScroll should be full width.
|
|
20
81
|
return (
|
|
21
82
|
<Stack
|
|
22
83
|
orientation='vertical'
|
|
@@ -24,7 +85,7 @@ const CardStackStack = forwardRef<
|
|
|
24
85
|
rail={false}
|
|
25
86
|
classNames={
|
|
26
87
|
/* NOTE(thure): Do not let this element have zero intrinsic size, otherwise the drop indicator will not display. See #9035. */
|
|
27
|
-
['plb-
|
|
88
|
+
['plb-2', classNames]
|
|
28
89
|
}
|
|
29
90
|
itemsCount={itemsCount}
|
|
30
91
|
separatorOnScroll={9}
|
|
@@ -37,16 +98,19 @@ const CardStackStack = forwardRef<
|
|
|
37
98
|
);
|
|
38
99
|
});
|
|
39
100
|
|
|
40
|
-
|
|
101
|
+
//
|
|
102
|
+
// Item
|
|
103
|
+
//
|
|
41
104
|
|
|
42
|
-
const
|
|
105
|
+
const cardStackItem = 'contain-layout pli-2 plb-1 first-of-type:pbs-0 last-of-type:pbe-0';
|
|
43
106
|
|
|
44
|
-
const
|
|
45
|
-
({ children, classNames, asChild, role = '
|
|
107
|
+
const CardStackItem = forwardRef<HTMLDivElement, SharedCardStackProps>(
|
|
108
|
+
({ children, classNames, asChild, role = 'none', ...props }, forwardedRef) => {
|
|
46
109
|
const Root = asChild ? Slot : 'div';
|
|
47
110
|
const rootProps = asChild
|
|
48
|
-
? { classNames: [
|
|
49
|
-
: { className: mx(
|
|
111
|
+
? { classNames: [cardStackItem, classNames] }
|
|
112
|
+
: { className: mx(cardStackItem, classNames), role };
|
|
113
|
+
|
|
50
114
|
return (
|
|
51
115
|
<Root {...props} {...rootProps} ref={forwardedRef}>
|
|
52
116
|
{children}
|
|
@@ -55,15 +119,19 @@ const CardStackHeading = forwardRef<HTMLDivElement, SharedCardStackProps>(
|
|
|
55
119
|
},
|
|
56
120
|
);
|
|
57
121
|
|
|
58
|
-
|
|
59
|
-
|
|
122
|
+
//
|
|
123
|
+
// Heading
|
|
124
|
+
//
|
|
60
125
|
|
|
61
|
-
const
|
|
62
|
-
|
|
126
|
+
const cardStackHeading = 'mli-2 order-first bg-transparent rounded-bs-md flex items-center';
|
|
127
|
+
|
|
128
|
+
const CardStackHeading = forwardRef<HTMLDivElement, SharedCardStackProps>(
|
|
129
|
+
({ children, classNames, asChild, role = 'heading', ...props }, forwardedRef) => {
|
|
63
130
|
const Root = asChild ? Slot : 'div';
|
|
64
131
|
const rootProps = asChild
|
|
65
|
-
? { classNames: [
|
|
66
|
-
: { className: mx(
|
|
132
|
+
? { classNames: [cardStackHeading, classNames] }
|
|
133
|
+
: { className: mx(cardStackHeading, classNames), role };
|
|
134
|
+
|
|
67
135
|
return (
|
|
68
136
|
<Root {...props} {...rootProps} ref={forwardedRef}>
|
|
69
137
|
{children}
|
|
@@ -72,33 +140,20 @@ const CardStackFooter = forwardRef<HTMLDivElement, SharedCardStackProps>(
|
|
|
72
140
|
},
|
|
73
141
|
);
|
|
74
142
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
];
|
|
79
|
-
|
|
80
|
-
const CardStackContent = forwardRef<HTMLDivElement, SharedCardStackProps>(
|
|
81
|
-
({ children, classNames, asChild, role = 'none', ...props }, forwardedRef) => {
|
|
82
|
-
const Root = asChild ? Slot : 'div';
|
|
83
|
-
const rootProps = asChild
|
|
84
|
-
? { classNames: [...cardStackContent, classNames] }
|
|
85
|
-
: { className: mx(...cardStackContent, classNames), role };
|
|
86
|
-
return (
|
|
87
|
-
<Root {...props} {...rootProps} data-scroll-separator='false' ref={forwardedRef}>
|
|
88
|
-
{children}
|
|
89
|
-
</Root>
|
|
90
|
-
);
|
|
91
|
-
},
|
|
92
|
-
);
|
|
143
|
+
//
|
|
144
|
+
// Footer
|
|
145
|
+
//
|
|
93
146
|
|
|
94
|
-
const
|
|
147
|
+
const cardStackFooter =
|
|
148
|
+
'plb-2 mli-2 border-bs border-transparent [[data-scroll-separator-end="true"]_&]:border-subduedSeparator';
|
|
95
149
|
|
|
96
|
-
const
|
|
150
|
+
const CardStackFooter = forwardRef<HTMLDivElement, SharedCardStackProps>(
|
|
97
151
|
({ children, classNames, asChild, role = 'none', ...props }, forwardedRef) => {
|
|
98
152
|
const Root = asChild ? Slot : 'div';
|
|
99
153
|
const rootProps = asChild
|
|
100
|
-
? { classNames: [
|
|
101
|
-
: { className: mx(
|
|
154
|
+
? { classNames: [cardStackFooter, classNames] }
|
|
155
|
+
: { className: mx(cardStackFooter, classNames), role };
|
|
156
|
+
|
|
102
157
|
return (
|
|
103
158
|
<Root {...props} {...rootProps} ref={forwardedRef}>
|
|
104
159
|
{children}
|
|
@@ -107,22 +162,19 @@ const CardStackRoot = forwardRef<HTMLDivElement, SharedCardStackProps>(
|
|
|
107
162
|
},
|
|
108
163
|
);
|
|
109
164
|
|
|
110
|
-
|
|
165
|
+
//
|
|
166
|
+
// DragHandle
|
|
167
|
+
//
|
|
111
168
|
|
|
112
|
-
const
|
|
113
|
-
({ children, classNames, asChild, role = 'none', ...props }, forwardedRef) => {
|
|
114
|
-
const Root = asChild ? Slot : 'div';
|
|
115
|
-
const rootProps = asChild
|
|
116
|
-
? { classNames: [cardStackItem, classNames] }
|
|
117
|
-
: { className: mx(cardStackItem, classNames), role };
|
|
118
|
-
return (
|
|
119
|
-
<Root {...props} {...rootProps} ref={forwardedRef}>
|
|
120
|
-
{children}
|
|
121
|
-
</Root>
|
|
122
|
-
);
|
|
123
|
-
},
|
|
124
|
-
);
|
|
169
|
+
const CardStackDragHandle = Card.DragHandle;
|
|
125
170
|
|
|
171
|
+
//
|
|
172
|
+
// CardStack
|
|
173
|
+
//
|
|
174
|
+
|
|
175
|
+
/**
|
|
176
|
+
* @deprecated Replace with Mosaic.Stack.
|
|
177
|
+
*/
|
|
126
178
|
export const CardStack = {
|
|
127
179
|
Root: CardStackRoot,
|
|
128
180
|
Content: CardStackContent,
|
|
@@ -133,4 +185,11 @@ export const CardStack = {
|
|
|
133
185
|
Item: CardStackItem,
|
|
134
186
|
};
|
|
135
187
|
|
|
136
|
-
export {
|
|
188
|
+
export {
|
|
189
|
+
cardStackRoot,
|
|
190
|
+
cardStackFooter,
|
|
191
|
+
cardStackHeading,
|
|
192
|
+
cardStackContent,
|
|
193
|
+
cardStackItem,
|
|
194
|
+
cardStackDefaultInlineSizeRem,
|
|
195
|
+
};
|
|
@@ -4,11 +4,11 @@
|
|
|
4
4
|
|
|
5
5
|
import React, { type PropsWithChildren } from 'react';
|
|
6
6
|
|
|
7
|
-
import { IconButton, useTranslation } from '@dxos/react-ui';
|
|
8
|
-
import { mx } from '@dxos/
|
|
7
|
+
import { IconButton, ScrollArea, useTranslation } from '@dxos/react-ui';
|
|
8
|
+
import { mx } from '@dxos/ui-theme';
|
|
9
9
|
|
|
10
|
-
import { type StackProps } from '../../components';
|
|
11
10
|
import { translationKey } from '../../translations';
|
|
11
|
+
import { type StackProps } from '../Stack';
|
|
12
12
|
|
|
13
13
|
const CardStackDragPreviewRoot = ({ children }: PropsWithChildren<{}>) => {
|
|
14
14
|
return (
|
|
@@ -41,18 +41,21 @@ const CardStackDragPreviewContent = ({
|
|
|
41
41
|
itemsCount = 0,
|
|
42
42
|
}: PropsWithChildren<Pick<StackProps, 'itemsCount'>>) => {
|
|
43
43
|
return (
|
|
44
|
-
<
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
</
|
|
44
|
+
<ScrollArea.Root orientation='vertical'>
|
|
45
|
+
<ScrollArea.Viewport classNames={mx('pli-2 plb-1 gap-2', itemsCount > 0 ? 'plb-2' : 'plb-1')}>
|
|
46
|
+
{children}
|
|
47
|
+
</ScrollArea.Viewport>
|
|
48
|
+
</ScrollArea.Root>
|
|
49
49
|
);
|
|
50
50
|
};
|
|
51
51
|
|
|
52
52
|
const CardStackDragPreviewFooter = ({ children }: PropsWithChildren<{}>) => {
|
|
53
|
-
return <div className='p-2 border-
|
|
53
|
+
return <div className='p-2 border-bs border-separator'>{children}</div>;
|
|
54
54
|
};
|
|
55
55
|
|
|
56
|
+
/**
|
|
57
|
+
* @deprecated
|
|
58
|
+
*/
|
|
56
59
|
export const CardStackDragPreview = {
|
|
57
60
|
Root: CardStackDragPreviewRoot,
|
|
58
61
|
Heading: CardStackDragPreviewHeading,
|
|
@@ -2,17 +2,15 @@
|
|
|
2
2
|
// Copyright 2024 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import '@dxos-theme';
|
|
6
|
-
|
|
7
5
|
import { type Edge } from '@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge';
|
|
8
6
|
import { type Meta, type StoryObj } from '@storybook/react-vite';
|
|
9
7
|
import React, { useCallback, useState } from 'react';
|
|
10
8
|
|
|
11
9
|
import { faker } from '@dxos/random';
|
|
12
|
-
import { withTheme } from '@dxos/
|
|
10
|
+
import { withTheme } from '@dxos/react-ui/testing';
|
|
13
11
|
|
|
14
|
-
import { type StackItemData } from '../defs';
|
|
15
12
|
import { StackItem } from '../StackItem';
|
|
13
|
+
import { type StackItemData } from '../types';
|
|
16
14
|
|
|
17
15
|
import { Stack } from './Stack';
|
|
18
16
|
|
|
@@ -133,8 +131,8 @@ const DefaultStory = () => {
|
|
|
133
131
|
const meta = {
|
|
134
132
|
title: 'ui/react-ui-stack/Stack',
|
|
135
133
|
component: DefaultStory,
|
|
136
|
-
decorators: [withTheme],
|
|
137
134
|
argTypes: { orientation: { control: 'radio', options: ['horizontal', 'vertical'] } },
|
|
135
|
+
decorators: [withTheme()],
|
|
138
136
|
} satisfies Meta<typeof DefaultStory>;
|
|
139
137
|
|
|
140
138
|
export default meta;
|