@blockle/blocks-react 2.1.0 → 2.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.
@@ -0,0 +1,15 @@
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/feedback/Alert/Alert.css.ts", "@blockle/blocks-react");
5
+ const closeButton = style({
6
+ "@layer": {
7
+ [layers.organism]: {
8
+ color: "currentColor"
9
+ }
10
+ }
11
+ });
12
+ endFileScope();
13
+ export {
14
+ closeButton
15
+ };
@@ -0,0 +1,66 @@
1
+ "use client";
2
+ import { jsxs, jsx } from "react/jsx-runtime";
3
+ import { classnames } from "@blockle/blocks-core";
4
+ import { useComponentStyles } from "../../../hooks/useComponentStyles/useComponentStyles.js";
5
+ import { Button } from "../../form/Button/Button.js";
6
+ import { Box } from "../../layout/Box/Box.js";
7
+ import { closeButton } from "./Alert.css.js";
8
+ const Alert = ({
9
+ intent = "info",
10
+ children,
11
+ open,
12
+ onRequestClose
13
+ }) => {
14
+ const containerClassName = useComponentStyles("alert", {
15
+ base: true,
16
+ variants: { intent }
17
+ });
18
+ if (!open) {
19
+ return null;
20
+ }
21
+ return /* @__PURE__ */ jsxs(
22
+ Box,
23
+ {
24
+ role: "alert",
25
+ className: classnames(containerClassName),
26
+ display: "flex",
27
+ alignItems: "center",
28
+ justifyContent: "space-between",
29
+ children: [
30
+ /* @__PURE__ */ jsx("div", { children }),
31
+ /* @__PURE__ */ jsx(
32
+ Button,
33
+ {
34
+ variant: "ghost",
35
+ size: "small",
36
+ className: closeButton,
37
+ onClick: () => onRequestClose?.(),
38
+ children: /* @__PURE__ */ jsxs(
39
+ "svg",
40
+ {
41
+ role: "presentation",
42
+ xmlns: "http://www.w3.org/2000/svg",
43
+ width: "24",
44
+ height: "24",
45
+ viewBox: "0 0 24 24",
46
+ fill: "none",
47
+ stroke: "currentColor",
48
+ "stroke-width": "2",
49
+ "stroke-linecap": "round",
50
+ "stroke-linejoin": "round",
51
+ children: [
52
+ /* @__PURE__ */ jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }),
53
+ /* @__PURE__ */ jsx("path", { d: "M18 6l-12 12" }),
54
+ /* @__PURE__ */ jsx("path", { d: "M6 6l12 12" })
55
+ ]
56
+ }
57
+ )
58
+ }
59
+ )
60
+ ]
61
+ }
62
+ );
63
+ };
64
+ export {
65
+ Alert
66
+ };
@@ -0,0 +1,23 @@
1
+ import { setFileScope, endFileScope } from "@vanilla-extract/css/fileScope";
2
+ import { style, keyframes } from "@vanilla-extract/css";
3
+ setFileScope("src/components/feedback/Skeleton/Skeleton.css.ts", "@blockle/blocks-react");
4
+ const pulse = keyframes({
5
+ "0%": { opacity: 1 },
6
+ "50%": { opacity: 0.4 },
7
+ "100%": { opacity: 1 }
8
+ });
9
+ const skeleton = style({
10
+ minHeight: "24px",
11
+ "@media": {
12
+ "screen and (prefers-reduced-motion: no-preference)": {
13
+ animationName: pulse,
14
+ animationDuration: "3s",
15
+ animationTimingFunction: "ease-in-out",
16
+ animationIterationCount: "infinite"
17
+ }
18
+ }
19
+ });
20
+ endFileScope();
21
+ export {
22
+ skeleton
23
+ };
@@ -0,0 +1,24 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { classnames } from "@blockle/blocks-core";
3
+ import { Box } from "../../layout/Box/Box.js";
4
+ import { skeleton } from "./Skeleton.css.js";
5
+ const Skeleton = ({
6
+ height,
7
+ circle = false,
8
+ className,
9
+ borderRadius = 1,
10
+ backgroundColor = "background-300"
11
+ }) => {
12
+ return /* @__PURE__ */ jsx(
13
+ Box,
14
+ {
15
+ className: classnames(skeleton, className),
16
+ borderRadius: circle ? "full" : borderRadius,
17
+ backgroundColor,
18
+ style: { height, aspectRatio: circle ? "1 / 1" : void 0 }
19
+ }
20
+ );
21
+ };
22
+ export {
23
+ Skeleton
24
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"Toast.css.d.ts","sourceRoot":"","sources":["../../../../src/components/feedback/Toast/Toast.css.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,SAAS,QAMpB,CAAC"}
1
+ {"version":3,"file":"Toast.css.d.ts","sourceRoot":"","sources":["../../../../src/components/feedback/Toast/Toast.css.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,SAAS,QAKpB,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { setFileScope, endFileScope } from "@vanilla-extract/css/fileScope";
2
+ import { style, keyframes } from "@vanilla-extract/css";
3
+ setFileScope("src/components/feedback/Toast/Toast.css.ts", "@blockle/blocks-react");
4
+ const toastEnter = keyframes({
5
+ from: { opacity: 0, scale: 0.9, translate: "0 20%" },
6
+ to: { opacity: 1, scale: 1, translate: "0 0" }
7
+ });
8
+ const container = style({
9
+ animationName: toastEnter,
10
+ animationDuration: "240ms",
11
+ animationTimingFunction: "ease-out",
12
+ height: "fit-content"
13
+ });
14
+ endFileScope();
15
+ export {
16
+ container
17
+ };
@@ -1,12 +1,8 @@
1
- import { ComponentThemes } from '@blockle/blocks-core';
2
- type ToastTheme = ComponentThemes['toast'];
3
1
  export type ToastProps = {
4
2
  children?: React.ReactNode;
5
3
  duration?: number;
6
- intent?: ToastTheme['variants']['intent'];
7
4
  onRequestClose: () => void;
8
5
  open: boolean;
9
6
  };
10
7
  export declare const Toast: React.FC<ToastProps>;
11
- export {};
12
8
  //# sourceMappingURL=Toast.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Toast.d.ts","sourceRoot":"","sources":["../../../../src/components/feedback/Toast/Toast.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAK5D,KAAK,UAAU,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;AAE3C,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC;IAC1C,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,IAAI,EAAE,OAAO,CAAC;CACf,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,UAAU,CAmCtC,CAAC"}
1
+ {"version":3,"file":"Toast.d.ts","sourceRoot":"","sources":["../../../../src/components/feedback/Toast/Toast.tsx"],"names":[],"mappings":"AAMA,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,IAAI,EAAE,OAAO,CAAC;CACf,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,UAAU,CAiCtC,CAAC"}
@@ -0,0 +1,36 @@
1
+ "use client";
2
+ import { useId, useContext, useEffect } from "react";
3
+ import { ToastContext } from "./ToastContext.js";
4
+ const Toast = ({
5
+ children,
6
+ duration,
7
+ onRequestClose,
8
+ open
9
+ }) => {
10
+ const toastId = useId();
11
+ const context = useContext(ToastContext);
12
+ if (!context) {
13
+ throw new Error("Toast must be used within a ToastProvider");
14
+ }
15
+ useEffect(() => {
16
+ if (open) {
17
+ context.add({
18
+ id: toastId,
19
+ duration,
20
+ children,
21
+ onRequestClose
22
+ });
23
+ } else {
24
+ context.remove(toastId);
25
+ }
26
+ }, [duration, open, children, onRequestClose, context, toastId]);
27
+ useEffect(() => {
28
+ return () => {
29
+ context.remove(toastId);
30
+ };
31
+ }, [context, toastId]);
32
+ return null;
33
+ };
34
+ export {
35
+ Toast
36
+ };
@@ -1,6 +1,5 @@
1
1
  export type Toast = {
2
2
  id: string;
3
- intent: 'neutral' | 'success' | 'error' | 'warning' | 'info';
4
3
  duration?: number;
5
4
  onRequestClose: () => void;
6
5
  children?: React.ReactNode;
@@ -1 +1 @@
1
- {"version":3,"file":"ToastContext.d.ts","sourceRoot":"","sources":["../../../../src/components/feedback/Toast/ToastContext.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,KAAK,GAAG;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;IAC7D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,GAAG,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAC5B,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9B,CAAC;AAIF,eAAO,MAAM,YAAY,kDAA+C,CAAC"}
1
+ {"version":3,"file":"ToastContext.d.ts","sourceRoot":"","sources":["../../../../src/components/feedback/Toast/ToastContext.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,KAAK,GAAG;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,GAAG,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAC5B,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9B,CAAC;AAIF,eAAO,MAAM,YAAY,kDAA+C,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { createContext } from "react";
2
+ const ToastContext = createContext(null);
3
+ export {
4
+ ToastContext
5
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"ToastProvider.d.ts","sourceRoot":"","sources":["../../../../src/components/feedback/Toast/ToastProvider.tsx"],"names":[],"mappings":"AAwBA,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,QAAQ,CAAC,EACL,aAAa,GACb,eAAe,GACf,cAAc,GACd,UAAU,GACV,YAAY,GACZ,WAAW,CAAC;CACjB,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAkFtD,CAAC"}
1
+ {"version":3,"file":"ToastProvider.d.ts","sourceRoot":"","sources":["../../../../src/components/feedback/Toast/ToastProvider.tsx"],"names":[],"mappings":"AAwBA,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,QAAQ,CAAC,EACL,aAAa,GACb,eAAe,GACf,cAAc,GACd,UAAU,GACV,YAAY,GACZ,WAAW,CAAC;CACjB,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAiFtD,CAAC"}
@@ -0,0 +1,85 @@
1
+ import { jsxs, Fragment, jsx } from "react/jsx-runtime";
2
+ import { useState, useRef, useCallback, useMemo } from "react";
3
+ import { flushSync } from "react-dom";
4
+ import { Box } from "../../layout/Box/Box.js";
5
+ import { Stack } from "../../layout/Stack/Stack.js";
6
+ import { container } from "./Toast.css.js";
7
+ import { ToastContext } from "./ToastContext.js";
8
+ function makeTransition(transition) {
9
+ if (document.startViewTransition) {
10
+ document.startViewTransition(() => {
11
+ flushSync(() => {
12
+ transition();
13
+ });
14
+ });
15
+ } else {
16
+ transition();
17
+ }
18
+ }
19
+ const ToastProvider = ({ children }) => {
20
+ const [toasts, setToasts] = useState([]);
21
+ const toastsRef = useRef(toasts);
22
+ toastsRef.current = toasts;
23
+ const removeToast = useCallback((id) => {
24
+ makeTransition(() => {
25
+ setToasts((prev) => prev.filter((toast) => toast.id !== id));
26
+ });
27
+ }, []);
28
+ const addToast = useCallback((toast) => {
29
+ const toasts2 = toastsRef.current;
30
+ const match = toasts2.findIndex(({ id }) => id === toast.id) !== -1;
31
+ function updateState(prev) {
32
+ const match2 = prev.findIndex(({ id }) => id === toast.id) !== -1;
33
+ if (match2) {
34
+ return prev.map((item) => item.id === toast.id ? toast : item);
35
+ }
36
+ return [...prev, toast];
37
+ }
38
+ if (match) {
39
+ setToasts(updateState);
40
+ return;
41
+ }
42
+ makeTransition(() => {
43
+ setToasts(updateState);
44
+ });
45
+ if (toast.duration) {
46
+ setTimeout(() => {
47
+ toast.onRequestClose();
48
+ }, toast.duration);
49
+ }
50
+ }, []);
51
+ const contextValue = useMemo(
52
+ () => ({
53
+ add: addToast,
54
+ remove: removeToast
55
+ }),
56
+ [addToast, removeToast]
57
+ );
58
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
59
+ /* @__PURE__ */ jsx(ToastContext.Provider, { value: contextValue, children }),
60
+ /* @__PURE__ */ jsx(
61
+ Box,
62
+ {
63
+ asChild: true,
64
+ position: "fixed",
65
+ insetBlockEnd: 0,
66
+ insetInline: 0,
67
+ padding: 2,
68
+ children: /* @__PURE__ */ jsx(Stack, { gap: 2, children: toasts.map(({ id, children: children2 }) => /* @__PURE__ */ jsx(
69
+ "div",
70
+ {
71
+ className: container,
72
+ style: {
73
+ viewTransitionName: `toast-${id}`
74
+ },
75
+ children: children2
76
+ },
77
+ id
78
+ )) })
79
+ }
80
+ )
81
+ ] });
82
+ };
83
+ export {
84
+ ToastProvider
85
+ };
package/dist/index.d.ts CHANGED
@@ -2,8 +2,12 @@ export { VisuallyHidden, type VisuallyHiddenProps, } from './components/accessib
2
2
  export { Divider, type DividerProps, } from './components/display/Divider/Divider.js';
3
3
  export { createIconMask } from './components/display/Icon/createIconMask.js';
4
4
  export { IconMask, type IconMaskProps, } from './components/display/Icon/IconMask.js';
5
+ export { Alert, type AlertProps, } from './components/feedback/Alert/Alert.js';
5
6
  export { Progress, type ProgressProps, } from './components/feedback/Progress/Progress.js';
7
+ export { Skeleton, type SkeletonProps, } from './components/feedback/Skeleton/Skeleton.js';
6
8
  export { Spinner, type SpinnerProps, } from './components/feedback/Spinner/Spinner.js';
9
+ export { Toast, type ToastProps } from './components/feedback/Toast/Toast.js';
10
+ export { ToastProvider, type ToastProviderProps, } from './components/feedback/Toast/ToastProvider.js';
7
11
  export { Button, type ButtonProps } from './components/form/Button/Button.js';
8
12
  export { Checkbox, type CheckboxProps, } from './components/form/Checkbox/Checkbox.js';
9
13
  export { Label, type LabelProps } from './components/form/Label/Label.js';
@@ -19,6 +23,7 @@ export { Inline, type InlineProps } from './components/layout/Inline/Inline.js';
19
23
  export { Stack, type StackProps } from './components/layout/Stack/Stack.js';
20
24
  export { Link, type LinkProps } from './components/navigation/Link/Link.js';
21
25
  export { Dialog, type DialogProps, } from './components/overlay/Dialog/Dialog.js';
26
+ export { Popover, type PopoverProps, } from './components/overlay/Popover/Popover.js';
22
27
  export { Portal, type PortalProps, } from './components/overlay/Portal/Portal.js';
23
28
  export { Tooltip, type TooltipProps, } from './components/overlay/Tooltip/Tooltip.js';
24
29
  export { BlocksProvider, type BlocksProviderProps, } from './components/providers/BlocksProvider/BlocksProvider.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,cAAc,EACd,KAAK,mBAAmB,GACzB,MAAM,6DAA6D,CAAC;AAErE,OAAO,EACL,OAAO,EACP,KAAK,YAAY,GAClB,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,6CAA6C,CAAC;AAC7E,OAAO,EACL,QAAQ,EACR,KAAK,aAAa,GACnB,MAAM,uCAAuC,CAAC;AAE/C,OAAO,EACL,QAAQ,EACR,KAAK,aAAa,GACnB,MAAM,4CAA4C,CAAC;AACpD,OAAO,EACL,OAAO,EACP,KAAK,YAAY,GAClB,MAAM,0CAA0C,CAAC;AAElD,OAAO,EAAE,MAAM,EAAE,KAAK,WAAW,EAAE,MAAM,oCAAoC,CAAC;AAC9E,OAAO,EACL,QAAQ,EACR,KAAK,aAAa,GACnB,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,KAAK,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAC1E,OAAO,EACL,YAAY,EACZ,KAAK,iBAAiB,GACvB,MAAM,gDAAgD,CAAC;AACxD,OAAO,EAAE,KAAK,EAAE,KAAK,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAC1E,OAAO,EAAE,MAAM,EAAE,KAAK,WAAW,EAAE,MAAM,oCAAoC,CAAC;AAC9E,OAAO,EAAE,MAAM,EAAE,KAAK,WAAW,EAAE,MAAM,oCAAoC,CAAC;AAC9E,OAAO,EAAE,MAAM,EAAE,KAAK,WAAW,EAAE,MAAM,oCAAoC,CAAC;AAC9E,OAAO,EACL,QAAQ,EACR,KAAK,aAAa,GACnB,MAAM,wCAAwC,CAAC;AAChD,OAAO,EACL,SAAS,EACT,KAAK,cAAc,GACpB,MAAM,0CAA0C,CAAC;AAElD,OAAO,EAAE,GAAG,EAAE,KAAK,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,MAAM,EAAE,KAAK,WAAW,EAAE,MAAM,sCAAsC,CAAC;AAChF,OAAO,EAAE,KAAK,EAAE,KAAK,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAE5E,OAAO,EAAE,IAAI,EAAE,KAAK,SAAS,EAAE,MAAM,sCAAsC,CAAC;AAE5E,OAAO,EACL,MAAM,EACN,KAAK,WAAW,GACjB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EACL,MAAM,EACN,KAAK,WAAW,GACjB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EACL,OAAO,EACP,KAAK,YAAY,GAClB,MAAM,yCAAyC,CAAC;AAEjD,OAAO,EACL,cAAc,EACd,KAAK,mBAAmB,GACzB,MAAM,yDAAyD,CAAC;AAEjE,OAAO,EACL,OAAO,EACP,KAAK,YAAY,GAClB,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,KAAK,SAAS,EAAE,MAAM,sCAAsC,CAAC;AAE5E,OAAO,EAAE,6BAA6B,EAAE,MAAM,6DAA6D,CAAC;AAC5G,OAAO,EAAE,kBAAkB,EAAE,MAAM,kDAAkD,CAAC;AACtF,OAAO,EAAE,kBAAkB,EAAE,MAAM,kDAAkD,CAAC;AACtF,OAAO,EAAE,yBAAyB,EAAE,MAAM,gEAAgE,CAAC;AAC3G,OAAO,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sDAAsD,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -2,8 +2,12 @@ import { VisuallyHidden } from "./components/accessibility/VisuallyHidden/Visual
2
2
  import { Divider } from "./components/display/Divider/Divider.js";
3
3
  import { createIconMask } from "./components/display/Icon/createIconMask.js";
4
4
  import { IconMask } from "./components/display/Icon/IconMask.js";
5
+ import { Alert } from "./components/feedback/Alert/Alert.js";
5
6
  import { Progress } from "./components/feedback/Progress/Progress.js";
7
+ import { Skeleton } from "./components/feedback/Skeleton/Skeleton.js";
6
8
  import { Spinner } from "./components/feedback/Spinner/Spinner.js";
9
+ import { Toast } from "./components/feedback/Toast/Toast.js";
10
+ import { ToastProvider } from "./components/feedback/Toast/ToastProvider.js";
7
11
  import { Button } from "./components/form/Button/Button.js";
8
12
  import { Checkbox } from "./components/form/Checkbox/Checkbox.js";
9
13
  import { Label } from "./components/form/Label/Label.js";
@@ -19,6 +23,7 @@ import { Inline } from "./components/layout/Inline/Inline.js";
19
23
  import { Stack } from "./components/layout/Stack/Stack.js";
20
24
  import { Link } from "./components/navigation/Link/Link.js";
21
25
  import { Dialog } from "./components/overlay/Dialog/Dialog.js";
26
+ import { Popover } from "./components/overlay/Popover/Popover.js";
22
27
  import { Portal } from "./components/overlay/Portal/Portal.js";
23
28
  import { Tooltip } from "./components/overlay/Tooltip/Tooltip.js";
24
29
  import { BlocksProvider } from "./components/providers/BlocksProvider/BlocksProvider.js";
@@ -31,6 +36,7 @@ import { useIsomorphicLayoutEffect } from "./hooks/useIsomorphicLayoutEffect/use
31
36
  import { useKeyboard } from "./hooks/useKeyboard/useKeyboard.js";
32
37
  import { usePreventBodyScroll } from "./hooks/usePreventBodyScroll/usePreventBodyScroll.js";
33
38
  export {
39
+ Alert,
34
40
  BlocksProvider,
35
41
  Box,
36
42
  Button,
@@ -43,10 +49,12 @@ export {
43
49
  Label,
44
50
  Link,
45
51
  NumericInput,
52
+ Popover,
46
53
  Portal,
47
54
  Progress,
48
55
  Radio,
49
56
  Select,
57
+ Skeleton,
50
58
  Slider,
51
59
  Spinner,
52
60
  Stack,
@@ -54,6 +62,8 @@ export {
54
62
  Text,
55
63
  TextInput,
56
64
  Textarea,
65
+ Toast,
66
+ ToastProvider,
57
67
  Tooltip,
58
68
  VisuallyHidden,
59
69
  createIconMask,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@blockle/blocks-react",
3
- "version": "2.1.0",
3
+ "version": "2.2.0",
4
4
  "description": "React hooks and components for Blockle",
5
5
  "type": "module",
6
6
  "exports": {
@@ -31,13 +31,13 @@
31
31
  },
32
32
  "homepage": "https://github.com/Blockle/blocks#readme",
33
33
  "dependencies": {
34
- "@vanilla-extract/css": "^1.17.1"
34
+ "@vanilla-extract/css": "^1.17.4"
35
35
  },
36
36
  "peerDependencies": {
37
+ "@blockle/blocks-core": ">=1.1.0",
38
+ "@blockle/blocks-react-slot": ">=1.1.1",
39
+ "@vanilla-extract/css": "^1.17.4",
37
40
  "react": ">=19",
38
- "react-dom": ">=19",
39
- "@vanilla-extract/css": ">=1.17.1",
40
- "@blockle/blocks-core": ">=1.0.x",
41
- "@blockle/blocks-react-slot": ">=1.1.x"
41
+ "react-dom": ">=19"
42
42
  }
43
43
  }