@blockle/blocks-react 2.4.2 → 2.4.4

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.
package/README.md CHANGED
@@ -1,25 +1 @@
1
- # @blockle/blocks-hooks
2
-
3
- A collection of React hooks.
4
-
5
- ## Installation
6
-
7
- ```bash
8
- npm install @blockle/hooks
9
- ```
10
-
11
- ## Usage
12
-
13
- ### useIsomorphicLayoutEffect
14
-
15
- ```tsx
16
- import { useIsomorphicLayoutEffect } from '@blockle/hooks';
17
-
18
- export const Component = () => {
19
- useIsomorphicLayoutEffect(() => {
20
- // Your effect
21
- }, []);
22
-
23
- return <div>Component</div>;
24
- };
25
- ```
1
+ # @blockle/blocks-react
@@ -0,0 +1,10 @@
1
+ import { HTMLElementProps } from '@blockle/blocks-core';
2
+ import * as styles from './drawer.css.js';
3
+ export type DrawerProps = {
4
+ open: boolean;
5
+ onRequestClose: () => void;
6
+ placement?: keyof typeof styles.placement;
7
+ children?: React.ReactNode;
8
+ } & HTMLElementProps<HTMLDialogElement>;
9
+ export declare const Drawer: React.FC<DrawerProps>;
10
+ //# sourceMappingURL=Drawer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Drawer.d.ts","sourceRoot":"","sources":["../../../../src/components/overlay/Drawer/Drawer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,gBAAgB,EAEtB,MAAM,sBAAsB,CAAC;AAQ9B,OAAO,KAAK,MAAM,MAAM,iBAAiB,CAAC;AAE1C,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,OAAO,CAAC;IACd,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,OAAO,MAAM,CAAC,SAAS,CAAC;IAC1C,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B,GAAG,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;AAExC,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CAuFxC,CAAC"}
@@ -0,0 +1,78 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { hasAnimationDuration, classnames } from "@blockle/blocks-core";
3
+ import { useRef, useState, useCallback } from "react";
4
+ import { useClickOutside } from "../../../hooks/useClickOutside/useClickOutside.js";
5
+ import { useComponentStyles } from "../../../hooks/useComponentStyles/useComponentStyles.js";
6
+ import { useIsomorphicLayoutEffect } from "../../../hooks/useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.js";
7
+ import { useKeyboard } from "../../../hooks/useKeyboard/useKeyboard.js";
8
+ import { usePreventBodyScroll } from "../../../hooks/usePreventBodyScroll/usePreventBodyScroll.js";
9
+ import { drawer, placement } from "./drawer.css.js";
10
+ const Drawer = ({
11
+ open,
12
+ onRequestClose,
13
+ placement: placement$1 = "left",
14
+ children,
15
+ ...restProps
16
+ }) => {
17
+ const dialogRef = useRef(null);
18
+ const [visible, setVisible] = useState(open);
19
+ const rootClassName = useComponentStyles("drawer", {
20
+ root: true,
21
+ variants: { placement: placement$1 }
22
+ });
23
+ const dataOpen = typeof window === "undefined" && open ? true : void 0;
24
+ usePreventBodyScroll(open);
25
+ useClickOutside(dialogRef, onRequestClose, { enabled: open });
26
+ const onEscape = useCallback(
27
+ (event) => {
28
+ event.preventDefault();
29
+ onRequestClose();
30
+ },
31
+ [onRequestClose]
32
+ );
33
+ useKeyboard("Escape", onEscape, { enabled: open });
34
+ useIsomorphicLayoutEffect(() => {
35
+ if (open && visible) {
36
+ if (!dialogRef.current || !dialogRef.current.showModal) {
37
+ return;
38
+ }
39
+ dialogRef.current.showModal();
40
+ } else if (open) {
41
+ setVisible(true);
42
+ } else {
43
+ if (!hasAnimationDuration(dialogRef.current)) {
44
+ setVisible(false);
45
+ }
46
+ if (dialogRef.current?.close) {
47
+ dialogRef.current.close();
48
+ }
49
+ }
50
+ }, [open, visible]);
51
+ const onAnimationEnd = useCallback(() => {
52
+ if (!open) {
53
+ setVisible(false);
54
+ }
55
+ }, [open]);
56
+ if (!visible) {
57
+ return null;
58
+ }
59
+ return /* @__PURE__ */ jsx(
60
+ "dialog",
61
+ {
62
+ ref: dialogRef,
63
+ open: dataOpen,
64
+ className: classnames(
65
+ drawer,
66
+ placement[placement$1],
67
+ rootClassName
68
+ ),
69
+ onAnimationEnd,
70
+ onTransitionEnd: onAnimationEnd,
71
+ ...restProps,
72
+ children
73
+ }
74
+ );
75
+ };
76
+ export {
77
+ Drawer
78
+ };
@@ -0,0 +1,8 @@
1
+ export declare const drawer: string;
2
+ export declare const placement: {
3
+ left: string;
4
+ right: string;
5
+ top: string;
6
+ bottom: string;
7
+ };
8
+ //# sourceMappingURL=drawer.css.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drawer.css.d.ts","sourceRoot":"","sources":["../../../../src/components/overlay/Drawer/drawer.css.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,MAAM,QAmBjB,CAAC;AAEH,eAAO,MAAM,SAAS;;;;;CA2CrB,CAAC"}
@@ -0,0 +1,73 @@
1
+ import { setFileScope, endFileScope } from "@vanilla-extract/css/fileScope";
2
+ import { layers } from "@blockle/blocks-core";
3
+ import { style } from "@vanilla-extract/css";
4
+ setFileScope("src/components/overlay/Drawer/drawer.css.ts", "@blockle/blocks-react");
5
+ const drawer = style({
6
+ "@layer": {
7
+ [layers.molecule]: {
8
+ position: "fixed",
9
+ border: "none",
10
+ margin: 0,
11
+ // unset default dialog styles
12
+ maxHeight: "100%",
13
+ maxWidth: "100%",
14
+ left: "unset",
15
+ top: "unset",
16
+ overflow: "auto",
17
+ "::backdrop": {
18
+ // Remove pointer event to prevent clicks on the backdrop
19
+ // and make it easier to check if the click was outside the dialog
20
+ pointerEvents: "none"
21
+ }
22
+ }
23
+ }
24
+ });
25
+ const placement = {
26
+ left: style({
27
+ "@layer": {
28
+ [layers.molecule]: {
29
+ top: 0,
30
+ bottom: 0,
31
+ left: 0,
32
+ height: "100%",
33
+ width: "300px"
34
+ }
35
+ }
36
+ }),
37
+ right: style({
38
+ "@layer": {
39
+ [layers.molecule]: {
40
+ top: 0,
41
+ right: 0,
42
+ bottom: 0,
43
+ height: "100%",
44
+ width: "300px"
45
+ }
46
+ }
47
+ }),
48
+ top: style({
49
+ "@layer": {
50
+ [layers.molecule]: {
51
+ top: 0,
52
+ left: 0,
53
+ width: "100%",
54
+ height: "300px"
55
+ }
56
+ }
57
+ }),
58
+ bottom: style({
59
+ "@layer": {
60
+ [layers.molecule]: {
61
+ bottom: 0,
62
+ left: 0,
63
+ width: "100%",
64
+ height: "300px"
65
+ }
66
+ }
67
+ })
68
+ };
69
+ endFileScope();
70
+ export {
71
+ drawer,
72
+ placement
73
+ };
package/dist/index.d.ts CHANGED
@@ -23,6 +23,7 @@ export { Inline, type InlineProps } from './components/layout/Inline/Inline.js';
23
23
  export { Stack, type StackProps } from './components/layout/Stack/Stack.js';
24
24
  export { Link, type LinkProps } from './components/navigation/Link/Link.js';
25
25
  export { Dialog, type DialogProps, } from './components/overlay/Dialog/Dialog.js';
26
+ export { Drawer, type DrawerProps, } from './components/overlay/Drawer/Drawer.js';
26
27
  export { Popover, type PopoverProps, } from './components/overlay/Popover/Popover.js';
27
28
  export { Portal, type PortalProps, } from './components/overlay/Portal/Portal.js';
28
29
  export { Tooltip, type TooltipProps, } from './components/overlay/Tooltip/Tooltip.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -23,6 +23,7 @@ import { Inline } from "./components/layout/Inline/Inline.js";
23
23
  import { Stack } from "./components/layout/Stack/Stack.js";
24
24
  import { Link } from "./components/navigation/Link/Link.js";
25
25
  import { Dialog } from "./components/overlay/Dialog/Dialog.js";
26
+ import { Drawer } from "./components/overlay/Drawer/Drawer.js";
26
27
  import { Popover } from "./components/overlay/Popover/Popover.js";
27
28
  import { Portal } from "./components/overlay/Portal/Portal.js";
28
29
  import { Tooltip } from "./components/overlay/Tooltip/Tooltip.js";
@@ -43,6 +44,7 @@ export {
43
44
  Checkbox,
44
45
  Dialog,
45
46
  Divider,
47
+ Drawer,
46
48
  Heading,
47
49
  IconMask,
48
50
  Inline,
@@ -1 +1 @@
1
- {"version":3,"file":"testTheme.css.d.ts","sourceRoot":"","sources":["../../src/testUtils/testTheme.css.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,YAAY,KA8FvB,CAAC"}
1
+ {"version":3,"file":"testTheme.css.d.ts","sourceRoot":"","sources":["../../src/testUtils/testTheme.css.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,YAAY,KA+FvB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@blockle/blocks-react",
3
- "version": "2.4.2",
3
+ "version": "2.4.4",
4
4
  "description": "React hooks and components for Blockle",
5
5
  "type": "module",
6
6
  "exports": {
@@ -22,7 +22,7 @@
22
22
  },
23
23
  "repository": {
24
24
  "type": "git",
25
- "url": "git+ssh://git@github.com/Blockle/blocks.git"
25
+ "url": "git+https://github.com/Blockle/blocks.git"
26
26
  },
27
27
  "author": "Niek Saarberg <n.saarberg@gmail.com>",
28
28
  "license": "MIT",
@@ -31,13 +31,17 @@
31
31
  },
32
32
  "homepage": "https://github.com/Blockle/blocks#readme",
33
33
  "dependencies": {
34
- "@vanilla-extract/css": "^1.17.5"
34
+ "@vanilla-extract/css": "^1.18.0"
35
35
  },
36
36
  "peerDependencies": {
37
37
  "@blockle/blocks-core": ">=1.2.x",
38
38
  "@blockle/blocks-react-slot": ">=1.1.x",
39
- "@vanilla-extract/css": "^1.17.5",
40
- "react": "^19.2.0",
41
- "react-dom": "^19.2.0"
39
+ "@vanilla-extract/css": "^1.18.0",
40
+ "react": "^19.2.3",
41
+ "react-dom": "^19.2.3"
42
+ },
43
+ "publishConfig": {
44
+ "access": "public",
45
+ "provenance": true
42
46
  }
43
47
  }