@dxos/react-ui-stack 0.8.4-main.f9ba587 → 0.8.4-main.fcc0d83b33

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 (107) hide show
  1. package/dist/lib/browser/index.mjs +535 -1013
  2. package/dist/lib/browser/index.mjs.map +4 -4
  3. package/dist/lib/browser/meta.json +1 -1
  4. package/dist/lib/browser/{testing → playwright}/index.mjs +5 -1
  5. package/dist/lib/browser/{testing → playwright}/index.mjs.map +3 -3
  6. package/dist/lib/browser/translations.mjs +23 -0
  7. package/dist/lib/browser/translations.mjs.map +7 -0
  8. package/dist/lib/node-esm/index.mjs +535 -1013
  9. package/dist/lib/node-esm/index.mjs.map +4 -4
  10. package/dist/lib/node-esm/meta.json +1 -1
  11. package/dist/lib/node-esm/{testing → playwright}/index.mjs +5 -1
  12. package/dist/lib/node-esm/{testing → playwright}/index.mjs.map +3 -3
  13. package/dist/lib/node-esm/translations.mjs +25 -0
  14. package/dist/lib/node-esm/translations.mjs.map +7 -0
  15. package/dist/types/src/components/Stack/Stack.d.ts +13 -10
  16. package/dist/types/src/components/Stack/Stack.d.ts.map +1 -1
  17. package/dist/types/src/components/Stack/Stack.stories.d.ts +12 -3
  18. package/dist/types/src/components/Stack/Stack.stories.d.ts.map +1 -1
  19. package/dist/types/src/components/StackContext.d.ts +2 -1
  20. package/dist/types/src/components/StackContext.d.ts.map +1 -1
  21. package/dist/types/src/components/StackItem/MenuSignifier.d.ts.map +1 -1
  22. package/dist/types/src/components/StackItem/StackItem.d.ts +14 -17
  23. package/dist/types/src/components/StackItem/StackItem.d.ts.map +1 -1
  24. package/dist/types/src/components/StackItem/StackItem.stories.d.ts +13 -5
  25. package/dist/types/src/components/StackItem/StackItem.stories.d.ts.map +1 -1
  26. package/dist/types/src/components/StackItem/StackItemContent.d.ts +4 -37
  27. package/dist/types/src/components/StackItem/StackItemContent.d.ts.map +1 -1
  28. package/dist/types/src/components/StackItem/StackItemDragHandle.d.ts.map +1 -1
  29. package/dist/types/src/components/StackItem/StackItemHeading.d.ts +2 -2
  30. package/dist/types/src/components/StackItem/StackItemHeading.d.ts.map +1 -1
  31. package/dist/types/src/components/StackItem/StackItemResizeHandle.d.ts +1 -1
  32. package/dist/types/src/components/StackItem/StackItemResizeHandle.d.ts.map +1 -1
  33. package/dist/types/src/components/StackItem/StackItemSigil.d.ts +2 -2
  34. package/dist/types/src/components/StackItem/StackItemSigil.d.ts.map +1 -1
  35. package/dist/types/src/components/index.d.ts +1 -1
  36. package/dist/types/src/components/index.d.ts.map +1 -1
  37. package/dist/types/src/components/{defs.d.ts → types.d.ts} +1 -1
  38. package/dist/types/src/components/types.d.ts.map +1 -0
  39. package/dist/types/src/hooks/useStackDropForElements.d.ts +9 -7
  40. package/dist/types/src/hooks/useStackDropForElements.d.ts.map +1 -1
  41. package/dist/types/src/index.d.ts +0 -2
  42. package/dist/types/src/index.d.ts.map +1 -1
  43. package/dist/types/src/playwright/index.d.ts.map +1 -0
  44. package/dist/types/src/playwright/playwright.config.d.ts.map +1 -1
  45. package/dist/types/src/playwright/stack-manager.d.ts.map +1 -0
  46. package/dist/types/src/translations.d.ts +10 -10
  47. package/dist/types/src/translations.d.ts.map +1 -1
  48. package/dist/types/tsconfig.tsbuildinfo +1 -1
  49. package/package.json +54 -46
  50. package/src/components/Stack/Stack.stories.tsx +15 -18
  51. package/src/components/Stack/Stack.tsx +239 -53
  52. package/src/components/StackContext.tsx +2 -1
  53. package/src/components/StackItem/MenuSignifier.tsx +2 -9
  54. package/src/components/StackItem/StackItem.stories.tsx +22 -18
  55. package/src/components/StackItem/StackItem.tsx +61 -43
  56. package/src/components/StackItem/StackItemContent.tsx +25 -44
  57. package/src/components/StackItem/StackItemDragHandle.tsx +4 -3
  58. package/src/components/StackItem/StackItemHeading.tsx +17 -20
  59. package/src/components/StackItem/StackItemResizeHandle.tsx +2 -2
  60. package/src/components/StackItem/StackItemSigil.tsx +11 -7
  61. package/src/components/index.ts +2 -1
  62. package/src/hooks/useStackDropForElements.ts +61 -47
  63. package/src/index.ts +0 -4
  64. package/src/{testing → playwright}/index.ts +1 -1
  65. package/src/playwright/playwright.config.ts +1 -1
  66. package/src/playwright/smoke.spec.ts +1 -1
  67. package/src/translations.ts +9 -9
  68. package/dist/types/src/components/defs.d.ts.map +0 -1
  69. package/dist/types/src/components/deprecated/LayoutControls.d.ts +0 -19
  70. package/dist/types/src/components/deprecated/LayoutControls.d.ts.map +0 -1
  71. package/dist/types/src/exemplars/Card/Card.d.ts +0 -57
  72. package/dist/types/src/exemplars/Card/Card.d.ts.map +0 -1
  73. package/dist/types/src/exemplars/Card/Card.stories.d.ts +0 -13
  74. package/dist/types/src/exemplars/Card/Card.stories.d.ts.map +0 -1
  75. package/dist/types/src/exemplars/Card/CardDragPreview.d.ts +0 -6
  76. package/dist/types/src/exemplars/Card/CardDragPreview.d.ts.map +0 -1
  77. package/dist/types/src/exemplars/Card/fragments.d.ts +0 -12
  78. package/dist/types/src/exemplars/Card/fragments.d.ts.map +0 -1
  79. package/dist/types/src/exemplars/Card/index.d.ts +0 -4
  80. package/dist/types/src/exemplars/Card/index.d.ts.map +0 -1
  81. package/dist/types/src/exemplars/CardStack/CardStack.d.ts +0 -40
  82. package/dist/types/src/exemplars/CardStack/CardStack.d.ts.map +0 -1
  83. package/dist/types/src/exemplars/CardStack/CardStack.stories.d.ts +0 -9
  84. package/dist/types/src/exemplars/CardStack/CardStack.stories.d.ts.map +0 -1
  85. package/dist/types/src/exemplars/CardStack/CardStackDragPreview.d.ts +0 -9
  86. package/dist/types/src/exemplars/CardStack/CardStackDragPreview.d.ts.map +0 -1
  87. package/dist/types/src/exemplars/CardStack/index.d.ts +0 -3
  88. package/dist/types/src/exemplars/CardStack/index.d.ts.map +0 -1
  89. package/dist/types/src/exemplars/index.d.ts +0 -3
  90. package/dist/types/src/exemplars/index.d.ts.map +0 -1
  91. package/dist/types/src/testing/index.d.ts.map +0 -1
  92. package/dist/types/src/testing/stack-manager.d.ts.map +0 -1
  93. package/src/components/deprecated/LayoutControls.tsx +0 -109
  94. package/src/exemplars/Card/Card.stories.tsx +0 -78
  95. package/src/exemplars/Card/Card.tsx +0 -167
  96. package/src/exemplars/Card/CardDragPreview.tsx +0 -22
  97. package/src/exemplars/Card/fragments.ts +0 -23
  98. package/src/exemplars/Card/index.ts +0 -7
  99. package/src/exemplars/CardStack/CardStack.stories.tsx +0 -172
  100. package/src/exemplars/CardStack/CardStack.tsx +0 -136
  101. package/src/exemplars/CardStack/CardStackDragPreview.tsx +0 -61
  102. package/src/exemplars/CardStack/index.ts +0 -6
  103. package/src/exemplars/index.ts +0 -6
  104. /package/dist/types/src/{testing → playwright}/index.d.ts +0 -0
  105. /package/dist/types/src/{testing → playwright}/stack-manager.d.ts +0 -0
  106. /package/src/components/{defs.ts → types.ts} +0 -0
  107. /package/src/{testing → playwright}/stack-manager.ts +0 -0
@@ -2,76 +2,90 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { combine } from '@atlaskit/pragmatic-drag-and-drop/combine';
6
- import { dropTargetForElements } from '@atlaskit/pragmatic-drag-and-drop/element/adapter';
7
5
  import { autoScrollForElements } from '@atlaskit/pragmatic-drag-and-drop-auto-scroll/element';
8
6
  import { attachClosestEdge, extractClosestEdge } from '@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge';
7
+ import { combine } from '@atlaskit/pragmatic-drag-and-drop/combine';
8
+ import { dropTargetForElements } from '@atlaskit/pragmatic-drag-and-drop/element/adapter';
9
9
  import { useLayoutEffect, useState } from 'react';
10
10
 
11
- import { type StackItemRearrangeHandler, type StackItemData, type Orientation } from '../components';
11
+ import { type Orientation, type StackItemData, type StackItemRearrangeHandler } from '../components';
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
+ };
12
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,4 @@
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
- export * from './translations';
@@ -1,5 +1,5 @@
1
1
  //
2
- // Copyright 2023 DXOS.org
2
+ // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
5
  export * from './stack-manager';
@@ -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
  },
@@ -6,7 +6,7 @@ import { expect, test } from '@playwright/test';
6
6
 
7
7
  import { setupPage, storybookUrl } from '@dxos/test-utils/playwright';
8
8
 
9
- import { StackManager } from '../testing';
9
+ import { StackManager } from './stack-manager';
10
10
 
11
11
  const PORT = 9003;
12
12
 
@@ -4,20 +4,20 @@
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
  {
11
11
  'en-US': {
12
12
  [translationKey]: {
13
- 'resize label': 'Drag to resize',
14
- 'drag handle label': 'Drag to rearrange',
15
- 'pin start label': 'Pin to the left sidebar',
16
- 'pin end label': 'Pin to the right sidebar',
17
- 'increment start label': 'Move to the left',
18
- 'increment end label': 'Move to the right',
19
- 'close label': 'Close',
20
- 'minify label': 'Minify',
13
+ 'resize.label': 'Drag to resize',
14
+ 'drag-handle.label': 'Drag to rearrange',
15
+ 'pin-start.label': 'Pin to the left sidebar',
16
+ 'pin-end.label': 'Pin to the right sidebar',
17
+ 'increment-start.label': 'Move to the left',
18
+ 'increment-end.label': 'Move to the right',
19
+ 'close.label': 'Close',
20
+ 'minify.label': 'Minify',
21
21
  },
22
22
  },
23
23
  },
@@ -1 +0,0 @@
1
- {"version":3,"file":"defs.d.ts","sourceRoot":"","sources":["../../../../src/components/defs.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,uDAAuD,CAAC;AAElF,OAAO,EAAE,KAAK,IAAI,IAAI,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE1D,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,IAAI,EAAE,MAAM,SAAS,CAAC;AAEtD,MAAM,MAAM,aAAa,GAAG,OAAO,CAAC;AAEpC,MAAM,MAAM,aAAa,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAAA;CAAE,CAAC;AAEpE,MAAM,MAAM,yBAAyB,CAAC,IAAI,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG,aAAa,IAAI,CACnF,MAAM,EAAE,IAAI,EACZ,MAAM,EAAE,IAAI,EACZ,WAAW,EAAE,IAAI,GAAG,IAAI,KACrB,IAAI,CAAC;AAEV,MAAM,MAAM,iBAAiB,GAAG;IAC9B,WAAW,EAAE,WAAW,CAAC;IACzB,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,IAAI,CAAC;IACX,WAAW,CAAC,EAAE,yBAAyB,CAAC;CACzC,CAAC"}
@@ -1,19 +0,0 @@
1
- import React from 'react';
2
- import { type ButtonGroupProps } from '@dxos/react-ui';
3
- export type LayoutControlEvent = 'solo' | 'close' | `${'pin' | 'increment'}-${'start' | 'end'}`;
4
- export type LayoutControlHandler = (event: LayoutControlEvent) => void;
5
- export type LayoutCapabilities = {
6
- incrementStart?: boolean;
7
- incrementEnd?: boolean;
8
- solo?: boolean;
9
- };
10
- export type LayoutControlsProps = Omit<ButtonGroupProps, 'onClick'> & {
11
- onClick?: LayoutControlHandler;
12
- variant?: 'hide-disabled' | 'default';
13
- close?: boolean | 'minify-start' | 'minify-end';
14
- capabilities: LayoutCapabilities;
15
- isSolo?: boolean;
16
- pin?: 'start' | 'end' | 'both';
17
- };
18
- export declare const LayoutControls: React.ForwardRefExoticComponent<Omit<LayoutControlsProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
19
- //# sourceMappingURL=LayoutControls.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LayoutControls.d.ts","sourceRoot":"","sources":["../../../../../src/components/deprecated/LayoutControls.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAqB,MAAM,OAAO,CAAC;AAE1C,OAAO,EAAe,KAAK,gBAAgB,EAAgD,MAAM,gBAAgB,CAAC;AAIlH,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,OAAO,GAAG,GAAG,KAAK,GAAG,WAAW,IAAI,OAAO,GAAG,KAAK,EAAE,CAAC;AAChG,MAAM,MAAM,oBAAoB,GAAG,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,CAAC;AAEvE,MAAM,MAAM,kBAAkB,GAAG;IAC/B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,IAAI,CAAC,gBAAgB,EAAE,SAAS,CAAC,GAAG;IACpE,OAAO,CAAC,EAAE,oBAAoB,CAAC;IAC/B,OAAO,CAAC,EAAE,eAAe,GAAG,SAAS,CAAC;IACtC,KAAK,CAAC,EAAE,OAAO,GAAG,cAAc,GAAG,YAAY,CAAC;IAChD,YAAY,EAAE,kBAAkB,CAAC;IACjC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,MAAM,CAAC;CAChC,CAAC;AAMF,eAAO,MAAM,cAAc,yGA4E1B,CAAC"}
@@ -1,57 +0,0 @@
1
- import React, { type PropsWithChildren } from 'react';
2
- import { cardChrome, cardRoot, cardHeading, cardText, cardSpacing } from './fragments';
3
- type CardPosterProps = {
4
- alt: string;
5
- aspect?: 'video' | 'auto';
6
- } & Partial<{
7
- image: string;
8
- icon: string;
9
- }>;
10
- export declare const Card: {
11
- StaticRoot: React.ForwardRefExoticComponent<Omit<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref">, "className"> & {
12
- classNames?: import("@dxos/react-ui-types").ClassNameValue;
13
- } & {
14
- asChild?: boolean;
15
- } & React.RefAttributes<HTMLDivElement>>;
16
- SurfaceRoot: ({ role, children }: PropsWithChildren<{
17
- role?: string;
18
- }>) => React.JSX.Element;
19
- Heading: React.ForwardRefExoticComponent<Omit<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref">, "className"> & {
20
- classNames?: import("@dxos/react-ui-types").ClassNameValue;
21
- } & {
22
- asChild?: boolean;
23
- } & React.RefAttributes<HTMLDivElement>>;
24
- Toolbar: React.ForwardRefExoticComponent<Omit<import("@radix-ui/react-toolbar").ToolbarProps, "className"> & {
25
- classNames?: import("@dxos/react-ui-types").ClassNameValue;
26
- } & {
27
- layoutManaged?: boolean;
28
- } & React.RefAttributes<HTMLDivElement>>;
29
- ToolbarIconButton: React.ForwardRefExoticComponent<Omit<import("@dxos/react-ui").IconButtonProps, "ref"> & React.RefAttributes<HTMLButtonElement>>;
30
- ToolbarSeparator: React.ForwardRefExoticComponent<Omit<import("@radix-ui/react-separator").SeparatorProps, "className"> & {
31
- classNames?: import("@dxos/react-ui-types").ClassNameValue;
32
- } & {
33
- subdued?: boolean;
34
- } & {
35
- variant?: "gap" | "line";
36
- } & React.RefAttributes<HTMLDivElement>>;
37
- DragHandle: React.ForwardRefExoticComponent<{
38
- toolbarItem?: boolean;
39
- } & React.RefAttributes<HTMLButtonElement>>;
40
- DragPreview: ({ children }: import("../..").StackItemDragPreviewProps) => React.ReactPortal | null;
41
- Menu: React.FC<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
42
- ref?: ((instance: HTMLDivElement | null) => void | React.DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES[keyof React.DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES]) | React.RefObject<HTMLDivElement> | null | undefined;
43
- }>;
44
- Poster: (props: CardPosterProps) => React.JSX.Element | undefined;
45
- Chrome: React.ForwardRefExoticComponent<Omit<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref">, "className"> & {
46
- classNames?: import("@dxos/react-ui-types").ClassNameValue;
47
- } & {
48
- asChild?: boolean;
49
- } & React.RefAttributes<HTMLDivElement>>;
50
- Text: React.ForwardRefExoticComponent<Omit<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref">, "className"> & {
51
- classNames?: import("@dxos/react-ui-types").ClassNameValue;
52
- } & {
53
- asChild?: boolean;
54
- } & React.RefAttributes<HTMLParagraphElement>>;
55
- };
56
- export { cardRoot, cardHeading, cardText, cardChrome, cardSpacing };
57
- //# sourceMappingURL=Card.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Card.d.ts","sourceRoot":"","sources":["../../../../../src/exemplars/Card/Card.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,EAKZ,KAAK,iBAAiB,EACvB,MAAM,OAAO,CAAC;AAKf,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAmFvF,KAAK,eAAe,GAAG;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;CAC3B,GAAG,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAgD7C,eAAO,MAAM,IAAI;;;;kBAlIqE,OAAO;;sCAmBtC,iBAAiB,CAAC;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;;;;kBAnBL,OAAO;;;;;;;;;;;;;;;;sBA4DxB,OAAO;;;;;;oBAwBjD,eAAe;;;;kBApF4C,OAAO;;;;;kBAAP,OAAO;;CA+I5F,CAAC;AAEF,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC"}
@@ -1,13 +0,0 @@
1
- import '@dxos-theme';
2
- import { type Meta, type StoryObj } from '@storybook/react-vite';
3
- type CardStoryProps = {
4
- title: string;
5
- description: string;
6
- image: string;
7
- showImage: boolean;
8
- showIcon: boolean;
9
- };
10
- declare const meta: Meta<CardStoryProps>;
11
- export default meta;
12
- export declare const Default: StoryObj<CardStoryProps>;
13
- //# sourceMappingURL=Card.stories.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Card.stories.d.ts","sourceRoot":"","sources":["../../../../../src/exemplars/Card/Card.stories.tsx"],"names":[],"mappings":"AAIA,OAAO,aAAa,CAAC;AAErB,OAAO,EAAE,KAAK,IAAI,EAAE,KAAK,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAWjE,KAAK,cAAc,GAAG;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,cAAc,CAgC9B,CAAC;AAEF,eAAe,IAAI,CAAC;AAEpB,eAAO,MAAM,OAAO,EAAE,QAAQ,CAAC,cAAc,CAgB5C,CAAC"}
@@ -1,6 +0,0 @@
1
- import React, { type PropsWithChildren } from 'react';
2
- export declare const CardDragPreview: {
3
- Root: ({ children }: PropsWithChildren<{}>) => React.JSX.Element;
4
- Content: ({ children }: PropsWithChildren<{}>) => React.JSX.Element;
5
- };
6
- //# sourceMappingURL=CardDragPreview.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CardDragPreview.d.ts","sourceRoot":"","sources":["../../../../../src/exemplars/Card/CardDragPreview.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,EAAE,KAAK,iBAAiB,EAAE,MAAM,OAAO,CAAC;AActD,eAAO,MAAM,eAAe;yBARe,iBAAiB,CAAC,EAAE,CAAC;4BAIlB,iBAAiB,CAAC,EAAE,CAAC;CAOlE,CAAC"}
@@ -1,12 +0,0 @@
1
- export declare const cardRoot = "rounded overflow-hidden bg-cardSurface border border-separator dark:border-subduedSeparator dx-focus-ring-group-y-indicator relative min-bs-[--rail-item] group/card";
2
- export declare const cardSpacing = "pli-cardSpacingInline mlb-cardSpacingBlock";
3
- export declare const labelSpacing = "mbs-inputSpacingBlock mbe-labelSpacingBlock";
4
- export declare const cardDialogContent = "p-0 bs-content min-bs-[8rem] max-bs-full md:max-is-[32rem] overflow-hidden";
5
- export declare const cardDialogHeader = "pli-cardSpacingInline mbs-cardSpacingBlock flex justify-between";
6
- export declare const cardDialogOverflow = "overflow-y-auto min-bs-0 flex-1";
7
- export declare const cardDialogPaddedOverflow = "overflow-y-auto min-bs-0 flex-1 plb-cardSpacingBlock";
8
- export declare const cardDialogSearchListRoot = "pli-cardSpacingInline pbs-cardSpacingBlock [&>input]:mbe-0 min-bs-0 flex-1 flex flex-col";
9
- export declare const cardText = "pli-cardSpacingInline mlb-cardSpacingBlock";
10
- export declare const cardHeading = "text-lg font-medium line-clamp-2";
11
- export declare const cardChrome = "pli-[--dx-cardSpacingChrome] mlb-[--dx-cardSpacingChrome] [&_.dx-button]:text-start [&_.dx-button]:is-full";
12
- //# sourceMappingURL=fragments.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fragments.d.ts","sourceRoot":"","sources":["../../../../../src/exemplars/Card/fragments.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,QAAQ,yKACmJ,CAAC;AAEzK,eAAO,MAAM,WAAW,+CAA+C,CAAC;AACxE,eAAO,MAAM,YAAY,gDAAgD,CAAC;AAE1E,eAAO,MAAM,iBAAiB,+EAA+E,CAAC;AAC9G,eAAO,MAAM,gBAAgB,oEAAoE,CAAC;AAClG,eAAO,MAAM,kBAAkB,oCAAoC,CAAC;AACpE,eAAO,MAAM,wBAAwB,yDAA+C,CAAC;AACrF,eAAO,MAAM,wBAAwB,6FACuD,CAAC;AAE7F,eAAO,MAAM,QAAQ,+CAAc,CAAC;AAEpC,eAAO,MAAM,WAAW,qCAAqC,CAAC;AAE9D,eAAO,MAAM,UAAU,+GACuF,CAAC"}
@@ -1,4 +0,0 @@
1
- export * from './Card';
2
- export * from './CardDragPreview';
3
- export * from './fragments';
4
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/exemplars/Card/index.ts"],"names":[],"mappings":"AAIA,cAAc,QAAQ,CAAC;AACvB,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC"}
@@ -1,40 +0,0 @@
1
- import React from 'react';
2
- import { type StackProps } from '../../components';
3
- declare const cardStackHeading = "mli-2 order-first bg-transparent rounded-bs-md flex items-center";
4
- declare const cardStackFooter = "plb-2 mli-2 border-bs border-transparent [[data-scroll-separator-end=\"true\"]_&]:border-subduedSeparator";
5
- declare const cardStackContent: string[];
6
- declare const cardStackRoot = "flex flex-col pli-2 plb-2";
7
- declare const cardStackItem = "contain-layout pli-2 plb-1 first-of-type:pbs-0 last-of-type:pbe-0";
8
- export declare const CardStack: {
9
- Root: React.ForwardRefExoticComponent<Omit<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref">, "className"> & {
10
- classNames?: import("@dxos/react-ui-types").ClassNameValue;
11
- } & {
12
- asChild?: boolean;
13
- } & React.RefAttributes<HTMLDivElement>>;
14
- Content: React.ForwardRefExoticComponent<Omit<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref">, "className"> & {
15
- classNames?: import("@dxos/react-ui-types").ClassNameValue;
16
- } & {
17
- asChild?: boolean;
18
- } & React.RefAttributes<HTMLDivElement>>;
19
- Stack: React.ForwardRefExoticComponent<Omit<Omit<StackProps, "orientation" | "rail" | "size" | "separatorOnScroll">, "ref"> & React.RefAttributes<HTMLDivElement>>;
20
- Heading: React.ForwardRefExoticComponent<Omit<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref">, "className"> & {
21
- classNames?: import("@dxos/react-ui-types").ClassNameValue;
22
- } & {
23
- asChild?: boolean;
24
- } & React.RefAttributes<HTMLDivElement>>;
25
- Footer: React.ForwardRefExoticComponent<Omit<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref">, "className"> & {
26
- classNames?: import("@dxos/react-ui-types").ClassNameValue;
27
- } & {
28
- asChild?: boolean;
29
- } & React.RefAttributes<HTMLDivElement>>;
30
- DragHandle: React.ForwardRefExoticComponent<{
31
- toolbarItem?: boolean;
32
- } & React.RefAttributes<HTMLButtonElement>>;
33
- Item: React.ForwardRefExoticComponent<Omit<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref">, "className"> & {
34
- classNames?: import("@dxos/react-ui-types").ClassNameValue;
35
- } & {
36
- asChild?: boolean;
37
- } & React.RefAttributes<HTMLDivElement>>;
38
- };
39
- export { cardStackRoot, cardStackFooter, cardStackHeading, cardStackContent, cardStackItem };
40
- //# sourceMappingURL=CardStack.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CardStack.d.ts","sourceRoot":"","sources":["../../../../../src/exemplars/CardStack/CardStack.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAoD,MAAM,OAAO,CAAC;AAKzE,OAAO,EAA8C,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AA+B/F,QAAA,MAAM,gBAAgB,qEAAqE,CAAC;AAgB5F,QAAA,MAAM,eAAe,8GACsF,CAAC;AAgB5G,QAAA,MAAM,gBAAgB,UAGrB,CAAC;AAgBF,QAAA,MAAM,aAAa,8BAA8B,CAAC;AAgBlD,QAAA,MAAM,aAAa,sEAAsE,CAAC;AAgB1F,eAAO,MAAM,SAAS;;;;kBAhHqE,OAAO;;;;;kBAAP,OAAO;;;;;;kBAAP,OAAO;;;;;kBAAP,OAAO;;;;;;;;kBAAP,OAAO;;CAwHjG,CAAC;AAEF,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,aAAa,EAAE,CAAC"}
@@ -1,9 +0,0 @@
1
- import '@dxos-theme';
2
- import { type Meta, type StoryObj } from '@storybook/react-vite';
3
- import React from 'react';
4
- declare const CardStackStory: () => React.JSX.Element;
5
- declare const meta: Meta<typeof CardStackStory>;
6
- export default meta;
7
- type Story = StoryObj<typeof CardStackStory>;
8
- export declare const Default: Story;
9
- //# sourceMappingURL=CardStack.stories.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CardStack.stories.d.ts","sourceRoot":"","sources":["../../../../../src/exemplars/CardStack/CardStack.stories.tsx"],"names":[],"mappings":"AAIA,OAAO,aAAa,CAAC;AAGrB,OAAO,EAAE,KAAK,IAAI,EAAE,KAAK,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,KAAgC,MAAM,OAAO,CAAC;AAyBrD,QAAA,MAAM,cAAc,yBA8HnB,CAAC;AAEF,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,cAAc,CAIrC,CAAC;AAEF,eAAe,IAAI,CAAC;AAEpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,cAAc,CAAC,CAAC;AAE7C,eAAO,MAAM,OAAO,EAAE,KAAU,CAAC"}
@@ -1,9 +0,0 @@
1
- import React, { type PropsWithChildren } from 'react';
2
- import { type StackProps } from '../../components';
3
- export declare const CardStackDragPreview: {
4
- Root: ({ children }: PropsWithChildren<{}>) => React.JSX.Element;
5
- Heading: ({ children }: PropsWithChildren<{}>) => React.JSX.Element;
6
- Content: ({ children, itemsCount, }: PropsWithChildren<Pick<StackProps, "itemsCount">>) => React.JSX.Element;
7
- Footer: ({ children }: PropsWithChildren<{}>) => React.JSX.Element;
8
- };
9
- //# sourceMappingURL=CardStackDragPreview.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CardStackDragPreview.d.ts","sourceRoot":"","sources":["../../../../../src/exemplars/CardStack/CardStackDragPreview.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,EAAE,KAAK,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAKtD,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AA8CnD,eAAO,MAAM,oBAAoB;yBA3Ce,iBAAiB,CAAC,EAAE,CAAC;4BAUlB,iBAAiB,CAAC,EAAE,CAAC;yCAmBrE,iBAAiB,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;2BAUF,iBAAiB,CAAC,EAAE,CAAC;CAStE,CAAC"}
@@ -1,3 +0,0 @@
1
- export * from './CardStack';
2
- export * from './CardStackDragPreview';
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/exemplars/CardStack/index.ts"],"names":[],"mappings":"AAIA,cAAc,aAAa,CAAC;AAC5B,cAAc,wBAAwB,CAAC"}
@@ -1,3 +0,0 @@
1
- export * from './Card';
2
- export * from './CardStack';
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/exemplars/index.ts"],"names":[],"mappings":"AAIA,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/testing/index.ts"],"names":[],"mappings":"AAIA,cAAc,iBAAiB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"stack-manager.d.ts","sourceRoot":"","sources":["../../../../src/testing/stack-manager.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAQ,MAAM,kBAAkB,CAAC;AAEtD,qBAAa,YAAY;IAGX,QAAQ,CAAC,OAAO,EAAE,OAAO;IAFrC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAO;gBAER,OAAO,EAAE,OAAO;IAIrC,QAAQ,IAAI,OAAO;IAInB,KAAK;IAIL,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc;CAGvC;AAED,qBAAa,cAAc;IAGb,QAAQ,CAAC,OAAO,EAAE,OAAO;IAFrC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAO;gBAER,OAAO,EAAE,OAAO;IAI/B,EAAE,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAI5B,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAKvB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAK3B,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,GAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;CAehG"}
@@ -1,109 +0,0 @@
1
- //
2
- // Copyright 2024 DXOS.org
3
- //
4
-
5
- import React, { forwardRef } from 'react';
6
-
7
- import { ButtonGroup, type ButtonGroupProps, type ButtonProps, IconButton, useTranslation } from '@dxos/react-ui';
8
-
9
- import { translationKey } from '../../translations';
10
-
11
- export type LayoutControlEvent = 'solo' | 'close' | `${'pin' | 'increment'}-${'start' | 'end'}`;
12
- export type LayoutControlHandler = (event: LayoutControlEvent) => void;
13
-
14
- export type LayoutCapabilities = {
15
- incrementStart?: boolean;
16
- incrementEnd?: boolean;
17
- solo?: boolean;
18
- };
19
-
20
- export type LayoutControlsProps = Omit<ButtonGroupProps, 'onClick'> & {
21
- onClick?: LayoutControlHandler;
22
- variant?: 'hide-disabled' | 'default';
23
- close?: boolean | 'minify-start' | 'minify-end';
24
- capabilities: LayoutCapabilities;
25
- isSolo?: boolean;
26
- pin?: 'start' | 'end' | 'both';
27
- };
28
-
29
- const LayoutControl = ({ icon, label, ...props }: Omit<ButtonProps, 'children'> & { label: string; icon: string }) => {
30
- return <IconButton iconOnly icon={icon} label={label} tooltipSide='bottom' variant='ghost' {...props} />;
31
- };
32
-
33
- export const LayoutControls = forwardRef<HTMLDivElement, LayoutControlsProps>(
34
- (
35
- { onClick, variant = 'default', capabilities: can, isSolo, pin, close = false, children, ...props },
36
- forwardedRef,
37
- ) => {
38
- const { t } = useTranslation(translationKey);
39
- const buttonClassNames = variant === 'hide-disabled' ? 'disabled:hidden !p-1' : '!p-1';
40
-
41
- return (
42
- <ButtonGroup {...props} ref={forwardedRef}>
43
- {pin && !isSolo && ['both', 'start'].includes(pin) && (
44
- <LayoutControl
45
- label={t('pin start label')}
46
- variant='ghost'
47
- classNames={buttonClassNames}
48
- onClick={() => onClick?.('pin-start')}
49
- icon='ph--caret-line-left--regular'
50
- />
51
- )}
52
-
53
- {can.solo && (
54
- <LayoutControl
55
- label={t('solo layout label')}
56
- classNames={buttonClassNames}
57
- onClick={() => onClick?.('solo')}
58
- icon={isSolo ? 'ph--arrows-in--regular' : 'ph--arrows-out--regular'}
59
- />
60
- )}
61
-
62
- {!isSolo && can.solo && (
63
- <>
64
- <LayoutControl
65
- label={t('increment start label')}
66
- disabled={!can.incrementStart}
67
- classNames={buttonClassNames}
68
- onClick={() => onClick?.('increment-start')}
69
- icon='ph--caret-left--regular'
70
- />
71
- <LayoutControl
72
- label={t('increment end label')}
73
- disabled={!can.incrementEnd}
74
- classNames={buttonClassNames}
75
- onClick={() => onClick?.('increment-end')}
76
- icon='ph--caret-right--regular'
77
- />
78
- </>
79
- )}
80
-
81
- {pin && !isSolo && ['both', 'end'].includes(pin) && (
82
- <LayoutControl
83
- label={t('pin end label')}
84
- classNames={buttonClassNames}
85
- onClick={() => onClick?.('pin-end')}
86
- icon='ph--caret-line-right--regular'
87
- />
88
- )}
89
-
90
- {close && !isSolo && (
91
- <LayoutControl
92
- label={t(`${typeof close === 'string' ? 'minify' : 'close'} label`)}
93
- classNames={buttonClassNames}
94
- onClick={() => onClick?.('close')}
95
- data-testid='layoutHeading.close'
96
- icon={
97
- close === 'minify-start'
98
- ? 'ph--caret-line-left--regular'
99
- : close === 'minify-end'
100
- ? 'ph--caret-line-right--regular'
101
- : 'ph--x--regular'
102
- }
103
- />
104
- )}
105
- {children}
106
- </ButtonGroup>
107
- );
108
- },
109
- );