reshaped 3.0.3 → 3.0.5

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/CHANGELOG.md +16 -1
  2. package/dist/bundle.css +1 -1
  3. package/dist/bundle.d.ts +3 -3
  4. package/dist/bundle.js +10 -10
  5. package/dist/components/Autocomplete/Autocomplete.js +2 -2
  6. package/dist/components/Autocomplete/Autocomplete.types.d.ts +2 -1
  7. package/dist/components/Carousel/Carousel.types.d.ts +2 -2
  8. package/dist/components/Carousel/index.d.ts +1 -1
  9. package/dist/components/DropdownMenu/DropdownMenu.types.d.ts +3 -2
  10. package/dist/components/DropdownMenu/index.d.ts +1 -1
  11. package/dist/components/Modal/Modal.js +11 -6
  12. package/dist/components/Modal/Modal.module.css +1 -1
  13. package/dist/components/Modal/Modal.types.d.ts +2 -4
  14. package/dist/components/Modal/tests/Modal.stories.d.ts +1 -0
  15. package/dist/components/Modal/tests/Modal.stories.js +36 -0
  16. package/dist/components/Overlay/Overlay.js +5 -5
  17. package/dist/components/Overlay/Overlay.module.css +1 -1
  18. package/dist/components/Overlay/Overlay.types.d.ts +1 -0
  19. package/dist/components/Popover/Popover.js +2 -2
  20. package/dist/components/Popover/Popover.types.d.ts +3 -2
  21. package/dist/components/Popover/index.d.ts +1 -1
  22. package/dist/components/Text/Text.js +1 -1
  23. package/dist/components/Text/Text.module.css +1 -1
  24. package/dist/components/Text/Text.types.d.ts +1 -1
  25. package/dist/components/Text/tests/Text.stories.js +3 -0
  26. package/dist/components/Tooltip/Tooltip.js +2 -2
  27. package/dist/components/Tooltip/Tooltip.types.d.ts +1 -1
  28. package/dist/components/Tooltip/tests/Tooltip.stories.js +40 -1
  29. package/dist/components/View/View.js +3 -1
  30. package/dist/components/View/View.module.css +1 -1
  31. package/dist/components/View/View.types.d.ts +1 -1
  32. package/dist/components/View/tests/View.stories.js +6 -0
  33. package/dist/components/_private/Flyout/Flyout.constants.d.ts +3 -0
  34. package/dist/components/_private/Flyout/Flyout.constants.js +3 -0
  35. package/dist/components/_private/Flyout/Flyout.module.css +1 -1
  36. package/dist/components/_private/Flyout/Flyout.types.d.ts +9 -3
  37. package/dist/components/_private/Flyout/FlyoutContent.js +8 -4
  38. package/dist/components/_private/Flyout/FlyoutControlled.js +34 -19
  39. package/dist/components/_private/Flyout/index.d.ts +1 -1
  40. package/dist/components/_private/Flyout/tests/Flyout.stories.d.ts +3 -0
  41. package/dist/components/_private/Flyout/tests/Flyout.stories.js +62 -0
  42. package/dist/components/_private/Flyout/useFlyout.d.ts +4 -1
  43. package/dist/components/_private/Flyout/useFlyout.js +21 -16
  44. package/dist/components/_private/Flyout/utilities/calculatePosition.d.ts +1 -0
  45. package/dist/components/_private/Flyout/utilities/calculatePosition.js +3 -3
  46. package/dist/components/_private/Flyout/utilities/cooldown.d.ts +8 -0
  47. package/dist/components/_private/Flyout/utilities/cooldown.js +18 -0
  48. package/dist/components/_private/Portal/Portal.types.d.ts +1 -1
  49. package/dist/hooks/useScrollLock.d.ts +4 -1
  50. package/dist/hooks/useScrollLock.js +15 -10
  51. package/dist/index.d.ts +3 -3
  52. package/dist/styles/border/border.module.css +1 -0
  53. package/dist/styles/border/index.d.ts +3 -0
  54. package/dist/styles/border/index.js +10 -0
  55. package/dist/styles/types.d.ts +1 -0
  56. package/package.json +1 -1
  57. package/dist/constants/timeouts.d.ts +0 -2
  58. package/dist/constants/timeouts.js +0 -2
@@ -33,7 +33,7 @@ const calculatePosition = (args) => {
33
33
  case "start":
34
34
  case "start-top":
35
35
  case "start-bottom":
36
- left = triggerBounds.left - triggerBounds.width;
36
+ left = triggerBounds.left - flyoutBounds.width;
37
37
  break;
38
38
  case "end":
39
39
  case "end-top":
@@ -72,7 +72,7 @@ const calculatePosition = (args) => {
72
72
  break;
73
73
  case "start-bottom":
74
74
  case "end-bottom":
75
- top = triggerBounds.bottom - triggerBounds.height;
75
+ top = triggerBounds.bottom - flyoutBounds.height;
76
76
  break;
77
77
  default:
78
78
  break;
@@ -92,6 +92,6 @@ const calculatePosition = (args) => {
92
92
  widthStyle = triggerBounds.width;
93
93
  }
94
94
  const styles = { left, top, width: widthStyle, height };
95
- return { styles, position };
95
+ return { styles, position, scopeOffset };
96
96
  };
97
97
  export default calculatePosition;
@@ -0,0 +1,8 @@
1
+ declare class Cooldown {
2
+ status: "cold" | "warm" | "cooling";
3
+ timer?: ReturnType<typeof setTimeout>;
4
+ warm: () => void;
5
+ cool: () => void;
6
+ }
7
+ declare const _default: Cooldown;
8
+ export default _default;
@@ -0,0 +1,18 @@
1
+ class Cooldown {
2
+ status = "cold";
3
+ timer;
4
+ warm = () => {
5
+ clearTimeout(this.timer);
6
+ this.status = "warm";
7
+ };
8
+ cool = () => {
9
+ this.status = "cooling";
10
+ const currentTimer = setTimeout(() => {
11
+ this.status = "cold";
12
+ if (currentTimer === this.timer)
13
+ this.timer = undefined;
14
+ }, 1000);
15
+ this.timer = currentTimer;
16
+ };
17
+ }
18
+ export default new Cooldown();
@@ -1,7 +1,7 @@
1
1
  import React from "react";
2
2
  export type Props = {
3
3
  children?: React.ReactNode;
4
- targetRef?: React.RefObject<HTMLElement | null>;
4
+ targetRef?: React.RefObject<HTMLElement | ShadowRoot | null>;
5
5
  };
6
6
  export type ScopeProps<T extends HTMLElement> = {
7
7
  children: (ref: React.RefObject<T>) => React.ReactNode;
@@ -1,4 +1,7 @@
1
- declare const useScrollLock: () => {
1
+ import React from "react";
2
+ declare const useScrollLock: (args?: {
3
+ ref?: React.RefObject<HTMLElement | ShadowRoot>;
4
+ }) => {
2
5
  scrollLocked: boolean;
3
6
  lockScroll: () => void;
4
7
  unlockScroll: () => void;
@@ -17,28 +17,33 @@ const getScrollbarWidth = (() => {
17
17
  return scrollbarWidth;
18
18
  };
19
19
  })();
20
- const useScrollLock = () => {
20
+ const useScrollLock = (args) => {
21
+ const { ref } = args || {};
21
22
  const [locked, setLocked] = React.useState(false);
22
23
  const overflowStyleRef = React.useRef();
23
24
  const isOverflowingRef = React.useRef(false);
25
+ let targetEl = document.body;
26
+ if (ref?.current) {
27
+ targetEl =
28
+ ref?.current instanceof ShadowRoot ? ref?.current?.host : ref.current;
29
+ }
24
30
  const lockScroll = React.useCallback(() => {
25
- const { body } = document;
26
- const rect = body.getBoundingClientRect();
31
+ const rect = targetEl.getBoundingClientRect();
27
32
  isOverflowingRef.current = rect.left + rect.right < window.innerWidth;
28
- overflowStyleRef.current = body.style.overflow;
29
- body.style.overflow = "hidden";
33
+ overflowStyleRef.current = targetEl.style.overflow;
34
+ targetEl.style.overflow = "hidden";
30
35
  if (isOverflowingRef.current) {
31
36
  const scrollBarWidth = getScrollbarWidth();
32
- document.body.style.paddingRight = `${scrollBarWidth}px`;
37
+ targetEl.style.paddingRight = `${scrollBarWidth}px`;
33
38
  }
34
39
  setLocked(true);
35
- }, [setLocked, isOverflowingRef, overflowStyleRef]);
40
+ }, [setLocked, isOverflowingRef, overflowStyleRef, targetEl]);
36
41
  const unlockScroll = React.useCallback(() => {
37
- document.body.style.overflow = overflowStyleRef.current || "";
42
+ targetEl.style.overflow = overflowStyleRef.current || "";
38
43
  if (isOverflowingRef.current)
39
- document.body.style.paddingRight = "";
44
+ targetEl.style.paddingRight = "";
40
45
  setLocked(false);
41
- }, [setLocked, isOverflowingRef, overflowStyleRef]);
46
+ }, [setLocked, isOverflowingRef, overflowStyleRef, targetEl]);
42
47
  return { scrollLocked: locked, lockScroll, unlockScroll };
43
48
  };
44
49
  export default useScrollLock;
package/dist/index.d.ts CHANGED
@@ -24,7 +24,7 @@ export type { CalendarProps } from "./components/Calendar";
24
24
  export { default as Card } from "./components/Card";
25
25
  export type { CardProps } from "./components/Card";
26
26
  export { default as Carousel } from "./components/Carousel";
27
- export type { CarouselProps, CarouselInstanceRef } from "./components/Carousel";
27
+ export type { CarouselProps, CarouselInstanceRef, CarouselInstance } from "./components/Carousel";
28
28
  export { default as Checkbox } from "./components/Checkbox";
29
29
  export type { CheckboxProps } from "./components/Checkbox";
30
30
  export { default as CheckboxGroup } from "./components/CheckboxGroup";
@@ -36,7 +36,7 @@ export type { DismissibleProps } from "./components/Dismissible";
36
36
  export { default as Divider } from "./components/Divider";
37
37
  export type { DividerProps } from "./components/Divider";
38
38
  export { default as DropdownMenu } from "./components/DropdownMenu";
39
- export type { DropdownMenuProps } from "./components/DropdownMenu";
39
+ export type { DropdownMenuProps, DropdownMenuInstance } from "./components/DropdownMenu";
40
40
  export { default as FileUpload } from "./components/FileUpload";
41
41
  export type { FileUploadProps } from "./components/FileUpload";
42
42
  export { default as FormControl } from "./components/FormControl";
@@ -66,7 +66,7 @@ export type { PaginationProps } from "./components/Pagination";
66
66
  export { default as PinField } from "./components/PinField";
67
67
  export type { PinFieldProps } from "./components/PinField";
68
68
  export { default as Popover } from "./components/Popover";
69
- export type { PopoverProps } from "./components/Popover";
69
+ export type { PopoverProps, PopoverInstance } from "./components/Popover";
70
70
  export { default as Progress } from "./components/Progress";
71
71
  export type { ProgressProps } from "./components/Progress";
72
72
  export { default as Radio } from "./components/Radio";
@@ -0,0 +1 @@
1
+ .root{border:1px solid var(--rs-border-color)}.--border-neutral{--rs-border-color:var(--rs-color-border-neutral)}.--border-neutral-faded{--rs-border-color:var(--rs-color-border-neutral-faded)}.--border-positive{--rs-border-color:var(--rs-color-border-positive)}.--border-positive-faded{--rs-border-color:var(--rs-color-border-positive-faded)}.--border-warning{--rs-border-color:var(--rs-color-border-warning)}.--border-warning-faded{--rs-border-color:var(--rs-color-border-warning-faded)}.--border-critical{--rs-border-color:var(--rs-color-border-critical)}.--border-critical-faded{--rs-border-color:var(--rs-color-border-critical-faded)}.--border-primary{--rs-border-color:var(--rs-color-border-primary)}.--border-primary-faded{--rs-border-color:var(--rs-color-border-primary-faded)}.--border-disabled{--rs-border-color:var(--rs-color-border-disabled)}.--border-brand{--rs-border-color:var(--rs-color-brand)}.--border-transparent{--rs-border-color:transparent}@media (--rs-viewport-m ){.--border-neutral--m{--rs-border-color:var(--rs-color-border-neutral)}.--border-neutral-faded--m{--rs-border-color:var(--rs-color-border-neutral-faded)}.--border-positive--m{--rs-border-color:var(--rs-color-border-positive)}.--border-positive-faded--m{--rs-border-color:var(--rs-color-border-positive-faded)}.--border-warning--m{--rs-border-color:var(--rs-color-border-warning)}.--border-warning-faded--m{--rs-border-color:var(--rs-color-border-warning-faded)}.--border-critical--m{--rs-border-color:var(--rs-color-border-critical)}.--border-critical-faded--m{--rs-border-color:var(--rs-color-border-critical-faded)}.--border-primary--m{--rs-border-color:var(--rs-color-border-primary)}.--border-primary-faded--m{--rs-border-color:var(--rs-color-border-primary-faded)}.--border-disabled--m{--rs-border-color:var(--rs-color-border-disabled)}.--border-brand--m{--rs-border-color:var(--rs-color-brand)}.--border-transparent--m{--rs-border-color:transparent}}@media (--rs-viewport-l ){.--border-neutral--l{--rs-border-color:var(--rs-color-border-neutral)}.--border-neutral-faded--l{--rs-border-color:var(--rs-color-border-neutral-faded)}.--border-positive--l{--rs-border-color:var(--rs-color-border-positive)}.--border-positive-faded--l{--rs-border-color:var(--rs-color-border-positive-faded)}.--border-warning--l{--rs-border-color:var(--rs-color-border-warning)}.--border-warning-faded--l{--rs-border-color:var(--rs-color-border-warning-faded)}.--border-critical--l{--rs-border-color:var(--rs-color-border-critical)}.--border-critical-faded--l{--rs-border-color:var(--rs-color-border-critical-faded)}.--border-primary--l{--rs-border-color:var(--rs-color-border-primary)}.--border-primary-faded--l{--rs-border-color:var(--rs-color-border-primary-faded)}.--border-disabled--l{--rs-border-color:var(--rs-color-border-disabled)}.--border-brand--l{--rs-border-color:var(--rs-color-brand)}.--border-transparent--l{--rs-border-color:transparent}}@media (--rs-viewport-xl ){.--border-neutral--xl{--rs-border-color:var(--rs-color-border-neutral)}.--border-neutral-faded--xl{--rs-border-color:var(--rs-color-border-neutral-faded)}.--border-positive--xl{--rs-border-color:var(--rs-color-border-positive)}.--border-positive-faded--xl{--rs-border-color:var(--rs-color-border-positive-faded)}.--border-warning--xl{--rs-border-color:var(--rs-color-border-warning)}.--border-warning-faded--xl{--rs-border-color:var(--rs-color-border-warning-faded)}.--border-critical--xl{--rs-border-color:var(--rs-color-border-critical)}.--border-critical-faded--xl{--rs-border-color:var(--rs-color-border-critical-faded)}.--border-primary--xl{--rs-border-color:var(--rs-color-border-primary)}.--border-primary-faded--xl{--rs-border-color:var(--rs-color-border-primary-faded)}.--border-disabled--xl{--rs-border-color:var(--rs-color-border-disabled)}.--border-brand--xl{--rs-border-color:var(--rs-color-brand)}.--border-transparent--xl{--rs-border-color:transparent}}
@@ -0,0 +1,3 @@
1
+ import * as T from "../types";
2
+ declare const getBorderStyles: T.StaticStyleUtility<T.BorderColor>;
3
+ export default getBorderStyles;
@@ -0,0 +1,10 @@
1
+ import { responsiveClassNames } from "../../utilities/helpers.js";
2
+ import s from "./border.module.css";
3
+ const getBorderStyles = (value) => {
4
+ if (!value)
5
+ return null;
6
+ return {
7
+ classNames: [s.root, ...responsiveClassNames(s, "--border", value)],
8
+ };
9
+ };
10
+ export default getBorderStyles;
@@ -2,6 +2,7 @@ import React from "react";
2
2
  import * as G from "../types/global";
3
3
  export type Radius = "small" | "medium" | "large" | "circular" | "none";
4
4
  export type Position = "relative" | "absolute" | "fixed" | "sticky" | "static";
5
+ export type BorderColor = "neutral" | "neutral-faded" | "critical" | "critical-faded" | "warning" | "warning-faded" | "positive" | "positive-faded" | "primary" | "primary-faded" | "disabled" | "brand" | "transparent";
5
6
  /**
6
7
  * Utility controlled only with classnames
7
8
  */
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "reshaped",
3
3
  "description": "Professionally crafted design system in React & Figma for building products of any scale and complexity",
4
- "version": "3.0.3",
4
+ "version": "3.0.5",
5
5
  "license": "MIT",
6
6
  "email": "hello@reshaped.so",
7
7
  "homepage": "https://reshaped.so",
@@ -1,2 +0,0 @@
1
- export declare const mouseEnter = 100;
2
- export declare const mouseLeave = 150;
@@ -1,2 +0,0 @@
1
- export const mouseEnter = 100;
2
- export const mouseLeave = 150;