@blockle/blocks-react 2.2.0 → 2.3.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.
@@ -1,11 +1,11 @@
1
- import { ComponentThemes } from '@blockle/blocks-core';
1
+ import { ComponentThemes, HTMLElementProps } from '@blockle/blocks-core';
2
2
  type AlertTheme = ComponentThemes['alert'];
3
3
  export type AlertProps = {
4
- intent?: AlertTheme['variants']['intent'];
5
4
  children?: React.ReactNode;
6
- open?: boolean;
5
+ intent?: AlertTheme['variants']['intent'];
7
6
  onRequestClose?: () => void;
8
- };
7
+ ref?: React.RefObject<HTMLDivElement>;
8
+ } & HTMLElementProps<HTMLDivElement>;
9
9
  export declare const Alert: React.FC<AlertProps>;
10
10
  export {};
11
11
  //# sourceMappingURL=Alert.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Alert.d.ts","sourceRoot":"","sources":["../../../../src/components/feedback/Alert/Alert.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,eAAe,EAAc,MAAM,sBAAsB,CAAC;AAOxE,KAAK,UAAU,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;AAE3C,MAAM,MAAM,UAAU,GAAG;IACvB,MAAM,CAAC,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC;IAC1C,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;CAC7B,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,UAAU,CAwDtC,CAAC"}
1
+ {"version":3,"file":"Alert.d.ts","sourceRoot":"","sources":["../../../../src/components/feedback/Alert/Alert.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,eAAe,EAEpB,KAAK,gBAAgB,EACtB,MAAM,sBAAsB,CAAC;AAO9B,KAAK,UAAU,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;AAE3C,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,MAAM,CAAC,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC;IAC1C,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B,GAAG,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;CACvC,GAAG,gBAAgB,CAAC,cAAc,CAAC,CAAC;AAErC,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,UAAU,CAsDtC,CAAC"}
@@ -8,24 +8,23 @@ import { closeButton } from "./Alert.css.js";
8
8
  const Alert = ({
9
9
  intent = "info",
10
10
  children,
11
- open,
12
- onRequestClose
11
+ onRequestClose,
12
+ className,
13
+ ...restProps
13
14
  }) => {
14
15
  const containerClassName = useComponentStyles("alert", {
15
16
  base: true,
16
17
  variants: { intent }
17
18
  });
18
- if (!open) {
19
- return null;
20
- }
21
19
  return /* @__PURE__ */ jsxs(
22
20
  Box,
23
21
  {
24
22
  role: "alert",
25
- className: classnames(containerClassName),
23
+ className: classnames(containerClassName, className),
26
24
  display: "flex",
27
25
  alignItems: "center",
28
26
  justifyContent: "space-between",
27
+ ...restProps,
29
28
  children: [
30
29
  /* @__PURE__ */ jsx("div", { children }),
31
30
  /* @__PURE__ */ jsx(
@@ -45,9 +44,9 @@ const Alert = ({
45
44
  viewBox: "0 0 24 24",
46
45
  fill: "none",
47
46
  stroke: "currentColor",
48
- "stroke-width": "2",
49
- "stroke-linecap": "round",
50
- "stroke-linejoin": "round",
47
+ strokeWidth: "2",
48
+ strokeLinecap: "round",
49
+ strokeLinejoin: "round",
51
50
  children: [
52
51
  /* @__PURE__ */ jsx("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }),
53
52
  /* @__PURE__ */ jsx("path", { d: "M18 6l-12 12" }),
@@ -1,8 +1,9 @@
1
+ import { AlertProps } from '../Alert/Alert.js';
1
2
  export type Toast = {
2
3
  id: string;
3
4
  duration?: number;
4
- onRequestClose: () => void;
5
5
  children?: React.ReactNode;
6
+ intent?: AlertProps['intent'];
6
7
  };
7
8
  export type ToastContextType = {
8
9
  add: (toast: Toast) => void;
@@ -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,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":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,MAAM,MAAM,KAAK,GAAG;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,MAAM,CAAC,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;CAC/B,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;AAEF,eAAO,MAAM,YAAY,kDAA+C,CAAC"}
@@ -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,CAiFtD,CAAC"}
1
+ {"version":3,"file":"ToastProvider.d.ts","sourceRoot":"","sources":["../../../../src/components/feedback/Toast/ToastProvider.tsx"],"names":[],"mappings":"AA2BA,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,CAwFtD,CAAC"}
@@ -1,8 +1,10 @@
1
+ "use client";
1
2
  import { jsxs, Fragment, jsx } from "react/jsx-runtime";
2
3
  import { useState, useRef, useCallback, useMemo } from "react";
3
4
  import { flushSync } from "react-dom";
4
5
  import { Box } from "../../layout/Box/Box.js";
5
6
  import { Stack } from "../../layout/Stack/Stack.js";
7
+ import { Alert } from "../Alert/Alert.js";
6
8
  import { container } from "./Toast.css.js";
7
9
  import { ToastContext } from "./ToastContext.js";
8
10
  function makeTransition(transition) {
@@ -43,8 +45,11 @@ const ToastProvider = ({ children }) => {
43
45
  setToasts(updateState);
44
46
  });
45
47
  if (toast.duration) {
48
+ const toastId = toast.id;
46
49
  setTimeout(() => {
47
- toast.onRequestClose();
50
+ makeTransition(() => {
51
+ setToasts((prev) => prev.filter((toast2) => toast2.id !== toastId));
52
+ });
48
53
  }, toast.duration);
49
54
  }
50
55
  }, []);
@@ -65,13 +70,17 @@ const ToastProvider = ({ children }) => {
65
70
  insetBlockEnd: 0,
66
71
  insetInline: 0,
67
72
  padding: 2,
68
- children: /* @__PURE__ */ jsx(Stack, { gap: 2, children: toasts.map(({ id, children: children2 }) => /* @__PURE__ */ jsx(
69
- "div",
73
+ children: /* @__PURE__ */ jsx(Stack, { gap: 2, children: toasts.map(({ id, children: children2, intent }) => /* @__PURE__ */ jsx(
74
+ Alert,
70
75
  {
76
+ intent,
71
77
  className: container,
72
78
  style: {
73
79
  viewTransitionName: `toast-${id}`
74
80
  },
81
+ onRequestClose: () => {
82
+ removeToast(id);
83
+ },
75
84
  children: children2
76
85
  },
77
86
  id
@@ -0,0 +1,9 @@
1
+ import { Toast } from './ToastContext.js';
2
+ export type ToastProps = Omit<Toast, 'id'> & {
3
+ id?: Toast['id'];
4
+ };
5
+ export declare const useToast: () => {
6
+ showToast: (props: ToastProps) => void;
7
+ removeToast: (id: string) => void;
8
+ };
9
+ //# sourceMappingURL=useToast.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useToast.d.ts","sourceRoot":"","sources":["../../../../src/components/feedback/Toast/useToast.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,KAAK,EAAgB,MAAM,mBAAmB,CAAC;AAE7D,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG;IAC3C,EAAE,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;CAClB,CAAC;AAEF,eAAO,MAAM,QAAQ;uBAQT,UAAU;sBAYb,MAAM;CAad,CAAC"}
@@ -0,0 +1,35 @@
1
+ import { useContext, useCallback, useMemo } from "react";
2
+ import { ToastContext } from "./ToastContext.js";
3
+ const useToast = () => {
4
+ const context = useContext(ToastContext);
5
+ if (!context) {
6
+ throw new Error("Toast must be used within a ToastProvider");
7
+ }
8
+ const showToast = useCallback(
9
+ (props) => {
10
+ context.add({
11
+ children: props.children,
12
+ duration: props.duration,
13
+ id: props.id ?? crypto.randomUUID(),
14
+ intent: props.intent
15
+ });
16
+ },
17
+ [context]
18
+ );
19
+ const removeToast = useCallback(
20
+ (id) => {
21
+ context.remove(id);
22
+ },
23
+ [context]
24
+ );
25
+ return useMemo(
26
+ () => ({
27
+ showToast,
28
+ removeToast
29
+ }),
30
+ [showToast, removeToast]
31
+ );
32
+ };
33
+ export {
34
+ useToast
35
+ };
package/dist/index.d.ts CHANGED
@@ -6,8 +6,8 @@ export { Alert, type AlertProps, } from './components/feedback/Alert/Alert.js';
6
6
  export { Progress, type ProgressProps, } from './components/feedback/Progress/Progress.js';
7
7
  export { Skeleton, type SkeletonProps, } from './components/feedback/Skeleton/Skeleton.js';
8
8
  export { Spinner, type SpinnerProps, } from './components/feedback/Spinner/Spinner.js';
9
- export { Toast, type ToastProps } from './components/feedback/Toast/Toast.js';
10
9
  export { ToastProvider, type ToastProviderProps, } from './components/feedback/Toast/ToastProvider.js';
10
+ export { type ToastProps, useToast, } from './components/feedback/Toast/useToast.js';
11
11
  export { Button, type ButtonProps } from './components/form/Button/Button.js';
12
12
  export { Checkbox, type CheckboxProps, } from './components/form/Checkbox/Checkbox.js';
13
13
  export { Label, type LabelProps } from './components/form/Label/Label.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
@@ -6,8 +6,8 @@ import { Alert } from "./components/feedback/Alert/Alert.js";
6
6
  import { Progress } from "./components/feedback/Progress/Progress.js";
7
7
  import { Skeleton } from "./components/feedback/Skeleton/Skeleton.js";
8
8
  import { Spinner } from "./components/feedback/Spinner/Spinner.js";
9
- import { Toast } from "./components/feedback/Toast/Toast.js";
10
9
  import { ToastProvider } from "./components/feedback/Toast/ToastProvider.js";
10
+ import { useToast } from "./components/feedback/Toast/useToast.js";
11
11
  import { Button } from "./components/form/Button/Button.js";
12
12
  import { Checkbox } from "./components/form/Checkbox/Checkbox.js";
13
13
  import { Label } from "./components/form/Label/Label.js";
@@ -62,7 +62,6 @@ export {
62
62
  Text,
63
63
  TextInput,
64
64
  Textarea,
65
- Toast,
66
65
  ToastProvider,
67
66
  Tooltip,
68
67
  VisuallyHidden,
@@ -72,5 +71,6 @@ export {
72
71
  useControlledValue,
73
72
  useIsomorphicLayoutEffect,
74
73
  useKeyboard,
75
- usePreventBodyScroll
74
+ usePreventBodyScroll,
75
+ useToast
76
76
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@blockle/blocks-react",
3
- "version": "2.2.0",
3
+ "version": "2.3.0",
4
4
  "description": "React hooks and components for Blockle",
5
5
  "type": "module",
6
6
  "exports": {
@@ -1,8 +0,0 @@
1
- export type ToastProps = {
2
- children?: React.ReactNode;
3
- duration?: number;
4
- onRequestClose: () => void;
5
- open: boolean;
6
- };
7
- export declare const Toast: React.FC<ToastProps>;
8
- //# sourceMappingURL=Toast.d.ts.map
@@ -1 +0,0 @@
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"}
@@ -1,36 +0,0 @@
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
- };