@dxos/react-ui-stack 0.8.2 → 0.8.3-main.672df60

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 +483 -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 +483 -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 +483 -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 +6 -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 +21 -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 +14 -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
@@ -0,0 +1,58 @@
1
+ import React, { type PropsWithChildren } from 'react';
2
+ import { cardChrome, cardContent, cardHeading, cardRoot, cardText } 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
+ Root: 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
+ Content: React.ForwardRefExoticComponent<Omit<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref">, "className"> & {
17
+ classNames?: import("@dxos/react-ui-types").ClassNameValue;
18
+ } & {
19
+ asChild?: boolean;
20
+ } & React.RefAttributes<HTMLDivElement>>;
21
+ Container: ({ role, children }: PropsWithChildren<{
22
+ role?: string;
23
+ }>) => React.JSX.Element;
24
+ Heading: React.ForwardRefExoticComponent<Omit<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref">, "className"> & {
25
+ classNames?: import("@dxos/react-ui-types").ClassNameValue;
26
+ } & {
27
+ asChild?: boolean;
28
+ } & React.RefAttributes<HTMLDivElement>>;
29
+ Toolbar: React.ForwardRefExoticComponent<Omit<import("@radix-ui/react-toolbar").ToolbarProps, "className"> & {
30
+ classNames?: import("@dxos/react-ui-types").ClassNameValue;
31
+ } & React.RefAttributes<HTMLDivElement>>;
32
+ ToolbarIconButton: React.ForwardRefExoticComponent<Omit<import("@dxos/react-ui").IconButtonProps, "ref"> & React.RefAttributes<HTMLButtonElement>>;
33
+ ToolbarSeparator: React.ForwardRefExoticComponent<Omit<import("@radix-ui/react-separator").SeparatorProps, "className"> & {
34
+ classNames?: import("@dxos/react-ui-types").ClassNameValue;
35
+ } & {
36
+ variant?: "gap" | "line";
37
+ } & React.RefAttributes<HTMLDivElement>>;
38
+ DragHandle: React.ForwardRefExoticComponent<{
39
+ toolbarItem?: boolean;
40
+ } & React.RefAttributes<HTMLButtonElement>>;
41
+ DragPreview: ({ children }: import("../..").StackItemDragPreviewProps) => React.ReactPortal | null;
42
+ Menu: React.FC<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
43
+ 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;
44
+ }>;
45
+ Poster: (props: CardPosterProps) => React.JSX.Element | undefined;
46
+ Chrome: React.ForwardRefExoticComponent<Omit<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref">, "className"> & {
47
+ classNames?: import("@dxos/react-ui-types").ClassNameValue;
48
+ } & {
49
+ asChild?: boolean;
50
+ } & React.RefAttributes<HTMLDivElement>>;
51
+ Text: React.ForwardRefExoticComponent<Omit<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref">, "className"> & {
52
+ classNames?: import("@dxos/react-ui-types").ClassNameValue;
53
+ } & {
54
+ asChild?: boolean;
55
+ } & React.RefAttributes<HTMLParagraphElement>>;
56
+ };
57
+ export { cardRoot, cardContent, cardHeading, cardText, cardChrome };
58
+ //# sourceMappingURL=Card.d.ts.map
@@ -0,0 +1 @@
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,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AA6FvF,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;;;;kBA5IqE,OAAO;;;;;kBAAP,OAAO;;oCAiCzC,iBAAiB,CAAC;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;;;;kBAjCF,OAAO;;;;;;;;;;;;sBAsExB,OAAO;;;;;;oBAwBjD,eAAe;;;;kBA9F4C,OAAO;;;;;kBAAP,OAAO;;CA0J5F,CAAC;AAEF,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC"}
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=Card.stories-todo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Card.stories-todo.d.ts","sourceRoot":"","sources":["../../../../../src/exemplars/Card/Card.stories-todo.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,6 @@
1
+ export declare const cardRoot = "contain-layout pli-2 plb-1 first-of-type:pbs-0 last-of-type:pbe-0";
2
+ export declare const 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";
3
+ export declare const cardText = "pli-3 mlb-3";
4
+ export declare const cardHeading = "text-lg font-medium line-clamp-2";
5
+ export declare const cardChrome = "pli-1.5 mlb-1.5 [&_.dx-button]:pli-1.5 [&_.dx-button]:text-start [&_.dx-button]:is-full";
6
+ //# sourceMappingURL=fragments.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fragments.d.ts","sourceRoot":"","sources":["../../../../../src/exemplars/Card/fragments.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,QAAQ,sEAAsE,CAAC;AAE5F,eAAO,MAAM,WAAW,yKACgJ,CAAC;AAEzK,eAAO,MAAM,QAAQ,gBAAgB,CAAC;AAEtC,eAAO,MAAM,WAAW,qCAAqC,CAAC;AAE9D,eAAO,MAAM,UAAU,4FAA4F,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './Card';
2
+ export * from './CardDragPreview';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/exemplars/Card/index.ts"],"names":[],"mappings":"AAIA,cAAc,QAAQ,CAAC;AACvB,cAAc,mBAAmB,CAAC"}
@@ -0,0 +1,34 @@
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
+ export declare const CardStack: {
8
+ Root: React.ForwardRefExoticComponent<Omit<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref">, "className"> & {
9
+ classNames?: import("@dxos/react-ui-types").ClassNameValue;
10
+ } & {
11
+ asChild?: boolean;
12
+ } & React.RefAttributes<HTMLDivElement>>;
13
+ Content: React.ForwardRefExoticComponent<Omit<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref">, "className"> & {
14
+ classNames?: import("@dxos/react-ui-types").ClassNameValue;
15
+ } & {
16
+ asChild?: boolean;
17
+ } & React.RefAttributes<HTMLDivElement>>;
18
+ Stack: React.ForwardRefExoticComponent<Omit<Omit<StackProps, "orientation" | "rail" | "size" | "separatorOnScroll">, "ref"> & React.RefAttributes<HTMLDivElement>>;
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
+ Footer: React.ForwardRefExoticComponent<Omit<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref">, "className"> & {
25
+ classNames?: import("@dxos/react-ui-types").ClassNameValue;
26
+ } & {
27
+ asChild?: boolean;
28
+ } & React.RefAttributes<HTMLDivElement>>;
29
+ DragHandle: React.ForwardRefExoticComponent<{
30
+ toolbarItem?: boolean;
31
+ } & React.RefAttributes<HTMLButtonElement>>;
32
+ };
33
+ export { cardStackRoot, cardStackFooter, cardStackHeading, cardStackContent };
34
+ //# sourceMappingURL=CardStack.d.ts.map
@@ -0,0 +1 @@
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;AA8B/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,eAAO,MAAM,SAAS;;;;kBA/FqE,OAAO;;;;;kBAAP,OAAO;;;;;;kBAAP,OAAO;;;;;kBAAP,OAAO;;;;;CAsGjG,CAAC;AAEF,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,CAAC"}
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=CardStack.stories-todo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CardStack.stories-todo.d.ts","sourceRoot":"","sources":["../../../../../src/exemplars/CardStack/CardStack.stories-todo.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,9 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,3 @@
1
+ export * from './CardStack';
2
+ export * from './CardStackDragPreview';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/exemplars/CardStack/index.ts"],"names":[],"mappings":"AAIA,cAAc,aAAa,CAAC;AAC5B,cAAc,wBAAwB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './Card';
2
+ export * from './CardStack';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/exemplars/index.ts"],"names":[],"mappings":"AAIA,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC"}
@@ -2,9 +2,10 @@ import { type StackItemRearrangeHandler, type Orientation } from '../components'
2
2
  /**
3
3
  * Hook to handle drag and drop functionality for Stack components.
4
4
  */
5
- export declare const useStackDropForElements: ({ id, element, selfDroppable, orientation, onRearrange, }: {
5
+ export declare const useStackDropForElements: ({ id, element, scrollElement, selfDroppable, orientation, onRearrange, }: {
6
6
  id?: string;
7
7
  element: HTMLDivElement | null;
8
+ scrollElement?: HTMLDivElement | null;
8
9
  selfDroppable: boolean;
9
10
  orientation: Orientation;
10
11
  onRearrange?: StackItemRearrangeHandler;
@@ -1 +1 @@
1
- {"version":3,"file":"useStackDropForElements.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useStackDropForElements.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,KAAK,yBAAyB,EAAsB,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAErG;;GAEG;AACH,eAAO,MAAM,uBAAuB,GAAI,2DAMrC;IACD,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,cAAc,GAAG,IAAI,CAAC;IAC/B,aAAa,EAAE,OAAO,CAAC;IACvB,WAAW,EAAE,WAAW,CAAC;IACzB,WAAW,CAAC,EAAE,yBAAyB,CAAC;CACzC;;CA4CA,CAAC"}
1
+ {"version":3,"file":"useStackDropForElements.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useStackDropForElements.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,KAAK,yBAAyB,EAAsB,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAErG;;GAEG;AACH,eAAO,MAAM,uBAAuB,GAAI,0EAOrC;IACD,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,cAAc,GAAG,IAAI,CAAC;IAC/B,aAAa,CAAC,EAAE,cAAc,GAAG,IAAI,CAAC;IACtC,aAAa,EAAE,OAAO,CAAC;IACvB,WAAW,EAAE,WAAW,CAAC;IACzB,WAAW,CAAC,EAAE,yBAAyB,CAAC;CACzC;;CA4CA,CAAC"}
@@ -1,3 +1,4 @@
1
1
  export * from './components';
2
+ export * from './exemplars';
2
3
  export { default as translations } from './translations';
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAIA,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAIA,cAAc,cAAc,CAAC;AAG7B,cAAc,aAAa,CAAC;AAE5B,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC"}
@@ -3,6 +3,7 @@ declare const _default: {
3
3
  'en-US': {
4
4
  stack: {
5
5
  'resize label': string;
6
+ 'drag handle label': string;
6
7
  'pin start label': string;
7
8
  'pin end label': string;
8
9
  'increment start label': string;
@@ -1 +1 @@
1
- {"version":3,"file":"translations.d.ts","sourceRoot":"","sources":["../../../src/translations.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,cAAc,UAAU,CAAC;;;;;;;;;;;;;;AAEtC,wBAcE"}
1
+ {"version":3,"file":"translations.d.ts","sourceRoot":"","sources":["../../../src/translations.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,cAAc,UAAU,CAAC;;;;;;;;;;;;;;;AAEtC,wBAeE"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/react-ui-stack",
3
- "version": "0.8.2",
3
+ "version": "0.8.3-main.672df60",
4
4
  "description": "A stack component.",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -45,15 +45,16 @@
45
45
  "@radix-ui/react-compose-refs": "1.1.1",
46
46
  "@radix-ui/react-context": "1.1.1",
47
47
  "@radix-ui/react-menu": "2.1.6",
48
+ "@radix-ui/react-primitive": "2.0.2",
48
49
  "@radix-ui/react-slot": "1.1.2",
49
50
  "@radix-ui/react-use-controllable-state": "1.1.0",
50
51
  "react-resize-detector": "^11.0.1",
51
- "@dxos/echo-schema": "0.8.2",
52
- "@dxos/live-object": "0.8.2",
53
- "@dxos/keyboard": "0.8.2",
54
- "@dxos/react-ui-attention": "0.8.2",
55
- "@dxos/react-ui-dnd": "0.8.2",
56
- "@dxos/util": "0.8.2"
52
+ "@dxos/echo-schema": "0.8.3-main.672df60",
53
+ "@dxos/keyboard": "0.8.3-main.672df60",
54
+ "@dxos/live-object": "0.8.3-main.672df60",
55
+ "@dxos/react-ui-attention": "0.8.3-main.672df60",
56
+ "@dxos/react-ui-dnd": "0.8.3-main.672df60",
57
+ "@dxos/util": "0.8.3-main.672df60"
57
58
  },
58
59
  "devDependencies": {
59
60
  "@phosphor-icons/react": "^2.1.5",
@@ -62,24 +63,24 @@
62
63
  "react": "~18.2.0",
63
64
  "react-dom": "~18.2.0",
64
65
  "vite": "5.4.7",
65
- "@dxos/app-graph": "0.8.2",
66
- "@dxos/echo-schema": "0.8.2",
67
- "@dxos/client": "0.8.2",
68
- "@dxos/react-ui": "0.8.2",
69
- "@dxos/random": "0.8.2",
70
- "@dxos/react-ui-theme": "0.8.2",
71
- "@dxos/react-ui-editor": "0.8.2",
72
- "@dxos/storybook-utils": "0.8.2",
73
- "@dxos/test-utils": "0.8.2"
66
+ "@dxos/app-graph": "0.8.3-main.672df60",
67
+ "@dxos/client": "0.8.3-main.672df60",
68
+ "@dxos/random": "0.8.3-main.672df60",
69
+ "@dxos/echo-schema": "0.8.3-main.672df60",
70
+ "@dxos/react-ui": "0.8.3-main.672df60",
71
+ "@dxos/react-ui-theme": "0.8.3-main.672df60",
72
+ "@dxos/storybook-utils": "0.8.3-main.672df60",
73
+ "@dxos/react-ui-editor": "0.8.3-main.672df60",
74
+ "@dxos/test-utils": "0.8.3-main.672df60"
74
75
  },
75
76
  "peerDependencies": {
76
77
  "@phosphor-icons/react": "^2.1.5",
77
78
  "react": "~18.2.0",
78
79
  "react-dom": "~18.2.0",
79
- "@dxos/random": "0.8.2",
80
- "@dxos/client": "0.8.2",
81
- "@dxos/react-ui": "0.8.2",
82
- "@dxos/react-ui-theme": "0.8.2"
80
+ "@dxos/client": "0.8.3-main.672df60",
81
+ "@dxos/random": "0.8.3-main.672df60",
82
+ "@dxos/react-ui": "0.8.3-main.672df60",
83
+ "@dxos/react-ui-theme": "0.8.3-main.672df60"
83
84
  },
84
85
  "publishConfig": {
85
86
  "access": "public"
@@ -12,6 +12,7 @@ import React, {
12
12
  useState,
13
13
  useMemo,
14
14
  useCallback,
15
+ useEffect,
15
16
  } from 'react';
16
17
 
17
18
  import { type ThemedClassName, ListItem } from '@dxos/react-ui';
@@ -74,6 +75,7 @@ export const Stack = forwardRef<HTMLDivElement, StackProps>(
74
75
  const { dropping } = useStackDropForElements({
75
76
  id: props.id,
76
77
  element: getDropElement && stackElement ? getDropElement(stackElement) : stackElement,
78
+ scrollElement: stackElement,
77
79
  selfDroppable,
78
80
  orientation,
79
81
  onRearrange,
@@ -106,6 +108,22 @@ export const Stack = forwardRef<HTMLDivElement, StackProps>(
106
108
  }
107
109
  }, [rail, orientation, size]);
108
110
 
111
+ useEffect(() => {
112
+ if (!(stackElement && Number.isFinite(separatorOnScroll))) {
113
+ return;
114
+ }
115
+
116
+ const observer = new MutationObserver(() => {
117
+ handleScroll();
118
+ });
119
+
120
+ observer.observe(stackElement, { childList: true, subtree: true });
121
+
122
+ return () => {
123
+ observer.disconnect();
124
+ };
125
+ }, [stackElement, handleScroll]);
126
+
109
127
  return (
110
128
  <StackContext.Provider value={{ orientation, rail, size, onRearrange }}>
111
129
  <div
@@ -7,7 +7,7 @@ import React, { type ComponentPropsWithoutRef } from 'react';
7
7
 
8
8
  import { useStackItem } from '../StackContext';
9
9
 
10
- export type StackItemDragHandleProps = ComponentPropsWithoutRef<'button'> & { asChild: boolean };
10
+ export type StackItemDragHandleProps = ComponentPropsWithoutRef<'button'> & { asChild?: boolean };
11
11
 
12
12
  export const StackItemDragHandle = ({ asChild, children }: StackItemDragHandleProps) => {
13
13
  const { selfDragHandleRef } = useStackItem();
@@ -3,6 +3,7 @@
3
3
  //
4
4
 
5
5
  import { useFocusableGroup } from '@fluentui/react-tabster';
6
+ import { Slot } from '@radix-ui/react-slot';
6
7
  import React, { type ComponentPropsWithoutRef, type ComponentPropsWithRef, forwardRef } from 'react';
7
8
 
8
9
  import { type ThemedClassName } from '@dxos/react-ui';
@@ -11,14 +12,16 @@ import { mx } from '@dxos/react-ui-theme';
11
12
 
12
13
  import { useStack } from '../StackContext';
13
14
 
14
- export type StackItemHeadingProps = ThemedClassName<ComponentPropsWithoutRef<'div'>>;
15
+ export type StackItemHeadingProps = ThemedClassName<ComponentPropsWithoutRef<'div'>> & { asChild?: boolean };
15
16
 
16
- export const StackItemHeading = ({ children, classNames, ...props }: StackItemHeadingProps) => {
17
+ export const StackItemHeading = ({ children, classNames, asChild, ...props }: StackItemHeadingProps) => {
17
18
  const { orientation } = useStack();
18
19
  const focusableGroupAttrs = useFocusableGroup({ tabBehavior: 'limited' });
19
20
 
21
+ const Root = asChild ? Slot : 'div';
22
+
20
23
  return (
21
- <div
24
+ <Root
22
25
  role='heading'
23
26
  {...props}
24
27
  tabIndex={0}
@@ -31,7 +34,7 @@ export const StackItemHeading = ({ children, classNames, ...props }: StackItemHe
31
34
  )}
32
35
  >
33
36
  {children}
34
- </div>
37
+ </Root>
35
38
  );
36
39
  };
37
40
 
@@ -0,0 +1,135 @@
1
+ //
2
+ // Copyright 2023 DXOS.org
3
+ //
4
+
5
+ // import '@dxos-theme';
6
+ //
7
+ // import React from 'react';
8
+ //
9
+ // import { faker } from '@dxos/random';
10
+ // import { Input, ScrollArea } from '@dxos/react-ui';
11
+ // import { modalSurface, mx } from '@dxos/react-ui-theme';
12
+ // import { withTheme } from '@dxos/storybook-utils';
13
+ //
14
+ // import { Card } from './Card';
15
+ //
16
+ // faker.seed(1);
17
+ //
18
+ // // https://unsplash.com
19
+ // // TODO(burdon): Use https://picsum.photos
20
+ // const testImages = [
21
+ // 'https://images.unsplash.com/photo-1616394158624-a2ba9cfe2994',
22
+ // 'https://images.unsplash.com/photo-1507941097613-9f2157b69235',
23
+ // 'https://images.unsplash.com/photo-1431274172761-fca41d930114',
24
+ // 'https://images.unsplash.com/photo-1513635269975-59663e0ac1ad',
25
+ // 'https://images.unsplash.com/photo-1564221710304-0b37c8b9d729',
26
+ // 'https://images.unsplash.com/photo-1605425183435-25b7e99104a4',
27
+ // ];
28
+ //
29
+ // const ReadonlyCardStory = () => {
30
+ // return (
31
+ // <div className='flex flex-col overflow-y-scroll'>
32
+ // <div className='flex flex-col gap-4'>
33
+ // <Card.Root item={{ id: 'readonly card story 1' }} data-flags='square noPadding'>
34
+ // <Card.Heading data-flags='floating'>
35
+ // <Card.DragHandle data-flags='positionLeft' />
36
+ // <Card.Menu data-flags='positionRight' />
37
+ // </Card.Heading>
38
+ // <Card.Media src={testImages[1]} />
39
+ // </Card.Root>
40
+ //
41
+ // <Card.Root item={{ id: 'readonly card story 2' }}>
42
+ // <Card.Heading>
43
+ // <Card.HeadingLabel title={faker.lorem.sentence(3)} />
44
+ // </Card.Heading>
45
+ // </Card.Root>
46
+ //
47
+ // <Card.Root item={{ id: 'readonly card story 3' }}>
48
+ // <Card.Content classNames={'text-sm font-thin h-[100px]'}>
49
+ // <ScrollArea.Root>
50
+ // <ScrollArea.Viewport>{faker.lorem.sentences(16)}</ScrollArea.Viewport>
51
+ // <ScrollArea.Scrollbar orientation='vertical'>
52
+ // <ScrollArea.Thumb />
53
+ // </ScrollArea.Scrollbar>
54
+ // </ScrollArea.Root>
55
+ // </Card.Content>
56
+ // </Card.Root>
57
+ //
58
+ // <Card.Root item={{ id: 'readonly card story 4' }}>
59
+ // <Card.Heading>
60
+ // <Card.HeadingLabel data-flags='center' title={faker.lorem.sentence(3)} />
61
+ // </Card.Heading>
62
+ // <Card.Content classNames={'text-sm font-thin'}>{faker.lorem.sentences(3)}</Card.Content>
63
+ // </Card.Root>
64
+ //
65
+ // <Card.Root item={{ id: 'readonly card story 5' }}>
66
+ // <Card.Heading>
67
+ // <Card.DragHandle />
68
+ // <Card.HeadingLabel title={faker.lorem.sentence(8)} />
69
+ // {/* TODO(burdon): Menu util. */}
70
+ // <Card.Menu />
71
+ // </Card.Heading>
72
+ // <Card.Content data-flags='gutter' classNames={'gap-2 text-sm font-thin'}>
73
+ // <p>Content with gutter</p>
74
+ // <p className='line-clamp-3'>{faker.lorem.sentences(3)}</p>
75
+ // </Card.Content>
76
+ // </Card.Root>
77
+ //
78
+ // <Card.Root item={{ id: 'readonly card story 6' }}>
79
+ // <Card.Heading>
80
+ // <Card.DragHandle />
81
+ // <Card.HeadingLabel title={faker.lorem.sentence(3)} />
82
+ // <Card.Menu />
83
+ // </Card.Heading>
84
+ // <Card.Content data-flags='gutter' classNames={'text-sm gap-2 font-thin'}>
85
+ // <p className='line-clamp-3'>{faker.lorem.sentences(1)}</p>
86
+ // </Card.Content>
87
+ // <Card.Media className={'h-[200px] grayscale'} src={testImages[0]} />
88
+ // <Card.Content data-flags='gutter' classNames={'text-sm gap-2 font-thin'}>
89
+ // <p className='line-clamp-3'>{faker.lorem.sentences(3)}</p>
90
+ // </Card.Content>
91
+ // </Card.Root>
92
+ // </div>
93
+ // </div>
94
+ // );
95
+ // };
96
+ //
97
+ // const EditableCardStory = () => {
98
+ // return (
99
+ // <div className='flex flex-col h-full justify-center'>
100
+ // <Card.Root item={{ id: 'editable card story 1' }}>
101
+ // <Card.Heading>
102
+ // <Card.DragHandle />
103
+ // <Input.Root>
104
+ // <Input.TextInput classNames={'-mx-2 px-2'} variant='subdued' placeholder={'Title'} />
105
+ // </Input.Root>
106
+ // <Card.Menu />
107
+ // </Card.Heading>
108
+ // <Card.Content data-flags='gutter' classNames={'gap-2 text-sm font-thin'}>
109
+ // {faker.lorem.sentences()}
110
+ // </Card.Content>
111
+ // </Card.Root>
112
+ // </div>
113
+ // );
114
+ // };
115
+ //
116
+ // export default {
117
+ // title: 'ui/react-ui-card/Card',
118
+ // component: Card,
119
+ // decorators: [
120
+ // withTheme,
121
+ // (Story: any) => (
122
+ // <div className={mx('flex h-screen w-full justify-center overflow-hidden', modalSurface)}>
123
+ // <div className='flex flex-col w-[360px] overflow-hidden'>
124
+ // <Story />
125
+ // </div>
126
+ // </div>
127
+ // ),
128
+ // ],
129
+ // parameters: {
130
+ // layout: 'fullscreen',
131
+ // },
132
+ // };
133
+ //
134
+ // export const ReadOnly = () => <ReadonlyCardStory />;
135
+ // export const Editable = () => <EditableCardStory />;