@vritti/quantum-ui 0.2.6 → 0.2.7

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 (38) hide show
  1. package/dist/PasswordField.js +1 -14
  2. package/dist/PasswordField.js.map +1 -1
  3. package/dist/Sonner.js +1249 -0
  4. package/dist/Sonner.js.map +1 -0
  5. package/dist/Spinner.js +1 -12
  6. package/dist/Spinner.js.map +1 -1
  7. package/dist/assets/quantum-ui.css +41 -10
  8. package/dist/axios.js +61 -3
  9. package/dist/axios.js.map +1 -1
  10. package/dist/circle-check-big.js +18 -0
  11. package/dist/circle-check-big.js.map +1 -0
  12. package/dist/components/Sonner.js +3 -0
  13. package/dist/components/Sonner.js.map +1 -0
  14. package/dist/index.js +2 -0
  15. package/dist/index.js.map +1 -1
  16. package/dist/lib/components/Sonner/Sonner.d.ts +5 -0
  17. package/dist/lib/components/Sonner/Sonner.d.ts.map +1 -0
  18. package/dist/lib/components/Sonner/index.d.ts +4 -0
  19. package/dist/lib/components/Sonner/index.d.ts.map +1 -0
  20. package/dist/lib/components/Sonner/toast.d.ts +29 -0
  21. package/dist/lib/components/Sonner/toast.d.ts.map +1 -0
  22. package/dist/lib/components/index.d.ts +1 -0
  23. package/dist/lib/components/index.d.ts.map +1 -1
  24. package/dist/lib/utils/axios.d.ts +5 -0
  25. package/dist/lib/utils/axios.d.ts.map +1 -1
  26. package/dist/loader-circle.js +15 -0
  27. package/dist/loader-circle.js.map +1 -0
  28. package/dist/shadcn/index.d.ts +1 -0
  29. package/dist/shadcn/index.d.ts.map +1 -1
  30. package/dist/shadcn/shadcnSonner/index.d.ts +2 -0
  31. package/dist/shadcn/shadcnSonner/index.d.ts.map +1 -0
  32. package/dist/shadcn/shadcnSonner/sonner.d.ts +4 -0
  33. package/dist/shadcn/shadcnSonner/sonner.d.ts.map +1 -0
  34. package/dist/toast.js +72 -0
  35. package/dist/toast.js.map +1 -0
  36. package/dist/utils/axios.js +1 -0
  37. package/dist/utils/axios.js.map +1 -1
  38. package/package.json +11 -5
@@ -0,0 +1,18 @@
1
+ import { c as createLucideIcon } from './createLucideIcon.js';
2
+
3
+ /**
4
+ * @license lucide-react v0.562.0 - ISC
5
+ *
6
+ * This source code is licensed under the ISC license.
7
+ * See the LICENSE file in the root directory of this source tree.
8
+ */
9
+
10
+
11
+ const __iconNode = [
12
+ ["path", { d: "M21.801 10A10 10 0 1 1 17 3.335", key: "yps3ct" }],
13
+ ["path", { d: "m9 11 3 3L22 4", key: "1pflzl" }]
14
+ ];
15
+ const CircleCheckBig = createLucideIcon("circle-check-big", __iconNode);
16
+
17
+ export { CircleCheckBig as C };
18
+ //# sourceMappingURL=circle-check-big.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"circle-check-big.js","sources":["../node_modules/.pnpm/lucide-react@0.562.0_react@19.2.3/node_modules/lucide-react/dist/esm/icons/circle-check-big.js"],"sourcesContent":["/**\n * @license lucide-react v0.562.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M21.801 10A10 10 0 1 1 17 3.335\", key: \"yps3ct\" }],\n [\"path\", { d: \"m9 11 3 3L22 4\", key: \"1pflzl\" }]\n];\nconst CircleCheckBig = createLucideIcon(\"circle-check-big\", __iconNode);\n\nexport { __iconNode, CircleCheckBig as default };\n//# sourceMappingURL=circle-check-big.js.map\n"],"names":[],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;;;AAIA,MAAM,UAAU,GAAG;AACnB,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,iCAAiC,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;AACnE,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,gBAAgB,EAAE,GAAG,EAAE,QAAQ,EAAE;AACjD,CAAC;AACI,MAAC,cAAc,GAAG,gBAAgB,CAAC,kBAAkB,EAAE,UAAU;;;;","x_google_ignoreList":[0]}
@@ -0,0 +1,3 @@
1
+ export { T as Toaster } from '../Sonner.js';
2
+ export { g as generateToastId, t as toast } from '../toast.js';
3
+ //# sourceMappingURL=Sonner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Sonner.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
package/dist/index.js CHANGED
@@ -11,6 +11,8 @@ export { O as OTPField } from './OTPField.js';
11
11
  export { P as PasswordField } from './PasswordField.js';
12
12
  export { P as PhoneField, i as isValidPhoneNumber } from './PhoneField.js';
13
13
  export { S as Skeleton } from './Skeleton.js';
14
+ export { T as Toaster } from './Sonner.js';
15
+ export { g as generateToastId, t as toast } from './toast.js';
14
16
  export { S as Spinner } from './Spinner.js';
15
17
  export { T as TextArea } from './TextArea.js';
16
18
  export { T as TextField } from './TextField.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,5 @@
1
+ import { Toaster as ShadcnToaster } from '../../../shadcn/shadcnSonner';
2
+ type ToasterProps = React.ComponentProps<typeof ShadcnToaster>;
3
+ export declare const Toaster: React.FC<ToasterProps>;
4
+ export {};
5
+ //# sourceMappingURL=Sonner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Sonner.d.ts","sourceRoot":"","sources":["../../../../lib/components/Sonner/Sonner.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAGxE,KAAK,YAAY,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,aAAa,CAAC,CAAC;AAS/D,eAAO,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAgC1C,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { Toaster } from './Sonner';
2
+ export type { PromiseToastOptions, ToastOptions, ToastType } from './toast';
3
+ export { generateToastId, toast } from './toast';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../lib/components/Sonner/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,YAAY,EAAE,mBAAmB,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC"}
@@ -0,0 +1,29 @@
1
+ export declare const TOAST_EVENT = "quantum:toast";
2
+ export type ToastType = 'success' | 'error' | 'warning' | 'info' | 'message' | 'loading';
3
+ export interface ToastOptions {
4
+ description?: string;
5
+ duration?: number;
6
+ id?: string | number;
7
+ }
8
+ export interface PromiseToastOptions<T> {
9
+ loading: string;
10
+ success: string | ((data: T) => string);
11
+ error: string | ((error: unknown) => string);
12
+ finally?: () => void;
13
+ }
14
+ export interface ToastEventDetail {
15
+ type: ToastType;
16
+ message: string;
17
+ options?: ToastOptions;
18
+ }
19
+ export declare function generateToastId(): string;
20
+ export declare const toast: ((message: string, options?: ToastOptions) => void) & {
21
+ success: (message: string, options?: ToastOptions) => void;
22
+ error: (message: string, options?: ToastOptions) => void;
23
+ warning: (message: string, options?: ToastOptions) => void;
24
+ info: (message: string, options?: ToastOptions) => void;
25
+ message: (message: string, options?: ToastOptions) => void;
26
+ loading: (message: string, options?: ToastOptions) => string;
27
+ promise: <T>(promise: Promise<T> | (() => Promise<T>), options: PromiseToastOptions<T>) => Promise<T>;
28
+ };
29
+ //# sourceMappingURL=toast.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toast.d.ts","sourceRoot":"","sources":["../../../../lib/components/Sonner/toast.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,WAAW,kBAAkB,CAAC;AAE3C,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;AAEzF,MAAM,WAAW,YAAY;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,mBAAmB,CAAC,CAAC;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,CAAC,CAAC;IACxC,KAAK,EAAE,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,OAAO,KAAK,MAAM,CAAC,CAAC;IAC7C,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,YAAY,CAAC;CACxB;AAID,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAkCD,eAAO,MAAM,KAAK,aAEN,MAAM,YAAY,YAAY;uBAEnB,MAAM,YAAY,YAAY;qBAChC,MAAM,YAAY,YAAY;uBAC5B,MAAM,YAAY,YAAY;oBACjC,MAAM,YAAY,YAAY;uBAC3B,MAAM,YAAY,YAAY;uBAgB9B,MAAM,YAAY,YAAY,KAAG,MAAM;cAkBhD,CAAC,WAAW,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,mBAAmB,CAAC,CAAC,CAAC,KAAG,OAAO,CAAC,CAAC,CAAC;CAqBtG,CAAC"}
@@ -8,6 +8,7 @@ export * from './OTPField';
8
8
  export * from './PasswordField';
9
9
  export * from './PhoneField';
10
10
  export * from './Skeleton';
11
+ export * from './Sonner';
11
12
  export * from './Spinner';
12
13
  export * from './TextArea';
13
14
  export * from './TextField';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../lib/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../lib/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC"}
@@ -2,6 +2,11 @@ import { AxiosInstance } from 'axios';
2
2
  declare module 'axios' {
3
3
  interface AxiosRequestConfig {
4
4
  public?: boolean;
5
+ showSuccessToast?: boolean;
6
+ showErrorToast?: boolean;
7
+ successMessage?: string;
8
+ loadingMessage?: string;
9
+ _toastId?: string;
5
10
  }
6
11
  }
7
12
  export declare const setToken: (token: string) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"axios.d.ts","sourceRoot":"","sources":["../../../lib/utils/axios.ts"],"names":[],"mappings":"AAAA,OAAc,EAAE,KAAK,aAAa,EAAmC,MAAM,OAAO,CAAC;AAInF,OAAO,QAAQ,OAAO,CAAC;IACrB,UAAiB,kBAAkB;QAEjC,MAAM,CAAC,EAAE,OAAO,CAAC;KAClB;CACF;AAgBD,eAAO,MAAM,QAAQ,GAAI,OAAO,MAAM,KAAG,IAIxC,CAAC;AAEF,eAAO,MAAM,QAAQ,QAAO,MAAM,GAAG,IAAmB,CAAC;AAEzD,eAAO,MAAM,UAAU,QAAO,IAG7B,CAAC;AAMF,eAAO,MAAM,YAAY,GAAI,OAAO,MAAM,KAAG,IAI5C,CAAC;AAEF,eAAO,MAAM,YAAY,QAAO,MAAM,GAAG,IAAiB,CAAC;AAE3D,eAAO,MAAM,cAAc,QAAO,IAEjC,CAAC;AAOF,wBAAsB,YAAY,IAAI,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAoBrF;AAkCD,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CA4B5D;AAED,wBAAgB,kBAAkB,IAAI,IAAI,CAKzC;AA8ED,eAAO,MAAM,KAAK,EAAE,aAAqC,CAAC;AAwD1D,eAAe,KAAK,CAAC"}
1
+ {"version":3,"file":"axios.d.ts","sourceRoot":"","sources":["../../../lib/utils/axios.ts"],"names":[],"mappings":"AAAA,OAAc,EAAmB,KAAK,aAAa,EAAmC,MAAM,OAAO,CAAC;AAKpG,OAAO,QAAQ,OAAO,CAAC;IACrB,UAAiB,kBAAkB;QAEjC,MAAM,CAAC,EAAE,OAAO,CAAC;QAEjB,gBAAgB,CAAC,EAAE,OAAO,CAAC;QAE3B,cAAc,CAAC,EAAE,OAAO,CAAC;QAEzB,cAAc,CAAC,EAAE,MAAM,CAAC;QAExB,cAAc,CAAC,EAAE,MAAM,CAAC;QAExB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB;CACF;AAyBD,eAAO,MAAM,QAAQ,GAAI,OAAO,MAAM,KAAG,IAIxC,CAAC;AAEF,eAAO,MAAM,QAAQ,QAAO,MAAM,GAAG,IAAmB,CAAC;AAEzD,eAAO,MAAM,UAAU,QAAO,IAG7B,CAAC;AAMF,eAAO,MAAM,YAAY,GAAI,OAAO,MAAM,KAAG,IAI5C,CAAC;AAEF,eAAO,MAAM,YAAY,QAAO,MAAM,GAAG,IAAiB,CAAC;AAE3D,eAAO,MAAM,cAAc,QAAO,IAEjC,CAAC;AAOF,wBAAsB,YAAY,IAAI,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAoBrF;AAkCD,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CA4B5D;AAED,wBAAgB,kBAAkB,IAAI,IAAI,CAKzC;AA8ED,eAAO,MAAM,KAAK,EAAE,aAAqC,CAAC;AAoI1D,eAAe,KAAK,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { c as createLucideIcon } from './createLucideIcon.js';
2
+
3
+ /**
4
+ * @license lucide-react v0.562.0 - ISC
5
+ *
6
+ * This source code is licensed under the ISC license.
7
+ * See the LICENSE file in the root directory of this source tree.
8
+ */
9
+
10
+
11
+ const __iconNode = [["path", { d: "M21 12a9 9 0 1 1-6.219-8.56", key: "13zald" }]];
12
+ const LoaderCircle = createLucideIcon("loader-circle", __iconNode);
13
+
14
+ export { LoaderCircle as L };
15
+ //# sourceMappingURL=loader-circle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader-circle.js","sources":["../node_modules/.pnpm/lucide-react@0.562.0_react@19.2.3/node_modules/lucide-react/dist/esm/icons/loader-circle.js"],"sourcesContent":["/**\n * @license lucide-react v0.562.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [[\"path\", { d: \"M21 12a9 9 0 1 1-6.219-8.56\", key: \"13zald\" }]];\nconst LoaderCircle = createLucideIcon(\"loader-circle\", __iconNode);\n\nexport { __iconNode, LoaderCircle as default };\n//# sourceMappingURL=loader-circle.js.map\n"],"names":[],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;;;AAIA,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,6BAA6B,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC;AAC7E,MAAC,YAAY,GAAG,gBAAgB,CAAC,eAAe,EAAE,UAAU;;;;","x_google_ignoreList":[0]}
@@ -11,5 +11,6 @@ export * from './shadcnSheet';
11
11
  export * from './shadcnSkeleton';
12
12
  export * from './shadcnTable';
13
13
  export * from './shadcnTooltip';
14
+ export * from './shadcnSonner';
14
15
  export { cn } from './utils';
15
16
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../shadcn/index.ts"],"names":[],"mappings":"AACA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAGhC,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../shadcn/index.ts"],"names":[],"mappings":"AACA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAG/B,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { Toaster } from './sonner';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../shadcn/shadcnSonner/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { ToasterProps } from 'sonner';
2
+ declare const Toaster: ({ ...props }: ToasterProps) => import("react/jsx-runtime").JSX.Element;
3
+ export { Toaster };
4
+ //# sourceMappingURL=sonner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sonner.d.ts","sourceRoot":"","sources":["../../../shadcn/shadcnSonner/sonner.tsx"],"names":[],"mappings":"AACA,OAAO,EAAqB,KAAK,YAAY,EAAE,MAAM,QAAQ,CAAC;AAE9D,QAAA,MAAM,OAAO,GAAI,cAAc,YAAY,4CAsB1C,CAAC;AAEF,OAAO,EAAE,OAAO,EAAE,CAAC"}
package/dist/toast.js ADDED
@@ -0,0 +1,72 @@
1
+ const TOAST_EVENT = "quantum:toast";
2
+ let toastIdCounter = 0;
3
+ function generateToastId() {
4
+ return `quantum-toast-${Date.now()}-${++toastIdCounter}`;
5
+ }
6
+ function emitToast(type, message, options) {
7
+ if (typeof window === "undefined") return;
8
+ const event = new CustomEvent(TOAST_EVENT, {
9
+ detail: { type, message, options }
10
+ });
11
+ window.dispatchEvent(event);
12
+ }
13
+ const toast = Object.assign(
14
+ // Default toast (message type)
15
+ (message, options) => emitToast("message", message, options),
16
+ {
17
+ success: (message, options) => emitToast("success", message, options),
18
+ error: (message, options) => emitToast("error", message, options),
19
+ warning: (message, options) => emitToast("warning", message, options),
20
+ info: (message, options) => emitToast("info", message, options),
21
+ message: (message, options) => emitToast("message", message, options),
22
+ /**
23
+ * Show loading toast, returns ID for manual updates
24
+ *
25
+ * @example
26
+ * ```typescript
27
+ * const id = toast.loading('Uploading...');
28
+ * try {
29
+ * await uploadFile();
30
+ * toast.success('Uploaded!', { id });
31
+ * } catch {
32
+ * toast.error('Failed', { id });
33
+ * }
34
+ * ```
35
+ */
36
+ loading: (message, options) => {
37
+ const id = options?.id?.toString() ?? generateToastId();
38
+ emitToast("loading", message, { ...options, id });
39
+ return id;
40
+ },
41
+ /**
42
+ * Auto-handle loading → success/error for a promise
43
+ *
44
+ * @example
45
+ * ```typescript
46
+ * toast.promise(fetchData(), {
47
+ * loading: 'Fetching...',
48
+ * success: (data) => `Loaded ${data.count} items`,
49
+ * error: 'Failed to load',
50
+ * });
51
+ * ```
52
+ */
53
+ promise: (promise, options) => {
54
+ const id = generateToastId();
55
+ emitToast("loading", options.loading, { id });
56
+ const p = typeof promise === "function" ? promise() : promise;
57
+ p.then((data) => {
58
+ const message = typeof options.success === "function" ? options.success(data) : options.success;
59
+ emitToast("success", message, { id });
60
+ }).catch((error) => {
61
+ const message = typeof options.error === "function" ? options.error(error) : options.error;
62
+ emitToast("error", message, { id });
63
+ }).finally(() => {
64
+ options.finally?.();
65
+ });
66
+ return p;
67
+ }
68
+ }
69
+ );
70
+
71
+ export { TOAST_EVENT as T, generateToastId as g, toast as t };
72
+ //# sourceMappingURL=toast.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toast.js","sources":["../lib/components/Sonner/toast.ts"],"sourcesContent":["/**\n * Global toast event system for Module Federation compatibility.\n *\n * This module provides a toast API that works across micro-frontends by using\n * custom DOM events instead of direct sonner calls. The Toaster component\n * listens for these events and displays the toasts.\n */\n\nexport const TOAST_EVENT = 'quantum:toast';\n\nexport type ToastType = 'success' | 'error' | 'warning' | 'info' | 'message' | 'loading';\n\nexport interface ToastOptions {\n description?: string;\n duration?: number;\n id?: string | number;\n}\n\nexport interface PromiseToastOptions<T> {\n loading: string;\n success: string | ((data: T) => string);\n error: string | ((error: unknown) => string);\n finally?: () => void;\n}\n\nexport interface ToastEventDetail {\n type: ToastType;\n message: string;\n options?: ToastOptions;\n}\n\n// Generate unique toast ID\nlet toastIdCounter = 0;\nexport function generateToastId(): string {\n return `quantum-toast-${Date.now()}-${++toastIdCounter}`;\n}\n\nfunction emitToast(type: ToastType, message: string, options?: ToastOptions): void {\n if (typeof window === 'undefined') return;\n\n const event = new CustomEvent<ToastEventDetail>(TOAST_EVENT, {\n detail: { type, message, options },\n });\n window.dispatchEvent(event);\n}\n\n/**\n * Toast API that works across Module Federation boundaries.\n *\n * @example\n * ```typescript\n * import { toast } from '@vritti/quantum-ui/Sonner';\n *\n * toast.success('Operation completed!');\n * toast.error('Something went wrong', { description: 'Please try again.' });\n * toast('Hello world'); // Default message toast\n *\n * // Loading toast with manual control\n * const id = toast.loading('Uploading...');\n * toast.success('Done!', { id }); // Updates the loading toast\n *\n * // Auto-handle promise states\n * toast.promise(asyncOperation(), {\n * loading: 'Processing...',\n * success: 'Done!',\n * error: 'Failed',\n * });\n * ```\n */\nexport const toast = Object.assign(\n // Default toast (message type)\n (message: string, options?: ToastOptions) => emitToast('message', message, options),\n {\n success: (message: string, options?: ToastOptions) => emitToast('success', message, options),\n error: (message: string, options?: ToastOptions) => emitToast('error', message, options),\n warning: (message: string, options?: ToastOptions) => emitToast('warning', message, options),\n info: (message: string, options?: ToastOptions) => emitToast('info', message, options),\n message: (message: string, options?: ToastOptions) => emitToast('message', message, options),\n\n /**\n * Show loading toast, returns ID for manual updates\n *\n * @example\n * ```typescript\n * const id = toast.loading('Uploading...');\n * try {\n * await uploadFile();\n * toast.success('Uploaded!', { id });\n * } catch {\n * toast.error('Failed', { id });\n * }\n * ```\n */\n loading: (message: string, options?: ToastOptions): string => {\n const id = options?.id?.toString() ?? generateToastId();\n emitToast('loading', message, { ...options, id });\n return id;\n },\n\n /**\n * Auto-handle loading → success/error for a promise\n *\n * @example\n * ```typescript\n * toast.promise(fetchData(), {\n * loading: 'Fetching...',\n * success: (data) => `Loaded ${data.count} items`,\n * error: 'Failed to load',\n * });\n * ```\n */\n promise: <T>(promise: Promise<T> | (() => Promise<T>), options: PromiseToastOptions<T>): Promise<T> => {\n const id = generateToastId();\n emitToast('loading', options.loading, { id });\n\n const p = typeof promise === 'function' ? promise() : promise;\n\n p.then((data) => {\n const message = typeof options.success === 'function' ? options.success(data) : options.success;\n emitToast('success', message, { id });\n })\n .catch((error) => {\n const message = typeof options.error === 'function' ? options.error(error) : options.error;\n emitToast('error', message, { id });\n })\n .finally(() => {\n options.finally?.();\n });\n\n return p;\n },\n },\n);\n"],"names":[],"mappings":"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"}
@@ -1,2 +1,3 @@
1
1
  export { a as axios, b as cancelTokenRefresh, e as clearCsrfToken, f as clearToken, a as default, h as getCsrfToken, i as getToken, j as recoverToken, s as scheduleTokenRefresh, k as setCsrfToken, l as setToken } from '../axios.js';
2
+ import '../toast.js';
2
3
  //# sourceMappingURL=axios.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"axios.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
1
+ {"version":3,"file":"axios.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
package/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "publishConfig": {
6
6
  "access": "public"
7
7
  },
8
- "version": "0.2.6",
8
+ "version": "0.2.7",
9
9
  "type": "module",
10
10
  "sideEffects": false,
11
11
  "repository": {
@@ -92,6 +92,10 @@
92
92
  "types": "./dist/lib/components/Skeleton/index.d.ts",
93
93
  "import": "./dist/components/Skeleton.js"
94
94
  },
95
+ "./Sonner": {
96
+ "types": "./dist/lib/components/Sonner/index.d.ts",
97
+ "import": "./dist/components/Sonner.js"
98
+ },
95
99
  "./Spinner": {
96
100
  "types": "./dist/lib/components/Spinner/index.d.ts",
97
101
  "import": "./dist/components/Spinner.js"
@@ -122,9 +126,10 @@
122
126
  },
123
127
  "devDependencies": {
124
128
  "@biomejs/biome": "2.3.11",
125
- "@storybook/addon-docs": "10.1.11",
126
- "@storybook/addon-themes": "^10.1.11",
127
- "@storybook/react-vite": "10.1.11",
129
+ "@storybook/addon-docs": "10.2.0",
130
+ "@storybook/addon-themes": "10.2.0",
131
+ "@storybook/react": "10.2.0",
132
+ "@storybook/react-vite": "10.2.0",
128
133
  "@tailwindcss/postcss": "^4.1.18",
129
134
  "@tanstack/react-query": "^5.90.19",
130
135
  "@types/node": "^25.0.9",
@@ -136,7 +141,7 @@
136
141
  "react": "19.2.3",
137
142
  "react-dom": "19.2.3",
138
143
  "react-router-dom": "^7.12.0",
139
- "storybook": "10.1.11",
144
+ "storybook": "10.2.0",
140
145
  "tailwindcss": "^4.1.18",
141
146
  "tw-animate-css": "^1.4.0",
142
147
  "typescript": "~5.9.3",
@@ -164,6 +169,7 @@
164
169
  "react-day-picker": "^9.13.0",
165
170
  "react-hook-form": "^7.71.1",
166
171
  "react-phone-number-input": "^3.4.14",
172
+ "sonner": "^2.0.7",
167
173
  "tailwind-merge": "^3.4.0",
168
174
  "zod": "^4.3.5"
169
175
  },