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