@soft-toast/vue 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 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,GAAG,EAAE,MAAM,KAAK,CAAA;AAC5C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAEjD,OAAO,oBAAoB,CAAA;AAwB3B,eAAO,MAAM,eAAe;iBACb,GAAG,YAAW,kBAAkB;CAqD9C,CAAA;AAGD,eAAO,MAAM,eAAe,0BAAsB,CAAA"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,GAAG,EAAE,MAAM,KAAK,CAAA;AAC5C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAEjD,OAAO,oBAAoB,CAAA;AAyB3B,eAAO,MAAM,eAAe;iBACb,GAAG,YAAW,kBAAkB;CAsD9C,CAAA;AAGD,eAAO,MAAM,eAAe,0BAAsB,CAAA"}
@@ -17,7 +17,7 @@ export interface ToastStore {
17
17
  warning: (title: string, options?: Omit<ToastOptions, 'type' | 'title'>) => string;
18
18
  info: (title: string, options?: Omit<ToastOptions, 'type' | 'title'>) => string;
19
19
  loading: (title: string, options?: Omit<ToastOptions, 'type' | 'title'>) => string;
20
- promise: <T>(promiseFn: Promise<T>, messages: ToastPromiseMessages, options?: Omit<ToastOptions, 'type' | 'promise' | 'promiseMessages'>) => Promise<T>;
20
+ promise: <T>(promiseFn: Promise<T>, messages: ToastPromiseMessages<T>, options?: Omit<ToastOptions, 'type' | 'promise' | 'promiseMessages'>) => Promise<T>;
21
21
  clearAll: () => void;
22
22
  remove: (id: string) => void;
23
23
  }
@@ -1 +1 @@
1
- {"version":3,"file":"toastStore.d.ts","sourceRoot":"","sources":["../../src/stores/toastStore.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;AAsPnG,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,KAAK,CAAA;AAEtC,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,WAAW,CAAC,KAAK,EAAE,CAAC,CAAA;IAC5B,mBAAmB,EAAE,CAAC,QAAQ,EAAE,aAAa,KAAK,WAAW,CAAC,KAAK,EAAE,CAAC,CAAA;IACtE,GAAG,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,MAAM,CAAA;IACtC,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,KAAK,IAAI,CAAA;IAC5D,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG;QAAE,IAAI,CAAC,EAAE,SAAS,GAAG,SAAS,EAAE,CAAA;KAAE,KAAK,IAAI,CAAA;IACnE,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IAC3B,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IAC5B,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IAC5B,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IAC9B,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,MAAM,CAAA;IAClF,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,MAAM,CAAA;IAChF,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,MAAM,CAAA;IAClF,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,MAAM,CAAA;IAC/E,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,MAAM,CAAA;IAClF,OAAO,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,oBAAoB,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,GAAG,iBAAiB,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAA;IACvJ,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;CAC7B;AAED,eAAO,MAAM,UAAU,EAAE,UAkBxB,CAAA"}
1
+ {"version":3,"file":"toastStore.d.ts","sourceRoot":"","sources":["../../src/stores/toastStore.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;AAwSnG,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,KAAK,CAAA;AAEtC,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,WAAW,CAAC,KAAK,EAAE,CAAC,CAAA;IAC5B,mBAAmB,EAAE,CAAC,QAAQ,EAAE,aAAa,KAAK,WAAW,CAAC,KAAK,EAAE,CAAC,CAAA;IACtE,GAAG,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,MAAM,CAAA;IACtC,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,KAAK,IAAI,CAAA;IAC5D,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG;QAAE,IAAI,CAAC,EAAE,SAAS,GAAG,SAAS,EAAE,CAAA;KAAE,KAAK,IAAI,CAAA;IACnE,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IAC3B,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IAC5B,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IAC5B,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IAC9B,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,MAAM,CAAA;IAClF,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,MAAM,CAAA;IAChF,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,MAAM,CAAA;IAClF,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,MAAM,CAAA;IAC/E,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,MAAM,CAAA;IAClF,OAAO,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,oBAAoB,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,GAAG,iBAAiB,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAA;IAC1J,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;CAC7B;AAED,eAAO,MAAM,UAAU,EAAE,UAkBxB,CAAA"}
package/dist/style.css CHANGED
@@ -1 +1 @@
1
- .soft-toast-stack[data-v-3699e296]{position:relative;pointer-events:auto;padding-top:32px;padding-bottom:32px;margin-top:-32px;margin-bottom:-32px;width:100%;max-width:100%;display:flex;flex-direction:column}.soft-toast-list[data-v-3699e296]{position:relative;width:100%;flex-shrink:0}.soft-toast-stack[data-direction=up] .soft-toast-list[data-v-3699e296]{margin-top:auto}.soft-toast-stack[data-direction=down] .soft-toast-list[data-v-3699e296]{margin-bottom:auto}.soft-toast-list[data-v-3699e296]>.soft-toast-item{position:absolute;width:100%}.soft-toast-container[data-position$=left] .soft-toast-list[data-v-3699e296]>.soft-toast-item{left:0;right:auto}.soft-toast-container[data-position$=right] .soft-toast-list[data-v-3699e296]>.soft-toast-item{right:0;left:auto}.soft-toast-container[data-position$=center] .soft-toast-list[data-v-3699e296]>.soft-toast-item{left:50%;transform:translate(-50%)}.soft-toast-stack[data-direction=down][data-v-3699e296] .soft-toast-list>.soft-toast-item{top:0;bottom:auto}.soft-toast-stack[data-direction=up][data-v-3699e296] .soft-toast-list>.soft-toast-item{top:auto;bottom:0}:root{--st-bg-default: #ffffff;--st-bg-success: #dcfce7;--st-bg-error: #fee2e2;--st-bg-warning: #fef3c7;--st-bg-info: #dbeafe;--st-text-default: #1f2937;--st-text-success: #166534;--st-text-error: #991b1b;--st-text-warning: #92400e;--st-text-info: #1e40af;--st-border-default: #e5e7eb;--st-border-success: #86efac;--st-border-error: #fca5a5;--st-border-warning: #fcd34d;--st-border-info: #93c5fd;--st-icon-success: #22c55e;--st-icon-error: #ef4444;--st-icon-warning: #f59e0b;--st-icon-info: #3b82f6;--st-shadow-sm: 0 1px 2px 0 rgb(0 0 0 / .05);--st-shadow-md: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--st-shadow-lg: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--st-shadow-glow: 0 0 20px rgb(0 0 0 / .05);--st-toast-min-width: 320px;--st-toast-max-width: 420px;--st-toast-padding: 16px;--st-toast-gap: 12px;--st-border-radius: 9999px;--st-border-radius-blob: 24px;--st-font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--st-font-size-sm: 12px;--st-font-size-base: 14px;--st-font-size-lg: 16px;--st-font-weight-normal: 400;--st-font-weight-medium: 500;--st-font-weight-semibold: 600;--st-transition-fast: .15s;--st-transition-base: .3s;--st-transition-slow: .5s;--st-z-index: 9999}[data-soft-toast-theme=dark]{--st-bg-default: #1f2937;--st-bg-success: #14532d;--st-bg-error: #7f1d1d;--st-bg-warning: #713f12;--st-bg-info: #1e3a8a;--st-text-default: #f9fafb;--st-text-success: #86efac;--st-text-error: #fca5a5;--st-text-warning: #fcd34d;--st-text-info: #93c5fd;--st-border-default: #374151;--st-border-success: #166534;--st-border-error: #991b1b;--st-border-warning: #92400e;--st-border-info: #1e40af;--st-shadow-sm: 0 1px 2px 0 rgb(0 0 0 / .3);--st-shadow-md: 0 4px 6px -1px rgb(0 0 0 / .4), 0 2px 4px -2px rgb(0 0 0 / .3);--st-shadow-lg: 0 10px 15px -3px rgb(0 0 0 / .4), 0 4px 6px -4px rgb(0 0 0 / .3);--st-shadow-glow: 0 0 30px rgb(0 0 0 / .3)}.soft-toast-container{position:fixed;z-index:var(--st-z-index);pointer-events:none;display:flex;flex-direction:column;gap:10px;width:min(var(--st-width, 356px),calc(100vw - 64px));max-width:calc(100vw - 64px)}.soft-toast-container[data-position=top-left]{top:32px;left:32px}.soft-toast-container[data-position=top-center]{top:32px;left:50%;transform:translate(-50%)}.soft-toast-container[data-position=top-right]{top:32px;right:32px}.soft-toast-container[data-position=bottom-left]{bottom:32px;left:32px}.soft-toast-container[data-position=bottom-center]{bottom:32px;left:50%;transform:translate(-50%)}.soft-toast-container[data-position=bottom-right]{bottom:32px;right:32px}.soft-toast-container[data-position=top]{top:32px;left:50%;transform:translate(-50%)}.soft-toast-container[data-position=bottom]{bottom:32px;left:50%;transform:translate(-50%)}.soft-toast-container[data-position=left]{top:50%;left:32px;transform:translateY(-50%)}.soft-toast-container[data-position=right]{top:50%;right:32px;transform:translateY(-50%)}.soft-toast-container[data-position=center]{top:50%;left:50%;transform:translate(-50%,-50%)}.soft-toast-item{pointer-events:auto;position:relative;box-sizing:border-box;width:100%;min-width:260px;max-width:360px;padding:12px 16px;border-radius:18px;font-family:var(--st-font-family);font-size:13.5px;line-height:1.45;cursor:default;-webkit-user-select:none;user-select:none;will-change:transform,opacity;touch-action:pan-y;background:#fffffffa;border:1px solid rgba(226,232,240,.8);box-shadow:0 10px 30px -5px #00000014,inset 0 1px #fff}.soft-toast-item--swipeable{cursor:grab}.soft-toast-item--swipeable:active{cursor:grabbing}.soft-toast-container[data-position=top-left] .soft-toast-item,.soft-toast-container[data-position=left] .soft-toast-item{border-top-left-radius:4px}.soft-toast-container[data-position=bottom-left] .soft-toast-item{border-bottom-left-radius:4px}.soft-toast-container[data-position=top-right] .soft-toast-item,.soft-toast-container[data-position=right] .soft-toast-item{border-top-right-radius:4px}.soft-toast-container[data-position=bottom-right] .soft-toast-item{border-bottom-right-radius:4px}.soft-toast-item[data-type=default]{--st-accent: #9ca3af;--st-icon-color: #64748b}.soft-toast-item[data-type=success]{--st-accent: #34d399;--st-icon-color: #059669}.soft-toast-item[data-type=error]{--st-accent: #fb7185;--st-icon-color: #e11d48}.soft-toast-item[data-type=warning]{--st-accent: #fbbf24;--st-icon-color: #d97706}.soft-toast-item[data-type=info]{--st-accent: #60a5fa;--st-icon-color: #3b82f6}.soft-toast-item[data-type=promise]{--st-accent: #a78bfa;--st-icon-color: #7c3aed}.soft-toast-content{display:flex;align-items:flex-start;gap:11px}.soft-toast-icon{flex-shrink:0;width:24px;height:24px;margin-top:1px;display:flex;align-items:center;justify-content:center;color:var(--st-icon-color, #64748b)}.soft-toast-icon svg,.soft-toast-icon .iconify,.soft-toast-icon-svg{display:block;flex:none;width:18px!important;height:18px!important;max-width:18px;max-height:18px;filter:drop-shadow(0 1px 2px rgba(0,0,0,.12))}.soft-toast-item[data-type=promise] .soft-toast-icon-svg{animation:st-spin .8s linear infinite}.soft-toast-spinner{width:18px;height:18px;border:2px solid rgba(139,92,246,.2);border-top-color:#8b5cf6;border-radius:50%;animation:st-spin .7s linear infinite}@keyframes st-spin{to{transform:rotate(360deg)}}.soft-toast-body{flex:1;min-width:0}.soft-toast-header-row{display:flex;align-items:center;gap:12px}.soft-toast-title{font-weight:600;font-size:14px;color:#111827;margin:0;line-height:1.4;letter-spacing:-.01em;padding-right:4px}.soft-toast-title--has-close{padding-right:24px}.soft-toast-description{font-size:13.5px;font-weight:400;color:#4b5563;margin:4px 0 0;line-height:1.5;max-height:120px;overflow-y:auto;padding-right:4px}.soft-toast-description::-webkit-scrollbar{width:4px}.soft-toast-description::-webkit-scrollbar-track{background:transparent}.soft-toast-description::-webkit-scrollbar-thumb{background:#0000001a;border-radius:4px}.soft-toast-description::-webkit-scrollbar-thumb:hover{background:#0003}.soft-toast-timestamp{display:inline-block;font-size:11px;color:#9ca3af;letter-spacing:.01em;white-space:nowrap;margin-top:6px}.soft-toast-action{display:flex;gap:8px;margin-top:12px}.soft-toast-action-button{flex:1;width:100%;padding:8px 16px;border-radius:12px;background:color-mix(in srgb,var(--st-accent) 15%,transparent);color:var(--st-icon-color);border:none;font-size:13.5px;font-weight:600;cursor:pointer;font-family:inherit;transition:all .18s ease;letter-spacing:.01em;text-align:center}.soft-toast-action-button:hover{background:color-mix(in srgb,var(--st-accent) 25%,transparent);transform:scale(1.02)}.soft-toast-action-button:active{transform:scale(.98)}.soft-toast-action-primary{background:var(--st-icon-color);color:#fff}.soft-toast-action-primary:hover{background:color-mix(in srgb,var(--st-icon-color) 85%,#000)}.soft-toast-close{position:absolute;top:10px;right:10px;width:22px;height:22px;border-radius:50%;border:none;background:#0000000a;color:#9ca3af;cursor:pointer;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .18s ease,background .18s ease,color .18s ease,transform .18s ease;padding:0}.soft-toast-close:hover{background:#0000001a;color:#374151;transform:scale(1.1)}.soft-toast-item:hover .soft-toast-close{opacity:1}.soft-toast-close[data-position=top-left]{right:auto;left:10px}.st-close-line-1,.st-close-line-2{transition:transform .3s cubic-bezier(.4,0,.2,1),opacity .3s ease;transform-origin:center}.soft-toast-close:hover .st-close-line-1{transform:rotate(-45deg)}.soft-toast-close:hover .st-close-line-2{transform:rotate(45deg) scaleX(0);opacity:0}.soft-toast-progress{position:absolute;top:0;left:0;right:0;bottom:0;height:100%;background:transparent;z-index:0;pointer-events:none;border-radius:inherit;overflow:hidden}.soft-toast-progress-bar{height:100%;background:var(--st-accent);opacity:.12;transform-origin:left}[data-soft-toast-theme=dark] .soft-toast-item{background:#1c1c1e;border-color:#ffffff14;box-shadow:0 4px 24px -4px #00000080,0 1px 4px #0000004d}[data-soft-toast-theme=dark] .soft-toast-title{color:#f9fafb}[data-soft-toast-theme=dark] .soft-toast-description{color:#9ca3af}[data-soft-toast-theme=dark] .soft-toast-timestamp{color:#6b7280}[data-soft-toast-theme=dark] .soft-toast-item[data-type]{background:#1c1c1e;border-color:#ffffff14}[data-soft-toast-dir=rtl] .soft-toast-item:before{left:auto;right:0;border-radius:4px 0 0 4px}[data-soft-toast-dir=rtl] .soft-toast-content{flex-direction:row-reverse;padding-left:0;padding-right:10px}[data-soft-toast-dir=rtl] .soft-toast-body{align-items:flex-end;text-align:right}[data-soft-toast-dir=rtl] .soft-toast-close{right:auto;left:10px}@media (max-width: 640px){.soft-toast-container{left:12px!important;right:12px!important;width:auto;max-width:none;transform:none!important;align-items:stretch!important}.soft-toast-container[data-position^=top]{top:12px}.soft-toast-container[data-position^=bottom]{bottom:12px}.soft-toast-item{min-width:auto;max-width:none}.soft-toast-close{opacity:1}}@media (prefers-reduced-motion: reduce){.soft-toast-item,.soft-toast-action-button,.soft-toast-close,.soft-toast-spinner{transition:none!important;animation:none!important}}
1
+ .soft-toast-stack[data-v-ad802395]{position:relative;pointer-events:auto;padding-top:32px;padding-bottom:32px;margin-top:-32px;margin-bottom:-32px;width:100%;max-width:100%;display:flex;flex-direction:column;touch-action:manipulation}.soft-toast-container[data-expanded=true] .soft-toast-stack[data-v-ad802395]{touch-action:none}.soft-toast-list[data-v-ad802395]{position:relative;width:100%;flex-shrink:0}.soft-toast-stack[data-direction=up] .soft-toast-list[data-v-ad802395]{margin-top:auto}.soft-toast-stack[data-direction=down] .soft-toast-list[data-v-ad802395]{margin-bottom:auto}.soft-toast-list[data-v-ad802395]>.soft-toast-item{position:absolute;width:100%}.soft-toast-container[data-position$=left] .soft-toast-list[data-v-ad802395]>.soft-toast-item{left:0;right:auto}.soft-toast-container[data-position$=right] .soft-toast-list[data-v-ad802395]>.soft-toast-item{right:0;left:auto}.soft-toast-stack[data-direction=down][data-v-ad802395] .soft-toast-list>.soft-toast-item{top:0;bottom:auto}.soft-toast-stack[data-direction=up][data-v-ad802395] .soft-toast-list>.soft-toast-item{top:auto;bottom:0}:root{--st-bg-default: #ffffff;--st-bg-success: #dcfce7;--st-bg-error: #fee2e2;--st-bg-warning: #fef3c7;--st-bg-info: #dbeafe;--st-text-default: #1f2937;--st-text-success: #166534;--st-text-error: #991b1b;--st-text-warning: #92400e;--st-text-info: #1e40af;--st-border-default: #e5e7eb;--st-border-success: #86efac;--st-border-error: #fca5a5;--st-border-warning: #fcd34d;--st-border-info: #93c5fd;--st-icon-success: #22c55e;--st-icon-error: #ef4444;--st-icon-warning: #f59e0b;--st-icon-info: #3b82f6;--st-shadow-sm: 0 1px 2px 0 rgb(0 0 0 / .05);--st-shadow-md: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--st-shadow-lg: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--st-shadow-glow: 0 0 20px rgb(0 0 0 / .05);--st-toast-min-width: 320px;--st-toast-max-width: 420px;--st-toast-padding: 16px;--st-toast-gap: 12px;--st-border-radius: 9999px;--st-border-radius-blob: 24px;--st-font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--st-font-size-sm: 12px;--st-font-size-base: 14px;--st-font-size-lg: 16px;--st-font-weight-normal: 400;--st-font-weight-medium: 500;--st-font-weight-semibold: 600;--st-transition-fast: .15s;--st-transition-base: .3s;--st-transition-slow: .5s;--st-z-index: 9999}[data-soft-toast-theme=dark]{--st-bg-default: #1f2937;--st-bg-success: #14532d;--st-bg-error: #7f1d1d;--st-bg-warning: #713f12;--st-bg-info: #1e3a8a;--st-text-default: #f9fafb;--st-text-success: #86efac;--st-text-error: #fca5a5;--st-text-warning: #fcd34d;--st-text-info: #93c5fd;--st-border-default: #374151;--st-border-success: #166534;--st-border-error: #991b1b;--st-border-warning: #92400e;--st-border-info: #1e40af;--st-shadow-sm: 0 1px 2px 0 rgb(0 0 0 / .3);--st-shadow-md: 0 4px 6px -1px rgb(0 0 0 / .4), 0 2px 4px -2px rgb(0 0 0 / .3);--st-shadow-lg: 0 10px 15px -3px rgb(0 0 0 / .4), 0 4px 6px -4px rgb(0 0 0 / .3);--st-shadow-glow: 0 0 30px rgb(0 0 0 / .3)}.soft-toast-container{position:fixed;z-index:var(--st-z-index);pointer-events:none;display:flex;flex-direction:column;gap:10px;width:min(var(--st-width, 356px),calc(100vw - 64px));max-width:calc(100vw - 64px)}.soft-toast-container[data-position=top-left]{top:32px;left:32px}.soft-toast-container[data-position=top-center]{top:32px;left:50%;transform:translate(-50%)}.soft-toast-container[data-position=top-right]{top:32px;right:32px}.soft-toast-container[data-position=bottom-left]{bottom:32px;left:32px}.soft-toast-container[data-position=bottom-center]{bottom:32px;left:50%;transform:translate(-50%)}.soft-toast-container[data-position=bottom-right]{bottom:32px;right:32px}.soft-toast-container[data-position=top]{top:32px;left:50%;transform:translate(-50%)}.soft-toast-container[data-position=bottom]{bottom:32px;left:50%;transform:translate(-50%)}.soft-toast-container[data-position=left]{top:50%;left:32px;transform:translateY(-50%)}.soft-toast-container[data-position=right]{top:50%;right:32px;transform:translateY(-50%)}.soft-toast-item{pointer-events:auto;position:relative;box-sizing:border-box;width:100%;min-width:260px;max-width:360px;padding:12px 16px;border-radius:18px;font-family:var(--st-font-family);font-size:13.5px;line-height:1.45;cursor:default;-webkit-user-select:none;user-select:none;touch-action:pan-y;background:#fffffffa;border:1px solid rgba(226,232,240,.8);box-shadow:0 10px 30px -5px #00000014,inset 0 1px #fff}.soft-toast-item[data-interactive=false],.soft-toast-item[data-leaving=true]{pointer-events:none;touch-action:none}.soft-toast-item--swipeable{cursor:grab;touch-action:none}.soft-toast-item--swipeable:active{cursor:grabbing}.soft-toast-container[data-position=top-left] .soft-toast-item,.soft-toast-container[data-position=left] .soft-toast-item{border-top-left-radius:4px}.soft-toast-container[data-position=bottom-left] .soft-toast-item{border-bottom-left-radius:4px}.soft-toast-container[data-position=top-right] .soft-toast-item,.soft-toast-container[data-position=right] .soft-toast-item{border-top-right-radius:4px}.soft-toast-container[data-position=bottom-right] .soft-toast-item{border-bottom-right-radius:4px}.soft-toast-item[data-type=default]{--st-accent: #9ca3af;--st-icon-color: #64748b}.soft-toast-item[data-type=success]{--st-accent: #34d399;--st-icon-color: #059669}.soft-toast-item[data-type=error]{--st-accent: #fb7185;--st-icon-color: #e11d48}.soft-toast-item[data-type=warning]{--st-accent: #fbbf24;--st-icon-color: #d97706}.soft-toast-item[data-type=info]{--st-accent: #60a5fa;--st-icon-color: #3b82f6}.soft-toast-item[data-type=promise]{--st-accent: #a78bfa;--st-icon-color: #7c3aed}.soft-toast-content{position:relative;z-index:1;display:flex;align-items:flex-start;gap:11px}.soft-toast-icon{flex-shrink:0;width:24px;height:24px;margin-top:0;display:flex;align-items:center;justify-content:center;color:var(--st-icon-color, #64748b)}.soft-toast-icon svg,.soft-toast-icon .iconify,.soft-toast-icon-svg{display:block;flex:none;width:18px!important;height:18px!important;max-width:18px;max-height:18px;filter:drop-shadow(0 1px 2px rgba(0,0,0,.12))}.soft-toast-item[data-type=promise] .soft-toast-icon-svg{animation:st-spin .8s linear infinite}.soft-toast-spinner{width:18px;height:18px;border:2px solid rgba(139,92,246,.2);border-top-color:#8b5cf6;border-radius:50%;animation:st-spin .7s linear infinite}@keyframes st-spin{to{transform:rotate(360deg)}}.soft-toast-body{flex:1;min-width:0}.soft-toast-header-row{display:flex;align-items:center;gap:12px;min-height:24px}.soft-toast-title{font-weight:600;font-size:14px;color:#111827;margin:0;line-height:1.3;letter-spacing:0;padding-right:4px}.soft-toast-title--has-close{padding-right:24px}.soft-toast-description{font-size:13.5px;font-weight:400;color:#4b5563;margin:4px 0 0;line-height:1.5;max-height:120px;overflow-y:auto;padding-right:4px;scrollbar-width:none}.soft-toast-description::-webkit-scrollbar{width:0}.soft-toast-item:hover .soft-toast-description{scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.15) transparent}.soft-toast-item:hover .soft-toast-description::-webkit-scrollbar{width:4px}.soft-toast-item:hover .soft-toast-description::-webkit-scrollbar-track{background:transparent}.soft-toast-item:hover .soft-toast-description::-webkit-scrollbar-thumb{background:#00000026;border-radius:4px}.soft-toast-item:hover .soft-toast-description::-webkit-scrollbar-thumb:hover{background:#00000040}.soft-toast-timestamp{display:inline-block;font-size:11px;color:#9ca3af;letter-spacing:.01em;white-space:nowrap;margin-top:6px}.soft-toast-action{display:flex;gap:8px;margin-top:12px}.soft-toast-action-button{flex:1;width:100%;padding:8px 16px;border-radius:12px;background:#64748b1f;background:color-mix(in srgb,var(--st-accent) 15%,transparent);color:var(--st-icon-color);border:none;font-size:13.5px;font-weight:600;cursor:pointer;font-family:inherit;transition:all .18s ease;letter-spacing:.01em;text-align:center}.soft-toast-action-button:hover{background:#64748b38;background:color-mix(in srgb,var(--st-accent) 25%,transparent);transform:scale(1.02)}.soft-toast-action-button:active{transform:scale(.98)}.soft-toast-action-primary{background:var(--st-icon-color);color:#fff}.soft-toast-action-primary:hover{background:color-mix(in srgb,var(--st-icon-color) 85%,#000)}.soft-toast-close{position:absolute;z-index:3;top:10px;right:10px;width:22px;height:22px;border-radius:50%;border:none;background:#0000000a;color:#9ca3af;cursor:pointer;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .18s ease,background .18s ease,color .18s ease,transform .18s ease;padding:0}.soft-toast-close:hover{background:#0000001a;color:#374151;transform:scale(1.1)}.soft-toast-item:hover .soft-toast-close{opacity:1}@media (hover: none){.soft-toast-close{opacity:.7}}.soft-toast-close[data-position=top-left]{right:auto;left:10px}.st-close-line-1,.st-close-line-2{transition:transform .3s cubic-bezier(.4,0,.2,1),opacity .3s ease;transform-origin:center}.soft-toast-close:hover .st-close-line-1{transform:rotate(-45deg)}.soft-toast-close:hover .st-close-line-2{transform:rotate(45deg) scaleX(0);opacity:0}.soft-toast-progress{position:absolute;top:0;left:0;right:0;bottom:0;height:100%;background:transparent;z-index:0;pointer-events:none;border-radius:inherit;overflow:hidden}.soft-toast-progress-bar{height:100%;background:var(--st-accent);opacity:.12;transform-origin:left}[data-soft-toast-theme=dark] .soft-toast-item{background:#1c1c1e;border-color:#ffffff14;box-shadow:0 4px 24px -4px #00000080,0 1px 4px #0000004d}[data-soft-toast-theme=dark] .soft-toast-title{color:#f9fafb}[data-soft-toast-theme=dark] .soft-toast-description{color:#9ca3af}[data-soft-toast-theme=dark] .soft-toast-timestamp{color:#6b7280}[data-soft-toast-theme=dark] .soft-toast-item[data-type]{background:#1c1c1e;border-color:#ffffff14}[data-soft-toast-dir=rtl] .soft-toast-item:before{left:auto;right:0;border-radius:4px 0 0 4px}[data-soft-toast-dir=rtl] .soft-toast-content{flex-direction:row-reverse;padding-left:0;padding-right:10px}[data-soft-toast-dir=rtl] .soft-toast-body{align-items:flex-end;text-align:right}[data-soft-toast-dir=rtl] .soft-toast-close{right:auto;left:10px}@media (max-width: 640px){.soft-toast-container{left:12px!important;right:12px!important;width:auto;max-width:none;transform:none!important;align-items:stretch!important}.soft-toast-container[data-position^=top]{top:12px}.soft-toast-container[data-position^=bottom]{bottom:12px}.soft-toast-item{min-width:auto;max-width:none}.soft-toast-close{opacity:1}}@media (hover: none){.soft-toast-container:not([data-expanded=true]) .soft-toast-item[data-interactive=false]{pointer-events:none;touch-action:none}.soft-toast-container:not([data-expanded=true]) .soft-toast-item[data-st-index="0"]{touch-action:manipulation}.soft-toast-container[data-expanded=true] .soft-toast-item[data-interactive=true]{touch-action:none}}@media (prefers-reduced-motion: reduce){.soft-toast-item,.soft-toast-action-button,.soft-toast-close,.soft-toast-spinner{transition:none!important;animation:none!important}}
@@ -1,6 +1,6 @@
1
1
  import { VNode, Component } from 'vue';
2
2
  export type ToastType = 'default' | 'success' | 'error' | 'warning' | 'info' | 'promise';
3
- export type ToastPosition = 'top' | 'bottom' | 'left' | 'right' | 'center' | 'top-left' | 'top-center' | 'top-right' | 'bottom-left' | 'bottom-center' | 'bottom-right';
3
+ export type ToastPosition = 'top' | 'bottom' | 'left' | 'right' | 'top-left' | 'top-center' | 'top-right' | 'bottom-left' | 'bottom-center' | 'bottom-right';
4
4
  export type AnimationPreset = 'smooth' | 'bouncy' | 'subtle' | 'snappy';
5
5
  export type QueueOverflow = 'drop-oldest' | 'drop-newest';
6
6
  export interface ToastAction {
@@ -10,13 +10,13 @@ export interface ToastAction {
10
10
  primary?: boolean;
11
11
  class?: string;
12
12
  }
13
- export interface ToastPromiseMessages {
13
+ export interface ToastPromiseMessages<T = unknown> {
14
14
  loading: string;
15
- success: string;
16
- error: string;
15
+ success: string | ((data: T) => string);
16
+ error: string | ((err: unknown) => string);
17
17
  description?: {
18
- success?: string;
19
- error?: string;
18
+ success?: string | ((data: T) => string);
19
+ error?: string | ((err: unknown) => string);
20
20
  };
21
21
  action?: {
22
22
  error?: ToastAction;
@@ -100,8 +100,10 @@ export interface ToastContainerProps {
100
100
  queueOverflow?: QueueOverflow;
101
101
  dir?: 'ltr' | 'rtl';
102
102
  swipeToDismiss?: boolean;
103
+ slotFilter?: (toast: Toast) => boolean;
103
104
  }
104
105
  export interface ToastPluginOptions extends ToastContainerProps {
105
106
  teleportTarget?: string;
107
+ autoMount?: boolean;
106
108
  }
107
109
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,KAAK,CAAA;AAE3C,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAAA;AACxF,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,UAAU,GAAG,YAAY,GAAG,WAAW,GAAG,aAAa,GAAG,eAAe,GAAG,cAAc,CAAA;AACvK,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAA;AACvE,MAAM,MAAM,aAAa,GAAG,aAAa,GAAG,aAAa,CAAA;AAEzD,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACnC,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE;QACZ,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,KAAK,CAAC,EAAE,MAAM,CAAA;KACf,CAAA;IACD,MAAM,CAAC,EAAE;QACP,KAAK,CAAC,EAAE,WAAW,CAAA;KACpB,CAAA;CACF;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,GAAG,KAAK,CAAA;IAC5B,MAAM,CAAC,EAAE,WAAW,GAAG,WAAW,EAAE,CAAA;IACpC,IAAI,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,CAAA;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,aAAa,CAAA;IACxB,UAAU,CAAC,EAAE,eAAe,CAAA;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,eAAe,CAAA;IACxB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,WAAW,CAAC,EAAE,OAAO,GAAG,UAAU,GAAG,WAAW,CAAA;IAEhD,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAA;IACxB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IAChC,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IAClC,OAAO,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAA;IAC1B,eAAe,CAAC,EAAE,oBAAoB,CAAA;CACvC;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,KAAM,SAAQ,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,GAAG,MAAM,GAAG,UAAU,GAAG,UAAU,GAAG,eAAe,GAAG,cAAc,GAAG,QAAQ,CAAC,CAAC;IAChJ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,GAAG,KAAK,CAAA;IAC5B,MAAM,CAAC,EAAE,WAAW,GAAG,WAAW,EAAE,CAAA;IACpC,IAAI,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,CAAA;IACjC,UAAU,CAAC,EAAE,eAAe,CAAA;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,OAAO,GAAG,UAAU,GAAG,WAAW,CAAA;IAChD,MAAM,EAAE,eAAe,CAAA;IACvB,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,aAAa,EAAE,MAAM,CAAA;IACrB,QAAQ,EAAE,OAAO,CAAA;IACjB,UAAU,EAAE,OAAO,CAAA;IACnB,SAAS,EAAE,OAAO,CAAA;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAA;IAC1B,eAAe,CAAC,EAAE,oBAAoB,CAAA;IACtC,SAAS,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IAChC,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;CACnC;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,aAAa,CAAA;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACxB,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAA;IACxB,YAAY,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAA;IACpC,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,eAAe,CAAA;IACxB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,WAAW,CAAC,EAAE,OAAO,GAAG,UAAU,GAAG,WAAW,CAAA;IAChD,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAA;IACnB,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB;AAED,MAAM,WAAW,kBAAmB,SAAQ,mBAAmB;IAC7D,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@soft-toast/vue",
3
- "version": "1.0.1",
3
+ "version": "1.1.0",
4
4
  "description": "Soft, fluid toast notifications for Vue 3 — part of the @soft-toast family",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -48,11 +48,24 @@
48
48
  "keywords": [
49
49
  "vue",
50
50
  "vue3",
51
+ "nuxt",
52
+ "nuxt3",
53
+ "nuxt4",
51
54
  "toast",
52
55
  "notification",
56
+ "snackbar",
57
+ "alert",
58
+ "composable",
59
+ "useSoftToast",
60
+ "promise-toast",
61
+ "swipe-to-dismiss",
62
+ "spring-animation",
63
+ "dark-mode",
53
64
  "animation",
54
65
  "soft",
55
- "fluid"
66
+ "fluid",
67
+ "vue-toastification-alternative",
68
+ "vue-sonner-alternative"
56
69
  ],
57
70
  "author": "",
58
71
  "license": "MIT",
@@ -26,7 +26,10 @@ export const presetConfigs: Record<AnimationPreset, { ease: string; elasticEase:
26
26
 
27
27
  gsap.defaults({ overwrite: 'auto' })
28
28
 
29
- const SOFT_SETTLE_DURATION = 0.42
29
+ // Mobile devices get snappier animations (35% faster)
30
+ const isTouchDevice = typeof window !== 'undefined' && window.matchMedia('(pointer: coarse)').matches
31
+ const DUR = (s: number) => isTouchDevice ? s * 0.65 : s
32
+
30
33
  const QUICK_SETTLE_DURATION = 0.22
31
34
  const SOFT_SETTLE_EASE = 'power2.out'
32
35
 
@@ -69,7 +72,7 @@ const cloudSettleAnimation = (
69
72
  opacity: target.opacity,
70
73
  force3D: true,
71
74
  overwrite: true,
72
- duration: clamp(0.34 + distance * 0.003, 0.36, 0.46),
75
+ duration: DUR(clamp(0.34 + distance * 0.003, 0.36, 0.46)),
73
76
  ease: 'sine.out'
74
77
  })
75
78
  }
@@ -86,7 +89,7 @@ export const landingAnimation = (
86
89
  const { direction = 'up', preset = 'smooth' } = options
87
90
  const config = presetConfigs[preset] || presetConfigs.smooth
88
91
  const yFrom = direction === 'down' ? -14 : 14
89
- const landingDuration = Math.min(config.duration, 0.46)
92
+ const landingDuration = DUR(Math.min(config.duration, 0.46))
90
93
  const landingEase = preset === 'bouncy' ? 'back.out(1.35)' : SOFT_SETTLE_EASE
91
94
 
92
95
  const tl = gsap.timeline()
@@ -114,7 +117,7 @@ export const landingAnimation = (
114
117
  tl.to(extra, {
115
118
  height: 'auto',
116
119
  opacity: 1,
117
- duration: 0.36,
120
+ duration: DUR(0.36),
118
121
  force3D: true,
119
122
  ease: SOFT_SETTLE_EASE,
120
123
  clearProps: 'overflow'
@@ -149,18 +152,28 @@ export const morphAnimation = (
149
152
  return tl
150
153
  }
151
154
 
152
- // Exit: Soft scale down + fade
155
+ // Exit: Soft scale down + fade, then collapse height so the gap closes cleanly
153
156
  export const exitAnimation = (
154
157
  element: HTMLElement
155
158
  ) => {
156
- return gsap.to(element, {
157
- scale: 0.8,
159
+ const tl = gsap.timeline()
160
+ tl.to(element, {
161
+ scale: 0.85,
158
162
  opacity: 0,
159
163
  force3D: true,
160
164
  overwrite: 'auto',
161
- duration: 0.25,
162
- ease: 'power2.out'
165
+ duration: 0.2,
166
+ ease: 'power2.out',
163
167
  })
168
+ tl.to(element, {
169
+ height: 0,
170
+ paddingTop: 0,
171
+ paddingBottom: 0,
172
+ marginBottom: 0,
173
+ duration: 0.14,
174
+ ease: 'power2.in',
175
+ }, '-=0.05')
176
+ return tl
164
177
  }
165
178
 
166
179
  // Swipe exit: fly off horizontally in the direction of the gesture
@@ -182,10 +195,11 @@ export const swipeExitAnimation = (
182
195
  export const swipeSnapBack = (element: HTMLElement) => {
183
196
  return gsap.to(element, {
184
197
  x: 0,
198
+ rotate: 0,
185
199
  opacity: 1,
186
200
  force3D: true,
187
201
  overwrite: 'auto',
188
- duration: 0.55,
202
+ duration: DUR(0.45),
189
203
  ease: 'elastic.out(1, 0.55)'
190
204
  })
191
205
  }
@@ -214,6 +228,7 @@ export const positionAnimation = (
214
228
  opacityStep?: number
215
229
  maxVisible?: number
216
230
  reposition?: boolean
231
+ resetSwipe?: boolean
217
232
  }
218
233
  ) => {
219
234
  const {
@@ -228,7 +243,8 @@ export const positionAnimation = (
228
243
  scaleStep = 0.055,
229
244
  opacityStep = 0.2,
230
245
  maxVisible = 3,
231
- reposition = false
246
+ reposition = false,
247
+ resetSwipe = false
232
248
  } = options
233
249
 
234
250
  const config = presetConfigs[preset] || presetConfigs.smooth
@@ -237,21 +253,23 @@ export const positionAnimation = (
237
253
  if (expanded) {
238
254
  // Expanded hover and dismiss restacking share one soft settle timing.
239
255
  const expandedTarget = {
256
+ x: resetSwipe ? 0 : undefined,
240
257
  y: expandedOffset * sign,
241
258
  scale: 1,
242
- opacity: 1
259
+ opacity: 1,
260
+ rotate: resetSwipe ? 0 : undefined
243
261
  }
244
262
 
245
- if (reposition && spring) {
263
+ if (reposition && spring && !resetSwipe) {
246
264
  return cloudSettleAnimation(element, expandedTarget)
247
265
  }
248
266
 
249
267
  return gsap.to(element, {
250
268
  ...expandedTarget,
251
269
  force3D: true,
252
- overwrite: 'auto',
253
- duration: 0.36,
254
- ease: SOFT_SETTLE_EASE
270
+ overwrite: true,
271
+ duration: DUR(resetSwipe ? 0.34 : 0.12),
272
+ ease: resetSwipe ? 'elastic.out(1, 0.55)' : 'power2.out'
255
273
  })
256
274
  }
257
275
 
@@ -262,6 +280,20 @@ export const positionAnimation = (
262
280
  const targetOpacity = isHidden ? 0 : Math.max(0, 1 - clampedIdx * opacityStep)
263
281
 
264
282
  if (reposition && spring) {
283
+ if (resetSwipe) {
284
+ return gsap.to(element, {
285
+ x: 0,
286
+ y: targetY,
287
+ scale: targetScale,
288
+ opacity: targetOpacity,
289
+ rotate: 0,
290
+ force3D: true,
291
+ overwrite: true,
292
+ duration: DUR(0.38),
293
+ ease: 'elastic.out(1, 0.55)'
294
+ })
295
+ }
296
+
265
297
  return cloudSettleAnimation(element, {
266
298
  y: targetY,
267
299
  scale: targetScale,
@@ -273,13 +305,15 @@ export const positionAnimation = (
273
305
  // paths above stay softer so hover and dismiss do not feel mismatched.
274
306
  const restackEase = spring ? createElasticEase(bounce) : config.ease
275
307
  return gsap.to(element, {
308
+ x: resetSwipe ? 0 : undefined,
276
309
  y: targetY,
277
310
  scale: targetScale,
278
311
  opacity: targetOpacity,
312
+ rotate: resetSwipe ? 0 : undefined,
279
313
  force3D: true,
280
- overwrite: 'auto',
281
- duration: config.duration * 0.85,
282
- ease: restackEase
314
+ overwrite: resetSwipe ? true : 'auto',
315
+ duration: DUR(resetSwipe ? 0.38 : config.duration * 0.85),
316
+ ease: resetSwipe ? 'elastic.out(1, 0.55)' : restackEase
283
317
  })
284
318
  }
285
319
 
@@ -7,10 +7,11 @@ const props = withDefaults(defineProps<ToastContainerProps>(), {
7
7
  position: "top-right",
8
8
  maxQueue: 10,
9
9
  queueOverflow: "drop-oldest",
10
+ swipeToDismiss: true,
10
11
  });
11
12
 
12
13
  const positions: ToastPosition[] = [
13
- "top", "bottom", "left", "right", "center",
14
+ "top", "bottom", "left", "right",
14
15
  "top-left",
15
16
  "top-center",
16
17
  "top-right",