@dxos/react-ui-stack 0.8.2 → 0.8.3-main.7f5a14c

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 (58) hide show
  1. package/dist/lib/browser/index.mjs +489 -5
  2. package/dist/lib/browser/index.mjs.map +4 -4
  3. package/dist/lib/browser/meta.json +1 -1
  4. package/dist/lib/node/index.cjs +490 -4
  5. package/dist/lib/node/index.cjs.map +4 -4
  6. package/dist/lib/node/meta.json +1 -1
  7. package/dist/lib/node-esm/index.mjs +489 -5
  8. package/dist/lib/node-esm/index.mjs.map +4 -4
  9. package/dist/lib/node-esm/meta.json +1 -1
  10. package/dist/types/src/components/Stack/Stack.d.ts.map +1 -1
  11. package/dist/types/src/components/StackItem/StackItem.d.ts +1 -1
  12. package/dist/types/src/components/StackItem/StackItemDragHandle.d.ts +1 -1
  13. package/dist/types/src/components/StackItem/StackItemDragHandle.d.ts.map +1 -1
  14. package/dist/types/src/components/StackItem/StackItemHeading.d.ts +4 -2
  15. package/dist/types/src/components/StackItem/StackItemHeading.d.ts.map +1 -1
  16. package/dist/types/src/exemplars/Card/Card.d.ts +58 -0
  17. package/dist/types/src/exemplars/Card/Card.d.ts.map +1 -0
  18. package/dist/types/src/exemplars/Card/Card.stories-todo.d.ts +1 -0
  19. package/dist/types/src/exemplars/Card/Card.stories-todo.d.ts.map +1 -0
  20. package/dist/types/src/exemplars/Card/CardDragPreview.d.ts +6 -0
  21. package/dist/types/src/exemplars/Card/CardDragPreview.d.ts.map +1 -0
  22. package/dist/types/src/exemplars/Card/fragments.d.ts +7 -0
  23. package/dist/types/src/exemplars/Card/fragments.d.ts.map +1 -0
  24. package/dist/types/src/exemplars/Card/index.d.ts +3 -0
  25. package/dist/types/src/exemplars/Card/index.d.ts.map +1 -0
  26. package/dist/types/src/exemplars/CardStack/CardStack.d.ts +34 -0
  27. package/dist/types/src/exemplars/CardStack/CardStack.d.ts.map +1 -0
  28. package/dist/types/src/exemplars/CardStack/CardStack.stories-todo.d.ts +1 -0
  29. package/dist/types/src/exemplars/CardStack/CardStack.stories-todo.d.ts.map +1 -0
  30. package/dist/types/src/exemplars/CardStack/CardStackDragPreview.d.ts +9 -0
  31. package/dist/types/src/exemplars/CardStack/CardStackDragPreview.d.ts.map +1 -0
  32. package/dist/types/src/exemplars/CardStack/index.d.ts +3 -0
  33. package/dist/types/src/exemplars/CardStack/index.d.ts.map +1 -0
  34. package/dist/types/src/exemplars/index.d.ts +3 -0
  35. package/dist/types/src/exemplars/index.d.ts.map +1 -0
  36. package/dist/types/src/hooks/useStackDropForElements.d.ts +2 -1
  37. package/dist/types/src/hooks/useStackDropForElements.d.ts.map +1 -1
  38. package/dist/types/src/index.d.ts +1 -0
  39. package/dist/types/src/index.d.ts.map +1 -1
  40. package/dist/types/src/translations.d.ts +1 -0
  41. package/dist/types/src/translations.d.ts.map +1 -1
  42. package/package.json +20 -20
  43. package/src/components/Stack/Stack.tsx +18 -0
  44. package/src/components/StackItem/StackItemDragHandle.tsx +1 -1
  45. package/src/components/StackItem/StackItemHeading.tsx +7 -4
  46. package/src/exemplars/Card/Card.stories-todo.tsx +135 -0
  47. package/src/exemplars/Card/Card.tsx +178 -0
  48. package/src/exemplars/Card/CardDragPreview.tsx +22 -0
  49. package/src/exemplars/Card/fragments.ts +17 -0
  50. package/src/exemplars/Card/index.ts +6 -0
  51. package/src/exemplars/CardStack/CardStack.stories-todo.tsx +80 -0
  52. package/src/exemplars/CardStack/CardStack.tsx +118 -0
  53. package/src/exemplars/CardStack/CardStackDragPreview.tsx +61 -0
  54. package/src/exemplars/CardStack/index.ts +6 -0
  55. package/src/exemplars/index.ts +6 -0
  56. package/src/hooks/useStackDropForElements.ts +4 -2
  57. package/src/index.ts +4 -0
  58. package/src/translations.ts +1 -0
@@ -2,7 +2,7 @@
2
2
  import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
3
3
  import { useArrowNavigationGroup } from "@fluentui/react-tabster";
4
4
  import { composeRefs } from "@radix-ui/react-compose-refs";
5
- import React, { Children, forwardRef, useState as useState2, useMemo, useCallback } from "react";
5
+ import React, { Children, forwardRef, useState as useState2, useMemo, useCallback, useEffect } from "react";
6
6
  import { ListItem } from "@dxos/react-ui";
7
7
  import { mx } from "@dxos/react-ui-theme";
8
8
 
@@ -12,7 +12,7 @@ import { dropTargetForElements } from "@atlaskit/pragmatic-drag-and-drop/element
12
12
  import { autoScrollForElements } from "@atlaskit/pragmatic-drag-and-drop-auto-scroll/element";
13
13
  import { attachClosestEdge, extractClosestEdge } from "@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge";
14
14
  import { useLayoutEffect, useState } from "react";
15
- var useStackDropForElements = ({ id, element, selfDroppable, orientation, onRearrange }) => {
15
+ var useStackDropForElements = ({ id, element, scrollElement = element, selfDroppable, orientation, onRearrange }) => {
16
16
  const [dropping, setDropping] = useState(false);
17
17
  useLayoutEffect(() => {
18
18
  if (!element || !selfDroppable) {
@@ -53,11 +53,12 @@ var useStackDropForElements = ({ id, element, selfDroppable, orientation, onRear
53
53
  }
54
54
  }
55
55
  }), autoScrollForElements({
56
- element,
56
+ element: scrollElement,
57
57
  getAllowedAxis: () => orientation
58
58
  }));
59
59
  }, [
60
60
  element,
61
+ scrollElement,
61
62
  selfDroppable,
62
63
  orientation,
63
64
  id,
@@ -115,6 +116,7 @@ var Stack = /* @__PURE__ */ forwardRef(({ children, classNames, style, orientati
115
116
  const { dropping } = useStackDropForElements({
116
117
  id: props.id,
117
118
  element: getDropElement && stackElement ? getDropElement(stackElement) : stackElement,
119
+ scrollElement: stackElement,
118
120
  selfDroppable,
119
121
  orientation,
120
122
  onRearrange
@@ -149,6 +151,24 @@ var Stack = /* @__PURE__ */ forwardRef(({ children, classNames, style, orientati
149
151
  orientation,
150
152
  size
151
153
  ]);
154
+ useEffect(() => {
155
+ if (!(stackElement && Number.isFinite(separatorOnScroll))) {
156
+ return;
157
+ }
158
+ const observer = new MutationObserver(() => {
159
+ handleScroll();
160
+ });
161
+ observer.observe(stackElement, {
162
+ childList: true,
163
+ subtree: true
164
+ });
165
+ return () => {
166
+ observer.disconnect();
167
+ };
168
+ }, [
169
+ stackElement,
170
+ handleScroll
171
+ ]);
152
172
  return /* @__PURE__ */ React.createElement(StackContext.Provider, {
153
173
  value: {
154
174
  orientation,
@@ -245,17 +265,19 @@ var StackItemDragHandle = ({ asChild, children }) => {
245
265
  // packages/ui/react-ui-stack/src/components/StackItem/StackItemHeading.tsx
246
266
  import { useSignals as _useSignals4 } from "@preact-signals/safe-react/tracking";
247
267
  import { useFocusableGroup } from "@fluentui/react-tabster";
268
+ import { Slot as Slot2 } from "@radix-ui/react-slot";
248
269
  import React4, { forwardRef as forwardRef3 } from "react";
249
270
  import { useAttention } from "@dxos/react-ui-attention";
250
271
  import { mx as mx3 } from "@dxos/react-ui-theme";
251
- var StackItemHeading = ({ children, classNames, ...props }) => {
272
+ var StackItemHeading = ({ children, classNames, asChild, ...props }) => {
252
273
  var _effect = _useSignals4();
253
274
  try {
254
275
  const { orientation } = useStack();
255
276
  const focusableGroupAttrs = useFocusableGroup({
256
277
  tabBehavior: "limited"
257
278
  });
258
- return /* @__PURE__ */ React4.createElement("div", {
279
+ const Root = asChild ? Slot2 : "div";
280
+ return /* @__PURE__ */ React4.createElement(Root, {
259
281
  role: "heading",
260
282
  ...props,
261
283
  tabIndex: 0,
@@ -348,6 +370,7 @@ var translations_default = [
348
370
  "en-US": {
349
371
  [translationKey]: {
350
372
  "resize label": "Drag to resize",
373
+ "drag handle label": "Drag to rearrange",
351
374
  "pin start label": "Pin to the left sidebar",
352
375
  "pin end label": "Pin to the right sidebar",
353
376
  "increment start label": "Move to the left",
@@ -646,7 +669,458 @@ var StackItem = {
646
669
  SigilButton: StackItemSigilButton,
647
670
  DragPreview: StackItemDragPreview
648
671
  };
672
+
673
+ // packages/ui/react-ui-stack/src/exemplars/Card/Card.tsx
674
+ import { useSignals as _useSignals9 } from "@preact-signals/safe-react/tracking";
675
+ import { Primitive } from "@radix-ui/react-primitive";
676
+ import { Slot as Slot3 } from "@radix-ui/react-slot";
677
+ import React9, { forwardRef as forwardRef6 } from "react";
678
+ import { Icon as Icon2, IconButton, Toolbar, useTranslation as useTranslation2 } from "@dxos/react-ui";
679
+ import { mx as mx6 } from "@dxos/react-ui-theme";
680
+
681
+ // packages/ui/react-ui-stack/src/exemplars/Card/fragments.ts
682
+ var cardRoot = "contain-layout pli-2 plb-1 first-of-type:pbs-0 last-of-type:pbe-0";
683
+ var cardContent = "rounded overflow-hidden bg-cardSurface border border-separator dark:border-subduedSeparator dx-focus-ring-group-y-indicator relative min-bs-[--rail-item] group/card";
684
+ var cardSpacing = "pli-card-spacing-inline mlb-card-spacing-block";
685
+ var cardText = cardSpacing;
686
+ var cardHeading = "text-lg font-medium line-clamp-2";
687
+ var cardChrome = "pli-[--dx-card-spacing-chrome] mlb-[--dx-card-spacing-chrome] [&_.dx-button]:text-start [&_.dx-button]:is-full";
688
+
689
+ // packages/ui/react-ui-stack/src/exemplars/Card/Card.tsx
690
+ var CardRoot = /* @__PURE__ */ forwardRef6(({ children, classNames, asChild, role = "none", ...props }, forwardedRef) => {
691
+ var _effect = _useSignals9();
692
+ try {
693
+ const Root = asChild ? Slot3 : "div";
694
+ const rootProps = asChild ? {
695
+ classNames: [
696
+ cardRoot,
697
+ classNames
698
+ ]
699
+ } : {
700
+ className: mx6(cardRoot, classNames),
701
+ role
702
+ };
703
+ return /* @__PURE__ */ React9.createElement(Root, {
704
+ ...props,
705
+ ...rootProps,
706
+ ref: forwardedRef
707
+ }, children);
708
+ } finally {
709
+ _effect.f();
710
+ }
711
+ });
712
+ var CardContent = /* @__PURE__ */ forwardRef6(({ children, classNames, asChild, role = "group", ...props }, forwardedRef) => {
713
+ var _effect = _useSignals9();
714
+ try {
715
+ const Root = asChild ? Slot3 : "div";
716
+ const rootProps = asChild ? {
717
+ classNames: [
718
+ cardContent,
719
+ classNames
720
+ ]
721
+ } : {
722
+ className: mx6(cardContent, classNames),
723
+ role
724
+ };
725
+ return /* @__PURE__ */ React9.createElement(Root, {
726
+ ...props,
727
+ ...rootProps,
728
+ ref: forwardedRef
729
+ }, children);
730
+ } finally {
731
+ _effect.f();
732
+ }
733
+ });
734
+ var CardConditionalContent = ({ role, children }) => {
735
+ var _effect = _useSignals9();
736
+ try {
737
+ if ([
738
+ "popover",
739
+ "card--kanban"
740
+ ].includes(role ?? "never")) {
741
+ return /* @__PURE__ */ React9.createElement("div", {
742
+ className: role === "popover" ? "popover-card-width" : role === "card--kanban" ? "contents" : ""
743
+ }, children);
744
+ } else {
745
+ return /* @__PURE__ */ React9.createElement(CardContent, null, children);
746
+ }
747
+ } finally {
748
+ _effect.f();
749
+ }
750
+ };
751
+ var CardHeading = /* @__PURE__ */ forwardRef6(({ children, classNames, asChild, role = "heading", ...props }, forwardedRef) => {
752
+ var _effect = _useSignals9();
753
+ try {
754
+ const Root = asChild ? Slot3 : "div";
755
+ const rootProps = asChild ? {
756
+ classNames: [
757
+ cardHeading,
758
+ cardText,
759
+ classNames
760
+ ]
761
+ } : {
762
+ className: mx6(cardHeading, cardText, classNames),
763
+ role
764
+ };
765
+ return /* @__PURE__ */ React9.createElement(Root, {
766
+ ...props,
767
+ ...rootProps,
768
+ ref: forwardedRef
769
+ }, children);
770
+ } finally {
771
+ _effect.f();
772
+ }
773
+ });
774
+ var CardToolbar = /* @__PURE__ */ forwardRef6(({ children, classNames, ...props }, forwardedRef) => {
775
+ var _effect = _useSignals9();
776
+ try {
777
+ return /* @__PURE__ */ React9.createElement(Toolbar.Root, {
778
+ ...props,
779
+ classNames: [
780
+ "bg-transparent",
781
+ classNames
782
+ ],
783
+ ref: forwardedRef
784
+ }, children);
785
+ } finally {
786
+ _effect.f();
787
+ }
788
+ });
789
+ var CardToolbarIconButton = Toolbar.IconButton;
790
+ var CardToolbarSeparator = Toolbar.Separator;
791
+ var CardDragHandle = /* @__PURE__ */ forwardRef6(({ toolbarItem }, forwardedRef) => {
792
+ var _effect = _useSignals9();
793
+ try {
794
+ const { t } = useTranslation2(translationKey);
795
+ const Root = toolbarItem ? Toolbar.IconButton : IconButton;
796
+ return /* @__PURE__ */ React9.createElement(Root, {
797
+ iconOnly: true,
798
+ icon: "ph--dots-six-vertical--regular",
799
+ variant: "ghost",
800
+ label: t("card drag handle label"),
801
+ classNames: "pli-2",
802
+ ref: forwardedRef
803
+ });
804
+ } finally {
805
+ _effect.f();
806
+ }
807
+ });
808
+ var CardDragPreview = StackItem.DragPreview;
809
+ var CardMenu = Primitive.div;
810
+ var CardPoster = (props) => {
811
+ var _effect = _useSignals9();
812
+ try {
813
+ const aspect = props.aspect === "auto" ? "aspect-auto" : "aspect-video";
814
+ if (props.image) {
815
+ return /* @__PURE__ */ React9.createElement("img", {
816
+ className: `dx-card__poster ${aspect} object-cover is-full bs-auto`,
817
+ src: props.image,
818
+ alt: props.alt
819
+ });
820
+ }
821
+ if (props.icon) {
822
+ return /* @__PURE__ */ React9.createElement("div", {
823
+ role: "image",
824
+ className: `dx-card__poster grid ${aspect} place-items-center bg-inputSurface text-subdued`,
825
+ "aria-label": props.alt
826
+ }, /* @__PURE__ */ React9.createElement(Icon2, {
827
+ icon: props.icon,
828
+ size: 10
829
+ }));
830
+ }
831
+ } finally {
832
+ _effect.f();
833
+ }
834
+ };
835
+ var CardChrome = /* @__PURE__ */ forwardRef6(({ children, classNames, asChild, role = "none", ...props }, forwardedRef) => {
836
+ var _effect = _useSignals9();
837
+ try {
838
+ const Root = asChild ? Slot3 : "div";
839
+ const rootProps = asChild ? {
840
+ classNames: [
841
+ cardChrome,
842
+ classNames
843
+ ]
844
+ } : {
845
+ className: mx6(cardChrome, classNames),
846
+ role
847
+ };
848
+ return /* @__PURE__ */ React9.createElement(Root, {
849
+ ...props,
850
+ ...rootProps,
851
+ ref: forwardedRef
852
+ }, children);
853
+ } finally {
854
+ _effect.f();
855
+ }
856
+ });
857
+ var CardText = /* @__PURE__ */ forwardRef6(({ children, classNames, asChild, role = "none", ...props }, forwardedRef) => {
858
+ var _effect = _useSignals9();
859
+ try {
860
+ const Root = asChild ? Slot3 : "p";
861
+ const rootProps = asChild ? {
862
+ classNames: [
863
+ cardText,
864
+ classNames
865
+ ]
866
+ } : {
867
+ className: mx6(cardText, classNames),
868
+ role
869
+ };
870
+ return /* @__PURE__ */ React9.createElement(Root, {
871
+ ...props,
872
+ ...rootProps,
873
+ ref: forwardedRef
874
+ }, children);
875
+ } finally {
876
+ _effect.f();
877
+ }
878
+ });
879
+ var Card = {
880
+ Root: CardRoot,
881
+ Content: CardContent,
882
+ Container: CardConditionalContent,
883
+ Heading: CardHeading,
884
+ Toolbar: CardToolbar,
885
+ ToolbarIconButton: CardToolbarIconButton,
886
+ ToolbarSeparator: CardToolbarSeparator,
887
+ DragHandle: CardDragHandle,
888
+ DragPreview: CardDragPreview,
889
+ Menu: CardMenu,
890
+ Poster: CardPoster,
891
+ Chrome: CardChrome,
892
+ Text: CardText
893
+ };
894
+
895
+ // packages/ui/react-ui-stack/src/exemplars/Card/CardDragPreview.tsx
896
+ import { useSignals as _useSignals10 } from "@preact-signals/safe-react/tracking";
897
+ import React10 from "react";
898
+ import { mx as mx7 } from "@dxos/react-ui-theme";
899
+ var CardDragPreviewRoot = ({ children }) => {
900
+ var _effect = _useSignals10();
901
+ try {
902
+ return /* @__PURE__ */ React10.createElement("div", {
903
+ className: "p-2"
904
+ }, children);
905
+ } finally {
906
+ _effect.f();
907
+ }
908
+ };
909
+ var CardDragPreviewContent = ({ children }) => {
910
+ var _effect = _useSignals10();
911
+ try {
912
+ return /* @__PURE__ */ React10.createElement("div", {
913
+ className: mx7(cardContent, "ring-focusLine ring-neutralFocusIndicator")
914
+ }, children);
915
+ } finally {
916
+ _effect.f();
917
+ }
918
+ };
919
+ var CardDragPreview2 = {
920
+ Root: CardDragPreviewRoot,
921
+ Content: CardDragPreviewContent
922
+ };
923
+
924
+ // packages/ui/react-ui-stack/src/exemplars/CardStack/CardStack.tsx
925
+ import { useSignals as _useSignals11 } from "@preact-signals/safe-react/tracking";
926
+ import { Slot as Slot4 } from "@radix-ui/react-slot";
927
+ import React11, { forwardRef as forwardRef7 } from "react";
928
+ import { mx as mx8 } from "@dxos/react-ui-theme";
929
+ var CardStackStack = /* @__PURE__ */ forwardRef7(({ children, classNames, itemsCount = 0, ...props }, forwardedRef) => {
930
+ var _effect = _useSignals11();
931
+ try {
932
+ return /* @__PURE__ */ React11.createElement(Stack, {
933
+ orientation: "vertical",
934
+ size: "contain",
935
+ rail: false,
936
+ classNames: (
937
+ /* NOTE(thure): Do not let this element have zero intrinsic size, otherwise the drop indicator will not display. See #9035. */
938
+ [
939
+ "plb-1",
940
+ itemsCount > 0 && "plb-2",
941
+ classNames
942
+ ]
943
+ ),
944
+ itemsCount,
945
+ separatorOnScroll: 9,
946
+ ...props,
947
+ ref: forwardedRef
948
+ }, children);
949
+ } finally {
950
+ _effect.f();
951
+ }
952
+ });
953
+ var CardStackDragHandle = Card.DragHandle;
954
+ var cardStackHeading = "mli-2 order-first bg-transparent rounded-bs-md flex items-center";
955
+ var CardStackHeading = /* @__PURE__ */ forwardRef7(({ children, classNames, asChild, role = "heading", ...props }, forwardedRef) => {
956
+ var _effect = _useSignals11();
957
+ try {
958
+ const Root = asChild ? Slot4 : "div";
959
+ const rootProps = asChild ? {
960
+ classNames: [
961
+ cardStackHeading,
962
+ classNames
963
+ ]
964
+ } : {
965
+ className: mx8(cardStackHeading, classNames),
966
+ role
967
+ };
968
+ return /* @__PURE__ */ React11.createElement(Root, {
969
+ ...props,
970
+ ...rootProps,
971
+ ref: forwardedRef
972
+ }, children);
973
+ } finally {
974
+ _effect.f();
975
+ }
976
+ });
977
+ var cardStackFooter = 'plb-2 mli-2 border-bs border-transparent [[data-scroll-separator-end="true"]_&]:border-subduedSeparator';
978
+ var CardStackFooter = /* @__PURE__ */ forwardRef7(({ children, classNames, asChild, role = "none", ...props }, forwardedRef) => {
979
+ var _effect = _useSignals11();
980
+ try {
981
+ const Root = asChild ? Slot4 : "div";
982
+ const rootProps = asChild ? {
983
+ classNames: [
984
+ cardStackFooter,
985
+ classNames
986
+ ]
987
+ } : {
988
+ className: mx8(cardStackFooter, classNames),
989
+ role
990
+ };
991
+ return /* @__PURE__ */ React11.createElement(Root, {
992
+ ...props,
993
+ ...rootProps,
994
+ ref: forwardedRef
995
+ }, children);
996
+ } finally {
997
+ _effect.f();
998
+ }
999
+ });
1000
+ var cardStackContent = [
1001
+ "shrink min-bs-0 bg-baseSurface border border-separator rounded-md grid dx-focus-ring-group-x-indicator kanban-drop",
1002
+ railGridHorizontalContainFitContent
1003
+ ];
1004
+ var CardStackContent = /* @__PURE__ */ forwardRef7(({ children, classNames, asChild, role = "none", ...props }, forwardedRef) => {
1005
+ var _effect = _useSignals11();
1006
+ try {
1007
+ const Root = asChild ? Slot4 : "div";
1008
+ const rootProps = asChild ? {
1009
+ classNames: [
1010
+ ...cardStackContent,
1011
+ classNames
1012
+ ]
1013
+ } : {
1014
+ className: mx8(...cardStackContent, classNames),
1015
+ role
1016
+ };
1017
+ return /* @__PURE__ */ React11.createElement(Root, {
1018
+ ...props,
1019
+ ...rootProps,
1020
+ "data-scroll-separator": "false",
1021
+ ref: forwardedRef
1022
+ }, children);
1023
+ } finally {
1024
+ _effect.f();
1025
+ }
1026
+ });
1027
+ var cardStackRoot = "flex flex-col pli-2 plb-2";
1028
+ var CardStackRoot = /* @__PURE__ */ forwardRef7(({ children, classNames, asChild, role = "none", ...props }, forwardedRef) => {
1029
+ var _effect = _useSignals11();
1030
+ try {
1031
+ const Root = asChild ? Slot4 : "div";
1032
+ const rootProps = asChild ? {
1033
+ classNames: [
1034
+ cardStackRoot,
1035
+ classNames
1036
+ ]
1037
+ } : {
1038
+ className: mx8(cardStackRoot, classNames),
1039
+ role
1040
+ };
1041
+ return /* @__PURE__ */ React11.createElement(Root, {
1042
+ ...props,
1043
+ ...rootProps,
1044
+ ref: forwardedRef
1045
+ }, children);
1046
+ } finally {
1047
+ _effect.f();
1048
+ }
1049
+ });
1050
+ var CardStack = {
1051
+ Root: CardStackRoot,
1052
+ Content: CardStackContent,
1053
+ Stack: CardStackStack,
1054
+ Heading: CardStackHeading,
1055
+ Footer: CardStackFooter,
1056
+ DragHandle: CardStackDragHandle
1057
+ };
1058
+
1059
+ // packages/ui/react-ui-stack/src/exemplars/CardStack/CardStackDragPreview.tsx
1060
+ import { useSignals as _useSignals12 } from "@preact-signals/safe-react/tracking";
1061
+ import React12 from "react";
1062
+ import { IconButton as IconButton2, useTranslation as useTranslation3 } from "@dxos/react-ui";
1063
+ import { mx as mx9 } from "@dxos/react-ui-theme";
1064
+ var CardStackDragPreviewRoot = ({ children }) => {
1065
+ var _effect = _useSignals12();
1066
+ try {
1067
+ return /* @__PURE__ */ React12.createElement("div", {
1068
+ className: "p-2"
1069
+ }, /* @__PURE__ */ React12.createElement("div", {
1070
+ className: "rounded-md max-bs-[calc(100dvh-1rem)] overflow-hidden bg-baseSurface border border-separator ring-focusLine ring-neutralFocusIndicator flex flex-col"
1071
+ }, children));
1072
+ } finally {
1073
+ _effect.f();
1074
+ }
1075
+ };
1076
+ var CardStackDragPreviewHeading = ({ children }) => {
1077
+ var _effect = _useSignals12();
1078
+ try {
1079
+ const { t } = useTranslation3(translationKey);
1080
+ return /* @__PURE__ */ React12.createElement("div", {
1081
+ className: "flex items-center p-2"
1082
+ }, /* @__PURE__ */ React12.createElement(IconButton2, {
1083
+ iconOnly: true,
1084
+ icon: "ph--dots-six-vertical--regular",
1085
+ variant: "ghost",
1086
+ label: t("column drag handle label"),
1087
+ classNames: "pli-2"
1088
+ }), children);
1089
+ } finally {
1090
+ _effect.f();
1091
+ }
1092
+ };
1093
+ var CardStackDragPreviewContent = ({ children, itemsCount = 0 }) => {
1094
+ var _effect = _useSignals12();
1095
+ try {
1096
+ return /* @__PURE__ */ React12.createElement("div", {
1097
+ className: mx9("overflow-y-auto flex-1 pli-2 flex flex-col gap-2", "plb-1", itemsCount > 0 ? "plb-2" : "plb-1")
1098
+ }, children);
1099
+ } finally {
1100
+ _effect.f();
1101
+ }
1102
+ };
1103
+ var CardStackDragPreviewFooter = ({ children }) => {
1104
+ var _effect = _useSignals12();
1105
+ try {
1106
+ return /* @__PURE__ */ React12.createElement("div", {
1107
+ className: "p-2 border-t border-separator"
1108
+ }, children);
1109
+ } finally {
1110
+ _effect.f();
1111
+ }
1112
+ };
1113
+ var CardStackDragPreview = {
1114
+ Root: CardStackDragPreviewRoot,
1115
+ Heading: CardStackDragPreviewHeading,
1116
+ Content: CardStackDragPreviewContent,
1117
+ Footer: CardStackDragPreviewFooter
1118
+ };
649
1119
  export {
1120
+ Card,
1121
+ CardDragPreview2 as CardDragPreview,
1122
+ CardStack,
1123
+ CardStackDragPreview,
650
1124
  DEFAULT_EXTRINSIC_SIZE,
651
1125
  DEFAULT_HORIZONTAL_SIZE,
652
1126
  DEFAULT_VERTICAL_SIZE,
@@ -655,6 +1129,16 @@ export {
655
1129
  StackItem,
656
1130
  StackItemDragPreview,
657
1131
  autoScrollRootAttributes,
1132
+ cardChrome,
1133
+ cardContent,
1134
+ cardHeading,
1135
+ cardRoot,
1136
+ cardSpacing,
1137
+ cardStackContent,
1138
+ cardStackFooter,
1139
+ cardStackHeading,
1140
+ cardStackRoot,
1141
+ cardText,
658
1142
  railGridHorizontal,
659
1143
  railGridHorizontalContainFitContent,
660
1144
  railGridVertical,