@music-vine/cadence 1.0.1 → 1.1.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,49 +1,47 @@
1
- /**
2
- * @module Toast
3
- *
4
- * Toast notification system built on Sonner. Provides success, error, info, and warning variants.
5
- *
6
- * @see {@link https://ui.shadcn.com/docs/components/sonner Shadcn Sonner}
7
- * @see {@link https://sonner.emilkowal.ski/ Sonner Documentation}
8
- *
9
- * @example
10
- * // Setup: Add Toaster to your app root
11
- * <Toaster />
12
- *
13
- * @example
14
- * // Show toast notifications
15
- * toast("Default message");
16
- * toast.success("Operation completed");
17
- * toast.error("Something went wrong");
18
- * toast.info("Information");
19
- * toast.warning("Warning message");
20
- *
21
- * @example
22
- * // With action button
23
- * toast("Item deleted", {
24
- * action: {
25
- * label: "Undo",
26
- * onClick: () => undoDelete(),
27
- * },
28
- * });
29
- *
30
- * @example
31
- * // Loading toast
32
- * const id = toast.loading("Saving...");
33
- * // Later: toast.dismiss(id) or toast.success("Saved!", { id });
34
- */
35
1
  import type React from "react";
36
- import { Toaster as SonnerToaster, toast as sonnerToast } from "sonner";
2
+ import { type ExternalToast, Toaster as SonnerToaster, toast as sonnerToast } from "sonner";
37
3
  type ToasterProps = React.ComponentProps<typeof SonnerToaster>;
4
+ type ToastVariant = "error" | "info" | "loading" | "success" | "warning";
5
+ type GlobalToastAction = {
6
+ label: string;
7
+ onClick: () => void;
8
+ };
9
+ type GlobalToastProps = {
10
+ id: string | number;
11
+ title?: string;
12
+ description?: string;
13
+ variant: ToastVariant;
14
+ action?: GlobalToastAction;
15
+ };
16
+ export interface GlobalToastOptions extends ExternalToast {
17
+ title?: string;
18
+ description?: string;
19
+ action?: GlobalToastAction;
20
+ }
21
+ export declare const GlobalToast: (props: GlobalToastProps) => import("react/jsx-runtime").JSX.Element;
38
22
  /**
39
23
  * Toast container component. Place once at app root.
40
24
  * Positioned bottom-right by default, shows up to 4 toasts.
41
25
  */
42
26
  declare const Toaster: React.FC<ToasterProps>;
43
- /**
44
- * Display toast notifications. Includes success, error, info, warning, loading variants.
45
- * @example toast("Message") or toast.success("Done!")
46
- */
47
- declare const toast: typeof sonnerToast;
48
- export { toast, Toaster, type ToasterProps };
27
+ type PromiseToastOptions<T> = {
28
+ loading: GlobalToastOptions;
29
+ success: GlobalToastOptions | ((data: T) => GlobalToastOptions);
30
+ error: GlobalToastOptions | ((error: unknown) => GlobalToastOptions);
31
+ };
32
+ type ToastFunction = {
33
+ (options?: GlobalToastOptions | string): string | number;
34
+ success: (options?: GlobalToastOptions | string) => string | number;
35
+ error: (options?: GlobalToastOptions | string) => string | number;
36
+ info: (options?: GlobalToastOptions | string) => string | number;
37
+ warning: (options?: GlobalToastOptions | string) => string | number;
38
+ loading: (options?: GlobalToastOptions | string) => string | number;
39
+ custom: typeof sonnerToast.custom;
40
+ promise: <T>(promise: Promise<T> | (() => Promise<T>), options: PromiseToastOptions<T>) => Promise<T>;
41
+ dismiss: typeof sonnerToast.dismiss;
42
+ getHistory: typeof sonnerToast.getHistory;
43
+ getToasts: typeof sonnerToast.getToasts;
44
+ };
45
+ declare const toast: ToastFunction;
46
+ export { Toaster, toast, type ToasterProps };
49
47
  //# sourceMappingURL=toast.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"toast.d.ts","sourceRoot":"","sources":["../../src/components/toast.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAEL,OAAO,IAAI,aAAa,EACxB,KAAK,IAAI,WAAW,EACrB,MAAM,QAAQ,CAAC;AAEhB,KAAK,YAAY,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,aAAa,CAAC,CAAC;AAI/D;;;GAGG;AACH,QAAA,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CA6BnC,CAAC;AAEF;;;GAGG;AACH,QAAA,MAAM,KAAK,EAIF,OAAO,WAAW,CAAC;AA0B5B,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,YAAY,EAAE,CAAC"}
1
+ {"version":3,"file":"toast.d.ts","sourceRoot":"","sources":["../../src/components/toast.tsx"],"names":[],"mappings":"AA2CA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EACL,KAAK,aAAa,EAClB,OAAO,IAAI,aAAa,EACxB,KAAK,IAAI,WAAW,EACrB,MAAM,QAAQ,CAAC;AAIhB,KAAK,YAAY,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,aAAa,CAAC,CAAC;AAC/D,KAAK,YAAY,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAIzE,KAAK,iBAAiB,GAAG;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAAC;AAEF,KAAK,gBAAgB,GAAG;IACtB,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,YAAY,CAAC;IACtB,MAAM,CAAC,EAAE,iBAAiB,CAAC;CAC5B,CAAC;AAEF,MAAM,WAAW,kBAAmB,SAAQ,aAAa;IACvD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,iBAAiB,CAAC;CAC5B;AA8ID,eAAO,MAAM,WAAW,GAAI,OAAO,gBAAgB,4CA6BlD,CAAC;AAEF;;;GAGG;AACH,QAAA,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAOnC,CAAC;AA8BF,KAAK,mBAAmB,CAAC,CAAC,IAAI;IAC5B,OAAO,EAAE,kBAAkB,CAAC;IAC5B,OAAO,EAAE,kBAAkB,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,kBAAkB,CAAC,CAAC;IAChE,KAAK,EAAE,kBAAkB,GAAG,CAAC,CAAC,KAAK,EAAE,OAAO,KAAK,kBAAkB,CAAC,CAAC;CACtE,CAAC;AAEF,KAAK,aAAa,GAAG;IACnB,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IACzD,OAAO,EAAE,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,MAAM,KAAK,MAAM,GAAG,MAAM,CAAC;IACpE,KAAK,EAAE,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,MAAM,KAAK,MAAM,GAAG,MAAM,CAAC;IAClE,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,MAAM,KAAK,MAAM,GAAG,MAAM,CAAC;IACjE,OAAO,EAAE,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,MAAM,KAAK,MAAM,GAAG,MAAM,CAAC;IACpE,OAAO,EAAE,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,MAAM,KAAK,MAAM,GAAG,MAAM,CAAC;IACpE,MAAM,EAAE,OAAO,WAAW,CAAC,MAAM,CAAC;IAClC,OAAO,EAAE,CAAC,CAAC,EACT,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC,EACxC,OAAO,EAAE,mBAAmB,CAAC,CAAC,CAAC,KAC5B,OAAO,CAAC,CAAC,CAAC,CAAC;IAChB,OAAO,EAAE,OAAO,WAAW,CAAC,OAAO,CAAC;IACpC,UAAU,EAAE,OAAO,WAAW,CAAC,UAAU,CAAC;IAC1C,SAAS,EAAE,OAAO,WAAW,CAAC,SAAS,CAAC;CACzC,CAAC;AAEF,QAAA,MAAM,KAAK,EAAE,aACwC,CAAC;AA2EtD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,YAAY,EAAE,CAAC"}
@@ -1,52 +1,204 @@
1
- import { jsx } from "react/jsx-runtime";
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { cva } from "class-variance-authority";
2
3
  import {
3
4
  Toaster as SonnerToaster,
4
5
  toast as sonnerToast
5
6
  } from "sonner";
7
+ import { Button, cn } from "..";
8
+ import { Check, CircleX, InfoIcon, Loader, TriangleAlert, X } from "../icons";
6
9
  const GLOBAL_TOASTER_ID = "global";
7
- const Toaster = ({ toastOptions, ...props }) => {
10
+ const GlobalToastTitle = ({
11
+ className,
12
+ children
13
+ }) => {
14
+ if (!children) {
15
+ return;
16
+ }
8
17
  return /* @__PURE__ */ jsx(
9
- SonnerToaster,
18
+ "div",
10
19
  {
11
- id: GLOBAL_TOASTER_ID,
12
- position: "bottom-right",
13
- visibleToasts: 4,
14
- ...props,
15
- toastOptions: {
16
- ...toastOptions,
17
- toasterId: GLOBAL_TOASTER_ID,
18
- unstyled: true,
19
- classNames: {
20
- ...toastOptions?.classNames,
21
- toast: "text-md border-solid border font-sans flex flex-wrap gap-2 items-center rounded-lg shadow p-4 w-[var(--width)] text-pretty",
22
- default: "bg-white dark:bg-gray-950 text-black dark:text-white border-0",
23
- error: "!bg-red !text-white border-0",
24
- success: "!bg-green !text-white border-0",
25
- actionButton: "border border-solid border-white rounded px-1.5 text-sm text-nowrap cursor-pointer py-1",
26
- cancelButton: "rounded px-1.5 text-sm text-nowrap cursor-pointer py-1",
27
- content: "max-w-[calc(100%-2rem)]",
28
- icon: "self-start mt-[.215em]"
29
- }
30
- }
20
+ className: cn(
21
+ "line-clamp-1 font-semibold text-black text-sm dark:text-white w-[90%]",
22
+ className
23
+ ),
24
+ children
31
25
  }
32
26
  );
33
27
  };
34
- const toast = (message, options) => sonnerToast(message, {
35
- toasterId: GLOBAL_TOASTER_ID,
36
- ...options
28
+ const GlobalToastDescription = ({ children }) => {
29
+ if (!children) {
30
+ return;
31
+ }
32
+ return /* @__PURE__ */ jsx("div", { className: "line-clamp-2 font-normal text-gray-700 text-sm dark:text-gray-200 ", children });
33
+ };
34
+ const globalToastIconVariants = cva(
35
+ "size-7 flex-shrink-0 rounded-full flex items-center justify-center [&_svg]:size-4",
36
+ {
37
+ variants: {
38
+ variant: {
39
+ error: "bg-red-50 dark:bg-red-950 [&_svg]:text-red-500 [&_svg]:dark:text-red-400",
40
+ info: "bg-gray-100 dark:bg-gray-800 [&_svg]:text-gray-700 [&_svg]:dark:text-gray-200",
41
+ loading: "bg-gray-100 dark:bg-gray-800 [&_svg]:text-gray-700 [&_svg]:dark:text-gray-200",
42
+ success: "bg-green-50 dark:bg-green-950 [&_svg]:text-green-500 [&_svg]:dark:text-green-400",
43
+ warning: "bg-yellow-50 dark:bg-yellow-950 [&_svg]:text-yellow-500 [&_svg]:dark:text-yellow-400"
44
+ }
45
+ },
46
+ defaultVariants: {
47
+ variant: "info"
48
+ }
49
+ }
50
+ );
51
+ const GlobalToastIcon = ({ variant }) => {
52
+ if (variant === "error") {
53
+ return /* @__PURE__ */ jsx("span", { className: cn(globalToastIconVariants({ variant })), children: /* @__PURE__ */ jsx(CircleX, {}) });
54
+ }
55
+ if (variant === "info") {
56
+ return /* @__PURE__ */ jsx("span", { className: cn(globalToastIconVariants({ variant })), children: /* @__PURE__ */ jsx(InfoIcon, {}) });
57
+ }
58
+ if (variant === "loading") {
59
+ return /* @__PURE__ */ jsx("span", { className: cn(globalToastIconVariants({ variant })), children: /* @__PURE__ */ jsx(
60
+ Loader,
61
+ {
62
+ className: "animate-spin",
63
+ style: { animationDuration: "1.5s" }
64
+ }
65
+ ) });
66
+ }
67
+ if (variant === "success") {
68
+ return /* @__PURE__ */ jsx("span", { className: cn(globalToastIconVariants({ variant })), children: /* @__PURE__ */ jsx(Check, {}) });
69
+ }
70
+ if (variant === "warning") {
71
+ return /* @__PURE__ */ jsx("span", { className: cn(globalToastIconVariants({ variant })), children: /* @__PURE__ */ jsx(TriangleAlert, { className: "pb-[1px]" }) });
72
+ }
73
+ };
74
+ const globalToastLeftBorderVariants = cva("absolute top-0 left-0 h-full w-1", {
75
+ variants: {
76
+ variant: {
77
+ error: "bg-red-500 dark:bg-red-400",
78
+ info: "bg-gray-700 dark:bg-gray-200",
79
+ loading: "bg-gray-700 dark:bg-gray-200",
80
+ success: "bg-green-500 dark:bg-green-400",
81
+ warning: "bg-yellow-500 dark:bg-yellow-400"
82
+ }
83
+ },
84
+ defaultVariants: {
85
+ variant: "info"
86
+ }
37
87
  });
38
- toast.success = (message, options) => sonnerToast.success(message, { toasterId: GLOBAL_TOASTER_ID, ...options });
39
- toast.error = (message, options) => sonnerToast.error(message, { toasterId: GLOBAL_TOASTER_ID, ...options });
40
- toast.info = (message, options) => sonnerToast.info(message, { toasterId: GLOBAL_TOASTER_ID, ...options });
41
- toast.warning = (message, options) => sonnerToast.warning(message, { toasterId: GLOBAL_TOASTER_ID, ...options });
42
- toast.message = (message, options) => sonnerToast.message(message, { toasterId: GLOBAL_TOASTER_ID, ...options });
43
- toast.loading = (message, options) => sonnerToast.loading(message, { toasterId: GLOBAL_TOASTER_ID, ...options });
88
+ const GlobalToastLeftBorder = ({ variant }) => /* @__PURE__ */ jsx("div", { className: cn(globalToastLeftBorderVariants({ variant })) });
89
+ const GlobalToastDismissButton = ({
90
+ toastId
91
+ }) => /* @__PURE__ */ jsx(
92
+ Button,
93
+ {
94
+ className: "absolute top-1 right-1",
95
+ onClick: () => sonnerToast.dismiss(toastId),
96
+ size: "icon",
97
+ variant: "subtle",
98
+ children: /* @__PURE__ */ jsx(X, { className: "size-5" })
99
+ }
100
+ );
101
+ const GlobalToastActionButton = ({ onClick, ...props }) => /* @__PURE__ */ jsx(Button, { onClick, size: "sm", variant: "light", ...props });
102
+ const GlobalToast = (props) => {
103
+ const { id, title, description, variant, action } = props;
104
+ return /* @__PURE__ */ jsxs(
105
+ "div",
106
+ {
107
+ className: cn(
108
+ "flex max-h-24 min-h-16 w-80 md:w-[360px] items-center gap-2 rounded-lg border-1 border-gray-150 border-solid bg-white px-4 py-3 text-black shadow-md dark:border-gray-800 dark:bg-black dark:text-white",
109
+ "relative overflow-hidden"
110
+ ),
111
+ children: [
112
+ /* @__PURE__ */ jsx(GlobalToastLeftBorder, { variant }),
113
+ /* @__PURE__ */ jsx(GlobalToastIcon, { variant }),
114
+ /* @__PURE__ */ jsxs("div", { className: "flex w-full flex-col gap-0.5", children: [
115
+ /* @__PURE__ */ jsx(GlobalToastTitle, { className: action ? "w-full" : "w-[90%]", children: title }),
116
+ /* @__PURE__ */ jsx(GlobalToastDescription, { children: description })
117
+ ] }),
118
+ action ? /* @__PURE__ */ jsx(GlobalToastActionButton, { onClick: action.onClick, children: action.label }) : /* @__PURE__ */ jsx(GlobalToastDismissButton, { toastId: id })
119
+ ]
120
+ },
121
+ id
122
+ );
123
+ };
124
+ const Toaster = ({ toastOptions, ...props }) => /* @__PURE__ */ jsx(
125
+ SonnerToaster,
126
+ {
127
+ id: GLOBAL_TOASTER_ID,
128
+ position: "bottom-right",
129
+ visibleToasts: 4,
130
+ ...props
131
+ }
132
+ );
133
+ const createGlobalToast = (variant, options) => sonnerToast.custom(
134
+ (id) => /* @__PURE__ */ jsx(
135
+ GlobalToast,
136
+ {
137
+ action: options?.action,
138
+ description: options?.description,
139
+ id,
140
+ title: options?.title,
141
+ variant
142
+ }
143
+ ),
144
+ { toasterId: GLOBAL_TOASTER_ID, ...options }
145
+ );
146
+ const getToastOptions = (args) => {
147
+ if (typeof args === "string") {
148
+ return { title: args };
149
+ }
150
+ return args;
151
+ };
152
+ const toast = (options) => createGlobalToast("info", getToastOptions(options));
153
+ toast.success = (options) => createGlobalToast("success", getToastOptions(options));
154
+ toast.error = (options) => createGlobalToast("error", getToastOptions(options));
155
+ toast.info = (options) => createGlobalToast("info", getToastOptions(options));
156
+ toast.warning = (options) => createGlobalToast("warning", getToastOptions(options));
157
+ toast.loading = (options) => createGlobalToast("loading", getToastOptions(options));
158
+ toast.promise = (promiseOrFn, states) => {
159
+ const toastId = createGlobalToast("loading", states.loading);
160
+ const promise = typeof promiseOrFn === "function" ? promiseOrFn() : promiseOrFn;
161
+ promise.then((data) => {
162
+ const successToastOptions = typeof states.success === "function" ? states.success(data) : states.success;
163
+ const { title, description, action, ...rest } = successToastOptions || {};
164
+ sonnerToast.custom(
165
+ (id) => /* @__PURE__ */ jsx(
166
+ GlobalToast,
167
+ {
168
+ action,
169
+ description,
170
+ id,
171
+ title,
172
+ variant: "success"
173
+ }
174
+ ),
175
+ { id: toastId, toasterId: GLOBAL_TOASTER_ID, ...rest }
176
+ );
177
+ }).catch((error) => {
178
+ const errorToastOptions = typeof states.error === "function" ? states.error(error) : states.error;
179
+ const { title, description, action, ...rest } = errorToastOptions || {};
180
+ sonnerToast.custom(
181
+ (id) => /* @__PURE__ */ jsx(
182
+ GlobalToast,
183
+ {
184
+ action,
185
+ description,
186
+ id,
187
+ title,
188
+ variant: "error"
189
+ }
190
+ ),
191
+ { id: toastId, toasterId: GLOBAL_TOASTER_ID, ...rest }
192
+ );
193
+ });
194
+ return promise;
195
+ };
44
196
  toast.custom = sonnerToast.custom;
45
- toast.promise = sonnerToast.promise;
46
197
  toast.dismiss = sonnerToast.dismiss;
47
198
  toast.getHistory = sonnerToast.getHistory;
48
199
  toast.getToasts = sonnerToast.getToasts;
49
200
  export {
201
+ GlobalToast,
50
202
  Toaster,
51
203
  toast
52
204
  };
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/components/toast.tsx"],
4
- "sourcesContent": ["/**\n * @module Toast\n *\n * Toast notification system built on Sonner. Provides success, error, info, and warning variants.\n *\n * @see {@link https://ui.shadcn.com/docs/components/sonner Shadcn Sonner}\n * @see {@link https://sonner.emilkowal.ski/ Sonner Documentation}\n *\n * @example\n * // Setup: Add Toaster to your app root\n * <Toaster />\n *\n * @example\n * // Show toast notifications\n * toast(\"Default message\");\n * toast.success(\"Operation completed\");\n * toast.error(\"Something went wrong\");\n * toast.info(\"Information\");\n * toast.warning(\"Warning message\");\n *\n * @example\n * // With action button\n * toast(\"Item deleted\", {\n * action: {\n * label: \"Undo\",\n * onClick: () => undoDelete(),\n * },\n * });\n *\n * @example\n * // Loading toast\n * const id = toast.loading(\"Saving...\");\n * // Later: toast.dismiss(id) or toast.success(\"Saved!\", { id });\n */\nimport type React from \"react\";\nimport {\n type ExternalToast,\n Toaster as SonnerToaster,\n toast as sonnerToast,\n} from \"sonner\";\n\ntype ToasterProps = React.ComponentProps<typeof SonnerToaster>;\n\nconst GLOBAL_TOASTER_ID = \"global\";\n\n/**\n * Toast container component. Place once at app root.\n * Positioned bottom-right by default, shows up to 4 toasts.\n */\nconst Toaster: React.FC<ToasterProps> = ({ toastOptions, ...props }) => {\n return (\n <SonnerToaster\n id={GLOBAL_TOASTER_ID}\n position=\"bottom-right\"\n visibleToasts={4}\n {...props}\n toastOptions={{\n ...toastOptions,\n toasterId: GLOBAL_TOASTER_ID,\n unstyled: true,\n classNames: {\n ...toastOptions?.classNames,\n toast:\n \"text-md border-solid border font-sans flex flex-wrap gap-2 items-center rounded-lg shadow p-4 w-[var(--width)] text-pretty\",\n default:\n \"bg-white dark:bg-gray-950 text-black dark:text-white border-0\",\n error: \"!bg-red !text-white border-0\",\n success: \"!bg-green !text-white border-0\",\n actionButton:\n \"border border-solid border-white rounded px-1.5 text-sm text-nowrap cursor-pointer py-1\",\n cancelButton:\n \"rounded px-1.5 text-sm text-nowrap cursor-pointer py-1\",\n content: \"max-w-[calc(100%-2rem)]\",\n icon: \"self-start mt-[.215em]\",\n },\n }}\n />\n );\n};\n\n/**\n * Display toast notifications. Includes success, error, info, warning, loading variants.\n * @example toast(\"Message\") or toast.success(\"Done!\")\n */\nconst toast = ((message: React.ReactNode, options?: ExternalToast) =>\n sonnerToast(message, {\n toasterId: GLOBAL_TOASTER_ID,\n ...options,\n })) as typeof sonnerToast;\n\ntoast.success = (message, options) =>\n sonnerToast.success(message, { toasterId: GLOBAL_TOASTER_ID, ...options });\n\ntoast.error = (message, options) =>\n sonnerToast.error(message, { toasterId: GLOBAL_TOASTER_ID, ...options });\n\ntoast.info = (message, options) =>\n sonnerToast.info(message, { toasterId: GLOBAL_TOASTER_ID, ...options });\n\ntoast.warning = (message, options) =>\n sonnerToast.warning(message, { toasterId: GLOBAL_TOASTER_ID, ...options });\n\ntoast.message = (message, options) =>\n sonnerToast.message(message, { toasterId: GLOBAL_TOASTER_ID, ...options });\n\ntoast.loading = (message, options) =>\n sonnerToast.loading(message, { toasterId: GLOBAL_TOASTER_ID, ...options });\n\ntoast.custom = sonnerToast.custom;\ntoast.promise = sonnerToast.promise;\ntoast.dismiss = sonnerToast.dismiss;\ntoast.getHistory = sonnerToast.getHistory;\ntoast.getToasts = sonnerToast.getToasts;\n\nexport { toast, Toaster, type ToasterProps };\n"],
5
- "mappings": "AAmDI;AAhBJ;AAAA,EAEE,WAAW;AAAA,EACX,SAAS;AAAA,OACJ;AAIP,MAAM,oBAAoB;AAM1B,MAAM,UAAkC,CAAC,EAAE,cAAc,GAAG,MAAM,MAAM;AACtE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,IAAI;AAAA,MACJ,UAAS;AAAA,MACT,eAAe;AAAA,MACd,GAAG;AAAA,MACJ,cAAc;AAAA,QACZ,GAAG;AAAA,QACH,WAAW;AAAA,QACX,UAAU;AAAA,QACV,YAAY;AAAA,UACV,GAAG,cAAc;AAAA,UACjB,OACE;AAAA,UACF,SACE;AAAA,UACF,OAAO;AAAA,UACP,SAAS;AAAA,UACT,cACE;AAAA,UACF,cACE;AAAA,UACF,SAAS;AAAA,UACT,MAAM;AAAA,QACR;AAAA,MACF;AAAA;AAAA,EACF;AAEJ;AAMA,MAAM,QAAS,CAAC,SAA0B,YACxC,YAAY,SAAS;AAAA,EACnB,WAAW;AAAA,EACX,GAAG;AACL,CAAC;AAEH,MAAM,UAAU,CAAC,SAAS,YACxB,YAAY,QAAQ,SAAS,EAAE,WAAW,mBAAmB,GAAG,QAAQ,CAAC;AAE3E,MAAM,QAAQ,CAAC,SAAS,YACtB,YAAY,MAAM,SAAS,EAAE,WAAW,mBAAmB,GAAG,QAAQ,CAAC;AAEzE,MAAM,OAAO,CAAC,SAAS,YACrB,YAAY,KAAK,SAAS,EAAE,WAAW,mBAAmB,GAAG,QAAQ,CAAC;AAExE,MAAM,UAAU,CAAC,SAAS,YACxB,YAAY,QAAQ,SAAS,EAAE,WAAW,mBAAmB,GAAG,QAAQ,CAAC;AAE3E,MAAM,UAAU,CAAC,SAAS,YACxB,YAAY,QAAQ,SAAS,EAAE,WAAW,mBAAmB,GAAG,QAAQ,CAAC;AAE3E,MAAM,UAAU,CAAC,SAAS,YACxB,YAAY,QAAQ,SAAS,EAAE,WAAW,mBAAmB,GAAG,QAAQ,CAAC;AAE3E,MAAM,SAAS,YAAY;AAC3B,MAAM,UAAU,YAAY;AAC5B,MAAM,UAAU,YAAY;AAC5B,MAAM,aAAa,YAAY;AAC/B,MAAM,YAAY,YAAY;",
4
+ "sourcesContent": ["/**\n * @module Toast\n *\n * Toast notification system built on Sonner. Provides success, error, info, and warning variants.\n *\n * @see {@link https://ui.shadcn.com/docs/components/sonner Shadcn Sonner}\n * @see {@link https://sonner.emilkowal.ski/ Sonner Documentation}\n *\n * @example\n * // Setup: Add Toaster to your app root\n * <Toaster />\n *\n * @example\n * // Show toast notifications\n * toast(\"Default message\");\n * toast.success(\"Operation completed\");\n * toast.error(\"Something went wrong\");\n * toast.info(\"Information\");\n * toast.warning(\"Warning message\");\n *\n * @example\n * // With action button\n * toast({\n * title: \"Item deleted\",\n * action: {\n * label: \"Undo\",\n * onClick: () => undoDelete(),\n * },\n * });\n *\n * @example\n * // Promise toast\n * const id = toast.promise(promise, {\n loading: { title: \"Saving document...\" },\n success: (data) => ({\n title: `${data.name} saved successfully!`,\n duration: 10_000,\n }),\n\n error: { title: \"Failed to save document\", duration: 10_000 },\n });\n */\nimport { cva } from \"class-variance-authority\";\nimport type React from \"react\";\nimport type { ReactNode } from \"react\";\nimport {\n type ExternalToast,\n Toaster as SonnerToaster,\n toast as sonnerToast,\n} from \"sonner\";\nimport { Button, type ButtonProps, cn } from \"..\";\nimport { Check, CircleX, InfoIcon, Loader, TriangleAlert, X } from \"../icons\";\n\ntype ToasterProps = React.ComponentProps<typeof SonnerToaster>;\ntype ToastVariant = \"error\" | \"info\" | \"loading\" | \"success\" | \"warning\";\n\nconst GLOBAL_TOASTER_ID = \"global\";\n\ntype GlobalToastAction = {\n label: string;\n onClick: () => void;\n};\n\ntype GlobalToastProps = {\n id: string | number;\n title?: string;\n description?: string;\n variant: ToastVariant;\n action?: GlobalToastAction;\n};\n\nexport interface GlobalToastOptions extends ExternalToast {\n title?: string;\n description?: string;\n action?: GlobalToastAction;\n}\n\nconst GlobalToastTitle = ({\n className,\n children,\n}: {\n className?: string;\n children: ReactNode;\n}) => {\n if (!children) {\n return;\n }\n\n return (\n <div\n className={cn(\n \"line-clamp-1 font-semibold text-black text-sm dark:text-white w-[90%]\",\n className\n )}\n >\n {children}\n </div>\n );\n};\n\nconst GlobalToastDescription = ({ children }: { children: ReactNode }) => {\n if (!children) {\n return;\n }\n\n return (\n <div className=\"line-clamp-2 font-normal text-gray-700 text-sm dark:text-gray-200 \">\n {children}\n </div>\n );\n};\n\nconst globalToastIconVariants = cva(\n \"size-7 flex-shrink-0 rounded-full flex items-center justify-center [&_svg]:size-4\",\n {\n variants: {\n variant: {\n error:\n \"bg-red-50 dark:bg-red-950 [&_svg]:text-red-500 [&_svg]:dark:text-red-400\",\n info: \"bg-gray-100 dark:bg-gray-800 [&_svg]:text-gray-700 [&_svg]:dark:text-gray-200\",\n loading:\n \"bg-gray-100 dark:bg-gray-800 [&_svg]:text-gray-700 [&_svg]:dark:text-gray-200\",\n success:\n \"bg-green-50 dark:bg-green-950 [&_svg]:text-green-500 [&_svg]:dark:text-green-400\",\n warning:\n \"bg-yellow-50 dark:bg-yellow-950 [&_svg]:text-yellow-500 [&_svg]:dark:text-yellow-400\",\n },\n },\n defaultVariants: {\n variant: \"info\",\n },\n }\n);\n\nconst GlobalToastIcon = ({ variant }: { variant: ToastVariant }) => {\n if (variant === \"error\") {\n return (\n <span className={cn(globalToastIconVariants({ variant }))}>\n <CircleX />\n </span>\n );\n }\n\n if (variant === \"info\") {\n return (\n <span className={cn(globalToastIconVariants({ variant }))}>\n <InfoIcon />\n </span>\n );\n }\n\n if (variant === \"loading\") {\n return (\n <span className={cn(globalToastIconVariants({ variant }))}>\n <Loader\n className=\"animate-spin\"\n style={{ animationDuration: \"1.5s\" }}\n />\n </span>\n );\n }\n\n if (variant === \"success\") {\n return (\n <span className={cn(globalToastIconVariants({ variant }))}>\n <Check />\n </span>\n );\n }\n\n if (variant === \"warning\") {\n return (\n <span className={cn(globalToastIconVariants({ variant }))}>\n <TriangleAlert className=\"pb-[1px]\" />\n </span>\n );\n }\n};\n\nconst globalToastLeftBorderVariants = cva(\"absolute top-0 left-0 h-full w-1\", {\n variants: {\n variant: {\n error: \"bg-red-500 dark:bg-red-400\",\n info: \"bg-gray-700 dark:bg-gray-200\",\n loading: \"bg-gray-700 dark:bg-gray-200\",\n success: \"bg-green-500 dark:bg-green-400\",\n warning: \"bg-yellow-500 dark:bg-yellow-400\",\n },\n },\n defaultVariants: {\n variant: \"info\",\n },\n});\n\nconst GlobalToastLeftBorder = ({ variant }: { variant: ToastVariant }) => (\n <div className={cn(globalToastLeftBorderVariants({ variant }))} />\n);\n\nconst GlobalToastDismissButton = ({\n toastId,\n}: {\n toastId: number | string;\n}) => (\n <Button\n className=\"absolute top-1 right-1\"\n onClick={() => sonnerToast.dismiss(toastId)}\n size=\"icon\"\n variant=\"subtle\"\n >\n <X className=\"size-5\" />\n </Button>\n);\n\nconst GlobalToastActionButton = ({ onClick, ...props }: ButtonProps) => (\n <Button onClick={onClick} size=\"sm\" variant=\"light\" {...props} />\n);\n\nexport const GlobalToast = (props: GlobalToastProps) => {\n const { id, title, description, variant, action } = props;\n\n return (\n <div\n className={cn(\n \"flex max-h-24 min-h-16 w-80 md:w-[360px] items-center gap-2 rounded-lg border-1 border-gray-150 border-solid bg-white px-4 py-3 text-black shadow-md dark:border-gray-800 dark:bg-black dark:text-white\",\n \"relative overflow-hidden\"\n )}\n key={id}\n >\n <GlobalToastLeftBorder variant={variant} />\n <GlobalToastIcon variant={variant} />\n <div className=\"flex w-full flex-col gap-0.5\">\n <GlobalToastTitle className={action ? \"w-full\" : \"w-[90%]\"}>\n {title}\n </GlobalToastTitle>\n <GlobalToastDescription>{description}</GlobalToastDescription>\n </div>\n\n {action ? (\n <GlobalToastActionButton onClick={action.onClick}>\n {action.label}\n </GlobalToastActionButton>\n ) : (\n <GlobalToastDismissButton toastId={id} />\n )}\n </div>\n );\n};\n\n/**\n * Toast container component. Place once at app root.\n * Positioned bottom-right by default, shows up to 4 toasts.\n */\nconst Toaster: React.FC<ToasterProps> = ({ toastOptions, ...props }) => (\n <SonnerToaster\n id={GLOBAL_TOASTER_ID}\n position=\"bottom-right\"\n visibleToasts={4}\n {...props}\n />\n);\n\nconst createGlobalToast = (\n variant: ToastVariant,\n options?: GlobalToastOptions\n) =>\n sonnerToast.custom(\n (id) => (\n <GlobalToast\n action={options?.action}\n description={options?.description}\n id={id}\n title={options?.title}\n variant={variant}\n />\n ),\n { toasterId: GLOBAL_TOASTER_ID, ...options }\n );\n\n// Helper method to convert the legacy \"message\" prop to ToastOptions\nconst getToastOptions = (\n args?: GlobalToastOptions | string\n): GlobalToastOptions | undefined => {\n if (typeof args === \"string\") {\n return { title: args };\n }\n\n return args;\n};\n\ntype PromiseToastOptions<T> = {\n loading: GlobalToastOptions;\n success: GlobalToastOptions | ((data: T) => GlobalToastOptions);\n error: GlobalToastOptions | ((error: unknown) => GlobalToastOptions);\n};\n\ntype ToastFunction = {\n (options?: GlobalToastOptions | string): string | number;\n success: (options?: GlobalToastOptions | string) => string | number;\n error: (options?: GlobalToastOptions | string) => string | number;\n info: (options?: GlobalToastOptions | string) => string | number;\n warning: (options?: GlobalToastOptions | string) => string | number;\n loading: (options?: GlobalToastOptions | string) => string | number;\n custom: typeof sonnerToast.custom;\n promise: <T>(\n promise: Promise<T> | (() => Promise<T>),\n options: PromiseToastOptions<T>\n ) => Promise<T>;\n dismiss: typeof sonnerToast.dismiss;\n getHistory: typeof sonnerToast.getHistory;\n getToasts: typeof sonnerToast.getToasts;\n};\n\nconst toast: ToastFunction = (options?: GlobalToastOptions | string) =>\n createGlobalToast(\"info\", getToastOptions(options));\n\ntoast.success = (options?: GlobalToastOptions | string) =>\n createGlobalToast(\"success\", getToastOptions(options));\n\ntoast.error = (options?: GlobalToastOptions | string) =>\n createGlobalToast(\"error\", getToastOptions(options));\n\ntoast.info = (options?: GlobalToastOptions | string) =>\n createGlobalToast(\"info\", getToastOptions(options));\n\ntoast.warning = (options?: GlobalToastOptions | string) =>\n createGlobalToast(\"warning\", getToastOptions(options));\n\ntoast.loading = (options?: GlobalToastOptions | string) =>\n createGlobalToast(\"loading\", getToastOptions(options));\n\ntoast.promise = <T,>(\n promiseOrFn: Promise<T> | (() => Promise<T>),\n states: PromiseToastOptions<T>\n): Promise<T> => {\n const toastId = createGlobalToast(\"loading\", states.loading);\n const promise =\n typeof promiseOrFn === \"function\" ? promiseOrFn() : promiseOrFn;\n\n promise\n .then((data) => {\n const successToastOptions =\n typeof states.success === \"function\"\n ? states.success(data)\n : states.success;\n\n const { title, description, action, ...rest } = successToastOptions || {};\n\n sonnerToast.custom(\n (id) => (\n <GlobalToast\n action={action}\n description={description}\n id={id}\n title={title}\n variant=\"success\"\n />\n ),\n { id: toastId, toasterId: GLOBAL_TOASTER_ID, ...rest }\n );\n })\n .catch((error) => {\n const errorToastOptions =\n typeof states.error === \"function\" ? states.error(error) : states.error;\n\n const { title, description, action, ...rest } = errorToastOptions || {};\n\n sonnerToast.custom(\n (id) => (\n <GlobalToast\n action={action}\n description={description}\n id={id}\n title={title}\n variant=\"error\"\n />\n ),\n { id: toastId, toasterId: GLOBAL_TOASTER_ID, ...rest }\n );\n });\n\n return promise;\n};\n\ntoast.custom = sonnerToast.custom;\ntoast.dismiss = sonnerToast.dismiss;\ntoast.getHistory = sonnerToast.getHistory;\ntoast.getToasts = sonnerToast.getToasts;\n\nexport { Toaster, toast, type ToasterProps };\n"],
5
+ "mappings": "AAyFI,cA6IE,YA7IF;AA/CJ,SAAS,WAAW;AAGpB;AAAA,EAEE,WAAW;AAAA,EACX,SAAS;AAAA,OACJ;AACP,SAAS,QAA0B,UAAU;AAC7C,SAAS,OAAO,SAAS,UAAU,QAAQ,eAAe,SAAS;AAKnE,MAAM,oBAAoB;AAqB1B,MAAM,mBAAmB,CAAC;AAAA,EACxB;AAAA,EACA;AACF,MAGM;AACJ,MAAI,CAAC,UAAU;AACb;AAAA,EACF;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MAEC;AAAA;AAAA,EACH;AAEJ;AAEA,MAAM,yBAAyB,CAAC,EAAE,SAAS,MAA+B;AACxE,MAAI,CAAC,UAAU;AACb;AAAA,EACF;AAEA,SACE,oBAAC,SAAI,WAAU,sEACZ,UACH;AAEJ;AAEA,MAAM,0BAA0B;AAAA,EAC9B;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,OACE;AAAA,QACF,MAAM;AAAA,QACN,SACE;AAAA,QACF,SACE;AAAA,QACF,SACE;AAAA,MACJ;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,SAAS;AAAA,IACX;AAAA,EACF;AACF;AAEA,MAAM,kBAAkB,CAAC,EAAE,QAAQ,MAAiC;AAClE,MAAI,YAAY,SAAS;AACvB,WACE,oBAAC,UAAK,WAAW,GAAG,wBAAwB,EAAE,QAAQ,CAAC,CAAC,GACtD,8BAAC,WAAQ,GACX;AAAA,EAEJ;AAEA,MAAI,YAAY,QAAQ;AACtB,WACE,oBAAC,UAAK,WAAW,GAAG,wBAAwB,EAAE,QAAQ,CAAC,CAAC,GACtD,8BAAC,YAAS,GACZ;AAAA,EAEJ;AAEA,MAAI,YAAY,WAAW;AACzB,WACE,oBAAC,UAAK,WAAW,GAAG,wBAAwB,EAAE,QAAQ,CAAC,CAAC,GACtD;AAAA,MAAC;AAAA;AAAA,QACC,WAAU;AAAA,QACV,OAAO,EAAE,mBAAmB,OAAO;AAAA;AAAA,IACrC,GACF;AAAA,EAEJ;AAEA,MAAI,YAAY,WAAW;AACzB,WACE,oBAAC,UAAK,WAAW,GAAG,wBAAwB,EAAE,QAAQ,CAAC,CAAC,GACtD,8BAAC,SAAM,GACT;AAAA,EAEJ;AAEA,MAAI,YAAY,WAAW;AACzB,WACE,oBAAC,UAAK,WAAW,GAAG,wBAAwB,EAAE,QAAQ,CAAC,CAAC,GACtD,8BAAC,iBAAc,WAAU,YAAW,GACtC;AAAA,EAEJ;AACF;AAEA,MAAM,gCAAgC,IAAI,oCAAoC;AAAA,EAC5E,UAAU;AAAA,IACR,SAAS;AAAA,MACP,OAAO;AAAA,MACP,MAAM;AAAA,MACN,SAAS;AAAA,MACT,SAAS;AAAA,MACT,SAAS;AAAA,IACX;AAAA,EACF;AAAA,EACA,iBAAiB;AAAA,IACf,SAAS;AAAA,EACX;AACF,CAAC;AAED,MAAM,wBAAwB,CAAC,EAAE,QAAQ,MACvC,oBAAC,SAAI,WAAW,GAAG,8BAA8B,EAAE,QAAQ,CAAC,CAAC,GAAG;AAGlE,MAAM,2BAA2B,CAAC;AAAA,EAChC;AACF,MAGE;AAAA,EAAC;AAAA;AAAA,IACC,WAAU;AAAA,IACV,SAAS,MAAM,YAAY,QAAQ,OAAO;AAAA,IAC1C,MAAK;AAAA,IACL,SAAQ;AAAA,IAER,8BAAC,KAAE,WAAU,UAAS;AAAA;AACxB;AAGF,MAAM,0BAA0B,CAAC,EAAE,SAAS,GAAG,MAAM,MACnD,oBAAC,UAAO,SAAkB,MAAK,MAAK,SAAQ,SAAS,GAAG,OAAO;AAG1D,MAAM,cAAc,CAAC,UAA4B;AACtD,QAAM,EAAE,IAAI,OAAO,aAAa,SAAS,OAAO,IAAI;AAEpD,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MAGA;AAAA,4BAAC,yBAAsB,SAAkB;AAAA,QACzC,oBAAC,mBAAgB,SAAkB;AAAA,QACnC,qBAAC,SAAI,WAAU,gCACb;AAAA,8BAAC,oBAAiB,WAAW,SAAS,WAAW,WAC9C,iBACH;AAAA,UACA,oBAAC,0BAAwB,uBAAY;AAAA,WACvC;AAAA,QAEC,SACC,oBAAC,2BAAwB,SAAS,OAAO,SACtC,iBAAO,OACV,IAEA,oBAAC,4BAAyB,SAAS,IAAI;AAAA;AAAA;AAAA,IAhBpC;AAAA,EAkBP;AAEJ;AAMA,MAAM,UAAkC,CAAC,EAAE,cAAc,GAAG,MAAM,MAChE;AAAA,EAAC;AAAA;AAAA,IACC,IAAI;AAAA,IACJ,UAAS;AAAA,IACT,eAAe;AAAA,IACd,GAAG;AAAA;AACN;AAGF,MAAM,oBAAoB,CACxB,SACA,YAEA,YAAY;AAAA,EACV,CAAC,OACC;AAAA,IAAC;AAAA;AAAA,MACC,QAAQ,SAAS;AAAA,MACjB,aAAa,SAAS;AAAA,MACtB;AAAA,MACA,OAAO,SAAS;AAAA,MAChB;AAAA;AAAA,EACF;AAAA,EAEF,EAAE,WAAW,mBAAmB,GAAG,QAAQ;AAC7C;AAGF,MAAM,kBAAkB,CACtB,SACmC;AACnC,MAAI,OAAO,SAAS,UAAU;AAC5B,WAAO,EAAE,OAAO,KAAK;AAAA,EACvB;AAEA,SAAO;AACT;AAyBA,MAAM,QAAuB,CAAC,YAC5B,kBAAkB,QAAQ,gBAAgB,OAAO,CAAC;AAEpD,MAAM,UAAU,CAAC,YACf,kBAAkB,WAAW,gBAAgB,OAAO,CAAC;AAEvD,MAAM,QAAQ,CAAC,YACb,kBAAkB,SAAS,gBAAgB,OAAO,CAAC;AAErD,MAAM,OAAO,CAAC,YACZ,kBAAkB,QAAQ,gBAAgB,OAAO,CAAC;AAEpD,MAAM,UAAU,CAAC,YACf,kBAAkB,WAAW,gBAAgB,OAAO,CAAC;AAEvD,MAAM,UAAU,CAAC,YACf,kBAAkB,WAAW,gBAAgB,OAAO,CAAC;AAEvD,MAAM,UAAU,CACd,aACA,WACe;AACf,QAAM,UAAU,kBAAkB,WAAW,OAAO,OAAO;AAC3D,QAAM,UACJ,OAAO,gBAAgB,aAAa,YAAY,IAAI;AAEtD,UACG,KAAK,CAAC,SAAS;AACd,UAAM,sBACJ,OAAO,OAAO,YAAY,aACtB,OAAO,QAAQ,IAAI,IACnB,OAAO;AAEb,UAAM,EAAE,OAAO,aAAa,QAAQ,GAAG,KAAK,IAAI,uBAAuB,CAAC;AAExE,gBAAY;AAAA,MACV,CAAC,OACC;AAAA,QAAC;AAAA;AAAA,UACC;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA,SAAQ;AAAA;AAAA,MACV;AAAA,MAEF,EAAE,IAAI,SAAS,WAAW,mBAAmB,GAAG,KAAK;AAAA,IACvD;AAAA,EACF,CAAC,EACA,MAAM,CAAC,UAAU;AAChB,UAAM,oBACJ,OAAO,OAAO,UAAU,aAAa,OAAO,MAAM,KAAK,IAAI,OAAO;AAEpE,UAAM,EAAE,OAAO,aAAa,QAAQ,GAAG,KAAK,IAAI,qBAAqB,CAAC;AAEtE,gBAAY;AAAA,MACV,CAAC,OACC;AAAA,QAAC;AAAA;AAAA,UACC;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA,SAAQ;AAAA;AAAA,MACV;AAAA,MAEF,EAAE,IAAI,SAAS,WAAW,mBAAmB,GAAG,KAAK;AAAA,IACvD;AAAA,EACF,CAAC;AAEH,SAAO;AACT;AAEA,MAAM,SAAS,YAAY;AAC3B,MAAM,UAAU,YAAY;AAC5B,MAAM,aAAa,YAAY;AAC/B,MAAM,YAAY,YAAY;",
6
6
  "names": []
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@music-vine/cadence",
3
- "version": "1.0.1",
3
+ "version": "1.1.0",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "sideEffects": false,