@blockle/blocks-react 1.1.2 → 1.2.0

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 (117) hide show
  1. package/dist/components/accessibility/VisuallyHidden/VisuallyHidden.stories.d.ts +1 -1
  2. package/dist/components/display/Divider/Divider.js +2 -2
  3. package/dist/components/display/Divider/Divider.stories.d.ts +1 -1
  4. package/dist/components/feedback/Progress/Progress.stories.d.ts +1 -1
  5. package/dist/components/feedback/Spinner/Spinner.stories.d.ts +1 -1
  6. package/dist/components/form/Button/Button.js +2 -2
  7. package/dist/components/form/Button/Button.stories.d.ts +1 -1
  8. package/dist/components/form/Checkbox/Checkbox.js +1 -1
  9. package/dist/components/form/Checkbox/Checkbox.stories.d.ts +1 -1
  10. package/dist/components/form/Input/Input.js +2 -2
  11. package/dist/components/form/Input/Input.stories.d.ts +1 -1
  12. package/dist/components/form/Label/Label.stories.d.ts +1 -1
  13. package/dist/components/form/Radio/Radio.js +1 -1
  14. package/dist/components/form/Radio/Radio.stories.d.ts +1 -1
  15. package/dist/components/form/Select/Select.js +1 -1
  16. package/dist/components/form/Select/Select.stories.d.ts +1 -1
  17. package/dist/components/form/Slider/Slider.js +1 -1
  18. package/dist/components/form/Slider/Slider.stories.d.ts +1 -1
  19. package/dist/components/form/Switch/Switch.js +1 -1
  20. package/dist/components/form/Switch/Switch.stories.d.ts +1 -1
  21. package/dist/components/layout/Box/Box.stories.d.ts +1 -1
  22. package/dist/components/layout/Inline/Inline.stories.d.ts +1 -1
  23. package/dist/components/layout/Stack/Stack.stories.d.ts +1 -1
  24. package/dist/components/navigation/Link/Link.stories.d.ts +1 -1
  25. package/dist/components/overlay/Dialog/Dialog.js +5 -5
  26. package/dist/components/overlay/Dialog/Dialog.stories.d.ts +1 -1
  27. package/dist/components/overlay/Popover/Popover.js +2 -2
  28. package/dist/components/overlay/Popover/Popover.stories.d.ts +1 -1
  29. package/dist/components/overlay/Tooltip/Tooltip.d.ts +1 -1
  30. package/dist/components/overlay/Tooltip/Tooltip.stories.d.ts +1 -1
  31. package/dist/components/typography/Heading/Heading.js +1 -1
  32. package/dist/components/typography/Heading/heading.stories.d.ts +1 -1
  33. package/dist/components/typography/Text/Text.js +1 -1
  34. package/dist/components/typography/Text/Text.stories.d.ts +1 -1
  35. package/dist/index.d.ts +28 -27
  36. package/package.json +8 -14
  37. package/dist/components/accessibility/VisuallyHidden/VisuallyHidden.cjs +0 -20
  38. package/dist/components/accessibility/VisuallyHidden/index.d.ts +0 -1
  39. package/dist/components/accessibility/VisuallyHidden/visually-hidden.css.cjs +0 -16
  40. package/dist/components/display/Divider/Divider.cjs +0 -28
  41. package/dist/components/display/Divider/divider.css.cjs +0 -16
  42. package/dist/components/display/Divider/index.d.ts +0 -1
  43. package/dist/components/feedback/Progress/Progress.cjs +0 -55
  44. package/dist/components/feedback/Progress/index.d.ts +0 -1
  45. package/dist/components/feedback/Spinner/Spinner.cjs +0 -27
  46. package/dist/components/feedback/Spinner/index.d.ts +0 -1
  47. package/dist/components/form/Button/Button.cjs +0 -58
  48. package/dist/components/form/Button/Button.css.cjs +0 -16
  49. package/dist/components/form/Button/index.d.ts +0 -1
  50. package/dist/components/form/Checkbox/Checkbox.cjs +0 -80
  51. package/dist/components/form/Checkbox/checkbox.css.cjs +0 -32
  52. package/dist/components/form/Checkbox/index.d.ts +0 -1
  53. package/dist/components/form/Input/Input.cjs +0 -52
  54. package/dist/components/form/Input/index.d.ts +0 -1
  55. package/dist/components/form/Input/input.css.cjs +0 -21
  56. package/dist/components/form/Label/Label.cjs +0 -30
  57. package/dist/components/form/Label/index.d.ts +0 -1
  58. package/dist/components/form/Radio/Radio.cjs +0 -50
  59. package/dist/components/form/Radio/index.d.ts +0 -2
  60. package/dist/components/form/Radio/radio.css.cjs +0 -32
  61. package/dist/components/form/Select/Select.cjs +0 -73
  62. package/dist/components/form/Select/index.d.ts +0 -1
  63. package/dist/components/form/Select/select.css.cjs +0 -38
  64. package/dist/components/form/Slider/Slider.cjs +0 -139
  65. package/dist/components/form/Slider/index.d.ts +0 -1
  66. package/dist/components/form/Slider/slider.css.cjs +0 -75
  67. package/dist/components/form/Slider/usePointerProgress.cjs +0 -46
  68. package/dist/components/form/Switch/Switch.cjs +0 -73
  69. package/dist/components/form/Switch/index.d.ts +0 -1
  70. package/dist/components/form/Switch/switch.css.cjs +0 -27
  71. package/dist/components/layout/Box/Box.cjs +0 -26
  72. package/dist/components/layout/Box/index.d.ts +0 -1
  73. package/dist/components/layout/Inline/Inline.cjs +0 -30
  74. package/dist/components/layout/Inline/index.d.ts +0 -1
  75. package/dist/components/layout/Stack/Stack.cjs +0 -27
  76. package/dist/components/layout/Stack/index.d.ts +0 -1
  77. package/dist/components/navigation/Link/Link.cjs +0 -33
  78. package/dist/components/navigation/Link/index.d.ts +0 -1
  79. package/dist/components/overlay/Dialog/Dialog.cjs +0 -82
  80. package/dist/components/overlay/Dialog/dialog.css.cjs +0 -22
  81. package/dist/components/overlay/Dialog/dialogHelper.cjs +0 -21
  82. package/dist/components/overlay/Dialog/index.d.ts +0 -1
  83. package/dist/components/overlay/Popover/Popover.cjs +0 -106
  84. package/dist/components/overlay/Popover/index.d.ts +0 -1
  85. package/dist/components/overlay/Popover/popover-utils.cjs +0 -57
  86. package/dist/components/overlay/Portal/Portal.cjs +0 -15
  87. package/dist/components/overlay/Portal/index.d.ts +0 -1
  88. package/dist/components/overlay/Tooltip/Tooltip.cjs +0 -73
  89. package/dist/components/overlay/Tooltip/index.d.ts +0 -1
  90. package/dist/components/providers/BlocksProvider/BlocksProvider.cjs +0 -35
  91. package/dist/components/providers/BlocksProvider/context.cjs +0 -5
  92. package/dist/components/providers/BlocksProvider/index.d.ts +0 -2
  93. package/dist/components/typography/Heading/Heading.cjs +0 -24
  94. package/dist/components/typography/Heading/heading.css.cjs +0 -16
  95. package/dist/components/typography/Heading/index.d.ts +0 -1
  96. package/dist/components/typography/Text/Text.cjs +0 -21
  97. package/dist/components/typography/Text/index.d.ts +0 -1
  98. package/dist/components/typography/Text/text.css.cjs +0 -16
  99. package/dist/hooks/useClickOutside/useClickOutside.cjs +0 -23
  100. package/dist/hooks/useComponentStyles/index.d.ts +0 -2
  101. package/dist/hooks/useComponentStyles/useComponentStyleDefaultProps.cjs +0 -12
  102. package/dist/hooks/useComponentStyles/useComponentStyles.cjs +0 -74
  103. package/dist/hooks/useControlledValue/index.d.ts +0 -1
  104. package/dist/hooks/useControlledValue/useControlledValue.cjs +0 -33
  105. package/dist/hooks/useIsomorphicLayoutEffect/index.d.ts +0 -1
  106. package/dist/hooks/useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.cjs +0 -6
  107. package/dist/hooks/useKeyboard/index.d.ts +0 -1
  108. package/dist/hooks/useKeyboard/useKeyboard.cjs +0 -21
  109. package/dist/hooks/useLayer/index.d.ts +0 -1
  110. package/dist/hooks/usePreventBodyScroll/index.d.ts +0 -1
  111. package/dist/hooks/usePreventBodyScroll/usePreventBodyScroll.cjs +0 -31
  112. package/dist/hooks/useRestoreFocus/index.d.ts +0 -1
  113. package/dist/hooks/useRestoreFocus/useRestoreFocus.cjs +0 -19
  114. package/dist/hooks/useTheme/index.d.ts +0 -1
  115. package/dist/hooks/useTheme/useTheme.cjs +0 -13
  116. package/dist/hooks/useVisibilityState/index.d.ts +0 -1
  117. package/dist/index.cjs +0 -58
@@ -1,75 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const fileScope = require("@vanilla-extract/css/fileScope");
4
- const blocksCore = require("@blockle/blocks-core");
5
- const css = require("@vanilla-extract/css");
6
- fileScope.setFileScope("src/components/form/Slider/slider.css.ts", "@blockle/blocks-react");
7
- const container = css.style({
8
- "@layer": {
9
- [blocksCore.blocksLayerComponent]: {
10
- position: "relative",
11
- writingMode: "horizontal-tb"
12
- }
13
- }
14
- });
15
- const containerVertical = css.style({
16
- "@layer": {
17
- [blocksCore.blocksLayerComponent]: {
18
- writingMode: "vertical-lr"
19
- }
20
- }
21
- });
22
- const track = css.style({
23
- "@layer": {
24
- [blocksCore.blocksLayerComponent]: {
25
- cursor: "pointer",
26
- position: "absolute",
27
- inlineSize: "100%",
28
- insetBlockStart: "50%",
29
- transform: "translateY(-50%)",
30
- selectors: {
31
- [`${containerVertical} &`]: {
32
- transform: "translateX(-50%)"
33
- }
34
- }
35
- }
36
- }
37
- });
38
- const filledTrack = css.style({
39
- "@layer": {
40
- [blocksCore.blocksLayerComponent]: {
41
- position: "absolute",
42
- blockSize: "100%",
43
- borderRadius: "inherit",
44
- selectors: {
45
- [`${containerVertical} &`]: {
46
- insetInlineEnd: "0%"
47
- }
48
- }
49
- }
50
- }
51
- });
52
- const thumb = css.style({
53
- "@layer": {
54
- [blocksCore.blocksLayerComponent]: {
55
- cursor: "pointer",
56
- position: "absolute",
57
- blockSize: "100%",
58
- insetBlockStart: "50%",
59
- transform: "translate(-50%, -50%)",
60
- touchAction: "none",
61
- border: "none",
62
- selectors: {
63
- [`${containerVertical} &`]: {
64
- transform: "translate(-50%, 50%)"
65
- }
66
- }
67
- }
68
- }
69
- });
70
- fileScope.endFileScope();
71
- exports.container = container;
72
- exports.containerVertical = containerVertical;
73
- exports.filledTrack = filledTrack;
74
- exports.thumb = thumb;
75
- exports.track = track;
@@ -1,46 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const react = require("react");
4
- function getProgress(event, rect) {
5
- const { clientX, clientY } = event;
6
- const { width, height, left, top } = rect;
7
- const x = (clientX - left) / width;
8
- const y = (clientY - top) / height;
9
- return [x, y];
10
- }
11
- function usePointerProgress({ container, orientation, onChange }) {
12
- react.useEffect(() => {
13
- const element = container.current;
14
- function pointerdown(event) {
15
- event.preventDefault();
16
- event.stopPropagation();
17
- if (!element) {
18
- return;
19
- }
20
- const containerRect = element.getBoundingClientRect();
21
- const axisIndex = orientation === "horizontal" ? 0 : 1;
22
- const progress = getProgress(event, containerRect);
23
- onChange(progress[axisIndex]);
24
- const pointermove = (event2) => {
25
- event2.preventDefault();
26
- const progress2 = getProgress(event2, containerRect);
27
- onChange(progress2[axisIndex]);
28
- };
29
- const pointerup = () => {
30
- document.removeEventListener("pointermove", pointermove);
31
- document.removeEventListener("pointerup", pointerup);
32
- };
33
- document.addEventListener("pointermove", pointermove);
34
- document.addEventListener("pointerup", pointerup);
35
- }
36
- if (!element) {
37
- return;
38
- }
39
- element.addEventListener("pointerdown", pointerdown);
40
- return () => {
41
- element.removeEventListener("pointerdown", pointerdown);
42
- };
43
- }, [container, onChange, orientation]);
44
- }
45
- exports.getProgress = getProgress;
46
- exports.usePointerProgress = usePointerProgress;
@@ -1,73 +0,0 @@
1
- "use client";
2
- "use strict";
3
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
4
- const jsxRuntime = require("react/jsx-runtime");
5
- const blocksCore = require("@blockle/blocks-core");
6
- const react = require("react");
7
- const switch_css = require("./switch.css.cjs");
8
- const useComponentStyles = require("../../../hooks/useComponentStyles/useComponentStyles.cjs");
9
- const Switch = ({
10
- checked,
11
- className,
12
- defaultChecked,
13
- onChange,
14
- ref,
15
- ...restProps
16
- }) => {
17
- const [isChecked, setIsChecked] = react.useState(
18
- defaultChecked || checked || false
19
- );
20
- const baseClassName = useComponentStyles.useComponentStyles("switch", { base: true });
21
- const sliderClassName = useComponentStyles.useComponentStyles("switch", { slider: true }, false);
22
- react.useEffect(() => {
23
- if (checked !== void 0) {
24
- setIsChecked(checked);
25
- }
26
- }, [checked]);
27
- const toggle = react.useCallback(() => {
28
- setIsChecked((checked2) => {
29
- const newValue = !checked2;
30
- if (onChange) {
31
- onChange(newValue);
32
- }
33
- return newValue;
34
- });
35
- }, [onChange]);
36
- const onChangeHandler = react.useCallback(
37
- (event) => {
38
- setIsChecked(event.target.checked);
39
- if (onChange) {
40
- onChange(event.target.checked);
41
- }
42
- },
43
- [onChange]
44
- );
45
- return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: /* @__PURE__ */ jsxRuntime.jsxs(
46
- "div",
47
- {
48
- className: blocksCore.classnames(className, switch_css.container, baseClassName),
49
- "data-checked": isChecked,
50
- onClick: (event) => {
51
- if (event.target.tagName === "INPUT") {
52
- return;
53
- }
54
- toggle();
55
- },
56
- children: [
57
- /* @__PURE__ */ jsxRuntime.jsx(
58
- "input",
59
- {
60
- ref,
61
- type: "checkbox",
62
- className: switch_css.input,
63
- checked: isChecked,
64
- onChange: onChangeHandler,
65
- ...restProps
66
- }
67
- ),
68
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: sliderClassName, "data-checked": isChecked })
69
- ]
70
- }
71
- ) });
72
- };
73
- exports.Switch = Switch;
@@ -1 +0,0 @@
1
- export { Switch, type SwitchProps } from './Switch';
@@ -1,27 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const fileScope = require("@vanilla-extract/css/fileScope");
4
- const blocksCore = require("@blockle/blocks-core");
5
- const css = require("@vanilla-extract/css");
6
- fileScope.setFileScope("src/components/form/Switch/switch.css.ts", "@blockle/blocks-react");
7
- const container = css.style({
8
- "@layer": {
9
- [blocksCore.blocksLayerComponent]: {
10
- cursor: "pointer",
11
- userSelect: "none",
12
- position: "relative"
13
- }
14
- }
15
- });
16
- const input = css.style({
17
- "@layer": {
18
- [blocksCore.blocksLayerComponent]: {
19
- opacity: 0,
20
- maxBlockSize: 0,
21
- maxInlineSize: 0
22
- }
23
- }
24
- });
25
- fileScope.endFileScope();
26
- exports.container = container;
27
- exports.input = input;
@@ -1,26 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const jsxRuntime = require("react/jsx-runtime");
4
- const blocksCore = require("@blockle/blocks-core");
5
- const blocksReactSlot = require("@blockle/blocks-react-slot");
6
- const [Template, Slot] = blocksReactSlot.createSlottable("div");
7
- const Box = ({
8
- asChild,
9
- className,
10
- children,
11
- ref,
12
- ...restProps
13
- }) => {
14
- const [atomsProps, otherProps] = blocksCore.getAtomsAndProps(restProps);
15
- return /* @__PURE__ */ jsxRuntime.jsx(
16
- Template,
17
- {
18
- ref,
19
- asChild,
20
- className: blocksCore.classnames(className, blocksCore.atoms(atomsProps)),
21
- ...otherProps,
22
- children: /* @__PURE__ */ jsxRuntime.jsx(Slot, { children })
23
- }
24
- );
25
- };
26
- exports.Box = Box;
@@ -1 +0,0 @@
1
- export { Box, type BoxProps } from './Box';
@@ -1,30 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const jsxRuntime = require("react/jsx-runtime");
4
- const blocksCore = require("@blockle/blocks-core");
5
- const Box = require("../Box/Box.cjs");
6
- const Inline = ({
7
- alignX,
8
- alignY,
9
- tag: Tag = "div",
10
- children,
11
- display = "flex",
12
- spacing,
13
- ...props
14
- }) => {
15
- return /* @__PURE__ */ jsxRuntime.jsx(
16
- Box.Box,
17
- {
18
- asChild: true,
19
- display,
20
- gap: spacing,
21
- flexDirection: "row",
22
- justifyContent: alignX ? blocksCore.justifyContentMap[alignX] : void 0,
23
- alignItems: alignY ? blocksCore.alignItemsMap[alignY] : void 0,
24
- flexWrap: "wrap",
25
- ...props,
26
- children: /* @__PURE__ */ jsxRuntime.jsx(Tag, { children })
27
- }
28
- );
29
- };
30
- exports.Inline = Inline;
@@ -1 +0,0 @@
1
- export { Inline, type InlineProps } from './Inline';
@@ -1,27 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const jsxRuntime = require("react/jsx-runtime");
4
- const blocksCore = require("@blockle/blocks-core");
5
- const Box = require("../Box/Box.cjs");
6
- const Stack = ({
7
- tag: Tag = "div",
8
- display = "flex",
9
- children,
10
- spacing,
11
- alignX,
12
- ...restProps
13
- }) => {
14
- return /* @__PURE__ */ jsxRuntime.jsx(
15
- Box.Box,
16
- {
17
- asChild: true,
18
- display,
19
- gap: spacing,
20
- flexDirection: "column",
21
- alignItems: alignX ? blocksCore.alignItemsMap[alignX] : void 0,
22
- ...restProps,
23
- children: /* @__PURE__ */ jsxRuntime.jsx(Tag, { children })
24
- }
25
- );
26
- };
27
- exports.Stack = Stack;
@@ -1 +0,0 @@
1
- export { Stack, type StackProps } from './Stack';
@@ -1,33 +0,0 @@
1
- "use client";
2
- "use strict";
3
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
4
- const jsxRuntime = require("react/jsx-runtime");
5
- const blocksCore = require("@blockle/blocks-core");
6
- const blocksReactSlot = require("@blockle/blocks-react-slot");
7
- const useComponentStyles = require("../../../hooks/useComponentStyles/useComponentStyles.cjs");
8
- const [Template, Slot] = blocksReactSlot.createSlottable("a");
9
- const Link = ({
10
- asChild,
11
- children,
12
- className,
13
- ref,
14
- underline,
15
- variant,
16
- ...restProps
17
- }) => {
18
- const linkClassName = useComponentStyles.useComponentStyles("link", {
19
- base: true,
20
- variants: { variant, underline }
21
- });
22
- return /* @__PURE__ */ jsxRuntime.jsx(
23
- Template,
24
- {
25
- asChild,
26
- ref,
27
- className: blocksCore.classnames(className, linkClassName),
28
- ...restProps,
29
- children: /* @__PURE__ */ jsxRuntime.jsx(Slot, { children })
30
- }
31
- );
32
- };
33
- exports.Link = Link;
@@ -1 +0,0 @@
1
- export { Link, type LinkProps } from './Link';
@@ -1,82 +0,0 @@
1
- "use client";
2
- "use strict";
3
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
4
- const jsxRuntime = require("react/jsx-runtime");
5
- const blocksCore = require("@blockle/blocks-core");
6
- const react = require("react");
7
- const useClickOutside = require("../../../hooks/useClickOutside/useClickOutside.cjs");
8
- const dialog_css = require("./dialog.css.cjs");
9
- const dialogHelper = require("./dialogHelper.cjs");
10
- const useComponentStyles = require("../../../hooks/useComponentStyles/useComponentStyles.cjs");
11
- const useRestoreFocus = require("../../../hooks/useRestoreFocus/useRestoreFocus.cjs");
12
- const usePreventBodyScroll = require("../../../hooks/usePreventBodyScroll/usePreventBodyScroll.cjs");
13
- const useKeyboard = require("../../../hooks/useKeyboard/useKeyboard.cjs");
14
- const useIsomorphicLayoutEffect = require("../../../hooks/useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.cjs");
15
- const Dialog = ({
16
- children,
17
- open,
18
- className,
19
- onRequestClose,
20
- size,
21
- ...restProps
22
- }) => {
23
- const dialogRef = react.useRef(null);
24
- const dialogClassName = useComponentStyles.useComponentStyles("dialog", {
25
- dialog: true,
26
- variants: { size }
27
- });
28
- const [enabled, setEnabled] = react.useState(true);
29
- const [visible, setVisible] = react.useState(open);
30
- useRestoreFocus.useRestoreFocus(open);
31
- const isNested = dialogHelper.useNestedDialog(open);
32
- usePreventBodyScroll.usePreventBodyScroll(open && !isNested);
33
- const onEscape = react.useCallback(
34
- (event) => {
35
- event.preventDefault();
36
- onRequestClose();
37
- },
38
- [onRequestClose]
39
- );
40
- useKeyboard.useKeyboard("Escape", onEscape, { enabled: open && enabled });
41
- useClickOutside.useClickOutside(dialogRef, onRequestClose, { enabled: open && enabled });
42
- useIsomorphicLayoutEffect.useIsomorphicLayoutEffect(() => {
43
- var _a;
44
- if (open && visible) {
45
- if (!dialogRef.current || !dialogRef.current.showModal) {
46
- return;
47
- }
48
- dialogRef.current.showModal();
49
- } else if (open) {
50
- setVisible(true);
51
- } else {
52
- if (!blocksCore.hasAnimationDuration(dialogRef.current)) {
53
- setVisible(false);
54
- }
55
- if ((_a = dialogRef.current) == null ? void 0 : _a.close) {
56
- dialogRef.current.close();
57
- }
58
- }
59
- }, [open, visible]);
60
- const onAnimationEnd = react.useCallback(() => {
61
- if (!open) {
62
- setVisible(false);
63
- }
64
- }, [open]);
65
- if (!visible) {
66
- return null;
67
- }
68
- const dataOpen = typeof window === "undefined" && open ? true : void 0;
69
- return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: /* @__PURE__ */ jsxRuntime.jsx(dialogHelper.DialogContext.Provider, { value: { setEnabled }, children: /* @__PURE__ */ jsxRuntime.jsx(
70
- "dialog",
71
- {
72
- ref: dialogRef,
73
- open: dataOpen,
74
- className: blocksCore.classnames(dialog_css.dialog, dialogClassName, className),
75
- onAnimationEnd,
76
- onTransitionEnd: onAnimationEnd,
77
- ...restProps,
78
- children
79
- }
80
- ) }) });
81
- };
82
- exports.Dialog = Dialog;
@@ -1,22 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const fileScope = require("@vanilla-extract/css/fileScope");
4
- const blocksCore = require("@blockle/blocks-core");
5
- const css = require("@vanilla-extract/css");
6
- fileScope.setFileScope("src/components/overlay/Dialog/dialog.css.ts", "@blockle/blocks-react");
7
- const dialog = css.style({
8
- "@layer": {
9
- [blocksCore.blocksLayerComponent]: {
10
- position: "fixed",
11
- inset: 0,
12
- border: "none",
13
- "::backdrop": {
14
- // Remove pointer event to prevent clicks on the backdrop
15
- // and make it easier to check if the click was outside the dialog
16
- pointerEvents: "none"
17
- }
18
- }
19
- }
20
- });
21
- fileScope.endFileScope();
22
- exports.dialog = dialog;
@@ -1,21 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const react = require("react");
4
- const DialogContext = react.createContext(
5
- void 0
6
- );
7
- const useNestedDialog = (open) => {
8
- const parentDialog = react.useContext(DialogContext);
9
- react.useEffect(() => {
10
- if (!parentDialog || !open) {
11
- return;
12
- }
13
- parentDialog.setEnabled(false);
14
- return () => {
15
- parentDialog.setEnabled(true);
16
- };
17
- }, [parentDialog, open]);
18
- return !!parentDialog;
19
- };
20
- exports.DialogContext = DialogContext;
21
- exports.useNestedDialog = useNestedDialog;
@@ -1 +0,0 @@
1
- export { Dialog, type DialogProps } from './Dialog';
@@ -1,106 +0,0 @@
1
- "use client";
2
- "use strict";
3
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
4
- const jsxRuntime = require("react/jsx-runtime");
5
- const blocksCore = require("@blockle/blocks-core");
6
- const react = require("react");
7
- const useClickOutside = require("../../../hooks/useClickOutside/useClickOutside.cjs");
8
- const popoverUtils = require("./popover-utils.cjs");
9
- const useComponentStyles = require("../../../hooks/useComponentStyles/useComponentStyles.cjs");
10
- const useKeyboard = require("../../../hooks/useKeyboard/useKeyboard.cjs");
11
- const useIsomorphicLayoutEffect = require("../../../hooks/useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.cjs");
12
- const Box = require("../../layout/Box/Box.cjs");
13
- const Popover = ({
14
- anchorElement,
15
- children,
16
- className,
17
- onRequestClose,
18
- open,
19
- position = "top",
20
- sticky,
21
- style,
22
- ...restProps
23
- }) => {
24
- const popoverRef = react.useRef(null);
25
- const [popoverPosition, setPopoverPosition] = react.useState({ x: 0, y: 0 });
26
- const [visible, setVisible] = react.useState(open);
27
- const popoverClassName = useComponentStyles.useComponentStyles("popover", { base: true }, false);
28
- useKeyboard.useKeyboard("Escape", onRequestClose, { enabled: open });
29
- useClickOutside.useClickOutside(popoverRef, onRequestClose, { enabled: open });
30
- useIsomorphicLayoutEffect.useIsomorphicLayoutEffect(() => {
31
- var _a;
32
- const element = popoverRef.current;
33
- if (open && visible) {
34
- if (!element || typeof element.showPopover !== "function") {
35
- console.warn(
36
- "Popover: showPopover method is not available on the element."
37
- );
38
- return;
39
- }
40
- element.showPopover();
41
- const [x, y] = popoverUtils.getPopoverPosition(position, anchorElement, popoverRef);
42
- setPopoverPosition({ x, y });
43
- } else if (open) {
44
- setVisible(true);
45
- } else {
46
- if (!blocksCore.hasAnimationDuration(popoverRef.current)) {
47
- setVisible(false);
48
- }
49
- (_a = popoverRef.current) == null ? void 0 : _a.hidePopover();
50
- }
51
- }, [open, visible]);
52
- react.useEffect(() => {
53
- if (open) {
54
- const [x, y] = popoverUtils.getPopoverPosition(position, anchorElement, popoverRef);
55
- setPopoverPosition({ x, y });
56
- }
57
- }, [open, anchorElement, position]);
58
- react.useEffect(() => {
59
- if (!open || !sticky) {
60
- return;
61
- }
62
- function updatePopoverPosition() {
63
- const [x, y] = popoverUtils.getPopoverPosition(position, anchorElement, popoverRef);
64
- setPopoverPosition((prev) => {
65
- if (prev.x === x && prev.y === y) {
66
- return prev;
67
- }
68
- return { x, y };
69
- });
70
- }
71
- window.addEventListener("resize", updatePopoverPosition);
72
- window.addEventListener("scroll", updatePopoverPosition);
73
- return () => {
74
- window.removeEventListener("resize", updatePopoverPosition);
75
- window.removeEventListener("scroll", updatePopoverPosition);
76
- };
77
- }, [position, anchorElement, open, sticky]);
78
- const onAnimationEnd = react.useCallback(() => {
79
- if (!open) {
80
- setVisible(false);
81
- }
82
- }, [open]);
83
- if (!visible) {
84
- return null;
85
- }
86
- return /* @__PURE__ */ jsxRuntime.jsx(
87
- Box.Box,
88
- {
89
- ref: popoverRef,
90
- "data-open": open ? "" : void 0,
91
- popover: "manual",
92
- className: blocksCore.classnames(popoverClassName, className),
93
- position: "absolute",
94
- onAnimationEnd,
95
- onTransitionEnd: onAnimationEnd,
96
- style: {
97
- ...style,
98
- left: popoverPosition.x,
99
- top: popoverPosition.y
100
- },
101
- ...restProps,
102
- children
103
- }
104
- );
105
- };
106
- exports.Popover = Popover;
@@ -1 +0,0 @@
1
- export { Popover, type PopoverProps } from './Popover';
@@ -1,57 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const blocksCore = require("@blockle/blocks-core");
4
- function getPopoverPosition(position, anchorRef, popoverRef) {
5
- if (!anchorRef.current || !popoverRef.current) {
6
- return [0, 0];
7
- }
8
- const anchorRect = anchorRef.current.getBoundingClientRect();
9
- const popoverRect = popoverRef.current.getBoundingClientRect();
10
- const popoverStyles = getComputedStyle(popoverRef.current);
11
- const [popoverWidth, popoverHeight] = blocksCore.getOriginalElementSize(
12
- popoverStyles,
13
- popoverRect.width,
14
- popoverRect.height
15
- );
16
- const marginTop = blocksCore.cssValueToNumber(
17
- popoverStyles.getPropertyValue("margin-top")
18
- );
19
- const marginRight = blocksCore.cssValueToNumber(
20
- popoverStyles.getPropertyValue("margin-right")
21
- );
22
- const marginBottom = blocksCore.cssValueToNumber(
23
- popoverStyles.getPropertyValue("margin-bottom")
24
- );
25
- const marginLeft = blocksCore.cssValueToNumber(
26
- popoverStyles.getPropertyValue("margin-left")
27
- );
28
- const marginY = marginTop + marginBottom;
29
- const marginX = marginRight + marginLeft;
30
- const docHeight = document.documentElement.clientHeight;
31
- const docWidth = document.documentElement.clientWidth;
32
- const docScrollTop = document.documentElement.scrollTop;
33
- const docScrollLeft = document.documentElement.scrollLeft;
34
- const anchorLeft = anchorRect.left + docScrollLeft;
35
- const anchorTop = anchorRect.top + docScrollTop;
36
- const topPosition = anchorRect.top - (popoverHeight + marginTop);
37
- const rightPosition = anchorRect.left + anchorRect.width + popoverWidth;
38
- const bottomPosition = anchorRect.top + anchorRect.height + popoverHeight;
39
- const leftPosition = anchorRect.left - popoverWidth;
40
- const offsetX = anchorLeft - marginLeft - (popoverWidth - anchorRect.width) / 2;
41
- const offsetY = anchorTop - marginTop - (popoverHeight - anchorRect.height) / 2;
42
- switch (position) {
43
- case "top": {
44
- return topPosition > 0 ? [offsetX, anchorTop - popoverHeight - marginY] : [offsetX, anchorTop + anchorRect.height];
45
- }
46
- case "bottom": {
47
- return bottomPosition < docHeight || topPosition < 0 ? [offsetX, anchorTop + anchorRect.height] : [offsetX, anchorTop - popoverHeight - marginY];
48
- }
49
- case "left": {
50
- return leftPosition > docWidth || leftPosition > 0 ? [anchorLeft - popoverWidth - marginX, offsetY] : [anchorLeft + anchorRect.width, offsetY];
51
- }
52
- case "right": {
53
- return rightPosition < docWidth || leftPosition < 0 ? [anchorLeft + anchorRect.width, offsetY] : [anchorLeft - popoverWidth - marginX, offsetY];
54
- }
55
- }
56
- }
57
- exports.getPopoverPosition = getPopoverPosition;
@@ -1,15 +0,0 @@
1
- "use client";
2
- "use strict";
3
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
4
- const jsxRuntime = require("react/jsx-runtime");
5
- const reactDom = require("react-dom");
6
- const useTheme = require("../../../hooks/useTheme/useTheme.cjs");
7
- const BlocksProvider = require("../../providers/BlocksProvider/BlocksProvider.cjs");
8
- const Portal = ({ children, container }) => {
9
- const context = useTheme.useTheme();
10
- return reactDom.createPortal(
11
- /* @__PURE__ */ jsxRuntime.jsx(BlocksProvider.BlocksProvider, { theme: context, children }),
12
- container || document.body
13
- );
14
- };
15
- exports.Portal = Portal;
@@ -1 +0,0 @@
1
- export { Portal, type PortalProps } from './Portal';