@dxos/react-ui-stack 0.8.4-main.b97322e → 0.8.4-main.bc674ce
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 +923 -50
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/playwright/index.mjs +4 -0
- package/dist/lib/browser/playwright/index.mjs.map +2 -2
- package/dist/lib/node-esm/index.mjs +924 -50
- 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 +4 -0
- 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/components/CardStack/CardStack.stories.d.ts +15 -0
- package/dist/types/src/components/CardStack/CardStack.stories.d.ts.map +1 -0
- package/dist/types/src/{exemplars → components}/CardStack/CardStackDragPreview.d.ts +1 -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 +15 -7
- package/dist/types/src/components/Stack/Stack.d.ts.map +1 -1
- package/dist/types/src/components/Stack/Stack.stories.d.ts +12 -3
- package/dist/types/src/components/Stack/Stack.stories.d.ts.map +1 -1
- package/dist/types/src/components/StackContext.d.ts +2 -1
- package/dist/types/src/components/StackContext.d.ts.map +1 -1
- package/dist/types/src/components/StackItem/StackItem.d.ts +9 -12
- package/dist/types/src/components/StackItem/StackItem.d.ts.map +1 -1
- package/dist/types/src/components/StackItem/StackItem.stories.d.ts +13 -5
- 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 +1 -1
- package/dist/types/src/components/StackItem/StackItemHeading.d.ts.map +1 -1
- package/dist/types/src/components/StackItem/StackItemResizeHandle.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 -1
- 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 +9 -7
- 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 +19 -18
- package/src/{exemplars → components}/CardStack/CardStack.tsx +114 -54
- package/src/{exemplars → components}/CardStack/CardStackDragPreview.tsx +3 -3
- package/src/components/Stack/Stack.stories.tsx +8 -9
- package/src/components/Stack/Stack.tsx +225 -26
- package/src/components/StackContext.tsx +2 -1
- package/src/components/StackItem/StackItem.stories.tsx +19 -15
- package/src/components/StackItem/StackItem.tsx +49 -29
- package/src/components/StackItem/StackItemContent.tsx +18 -39
- package/src/components/StackItem/StackItemHeading.tsx +5 -9
- package/src/components/StackItem/StackItemResizeHandle.tsx +2 -1
- package/src/components/StackItem/StackItemSigil.tsx +5 -4
- package/src/components/deprecated/LayoutControls.tsx +3 -0
- package/src/components/index.ts +2 -1
- package/src/hooks/useStackDropForElements.ts +59 -45
- 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-P3TQV4BA.mjs +0 -1198
- package/dist/lib/browser/chunk-P3TQV4BA.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-3WVEPAJ4.mjs +0 -1200
- package/dist/lib/node-esm/chunk-3WVEPAJ4.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/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 -13
- 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 -12
- 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 +0 -9
- 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/exemplars/Card/Card.stories.tsx +0 -78
- package/src/exemplars/Card/Card.tsx +0 -186
- package/src/exemplars/Card/CardDragPreview.tsx +0 -22
- package/src/exemplars/Card/fragments.ts +0 -23
- package/src/exemplars/Card/index.ts +0 -7
- package/src/exemplars/index.ts +0 -6
- package/src/testing/CardContainer.tsx +0 -34
- 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.bc674ce",
|
|
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/react-ui-
|
|
62
|
-
"@dxos/util": "0.8.4-main.
|
|
63
|
-
"@dxos/react-ui-attention": "0.8.4-main.b97322e"
|
|
56
|
+
"@dxos/keyboard": "0.8.4-main.bc674ce",
|
|
57
|
+
"@dxos/echo": "0.8.4-main.bc674ce",
|
|
58
|
+
"@dxos/react-ui-attention": "0.8.4-main.bc674ce",
|
|
59
|
+
"@dxos/react-ui-dnd": "0.8.4-main.bc674ce",
|
|
60
|
+
"@dxos/react-ui-mosaic": "0.8.4-main.bc674ce",
|
|
61
|
+
"@dxos/util": "0.8.4-main.bc674ce"
|
|
64
62
|
},
|
|
65
63
|
"devDependencies": {
|
|
66
|
-
"@types/react": "~
|
|
67
|
-
"@types/react-dom": "~
|
|
68
|
-
"react": "~
|
|
69
|
-
"react-dom": "~
|
|
70
|
-
"vite": "
|
|
71
|
-
"@dxos/app-
|
|
72
|
-
"@dxos/
|
|
73
|
-
"@dxos/
|
|
74
|
-
"@dxos/
|
|
75
|
-
"@dxos/
|
|
76
|
-
"@dxos/
|
|
77
|
-
"@dxos/react-ui
|
|
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.bc674ce",
|
|
70
|
+
"@dxos/app-graph": "0.8.4-main.bc674ce",
|
|
71
|
+
"@dxos/client": "0.8.4-main.bc674ce",
|
|
72
|
+
"@dxos/echo": "0.8.4-main.bc674ce",
|
|
73
|
+
"@dxos/echo-db": "0.8.4-main.bc674ce",
|
|
74
|
+
"@dxos/random": "0.8.4-main.bc674ce",
|
|
75
|
+
"@dxos/react-ui": "0.8.4-main.bc674ce",
|
|
76
|
+
"@dxos/schema": "0.8.4-main.bc674ce",
|
|
77
|
+
"@dxos/test-utils": "0.8.4-main.bc674ce",
|
|
78
|
+
"@dxos/react-client": "0.8.4-main.bc674ce",
|
|
79
|
+
"@dxos/types": "0.8.4-main.bc674ce",
|
|
80
|
+
"@dxos/ui-theme": "0.8.4-main.bc674ce",
|
|
81
|
+
"@dxos/storybook-utils": "0.8.4-main.bc674ce"
|
|
79
82
|
},
|
|
80
83
|
"peerDependencies": {
|
|
81
|
-
"react": "~
|
|
82
|
-
"react-dom": "~
|
|
83
|
-
"@dxos/
|
|
84
|
-
"@dxos/
|
|
85
|
-
"@dxos/react-ui": "0.8.4-main.
|
|
86
|
-
"@dxos/
|
|
84
|
+
"react": "~19.2.3",
|
|
85
|
+
"react-dom": "~19.2.3",
|
|
86
|
+
"@dxos/random": "0.8.4-main.bc674ce",
|
|
87
|
+
"@dxos/client": "0.8.4-main.bc674ce",
|
|
88
|
+
"@dxos/react-ui": "0.8.4-main.bc674ce",
|
|
89
|
+
"@dxos/ui-theme": "0.8.4-main.bc674ce"
|
|
87
90
|
},
|
|
88
91
|
"publishConfig": {
|
|
89
92
|
"access": "public"
|
|
@@ -2,21 +2,19 @@
|
|
|
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
|
-
import React, {
|
|
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';
|
|
13
|
+
|
|
14
|
+
import { StackItem } from '../StackItem';
|
|
14
15
|
|
|
15
16
|
import { CardStack } from './CardStack';
|
|
16
|
-
import { StackItem } from '../../components';
|
|
17
|
-
import { Card, CardDragPreview } from '../Card';
|
|
18
17
|
|
|
19
|
-
// Set a seed for reproducible random values
|
|
20
18
|
faker.seed(0);
|
|
21
19
|
|
|
22
20
|
type CardItem = {
|
|
@@ -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
|
)}
|
|
@@ -159,11 +157,14 @@ const CardStackStory = () => {
|
|
|
159
157
|
);
|
|
160
158
|
};
|
|
161
159
|
|
|
162
|
-
const meta
|
|
160
|
+
const meta = {
|
|
163
161
|
title: 'ui/react-ui-stack/CardStack',
|
|
164
162
|
component: CardStackStory,
|
|
165
|
-
decorators: [withTheme
|
|
166
|
-
|
|
163
|
+
decorators: [withTheme],
|
|
164
|
+
parameters: {
|
|
165
|
+
layout: 'fullscreen',
|
|
166
|
+
},
|
|
167
|
+
} satisfies Meta<typeof CardStackStory>;
|
|
167
168
|
|
|
168
169
|
export default meta;
|
|
169
170
|
|
|
@@ -6,17 +6,79 @@ 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 {
|
|
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
|
+
// TODO(burdon): Root should be headless.
|
|
26
|
+
const CardStackRoot = forwardRef<HTMLDivElement, SharedCardStackProps>(
|
|
27
|
+
({ children, classNames, asChild, role = 'none', ...props }, forwardedRef) => {
|
|
28
|
+
const Root = asChild ? Slot : 'div';
|
|
29
|
+
const rootProps = asChild
|
|
30
|
+
? { classNames: [cardStackRoot, classNames] }
|
|
31
|
+
: { className: mx(cardStackRoot, classNames), role };
|
|
32
|
+
|
|
33
|
+
return (
|
|
34
|
+
<Root {...props} {...rootProps} ref={forwardedRef}>
|
|
35
|
+
{children}
|
|
36
|
+
</Root>
|
|
37
|
+
);
|
|
38
|
+
},
|
|
39
|
+
);
|
|
40
|
+
|
|
41
|
+
//
|
|
42
|
+
// Content
|
|
43
|
+
// TODO(burdon): Rename Viewport (should be the component that scrolls).
|
|
44
|
+
//
|
|
45
|
+
|
|
46
|
+
const cardStackContent = 'shrink min-bs-0 grid dx-focus-ring-group-x-indicator bg-baseSurface';
|
|
47
|
+
|
|
48
|
+
type CardStackContentProps = SharedCardStackProps & {
|
|
49
|
+
footer?: boolean;
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
const CardStackContent = forwardRef<HTMLDivElement, CardStackContentProps>(
|
|
53
|
+
({ children, classNames, asChild, role = 'none', footer, ...props }, forwardedRef) => {
|
|
54
|
+
const Root = asChild ? Slot : 'div';
|
|
55
|
+
const baseClassNames = footer ? [cardStackContent, railGridHorizontalContainFitContent] : [cardStackContent];
|
|
56
|
+
const rootProps = asChild
|
|
57
|
+
? { classNames: [...baseClassNames, classNames] }
|
|
58
|
+
: { className: mx(...baseClassNames, classNames), role };
|
|
59
|
+
|
|
60
|
+
return (
|
|
61
|
+
<Root {...props} {...rootProps} data-scroll-separator='false' ref={forwardedRef}>
|
|
62
|
+
{children}
|
|
63
|
+
</Root>
|
|
64
|
+
);
|
|
65
|
+
},
|
|
66
|
+
);
|
|
67
|
+
|
|
68
|
+
//
|
|
69
|
+
// Stack
|
|
70
|
+
// TODO(burdon): Rename Content.
|
|
71
|
+
//
|
|
72
|
+
|
|
73
|
+
type SharedCardStackProps = ThemedClassName<ComponentPropsWithoutRef<'div'>> & {
|
|
74
|
+
asChild?: boolean;
|
|
75
|
+
};
|
|
15
76
|
|
|
16
77
|
const CardStackStack = forwardRef<
|
|
17
78
|
HTMLDivElement,
|
|
18
79
|
Omit<StackProps, 'orientation' | 'size' | 'rail' | 'separatorOnScroll'>
|
|
19
80
|
>(({ children, classNames, itemsCount = 0, ...props }, forwardedRef) => {
|
|
81
|
+
// NOTE: Should not have horizontal padding since separatorOnScroll should be full width.
|
|
20
82
|
return (
|
|
21
83
|
<Stack
|
|
22
84
|
orientation='vertical'
|
|
@@ -24,7 +86,7 @@ const CardStackStack = forwardRef<
|
|
|
24
86
|
rail={false}
|
|
25
87
|
classNames={
|
|
26
88
|
/* NOTE(thure): Do not let this element have zero intrinsic size, otherwise the drop indicator will not display. See #9035. */
|
|
27
|
-
['plb-
|
|
89
|
+
['plb-2', classNames]
|
|
28
90
|
}
|
|
29
91
|
itemsCount={itemsCount}
|
|
30
92
|
separatorOnScroll={9}
|
|
@@ -37,16 +99,19 @@ const CardStackStack = forwardRef<
|
|
|
37
99
|
);
|
|
38
100
|
});
|
|
39
101
|
|
|
40
|
-
|
|
102
|
+
//
|
|
103
|
+
// Item
|
|
104
|
+
//
|
|
41
105
|
|
|
42
|
-
const
|
|
106
|
+
const cardStackItem = 'contain-layout pli-2 plb-1 first-of-type:pbs-0 last-of-type:pbe-0';
|
|
43
107
|
|
|
44
|
-
const
|
|
45
|
-
({ children, classNames, asChild, role = '
|
|
108
|
+
const CardStackItem = forwardRef<HTMLDivElement, SharedCardStackProps>(
|
|
109
|
+
({ children, classNames, asChild, role = 'none', ...props }, forwardedRef) => {
|
|
46
110
|
const Root = asChild ? Slot : 'div';
|
|
47
111
|
const rootProps = asChild
|
|
48
|
-
? { classNames: [
|
|
49
|
-
: { className: mx(
|
|
112
|
+
? { classNames: [cardStackItem, classNames] }
|
|
113
|
+
: { className: mx(cardStackItem, classNames), role };
|
|
114
|
+
|
|
50
115
|
return (
|
|
51
116
|
<Root {...props} {...rootProps} ref={forwardedRef}>
|
|
52
117
|
{children}
|
|
@@ -55,15 +120,19 @@ const CardStackHeading = forwardRef<HTMLDivElement, SharedCardStackProps>(
|
|
|
55
120
|
},
|
|
56
121
|
);
|
|
57
122
|
|
|
58
|
-
|
|
59
|
-
|
|
123
|
+
//
|
|
124
|
+
// Heading
|
|
125
|
+
//
|
|
60
126
|
|
|
61
|
-
const
|
|
62
|
-
|
|
127
|
+
const cardStackHeading = 'mli-2 order-first bg-transparent rounded-bs-md flex items-center';
|
|
128
|
+
|
|
129
|
+
const CardStackHeading = forwardRef<HTMLDivElement, SharedCardStackProps>(
|
|
130
|
+
({ children, classNames, asChild, role = 'heading', ...props }, forwardedRef) => {
|
|
63
131
|
const Root = asChild ? Slot : 'div';
|
|
64
132
|
const rootProps = asChild
|
|
65
|
-
? { classNames: [
|
|
66
|
-
: { className: mx(
|
|
133
|
+
? { classNames: [cardStackHeading, classNames] }
|
|
134
|
+
: { className: mx(cardStackHeading, classNames), role };
|
|
135
|
+
|
|
67
136
|
return (
|
|
68
137
|
<Root {...props} {...rootProps} ref={forwardedRef}>
|
|
69
138
|
{children}
|
|
@@ -72,33 +141,20 @@ const CardStackFooter = forwardRef<HTMLDivElement, SharedCardStackProps>(
|
|
|
72
141
|
},
|
|
73
142
|
);
|
|
74
143
|
|
|
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
|
-
);
|
|
144
|
+
//
|
|
145
|
+
// Footer
|
|
146
|
+
//
|
|
93
147
|
|
|
94
|
-
const
|
|
148
|
+
const cardStackFooter =
|
|
149
|
+
'plb-2 mli-2 border-bs border-transparent [[data-scroll-separator-end="true"]_&]:border-subduedSeparator';
|
|
95
150
|
|
|
96
|
-
const
|
|
151
|
+
const CardStackFooter = forwardRef<HTMLDivElement, SharedCardStackProps>(
|
|
97
152
|
({ children, classNames, asChild, role = 'none', ...props }, forwardedRef) => {
|
|
98
153
|
const Root = asChild ? Slot : 'div';
|
|
99
154
|
const rootProps = asChild
|
|
100
|
-
? { classNames: [
|
|
101
|
-
: { className: mx(
|
|
155
|
+
? { classNames: [cardStackFooter, classNames] }
|
|
156
|
+
: { className: mx(cardStackFooter, classNames), role };
|
|
157
|
+
|
|
102
158
|
return (
|
|
103
159
|
<Root {...props} {...rootProps} ref={forwardedRef}>
|
|
104
160
|
{children}
|
|
@@ -107,22 +163,19 @@ const CardStackRoot = forwardRef<HTMLDivElement, SharedCardStackProps>(
|
|
|
107
163
|
},
|
|
108
164
|
);
|
|
109
165
|
|
|
110
|
-
|
|
166
|
+
//
|
|
167
|
+
// DragHandle
|
|
168
|
+
//
|
|
111
169
|
|
|
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
|
-
);
|
|
170
|
+
const CardStackDragHandle = Card.DragHandle;
|
|
125
171
|
|
|
172
|
+
//
|
|
173
|
+
// CardStack
|
|
174
|
+
//
|
|
175
|
+
|
|
176
|
+
/**
|
|
177
|
+
* @deprecated Replace with Mosaic.Stack.
|
|
178
|
+
*/
|
|
126
179
|
export const CardStack = {
|
|
127
180
|
Root: CardStackRoot,
|
|
128
181
|
Content: CardStackContent,
|
|
@@ -133,4 +186,11 @@ export const CardStack = {
|
|
|
133
186
|
Item: CardStackItem,
|
|
134
187
|
};
|
|
135
188
|
|
|
136
|
-
export {
|
|
189
|
+
export {
|
|
190
|
+
cardStackRoot,
|
|
191
|
+
cardStackFooter,
|
|
192
|
+
cardStackHeading,
|
|
193
|
+
cardStackContent,
|
|
194
|
+
cardStackItem,
|
|
195
|
+
cardStackDefaultInlineSizeRem,
|
|
196
|
+
};
|
|
@@ -5,10 +5,10 @@
|
|
|
5
5
|
import React, { type PropsWithChildren } from 'react';
|
|
6
6
|
|
|
7
7
|
import { IconButton, useTranslation } from '@dxos/react-ui';
|
|
8
|
-
import { mx } from '@dxos/
|
|
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 (
|
|
@@ -50,7 +50,7 @@ const CardStackDragPreviewContent = ({
|
|
|
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
56
|
export const CardStackDragPreview = {
|
|
@@ -2,18 +2,17 @@
|
|
|
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
|
-
import React, {
|
|
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 { Stack } from './Stack';
|
|
15
12
|
import { StackItem } from '../StackItem';
|
|
16
|
-
import { type StackItemData } from '../
|
|
13
|
+
import { type StackItemData } from '../types';
|
|
14
|
+
|
|
15
|
+
import { Stack } from './Stack';
|
|
17
16
|
|
|
18
17
|
type StoryStackItem = {
|
|
19
18
|
id: string;
|
|
@@ -129,12 +128,12 @@ const DefaultStory = () => {
|
|
|
129
128
|
);
|
|
130
129
|
};
|
|
131
130
|
|
|
132
|
-
const meta
|
|
131
|
+
const meta = {
|
|
133
132
|
title: 'ui/react-ui-stack/Stack',
|
|
134
133
|
component: DefaultStory,
|
|
135
|
-
decorators: [withTheme],
|
|
136
134
|
argTypes: { orientation: { control: 'radio', options: ['horizontal', 'vertical'] } },
|
|
137
|
-
|
|
135
|
+
decorators: [withTheme],
|
|
136
|
+
} satisfies Meta<typeof DefaultStory>;
|
|
138
137
|
|
|
139
138
|
export default meta;
|
|
140
139
|
|