feather-toast-vue 3.0.0 → 3.0.2

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.
@@ -4,7 +4,7 @@
4
4
  variables, so it stays on the compositor (60fps on
5
5
  mobile). Inline vars set by Toast.vue:
6
6
  --index 0 = front of the stack
7
- --offset px distance from the edge when expanded
7
+ --offset summed px height of the toasts in front (gap added in CSS)
8
8
  --h measured height of this toast
9
9
  --front-h measured height of the front toast
10
10
  --swipe-x live swipe offset
@@ -167,7 +167,7 @@
167
167
 
168
168
  /* ── Expanded (hover / tap / expand: true) ── */
169
169
  .toast-viewport[data-expanded] .toast-card[data-mounted] {
170
- --y: calc(var(--lift) * var(--offset));
170
+ --y: calc(var(--lift) * (var(--offset) + var(--index) * var(--toast-gap)));
171
171
  --s: 1;
172
172
  }
173
173
 
@@ -388,24 +388,59 @@
388
388
  animation-fill-mode: forwards;
389
389
  }
390
390
 
391
+ @media (hover: none) {
392
+ .toast-close { opacity: 1; width: 28px; height: 28px; margin: -5px -8px -5px 0; }
393
+ .toast-action-btn { padding: 6px 12px; }
394
+ }
395
+
391
396
  /* ============================================
392
- Mobile — full-width, safe-area aware, bigger tap targets
397
+ Mobile — compact centered pill that shrinks to its
398
+ content, safe-area aware; actions drop to their own
399
+ row so text keeps its width
393
400
  ============================================ */
394
401
  @media (max-width: 600px) {
395
402
  .toast-viewport {
396
- left: 16px;
397
- right: 16px;
403
+ --toast-edge: 12px;
404
+ --toast-radius: 18px;
405
+ --toast-gap: 6px;
406
+ --toast-peek: 6px;
407
+ left: max(var(--toast-edge), env(safe-area-inset-left));
408
+ right: max(var(--toast-edge), env(safe-area-inset-right));
398
409
  width: auto;
399
410
  max-width: none;
400
411
  transform: none;
401
412
  }
402
- .toast-viewport[data-y='top'] { top: max(16px, env(safe-area-inset-top)); }
403
- .toast-viewport[data-y='bottom'] { bottom: max(16px, env(safe-area-inset-bottom)); }
404
- }
413
+ .toast-viewport[data-y='top'] { top: max(var(--toast-edge), env(safe-area-inset-top)); }
414
+ .toast-viewport[data-y='bottom'] { bottom: max(var(--toast-edge), env(safe-area-inset-bottom)); }
405
415
 
406
- @media (hover: none) {
407
- .toast-close { opacity: 1; width: 28px; height: 28px; margin: -5px -8px -5px 0; }
408
- .toast-action-btn { padding: 6px 12px; }
416
+ /* Shrink-to-fit, centered between left: 0 / right: 0 */
417
+ .toast-card {
418
+ width: fit-content;
419
+ max-width: 100%;
420
+ margin-inline: auto;
421
+ }
422
+
423
+ .toast-content {
424
+ flex-wrap: wrap;
425
+ align-items: center;
426
+ gap: 6px 8px;
427
+ padding: 8px 12px;
428
+ }
429
+ .toast-icon,
430
+ .toast-spinner { width: 13px; height: 13px; margin-top: 0; }
431
+
432
+ .toast-title { font-size: 12px; line-height: 1.35; }
433
+ .toast-description { margin-top: 1px; font-size: 11.5px; line-height: 1.35; }
434
+
435
+ .toast-actions {
436
+ order: 1;
437
+ flex-basis: 100%;
438
+ justify-content: flex-end;
439
+ }
440
+ .toast-action-btn { padding: 3px 10px; font-size: 11.5px; border-radius: 999px; }
441
+
442
+ .toast-close { width: 20px; height: 20px; margin: -2px -6px -2px 0; }
443
+ .toast-close svg { width: 9px; height: 9px; }
409
444
  }
410
445
 
411
446
  /* ============================================
@@ -1,5 +1,5 @@
1
1
  import { Fragment as e, Teleport as t, TransitionGroup as n, computed as r, createBlock as i, createCommentVNode as a, createElementBlock as o, createElementVNode as s, createTextVNode as c, createVNode as l, defineComponent as u, isRef as d, normalizeClass as f, normalizeStyle as p, onBeforeUnmount as ee, onMounted as te, openBlock as m, reactive as h, ref as g, render as _, renderList as v, resolveDynamicComponent as y, toDisplayString as b, toValue as x, unref as S, watch as C, withCtx as ne, withKeys as w, withModifiers as T } from "vue";
2
- //#region src/composables/useToast.ts
2
+ // src/composables/useToast.ts
3
3
  var E = g([]), D = 0;
4
4
  function O() {
5
5
  return `toast-${++D}-${Date.now()}`;
@@ -88,7 +88,7 @@ function K() {
88
88
  }
89
89
  function q(e) {
90
90
  let t = F(e), n = R(t);
91
- return typeof window > "u" ? n : (H.set(n, W(t)), U || (U = !0, window.addEventListener("pagehide", G)), n);
91
+ return typeof window > "u" || (H.set(n, W(t)), U || (U = !0, window.addEventListener("pagehide", G))), n;
92
92
  }
93
93
  var J = (e) => (t) => q({
94
94
  ...F(t),
@@ -444,13 +444,7 @@ var ie = Q, ae = [
444
444
  A &&= (clearTimeout(A), null);
445
445
  }
446
446
  function N(e) {
447
- if (M(), !(e === Infinity || e <= 0 || ne.value)) {
448
- if (O = e, l.paused || V.value) {
449
- j.value = !0;
450
- return;
451
- }
452
- j.value = !1, k = Date.now(), A = setTimeout(() => u("close", l.toast.id), e);
453
- }
447
+ M(), !(e === Infinity || e <= 0 || ne.value) && (O = e, l.paused || V.value ? j.value = !0 : (j.value = !1, k = Date.now(), A = setTimeout(() => u("close", l.toast.id), e)));
454
448
  }
455
449
  function P() {
456
450
  j.value = !0, A && (M(), O = Math.max(500, O - (Date.now() - k)));
@@ -477,7 +471,7 @@ var ie = Q, ae = [
477
471
  animationPlayState: j.value ? "paused" : "running"
478
472
  } : {} : { transform: `scaleX(${Math.min(100, Math.max(0, S.value)) / 100})` }), B = g(0), V = g(!1), H = g(!1), U = null, W = 0, G = 0, K = 0, q = null;
479
473
  function J(e) {
480
- !l.toast.dismissible || e.button !== 0 || e.target.closest("button, a, input, textarea, select") || (U = e.pointerId, W = e.clientX, G = e.clientY, K = performance.now(), q = null);
474
+ l.toast.dismissible && e.button === 0 && (e.target.closest("button, a, input, textarea, select") || (U = e.pointerId, W = e.clientX, G = e.clientY, K = performance.now(), q = null));
481
475
  }
482
476
  function re(e) {
483
477
  if (e.pointerId !== U) return;
@@ -591,7 +585,7 @@ var ie = Q, ae = [
591
585
  }), ge = {
592
586
  "aria-label": "Notifications",
593
587
  class: "toast-region"
594
- }, _e = 14, ve = /* @__PURE__ */ u({
588
+ }, _e = /* @__PURE__ */ u({
595
589
  __name: "ToastContainer",
596
590
  setup(c) {
597
591
  let { toasts: u, config: d, dismiss: p } = ie(), _ = g(!1), y = g(!1), b = [
@@ -616,7 +610,7 @@ var ie = Q, ae = [
616
610
  function O(e, t) {
617
611
  let n = 0;
618
612
  for (let r = 0; r < t; r++) n += x[e[r].id] ?? 0;
619
- return n + t * _e;
613
+ return n;
620
614
  }
621
615
  function k(e, t) {
622
616
  x[e] = t;
@@ -691,25 +685,24 @@ var ie = Q, ae = [
691
685
  "onPointerdown"
692
686
  ])), 64))])])) : a("", !0);
693
687
  }
694
- }), ye = ":root{--toast-bg:#fff;--toast-border:#00000014;--toast-text:#09090b;--toast-text-muted:#71717a;--toast-hover:#f4f4f5;--toast-shadow:0 4px 12px #00000014;--toast-radius:10px;--toast-width:356px;--toast-gap:14px;--toast-peek:14px;--toast-edge:24px;--toast-z:99999;--toast-c-success:#16a34a;--toast-c-error:#dc2626;--toast-c-warning:#d97706;--toast-c-info:#2563eb;--toast-c-muted:#71717a;--toast-c-offline:#6b7280;--toast-c-update:#8b5cf6;--toast-ease:cubic-bezier(.21, 1.02, .73, 1);--toast-duration:.4s}.toast-viewport[data-theme=dark]{--toast-bg:#09090b;--toast-border:#ffffff1a;--toast-text:#fafafa;--toast-text-muted:#a1a1aa;--toast-hover:#ffffff14;--toast-shadow:0 4px 12px #0006}@media (prefers-color-scheme:dark){.toast-viewport[data-theme=system]{--toast-bg:#09090b;--toast-border:#ffffff1a;--toast-text:#fafafa;--toast-text-muted:#a1a1aa;--toast-hover:#ffffff14;--toast-shadow:0 4px 12px #0006}}.toast-viewport[data-rich] .toast-card--success{--toast-bg:#ecfdf3;--toast-border:#bffcd9;--toast-text:#008a2e}.toast-viewport[data-rich] .toast-card--error{--toast-bg:#fff0f0;--toast-border:#ffe0e1;--toast-text:#e60000}.toast-viewport[data-rich] .toast-card--warning{--toast-bg:#fffcf0;--toast-border:#fdf5d3;--toast-text:#dc7609}.toast-viewport[data-rich] .toast-card--info{--toast-bg:#f0f8ff;--toast-border:#d3e0fd;--toast-text:#0973dc}.toast-viewport[data-rich] .toast-card--update{--toast-bg:#f5f3ff;--toast-border:#e4defe;--toast-text:#6d28d9}.toast-viewport[data-rich][data-theme=dark] .toast-card--success{--toast-bg:#001f0f;--toast-border:#003d1c;--toast-text:#59f3a6}.toast-viewport[data-rich][data-theme=dark] .toast-card--error{--toast-bg:#2d0607;--toast-border:#4d0408;--toast-text:#ff9ea1}.toast-viewport[data-rich][data-theme=dark] .toast-card--warning{--toast-bg:#1d1f00;--toast-border:#3d3d00;--toast-text:#f3cf58}.toast-viewport[data-rich][data-theme=dark] .toast-card--info{--toast-bg:#000d1f;--toast-border:#00113d;--toast-text:#5896f3}.toast-viewport[data-rich][data-theme=dark] .toast-card--update{--toast-bg:#170b2e;--toast-border:#2e1a5c;--toast-text:#c4b5fd}.toast-viewport[data-rich] .toast-description{color:var(--toast-text);opacity:.8}.toast-viewport{--lift:-1;z-index:var(--toast-z);width:var(--toast-width);max-width:calc(100vw - var(--toast-edge) * 2);height:0;margin:0;padding:0;font-family:inherit;list-style:none;position:fixed}.toast-viewport[data-y=top]{--lift:1;top:var(--toast-edge)}.toast-viewport[data-y=bottom]{--lift:-1;bottom:var(--toast-edge)}.toast-viewport--top-right,.toast-viewport--bottom-right{right:var(--toast-edge)}.toast-viewport--top-left,.toast-viewport--bottom-left{left:var(--toast-edge)}.toast-viewport--top-center,.toast-viewport--bottom-center{left:50%;transform:translate(-50%)}.toast-card{--y:calc(var(--lift) * -100%);--s:1;z-index:calc(1000 - var(--index,0));height:var(--h,auto);box-sizing:border-box;background:var(--toast-bg);border-radius:var(--toast-radius);box-shadow:0 0 0 1px var(--toast-border), var(--toast-shadow);color:var(--toast-text);opacity:0;pointer-events:auto;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;touch-action:pan-y;transform:translate3d(var(--swipe-x,0px), var(--y), 0) scale(var(--s));transition:transform var(--toast-duration) var(--toast-ease), opacity var(--toast-duration) var(--toast-ease), height var(--toast-duration) var(--toast-ease), box-shadow .2s ease;will-change:transform, opacity;outline:none;margin:0;position:absolute;left:0;right:0}.toast-viewport[data-y=bottom] .toast-card{transform-origin:bottom;bottom:0}.toast-viewport[data-y=top] .toast-card{transform-origin:top;top:0}.toast-card:focus-visible{box-shadow:0 0 0 1px var(--toast-border), 0 0 0 3px #71717a59, var(--toast-shadow)}.toast-card:after{content:\"\";height:calc(var(--toast-gap) + 1px);position:absolute;left:0;right:0}.toast-viewport[data-y=bottom] .toast-card:after{bottom:100%}.toast-viewport[data-y=top] .toast-card:after{top:100%}.toast-card[data-mounted]{--y:calc(var(--lift) * var(--index) * var(--toast-peek));--s:calc(1 - var(--index) * .05);opacity:1}.toast-viewport:not([data-expanded]) .toast-card:not([data-front]){height:var(--front-h);overflow:hidden}.toast-viewport:not([data-expanded]) .toast-card:not([data-front])>*{opacity:0}.toast-viewport[data-expanded] .toast-card[data-mounted]{--y:calc(var(--lift) * var(--offset));--s:1}.toast-card[data-mounted]:not([data-visible]){opacity:0;pointer-events:none}.toast-card[data-swiping]{opacity:calc(1 - var(--swipe-amount,0) * .8);transition:opacity 0s, height var(--toast-duration) var(--toast-ease);cursor:grabbing}.toast-viewport .toast-card[data-mounted].toast-leave-active{pointer-events:none}.toast-viewport .toast-card[data-mounted].toast-leave-to{opacity:0}.toast-viewport .toast-card[data-mounted][data-front].toast-leave-to:not([data-swiped]){--y:calc(var(--lift) * -100%)}.toast-viewport .toast-card[data-mounted]:not([data-front]).toast-leave-to{--s:calc(1 - var(--index) * .05 - .05)}.toast-content{transition:opacity var(--toast-duration) var(--toast-ease);align-items:flex-start;gap:10px;padding:14px 16px;display:flex}.toast-icon,.toast-spinner{flex-shrink:0;width:16px;height:16px;margin-top:1px}.toast-icon--success{color:var(--toast-c-success)}.toast-icon--error{color:var(--toast-c-error)}.toast-icon--warning{color:var(--toast-c-warning)}.toast-icon--info{color:var(--toast-c-info)}.toast-icon--offline{color:var(--toast-c-offline)}.toast-icon--update{color:var(--toast-c-update)}.toast-viewport[data-rich] .toast-icon{color:currentColor}.toast-icon{animation:toast-icon-in .3s var(--toast-ease)}@keyframes toast-icon-in{0%{opacity:0;transform:scale(.6)}}@keyframes toast-spin{to{transform:rotate(360deg)}}.toast-spinner{box-sizing:border-box;border:1.5px solid var(--toast-border);border-top-color:var(--toast-text-muted);border-radius:50%;animation:.7s linear infinite toast-spin}.toast-body{flex:1;min-width:0}.toast-count{vertical-align:1px;color:var(--toast-text-muted);background:var(--toast-hover);animation:toast-count-pop .3s var(--toast-ease);border-radius:999px;margin-left:6px;padding:0 6px;font-size:11px;font-weight:600;line-height:18px;display:inline-block}@keyframes toast-count-pop{0%{transform:scale(1.5)}}.toast-title{letter-spacing:-.01em;color:var(--toast-text);overflow-wrap:anywhere;margin:0;font-size:13px;font-weight:500;line-height:1.45}.toast-description{color:var(--toast-text-muted);overflow-wrap:anywhere;margin:2px 0 0;font-size:12.5px;line-height:1.5}.toast-actions{flex-shrink:0;align-self:center;gap:6px;display:flex}.toast-action-btn{font:inherit;color:var(--toast-bg);background:var(--toast-text);cursor:pointer;white-space:nowrap;border:0;border-radius:6px;padding:4px 10px;font-size:12px;font-weight:500;line-height:1.4;transition:opacity .15s,background .15s}.toast-action-btn:hover{opacity:.88}.toast-action-btn--cancel{color:var(--toast-text);box-shadow:inset 0 0 0 1px var(--toast-border);background:0 0}.toast-action-btn--cancel:hover{opacity:1;background:var(--toast-hover)}.toast-close{width:20px;height:20px;color:var(--toast-text-muted);cursor:pointer;opacity:.5;background:0 0;border:0;border-radius:5px;flex-shrink:0;justify-content:center;align-items:center;margin:-1px -4px 0 0;padding:0;transition:opacity .15s,background .15s;display:flex}.toast-card:hover .toast-close,.toast-close:focus-visible{opacity:1}.toast-close:hover{background:var(--toast-hover);color:var(--toast-text)}.toast-close svg{width:11px;height:11px}.toast-progress-track{border-radius:0 0 var(--toast-radius) var(--toast-radius);background:var(--toast-border);height:2px;position:absolute;bottom:0;left:0;right:0;overflow:hidden}.toast-progress-fill{background:var(--toast-text-muted);transform-origin:0;height:100%;transition:transform .2s linear}.toast-card--success .toast-progress-fill{background:var(--toast-c-success)}.toast-card--error .toast-progress-fill{background:var(--toast-c-error)}.toast-card--warning .toast-progress-fill{background:var(--toast-c-warning)}.toast-card--info .toast-progress-fill{background:var(--toast-c-info)}.toast-card--update .toast-progress-fill{background:var(--toast-c-update)}@keyframes toast-countdown{0%{transform:scaleX(1)}to{transform:scaleX(0)}}.toast-progress-fill--countdown{animation-name:toast-countdown;animation-timing-function:linear;animation-fill-mode:forwards}@media (width<=600px){.toast-viewport{width:auto;max-width:none;left:16px;right:16px;transform:none}.toast-viewport[data-y=top]{top:max(16px, env(safe-area-inset-top))}.toast-viewport[data-y=bottom]{bottom:max(16px, env(safe-area-inset-bottom))}}@media (hover:none){.toast-close{opacity:1;width:28px;height:28px;margin:-5px -8px -5px 0}.toast-action-btn{padding:6px 12px}}@media (prefers-reduced-motion:reduce){.toast-card{transition:opacity .2s,height}.toast-icon,.toast-count,.toast-progress-fill--countdown{animation:none}}", be = "feather-toast-root", xe = "feather-toast-style", Se = { install(e, t = {}) {
688
+ }), ve = ":root{--toast-bg:#fff;--toast-border:#00000014;--toast-text:#09090b;--toast-text-muted:#71717a;--toast-hover:#f4f4f5;--toast-shadow:0 4px 12px #00000014;--toast-radius:10px;--toast-width:356px;--toast-gap:14px;--toast-peek:14px;--toast-edge:24px;--toast-z:99999;--toast-c-success:#16a34a;--toast-c-error:#dc2626;--toast-c-warning:#d97706;--toast-c-info:#2563eb;--toast-c-muted:#71717a;--toast-c-offline:#6b7280;--toast-c-update:#8b5cf6;--toast-ease:cubic-bezier(.21, 1.02, .73, 1);--toast-duration:.4s}.toast-viewport[data-theme=dark]{--toast-bg:#09090b;--toast-border:#ffffff1a;--toast-text:#fafafa;--toast-text-muted:#a1a1aa;--toast-hover:#ffffff14;--toast-shadow:0 4px 12px #0006}@media (prefers-color-scheme:dark){.toast-viewport[data-theme=system]{--toast-bg:#09090b;--toast-border:#ffffff1a;--toast-text:#fafafa;--toast-text-muted:#a1a1aa;--toast-hover:#ffffff14;--toast-shadow:0 4px 12px #0006}}.toast-viewport[data-rich] .toast-card--success{--toast-bg:#ecfdf3;--toast-border:#bffcd9;--toast-text:#008a2e}.toast-viewport[data-rich] .toast-card--error{--toast-bg:#fff0f0;--toast-border:#ffe0e1;--toast-text:#e60000}.toast-viewport[data-rich] .toast-card--warning{--toast-bg:#fffcf0;--toast-border:#fdf5d3;--toast-text:#dc7609}.toast-viewport[data-rich] .toast-card--info{--toast-bg:#f0f8ff;--toast-border:#d3e0fd;--toast-text:#0973dc}.toast-viewport[data-rich] .toast-card--update{--toast-bg:#f5f3ff;--toast-border:#e4defe;--toast-text:#6d28d9}.toast-viewport[data-rich][data-theme=dark] .toast-card--success{--toast-bg:#001f0f;--toast-border:#003d1c;--toast-text:#59f3a6}.toast-viewport[data-rich][data-theme=dark] .toast-card--error{--toast-bg:#2d0607;--toast-border:#4d0408;--toast-text:#ff9ea1}.toast-viewport[data-rich][data-theme=dark] .toast-card--warning{--toast-bg:#1d1f00;--toast-border:#3d3d00;--toast-text:#f3cf58}.toast-viewport[data-rich][data-theme=dark] .toast-card--info{--toast-bg:#000d1f;--toast-border:#00113d;--toast-text:#5896f3}.toast-viewport[data-rich][data-theme=dark] .toast-card--update{--toast-bg:#170b2e;--toast-border:#2e1a5c;--toast-text:#c4b5fd}.toast-viewport[data-rich] .toast-description{color:var(--toast-text);opacity:.8}.toast-viewport{--lift:-1;z-index:var(--toast-z);width:var(--toast-width);max-width:calc(100vw - var(--toast-edge) * 2);height:0;margin:0;padding:0;font-family:inherit;list-style:none;position:fixed}.toast-viewport[data-y=top]{--lift:1;top:var(--toast-edge)}.toast-viewport[data-y=bottom]{--lift:-1;bottom:var(--toast-edge)}.toast-viewport--top-right,.toast-viewport--bottom-right{right:var(--toast-edge)}.toast-viewport--top-left,.toast-viewport--bottom-left{left:var(--toast-edge)}.toast-viewport--top-center,.toast-viewport--bottom-center{left:50%;transform:translate(-50%)}.toast-card{--y:calc(var(--lift) * -100%);--s:1;z-index:calc(1000 - var(--index,0));height:var(--h,auto);box-sizing:border-box;background:var(--toast-bg);border-radius:var(--toast-radius);box-shadow:0 0 0 1px var(--toast-border), var(--toast-shadow);color:var(--toast-text);opacity:0;pointer-events:auto;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;touch-action:pan-y;transform:translate3d(var(--swipe-x,0px), var(--y), 0) scale(var(--s));transition:transform var(--toast-duration) var(--toast-ease), opacity var(--toast-duration) var(--toast-ease), height var(--toast-duration) var(--toast-ease), box-shadow .2s ease;will-change:transform, opacity;outline:none;margin:0;position:absolute;left:0;right:0}.toast-viewport[data-y=bottom] .toast-card{transform-origin:bottom;bottom:0}.toast-viewport[data-y=top] .toast-card{transform-origin:top;top:0}.toast-card:focus-visible{box-shadow:0 0 0 1px var(--toast-border), 0 0 0 3px #71717a59, var(--toast-shadow)}.toast-card:after{content:\"\";height:calc(var(--toast-gap) + 1px);position:absolute;left:0;right:0}.toast-viewport[data-y=bottom] .toast-card:after{bottom:100%}.toast-viewport[data-y=top] .toast-card:after{top:100%}.toast-card[data-mounted]{--y:calc(var(--lift) * var(--index) * var(--toast-peek));--s:calc(1 - var(--index) * .05);opacity:1}.toast-viewport:not([data-expanded]) .toast-card:not([data-front]){height:var(--front-h);overflow:hidden}.toast-viewport:not([data-expanded]) .toast-card:not([data-front])>*{opacity:0}.toast-viewport[data-expanded] .toast-card[data-mounted]{--y:calc(var(--lift) * (var(--offset) + var(--index) * var(--toast-gap)));--s:1}.toast-card[data-mounted]:not([data-visible]){opacity:0;pointer-events:none}.toast-card[data-swiping]{opacity:calc(1 - var(--swipe-amount,0) * .8);transition:opacity 0s, height var(--toast-duration) var(--toast-ease);cursor:grabbing}.toast-viewport .toast-card[data-mounted].toast-leave-active{pointer-events:none}.toast-viewport .toast-card[data-mounted].toast-leave-to{opacity:0}.toast-viewport .toast-card[data-mounted][data-front].toast-leave-to:not([data-swiped]){--y:calc(var(--lift) * -100%)}.toast-viewport .toast-card[data-mounted]:not([data-front]).toast-leave-to{--s:calc(1 - var(--index) * .05 - .05)}.toast-content{transition:opacity var(--toast-duration) var(--toast-ease);align-items:flex-start;gap:10px;padding:14px 16px;display:flex}.toast-icon,.toast-spinner{flex-shrink:0;width:16px;height:16px;margin-top:1px}.toast-icon--success{color:var(--toast-c-success)}.toast-icon--error{color:var(--toast-c-error)}.toast-icon--warning{color:var(--toast-c-warning)}.toast-icon--info{color:var(--toast-c-info)}.toast-icon--offline{color:var(--toast-c-offline)}.toast-icon--update{color:var(--toast-c-update)}.toast-viewport[data-rich] .toast-icon{color:currentColor}.toast-icon{animation:toast-icon-in .3s var(--toast-ease)}@keyframes toast-icon-in{0%{opacity:0;transform:scale(.6)}}@keyframes toast-spin{to{transform:rotate(360deg)}}.toast-spinner{box-sizing:border-box;border:1.5px solid var(--toast-border);border-top-color:var(--toast-text-muted);border-radius:50%;animation:.7s linear infinite toast-spin}.toast-body{flex:1;min-width:0}.toast-count{vertical-align:1px;color:var(--toast-text-muted);background:var(--toast-hover);animation:toast-count-pop .3s var(--toast-ease);border-radius:999px;margin-left:6px;padding:0 6px;font-size:11px;font-weight:600;line-height:18px;display:inline-block}@keyframes toast-count-pop{0%{transform:scale(1.5)}}.toast-title{letter-spacing:-.01em;color:var(--toast-text);overflow-wrap:anywhere;margin:0;font-size:13px;font-weight:500;line-height:1.45}.toast-description{color:var(--toast-text-muted);overflow-wrap:anywhere;margin:2px 0 0;font-size:12.5px;line-height:1.5}.toast-actions{flex-shrink:0;align-self:center;gap:6px;display:flex}.toast-action-btn{font:inherit;color:var(--toast-bg);background:var(--toast-text);cursor:pointer;white-space:nowrap;border:0;border-radius:6px;padding:4px 10px;font-size:12px;font-weight:500;line-height:1.4;transition:opacity .15s,background .15s}.toast-action-btn:hover{opacity:.88}.toast-action-btn--cancel{color:var(--toast-text);box-shadow:inset 0 0 0 1px var(--toast-border);background:0 0}.toast-action-btn--cancel:hover{opacity:1;background:var(--toast-hover)}.toast-close{width:20px;height:20px;color:var(--toast-text-muted);cursor:pointer;opacity:.5;background:0 0;border:0;border-radius:5px;flex-shrink:0;justify-content:center;align-items:center;margin:-1px -4px 0 0;padding:0;transition:opacity .15s,background .15s;display:flex}.toast-card:hover .toast-close,.toast-close:focus-visible{opacity:1}.toast-close:hover{background:var(--toast-hover);color:var(--toast-text)}.toast-close svg{width:11px;height:11px}.toast-progress-track{border-radius:0 0 var(--toast-radius) var(--toast-radius);background:var(--toast-border);height:2px;position:absolute;bottom:0;left:0;right:0;overflow:hidden}.toast-progress-fill{background:var(--toast-text-muted);transform-origin:0;height:100%;transition:transform .2s linear}.toast-card--success .toast-progress-fill{background:var(--toast-c-success)}.toast-card--error .toast-progress-fill{background:var(--toast-c-error)}.toast-card--warning .toast-progress-fill{background:var(--toast-c-warning)}.toast-card--info .toast-progress-fill{background:var(--toast-c-info)}.toast-card--update .toast-progress-fill{background:var(--toast-c-update)}@keyframes toast-countdown{0%{transform:scaleX(1)}to{transform:scaleX(0)}}.toast-progress-fill--countdown{animation-name:toast-countdown;animation-timing-function:linear;animation-fill-mode:forwards}@media (hover:none){.toast-close{opacity:1;width:28px;height:28px;margin:-5px -8px -5px 0}.toast-action-btn{padding:6px 12px}}@media (width<=600px){.toast-viewport{--toast-edge:12px;--toast-radius:18px;--toast-gap:6px;--toast-peek:6px;left:max(var(--toast-edge), env(safe-area-inset-left));right:max(var(--toast-edge), env(safe-area-inset-right));width:auto;max-width:none;transform:none}.toast-viewport[data-y=top]{top:max(var(--toast-edge), env(safe-area-inset-top))}.toast-viewport[data-y=bottom]{bottom:max(var(--toast-edge), env(safe-area-inset-bottom))}.toast-card{width:fit-content;max-width:100%;margin-inline:auto}.toast-content{flex-wrap:wrap;align-items:center;gap:6px 8px;padding:8px 12px}.toast-icon,.toast-spinner{width:13px;height:13px;margin-top:0}.toast-title{font-size:12px;line-height:1.35}.toast-description{margin-top:1px;font-size:11.5px;line-height:1.35}.toast-actions{flex-basis:100%;order:1;justify-content:flex-end}.toast-action-btn{border-radius:999px;padding:3px 10px;font-size:11.5px}.toast-close{width:20px;height:20px;margin:-2px -6px -2px 0}.toast-close svg{width:9px;height:9px}}@media (prefers-reduced-motion:reduce){.toast-card{transition:opacity .2s,height}.toast-icon,.toast-count,.toast-progress-fill--countdown{animation:none}}", ye = "feather-toast-root", be = "feather-toast-style", xe = { install(e, t = {}) {
695
689
  let n = Q();
696
690
  if (e.provide("toast", n), typeof document > "u") return;
697
- if (t.injectStyles !== !1 && !document.getElementById(xe)) {
691
+ if (t.injectStyles !== !1 && !document.getElementById(be)) {
698
692
  let e = document.createElement("style");
699
- e.id = xe, e.textContent = ye, document.head.appendChild(e);
693
+ e.id = be, e.textContent = ve, document.head.appendChild(e);
700
694
  }
701
- let r = document.getElementById(be);
702
- r || (r = document.createElement("div"), r.id = be, document.body.appendChild(r)), K();
703
- let i = l(ve);
695
+ let r = document.getElementById(ye);
696
+ r || (r = document.createElement("div"), r.id = ye, document.body.appendChild(r)), K();
697
+ let i = l(_e);
704
698
  i.appContext = e._context, _(i, r);
705
699
  let a = e.unmount;
706
700
  e.unmount = (...e) => {
707
701
  _(null, r), r?.parentNode && r.parentNode.removeChild(r), a(...e);
708
702
  };
709
703
  } };
710
- //#endregion
711
- //#region src/testing.ts
712
- function Ce(e) {
704
+ // src/testing.ts
705
+ function Se(e) {
713
706
  return {
714
707
  id: e.id,
715
708
  title: x(e.title),
@@ -721,38 +714,37 @@ function Ce(e) {
721
714
  cancel: e.cancel?.label
722
715
  };
723
716
  }
724
- function we(e, t) {
717
+ function Ce(e, t) {
725
718
  return t === void 0 ? !0 : e === void 0 ? !1 : typeof t == "string" ? e === t : t.test(e);
726
719
  }
727
- function Te(e, t) {
728
- return we(e.title, t.title) && we(e.description, t.description) && (t.variant === void 0 || e.variant === t.variant) && (t.position === void 0 || e.position === t.position);
720
+ function we(e, t) {
721
+ return Ce(e.title, t.title) && Ce(e.description, t.description) && (t.variant === void 0 || e.variant === t.variant) && (t.position === void 0 || e.position === t.position);
729
722
  }
730
- function Ee(e) {
723
+ function Te(e) {
731
724
  return e.length ? e.map((e) => ` - [${e.variant}] ${JSON.stringify(e.title)}${e.description ? ` — ${JSON.stringify(e.description)}` : ""}`).join("\n") : " (no toasts)";
732
725
  }
733
- function De() {
726
+ function Ee() {
734
727
  return Q().toasts.value;
735
728
  }
736
729
  function $() {
737
- return De().map(Ce);
730
+ return Ee().map(Se);
738
731
  }
739
- function Oe(e) {
740
- return $().find((t) => Te(t, e));
732
+ function De(e) {
733
+ return $().find((t) => we(t, e));
741
734
  }
742
- function ke(e) {
743
- let t = Oe(e);
735
+ function Oe(e) {
736
+ let t = De(e);
744
737
  if (t) return t;
745
- throw Error(`Expected a toast matching ${String(JSON.stringify(e, (e, t) => t instanceof RegExp ? String(t) : t))}\nActive toasts:\n${Ee($())}`);
738
+ throw Error(`Expected a toast matching ${String(JSON.stringify(e, (e, t) => t instanceof RegExp ? String(t) : t))}\nActive toasts:\n${Te($())}`);
746
739
  }
747
- function Ae() {
740
+ function ke() {
748
741
  let e = $();
749
- if (e.length) throw Error(`Expected no toasts, found ${e.length}:\n${Ee(e)}`);
742
+ if (e.length) throw Error(`Expected no toasts, found ${e.length}:\n${Te(e)}`);
750
743
  }
751
- async function je(e, t = "action") {
752
- let { id: n } = ke(e), r = De().find((e) => e.id === n)?.[t];
744
+ async function Ae(e, t = "action") {
745
+ let { id: n } = Oe(e), r = Ee().find((e) => e.id === n)?.[t];
753
746
  if (!r) throw Error(`Toast ${JSON.stringify(n)} has no ${t} button`);
754
747
  await r.onClick();
755
748
  }
756
- var Me = re;
757
- //#endregion
758
- export { Se as CreateFeatherToast, ve as ToastContainer, je as clickToastAction, Ae as expectNoToasts, ke as expectToast, Oe as findToast, $ as getToasts, Me as resetToasts, Q as useFeatherToast, ie as useToast };
749
+ var je = re;
750
+ export { xe as CreateFeatherToast, _e as ToastContainer, Ae as clickToastAction, ke as expectNoToasts, Oe as expectToast, De as findToast, $ as getToasts, je as resetToasts, Q as useFeatherToast, ie as useToast };
@@ -1,2 +1,2 @@
1
- (function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require(`vue`)):typeof define==`function`&&define.amd?define([`exports`,`vue`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.FeatherToast={},e.Vue))})(this,function(e,t){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var n=(0,t.ref)([]),r=0;function i(){return`toast-${++r}-${Date.now()}`}var a=5e3,o=`bottom-right`,s=5,c=()=>({max:s,duration:a,position:o}),l=(0,t.ref)(c());function u(e){return typeof e==`string`?e:e&&typeof e==`object`&&`message`in e&&typeof e.message==`string`?e.message:`Something went wrong`}function d(e){return typeof e==`string`||(0,t.isRef)(e)||typeof e==`function`?{title:e}:e instanceof Error||typeof e==`object`&&e&&`message`in e&&!(`title`in e)&&!(`description`in e)?{title:u(e)}:typeof e==`object`&&e?e:{title:String(e??``)}}function f(e,t){let r=t??l.value.max;if(!r||r<=0)return;let i=n.value.filter(t=>t.position===e),a=i.length-r+1;if(a>0){let e=i.slice(0,a);for(let t of e)h(t.id)}}function p(e){return!e.action&&!e.cancel&&!e.component&&e.progress===void 0&&!e.onDismiss}function m(e){let r=d(e);if(r.id&&n.value.some(e=>e.id===r.id))return E(r.id,r),r.id;let s=r.id??i(),c=r.variant??`default`,u=r.position??l.value.position??o;if(l.value.group!==!1&&!r.id&&c!==`loading`&&p(r)){let e=n.value.find(e=>e.position===u&&e.variant===c&&(0,t.toValue)(e.title)===(0,t.toValue)(r.title)&&(0,t.toValue)(e.description)===(0,t.toValue)(r.description)&&p(e));if(e)return e.count=(e.count??1)+1,e.id}let m=l.value.duration??a,h=r.duration??(c===`loading`?1/0:m);f(u);let g={id:s,title:r.title,description:r.description,variant:c,position:u,duration:h,dismissible:r.dismissible??!0,action:r.action,cancel:r.cancel,progress:r.progress,showProgress:r.showProgress,component:r.component,onDismiss:r.onDismiss};return n.value.push(g),s}function h(e){let t=n.value.findIndex(t=>t.id===e);t>-1&&(n.value[t]?.onDismiss?.(),n.value.splice(t,1),v.delete(e))}function g(){for(let e of n.value)e.onDismiss?.();n.value.splice(0,n.value.length),v.clear()}var _=`feather-toast:flash`,v=new Map,y=!1;function b(e){return{title:(0,t.toValue)(e.title),description:(0,t.toValue)(e.description),variant:e.variant,position:e.position,duration:Number.isFinite(e.duration)?e.duration:void 0}}function x(){let e=[...v.values()];if(v.clear(),e.length)try{sessionStorage.setItem(_,JSON.stringify(e))}catch{}}function S(){try{let e=sessionStorage.getItem(_);if(!e)return;sessionStorage.removeItem(_);for(let t of JSON.parse(e))m(t)}catch{}}function C(e){let t=d(e),n=m(t);return typeof window>`u`?n:(v.set(n,b(t)),y||(y=!0,window.addEventListener(`pagehide`,x)),n)}var w=e=>t=>C({...d(t),variant:e});function T(){n.value.splice(0,n.value.length),v.clear(),l.value=c(),r=0}function E(e,t){let r=n.value.findIndex(t=>t.id===e);if(r>-1){let e=n.value[r];if(!e)return;n.value[r]={...e,...t,id:e.id,variant:t.variant??e.variant,position:t.position??e.position,duration:t.duration??e.duration,dismissible:t.dismissible??e.dismissible,progress:t.progress===void 0?e.progress:t.progress,showProgress:t.showProgress===void 0?e.showProgress:t.showProgress}}}function D(e){return m(e)}D.config=e=>{l.value={...l.value,...e}},D.getConfig=()=>({...l.value}),D.success=e=>m({...d(e),variant:`success`});function O(e){return m({...d(e),variant:`error`})}D.error=O,D.warning=e=>m({...d(e),variant:`warning`}),D.info=e=>m({...d(e),variant:`info`}),D.loading=e=>m({...d(e),variant:`loading`}),D.offline=e=>m({duration:1/0,dismissible:!1,...d(e),variant:`offline`}),D.update=e=>m({duration:8e3,...d(e),variant:`update`}),D.dismiss=h,D.dismissAll=g,D.flash=Object.assign(C,{success:w(`success`),error:w(`error`),warning:w(`warning`),info:w(`info`)}),D.updateToast=E,D.undo=(e,t)=>{let n=typeof e==`string`?{title:e,onUndo:t?.onUndo||(()=>{}),...t}:e,r=!1,i=n.duration??5e3,a=m({title:n.title,description:n.description,position:n.position,duration:i,dismissible:!0,showProgress:!0,action:{label:n.undoLabel||`Undo`,onClick:async()=>{r=!0;try{await n.onUndo()}finally{h(a)}}},onDismiss:()=>{r||n.onDismiss?.()}});return a},D.step=e=>{let t=m({variant:`loading`,duration:1/0,...d(e)});return{id:t,next:e=>{E(t,{variant:`loading`,duration:1/0,...e})},done:e=>{E(t,{variant:`success`,duration:a,...e})},fail:e=>{E(t,{variant:`error`,duration:a,...e})}}},D.custom=(e,t)=>m({...t,component:e}),D.progress=e=>{let t=d(e),n=m({variant:`loading`,duration:1/0,progress:t.progress??0,...t});return{id:n,setProgress:(e,t)=>{E(n,{progress:Math.min(100,Math.max(0,e)),...t})},done:e=>{E(n,{variant:`success`,duration:a,progress:100,...e})},fail:e=>{E(n,{variant:`error`,duration:a,...e})}}},D.copy=async(e,t)=>{let n=d(t||{title:`Copied to clipboard`});try{if(typeof navigator<`u`&&navigator.clipboard&&typeof navigator.clipboard.writeText==`function`)await navigator.clipboard.writeText(e);else throw Error(`Clipboard API unavailable`);return m({title:n.title||`Copied to clipboard`,description:n.description||e,variant:`success`,duration:3e3,...n})}catch(e){return m({title:`Failed to copy`,description:e instanceof Error?e.message:`Clipboard access denied`,variant:`error`,duration:4e3})}},D.network=e=>{let t=null;function n(){t||=m({title:e?.offline?.title??`You are offline`,description:e?.offline?.description??`Check your internet connection.`,variant:`offline`,duration:1/0,dismissible:!1,...e?.offline})}function r(){t&&=(h(t),null),e?.online!==null&&m({title:e?.online?.title??`Back online`,description:e?.online?.description??`Your internet connection was restored.`,variant:`success`,duration:4e3,...e?.online})}return typeof navigator<`u`&&navigator.onLine===!1&&n(),typeof window<`u`&&(window.addEventListener(`offline`,n),window.addEventListener(`online`,r)),{stop:()=>{typeof window<`u`&&(window.removeEventListener(`offline`,n),window.removeEventListener(`online`,r)),t&&=(h(t),null)}}},D.confirm=(e,t)=>{let n=typeof e==`string`?{title:e,...t}:e;return new Promise(e=>{let t=!1,r=n=>{t||(t=!0,e(n),h(i))},i=m({title:n.title??`Are you sure?`,description:n.description,variant:n.variant??`warning`,position:n.position,duration:n.duration??1/0,showProgress:n.duration!==void 0&&n.duration!==1/0,action:{label:n.confirmLabel??`Confirm`,onClick:()=>r(!0)},cancel:{label:n.cancelLabel??`Cancel`,onClick:()=>r(!1)},onDismiss:()=>r(!1)})})},D.retry=(e,t)=>new Promise((n,r)=>{let i=(e,t)=>d(typeof e==`function`?e(t):e),o={...d(t.loading),position:t.position},s=m({...o,variant:`loading`,duration:1/0,dismissible:!1}),c=0,l=async()=>{E(s,{...o,variant:`loading`,duration:1/0,dismissible:!1,action:void 0,onDismiss:void 0});try{let r=await e(),o=i(t.success,r);E(s,{...o,variant:`success`,dismissible:!0,duration:o.duration??a}),n(r)}catch(e){c++;let n=t.error?i(t.error,e):{title:u(e)},o=c<=(t.maxRetries??1/0);E(s,{description:void 0,...n,variant:`error`,dismissible:!0,duration:o?1/0:n.duration??a,action:o?{label:t.retryLabel??`Retry`,onClick:l}:void 0,onDismiss:()=>r(e)}),o||r(e)}};l()}),D.promise=async function(e,t){let n=m({...t.loading,variant:`loading`});try{let r=await e,i=typeof t.success==`function`?t.success(r):t.success;return E(n,{...i,variant:`success`,dismissible:!0,duration:i.duration??a}),r}catch(e){let r=typeof t.error==`function`?t.error(e):t.error;throw E(n,{...r,variant:`error`,dismissible:!0,duration:r.duration??a}),e}};function k(){return{toast:D,toasts:n,config:l,dismiss:h,dismissAll:g}}var A=k,j=[`data-mounted`,`data-front`,`data-visible`,`data-swiping`,`data-swiped`,`role`,`aria-hidden`],M={key:0,class:`toast-spinner`,"aria-hidden":`true`},N=[`innerHTML`],P={class:`toast-body`},F={key:0,class:`toast-title`},I={key:1,class:`toast-description`},ee={key:2,class:`toast-actions`},te={key:0,class:`toast-progress-track`,"aria-hidden":`true`},L=80,R=.4,z=(0,t.defineComponent)({__name:`Toast`,props:{toast:{},index:{},offset:{},height:{},frontHeight:{},visible:{type:Boolean},paused:{type:Boolean}},emits:[`close`,`height`],setup(e,{emit:n}){let r=e,i=n,a={success:`<circle cx="8" cy="8" r="7"/><path d="M5 8l2 2 4-4"/>`,error:`<circle cx="8" cy="8" r="7"/><path d="M5.5 5.5l5 5M10.5 5.5l-5 5"/>`,warning:`<path d="M8 2L14.5 13.5H1.5L8 2z"/><path d="M8 7v2.5M8 11.5v.01"/>`,info:`<circle cx="8" cy="8" r="7"/><path d="M8 7v4M8 5v.01"/>`,offline:`<path d="M2.5 5.5C4 4 5.8 3 8 3c1 0 1.9.2 2.7.5M4.5 8c.8-.7 1.9-1.2 3.2-1.2M8 12v.01M3 3l10 10"/>`,update:`<circle cx="8" cy="8" r="7"/><path d="M8 11V5.5M5.5 7.5L8 5l2.5 2.5"/>`},o=(0,t.computed)(()=>r.index===0),s=(0,t.computed)(()=>(0,t.toValue)(r.toast.title)),c=(0,t.computed)(()=>(0,t.toValue)(r.toast.description)),l=(0,t.computed)(()=>(0,t.toValue)(r.toast.progress)),u=(0,t.computed)(()=>r.toast.variant===`loading`||r.toast.variant===`offline`),d=(0,t.ref)(!1),f=0,p=r.toast.duration,m=0,h=null,g=(0,t.ref)(!1);function _(){h&&=(clearTimeout(h),null)}function v(e){if(_(),!(e===1/0||e<=0||u.value)){if(p=e,r.paused||E.value){g.value=!0;return}g.value=!1,m=Date.now(),h=setTimeout(()=>i(`close`,r.toast.id),e)}}function y(){g.value=!0,h&&(_(),p=Math.max(500,p-(Date.now()-m)))}function b(){r.paused||E.value||v(p)}(0,t.watch)(()=>r.paused,e=>e?y():b()),(0,t.watch)(()=>[r.toast.variant,r.toast.duration,r.toast.count],()=>v(r.toast.duration));let x=(0,t.ref)(null),S=null;function C(){x.value&&i(`height`,r.toast.id,x.value.offsetHeight)}(0,t.onMounted)(()=>{C(),typeof ResizeObserver<`u`&&x.value&&(S=new ResizeObserver(C),S.observe(x.value)),f=requestAnimationFrame(()=>{f=requestAnimationFrame(()=>d.value=!0)}),v(r.toast.duration)});let w=(0,t.computed)(()=>l.value===void 0?r.toast.showProgress&&r.toast.duration!==1/0&&r.toast.duration>0?{animationDuration:`${r.toast.duration}ms`,animationPlayState:g.value?`paused`:`running`}:{}:{transform:`scaleX(${Math.min(100,Math.max(0,l.value))/100})`}),T=(0,t.ref)(0),E=(0,t.ref)(!1),D=(0,t.ref)(!1),O=null,k=0,A=0,z=0,B=null;function V(e){!r.toast.dismissible||e.button!==0||e.target.closest(`button, a, input, textarea, select`)||(O=e.pointerId,k=e.clientX,A=e.clientY,z=performance.now(),B=null)}function H(e){if(e.pointerId!==O)return;let t=e.clientX-k,n=e.clientY-A;if(!B){if(Math.abs(t)<5&&Math.abs(n)<5)return;if(B=Math.abs(t)>Math.abs(n)?`x`:`y`,B===`y`){O=null;return}e.currentTarget.setPointerCapture(e.pointerId),E.value=!0,y()}T.value=t}function U(e){if(e.pointerId!==O||(O=null,!E.value))return;let t=T.value,n=Math.abs(t)/Math.max(1,performance.now()-z);E.value=!1,Math.abs(t)>L||n>R?(D.value=!0,T.value=Math.sign(t||1)*(Math.abs(t)+240),i(`close`,r.toast.id)):(T.value=0,b())}(0,t.onBeforeUnmount)(()=>{_(),cancelAnimationFrame(f),S?.disconnect()});function W(){i(`close`,r.toast.id)}async function G(e){try{await e?.()}catch(e){console.error(`[feather-toast-vue] Action handler error:`,e)}}let K=(0,t.computed)(()=>({"--index":r.index,"--offset":`${r.offset}px`,"--h":r.height===void 0?void 0:`${r.height}px`,"--front-h":`${r.frontHeight}px`,"--swipe-x":`${T.value}px`,"--swipe-amount":Math.min(1,Math.abs(T.value)/260)}));return(n,r)=>((0,t.openBlock)(),(0,t.createElementBlock)(`li`,{class:(0,t.normalizeClass)([`toast-card`,`toast-card--${e.toast.variant}`]),style:(0,t.normalizeStyle)(K.value),"data-mounted":d.value||void 0,"data-front":o.value||void 0,"data-visible":e.visible||void 0,"data-swiping":E.value||void 0,"data-swiped":D.value||void 0,role:e.toast.variant===`error`?`alert`:`status`,"aria-hidden":!e.visible||void 0,tabindex:`0`,onPointerdown:V,onPointermove:H,onPointerup:U,onPointercancel:U,onKeydown:r[2]||=(0,t.withKeys)(t=>e.toast.dismissible&&W(),[`esc`])},[(0,t.createElementVNode)(`div`,{ref_key:`contentEl`,ref:x,class:`toast-content`},[e.toast.variant===`loading`?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,M)):a[e.toast.variant]?((0,t.openBlock)(),(0,t.createElementBlock)(`svg`,{key:1,class:(0,t.normalizeClass)([`toast-icon`,`toast-icon--${e.toast.variant}`]),viewBox:`0 0 16 16`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.5`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"aria-hidden":`true`,innerHTML:a[e.toast.variant]},null,10,N)):(0,t.createCommentVNode)(``,!0),(0,t.createElementVNode)(`div`,P,[e.toast.component?((0,t.openBlock)(),(0,t.createBlock)((0,t.resolveDynamicComponent)(e.toast.component),{key:0,toast:e.toast,close:W},null,8,[`toast`])):((0,t.openBlock)(),(0,t.createElementBlock)(t.Fragment,{key:1},[s.value?((0,t.openBlock)(),(0,t.createElementBlock)(`p`,F,[(0,t.createTextVNode)((0,t.toDisplayString)(s.value),1),(e.toast.count??1)>1?((0,t.openBlock)(),(0,t.createElementBlock)(`span`,{key:e.toast.count,class:`toast-count`},`×`+(0,t.toDisplayString)(e.toast.count),1)):(0,t.createCommentVNode)(``,!0)])):(0,t.createCommentVNode)(``,!0),c.value?((0,t.openBlock)(),(0,t.createElementBlock)(`p`,I,(0,t.toDisplayString)(c.value),1)):(0,t.createCommentVNode)(``,!0)],64))]),e.toast.action||e.toast.cancel?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,ee,[e.toast.cancel?((0,t.openBlock)(),(0,t.createElementBlock)(`button`,{key:0,class:`toast-action-btn toast-action-btn--cancel`,onClick:r[0]||=(0,t.withModifiers)(t=>G(e.toast.cancel.onClick),[`stop`])},(0,t.toDisplayString)(e.toast.cancel.label),1)):(0,t.createCommentVNode)(``,!0),e.toast.action?((0,t.openBlock)(),(0,t.createElementBlock)(`button`,{key:1,class:`toast-action-btn`,onClick:r[1]||=(0,t.withModifiers)(t=>G(e.toast.action.onClick),[`stop`])},(0,t.toDisplayString)(e.toast.action.label),1)):(0,t.createCommentVNode)(``,!0)])):(0,t.createCommentVNode)(``,!0),e.toast.dismissible?((0,t.openBlock)(),(0,t.createElementBlock)(`button`,{key:3,class:`toast-close`,"aria-label":`Dismiss`,onClick:(0,t.withModifiers)(W,[`stop`])},[...r[3]||=[(0,t.createElementVNode)(`svg`,{viewBox:`0 0 14 14`,fill:`none`,"aria-hidden":`true`},[(0,t.createElementVNode)(`path`,{d:`M2 2l10 10M12 2L2 12`,stroke:`currentColor`,"stroke-width":`1.5`,"stroke-linecap":`round`})],-1)]])):(0,t.createCommentVNode)(``,!0)],512),e.toast.showProgress||l.value!==void 0?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,te,[(0,t.createElementVNode)(`div`,{class:(0,t.normalizeClass)([`toast-progress-fill`,{"toast-progress-fill--countdown":e.toast.showProgress&&l.value===void 0}]),style:(0,t.normalizeStyle)(w.value)},null,6)])):(0,t.createCommentVNode)(``,!0)],46,j))}}),B={"aria-label":`Notifications`,class:`toast-region`},V=14,H=(0,t.defineComponent)({__name:`ToastContainer`,setup(e){let{toasts:n,config:r,dismiss:i}=A(),a=(0,t.ref)(!1),o=(0,t.ref)(!1),s=[`top-right`,`top-left`,`top-center`,`bottom-right`,`bottom-left`,`bottom-center`],c=(0,t.reactive)({}),l=(0,t.reactive)({}),u=(0,t.reactive)({}),d=(0,t.computed)(()=>{let e={};for(let t of s)e[t]=[];for(let t of n.value)e[t.position]?.unshift(t);return e});(0,t.watch)(()=>n.value.map(e=>e.id),e=>{for(let t of Object.keys(c))e.includes(t)||delete c[t]});function f(e){return!!(r.value.expand||l[e]||u[e])}function p(e,t){let n=0;for(let r=0;r<t;r++)n+=c[e[r].id]??0;return n+t*V}function m(e,t){c[e]=t}function h(e,t){t.pointerType===`mouse`&&(l[e]=!0)}function g(e,t){t.pointerType===`mouse`&&(l[e]=!1)}function _(e,t){t.pointerType!==`mouse`&&(u[e]=!0)}function v(e){if(e.pointerType!==`mouse`&&!e.target?.closest?.(`.toast-viewport`))for(let e of s)u[e]=!1}function y(){o.value=document.visibilityState===`hidden`}return(0,t.watch)(()=>n.value.length,e=>{if(e===0)for(let e of s)u[e]=l[e]=!1}),(0,t.onMounted)(()=>{a.value=!0,document.addEventListener(`pointerdown`,v),document.addEventListener(`visibilitychange`,y)}),(0,t.onBeforeUnmount)(()=>{document.removeEventListener(`pointerdown`,v),document.removeEventListener(`visibilitychange`,y)}),(e,n)=>a.value?((0,t.openBlock)(),(0,t.createBlock)(t.Teleport,{key:0,to:`body`},[(0,t.createElementVNode)(`section`,B,[((0,t.openBlock)(),(0,t.createElementBlock)(t.Fragment,null,(0,t.renderList)(s,e=>(0,t.createVNode)(t.TransitionGroup,{key:e,tag:`ol`,name:`toast`,class:(0,t.normalizeClass)([`toast-viewport`,`toast-viewport--${e}`]),"data-y":e.startsWith(`top`)?`top`:`bottom`,"data-expanded":f(e)||void 0,"data-theme":(0,t.unref)(r).theme??`light`,"data-rich":(0,t.unref)(r).richColors||void 0,onPointerenter:t=>h(e,t),onPointerleave:t=>g(e,t),onPointerdown:t=>_(e,t)},{default:(0,t.withCtx)(()=>[((0,t.openBlock)(!0),(0,t.createElementBlock)(t.Fragment,null,(0,t.renderList)(d.value[e],(n,a)=>((0,t.openBlock)(),(0,t.createBlock)(z,{key:n.id,toast:n,index:a,offset:p(d.value[e],a),"front-height":c[d.value[e][0]?.id??``]??0,height:c[n.id],visible:a<((0,t.unref)(r).visibleToasts??3),paused:o.value||!!l[e]||!!u[e],onClose:(0,t.unref)(i),onHeight:m},null,8,[`toast`,`index`,`offset`,`front-height`,`height`,`visible`,`paused`,`onClose`]))),128))]),_:2},1032,[`class`,`data-y`,`data-expanded`,`data-theme`,`data-rich`,`onPointerenter`,`onPointerleave`,`onPointerdown`])),64))])])):(0,t.createCommentVNode)(``,!0)}}),U=`:root{--toast-bg:#fff;--toast-border:#00000014;--toast-text:#09090b;--toast-text-muted:#71717a;--toast-hover:#f4f4f5;--toast-shadow:0 4px 12px #00000014;--toast-radius:10px;--toast-width:356px;--toast-gap:14px;--toast-peek:14px;--toast-edge:24px;--toast-z:99999;--toast-c-success:#16a34a;--toast-c-error:#dc2626;--toast-c-warning:#d97706;--toast-c-info:#2563eb;--toast-c-muted:#71717a;--toast-c-offline:#6b7280;--toast-c-update:#8b5cf6;--toast-ease:cubic-bezier(.21, 1.02, .73, 1);--toast-duration:.4s}.toast-viewport[data-theme=dark]{--toast-bg:#09090b;--toast-border:#ffffff1a;--toast-text:#fafafa;--toast-text-muted:#a1a1aa;--toast-hover:#ffffff14;--toast-shadow:0 4px 12px #0006}@media (prefers-color-scheme:dark){.toast-viewport[data-theme=system]{--toast-bg:#09090b;--toast-border:#ffffff1a;--toast-text:#fafafa;--toast-text-muted:#a1a1aa;--toast-hover:#ffffff14;--toast-shadow:0 4px 12px #0006}}.toast-viewport[data-rich] .toast-card--success{--toast-bg:#ecfdf3;--toast-border:#bffcd9;--toast-text:#008a2e}.toast-viewport[data-rich] .toast-card--error{--toast-bg:#fff0f0;--toast-border:#ffe0e1;--toast-text:#e60000}.toast-viewport[data-rich] .toast-card--warning{--toast-bg:#fffcf0;--toast-border:#fdf5d3;--toast-text:#dc7609}.toast-viewport[data-rich] .toast-card--info{--toast-bg:#f0f8ff;--toast-border:#d3e0fd;--toast-text:#0973dc}.toast-viewport[data-rich] .toast-card--update{--toast-bg:#f5f3ff;--toast-border:#e4defe;--toast-text:#6d28d9}.toast-viewport[data-rich][data-theme=dark] .toast-card--success{--toast-bg:#001f0f;--toast-border:#003d1c;--toast-text:#59f3a6}.toast-viewport[data-rich][data-theme=dark] .toast-card--error{--toast-bg:#2d0607;--toast-border:#4d0408;--toast-text:#ff9ea1}.toast-viewport[data-rich][data-theme=dark] .toast-card--warning{--toast-bg:#1d1f00;--toast-border:#3d3d00;--toast-text:#f3cf58}.toast-viewport[data-rich][data-theme=dark] .toast-card--info{--toast-bg:#000d1f;--toast-border:#00113d;--toast-text:#5896f3}.toast-viewport[data-rich][data-theme=dark] .toast-card--update{--toast-bg:#170b2e;--toast-border:#2e1a5c;--toast-text:#c4b5fd}.toast-viewport[data-rich] .toast-description{color:var(--toast-text);opacity:.8}.toast-viewport{--lift:-1;z-index:var(--toast-z);width:var(--toast-width);max-width:calc(100vw - var(--toast-edge) * 2);height:0;margin:0;padding:0;font-family:inherit;list-style:none;position:fixed}.toast-viewport[data-y=top]{--lift:1;top:var(--toast-edge)}.toast-viewport[data-y=bottom]{--lift:-1;bottom:var(--toast-edge)}.toast-viewport--top-right,.toast-viewport--bottom-right{right:var(--toast-edge)}.toast-viewport--top-left,.toast-viewport--bottom-left{left:var(--toast-edge)}.toast-viewport--top-center,.toast-viewport--bottom-center{left:50%;transform:translate(-50%)}.toast-card{--y:calc(var(--lift) * -100%);--s:1;z-index:calc(1000 - var(--index,0));height:var(--h,auto);box-sizing:border-box;background:var(--toast-bg);border-radius:var(--toast-radius);box-shadow:0 0 0 1px var(--toast-border), var(--toast-shadow);color:var(--toast-text);opacity:0;pointer-events:auto;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;touch-action:pan-y;transform:translate3d(var(--swipe-x,0px), var(--y), 0) scale(var(--s));transition:transform var(--toast-duration) var(--toast-ease), opacity var(--toast-duration) var(--toast-ease), height var(--toast-duration) var(--toast-ease), box-shadow .2s ease;will-change:transform, opacity;outline:none;margin:0;position:absolute;left:0;right:0}.toast-viewport[data-y=bottom] .toast-card{transform-origin:bottom;bottom:0}.toast-viewport[data-y=top] .toast-card{transform-origin:top;top:0}.toast-card:focus-visible{box-shadow:0 0 0 1px var(--toast-border), 0 0 0 3px #71717a59, var(--toast-shadow)}.toast-card:after{content:"";height:calc(var(--toast-gap) + 1px);position:absolute;left:0;right:0}.toast-viewport[data-y=bottom] .toast-card:after{bottom:100%}.toast-viewport[data-y=top] .toast-card:after{top:100%}.toast-card[data-mounted]{--y:calc(var(--lift) * var(--index) * var(--toast-peek));--s:calc(1 - var(--index) * .05);opacity:1}.toast-viewport:not([data-expanded]) .toast-card:not([data-front]){height:var(--front-h);overflow:hidden}.toast-viewport:not([data-expanded]) .toast-card:not([data-front])>*{opacity:0}.toast-viewport[data-expanded] .toast-card[data-mounted]{--y:calc(var(--lift) * var(--offset));--s:1}.toast-card[data-mounted]:not([data-visible]){opacity:0;pointer-events:none}.toast-card[data-swiping]{opacity:calc(1 - var(--swipe-amount,0) * .8);transition:opacity 0s, height var(--toast-duration) var(--toast-ease);cursor:grabbing}.toast-viewport .toast-card[data-mounted].toast-leave-active{pointer-events:none}.toast-viewport .toast-card[data-mounted].toast-leave-to{opacity:0}.toast-viewport .toast-card[data-mounted][data-front].toast-leave-to:not([data-swiped]){--y:calc(var(--lift) * -100%)}.toast-viewport .toast-card[data-mounted]:not([data-front]).toast-leave-to{--s:calc(1 - var(--index) * .05 - .05)}.toast-content{transition:opacity var(--toast-duration) var(--toast-ease);align-items:flex-start;gap:10px;padding:14px 16px;display:flex}.toast-icon,.toast-spinner{flex-shrink:0;width:16px;height:16px;margin-top:1px}.toast-icon--success{color:var(--toast-c-success)}.toast-icon--error{color:var(--toast-c-error)}.toast-icon--warning{color:var(--toast-c-warning)}.toast-icon--info{color:var(--toast-c-info)}.toast-icon--offline{color:var(--toast-c-offline)}.toast-icon--update{color:var(--toast-c-update)}.toast-viewport[data-rich] .toast-icon{color:currentColor}.toast-icon{animation:toast-icon-in .3s var(--toast-ease)}@keyframes toast-icon-in{0%{opacity:0;transform:scale(.6)}}@keyframes toast-spin{to{transform:rotate(360deg)}}.toast-spinner{box-sizing:border-box;border:1.5px solid var(--toast-border);border-top-color:var(--toast-text-muted);border-radius:50%;animation:.7s linear infinite toast-spin}.toast-body{flex:1;min-width:0}.toast-count{vertical-align:1px;color:var(--toast-text-muted);background:var(--toast-hover);animation:toast-count-pop .3s var(--toast-ease);border-radius:999px;margin-left:6px;padding:0 6px;font-size:11px;font-weight:600;line-height:18px;display:inline-block}@keyframes toast-count-pop{0%{transform:scale(1.5)}}.toast-title{letter-spacing:-.01em;color:var(--toast-text);overflow-wrap:anywhere;margin:0;font-size:13px;font-weight:500;line-height:1.45}.toast-description{color:var(--toast-text-muted);overflow-wrap:anywhere;margin:2px 0 0;font-size:12.5px;line-height:1.5}.toast-actions{flex-shrink:0;align-self:center;gap:6px;display:flex}.toast-action-btn{font:inherit;color:var(--toast-bg);background:var(--toast-text);cursor:pointer;white-space:nowrap;border:0;border-radius:6px;padding:4px 10px;font-size:12px;font-weight:500;line-height:1.4;transition:opacity .15s,background .15s}.toast-action-btn:hover{opacity:.88}.toast-action-btn--cancel{color:var(--toast-text);box-shadow:inset 0 0 0 1px var(--toast-border);background:0 0}.toast-action-btn--cancel:hover{opacity:1;background:var(--toast-hover)}.toast-close{width:20px;height:20px;color:var(--toast-text-muted);cursor:pointer;opacity:.5;background:0 0;border:0;border-radius:5px;flex-shrink:0;justify-content:center;align-items:center;margin:-1px -4px 0 0;padding:0;transition:opacity .15s,background .15s;display:flex}.toast-card:hover .toast-close,.toast-close:focus-visible{opacity:1}.toast-close:hover{background:var(--toast-hover);color:var(--toast-text)}.toast-close svg{width:11px;height:11px}.toast-progress-track{border-radius:0 0 var(--toast-radius) var(--toast-radius);background:var(--toast-border);height:2px;position:absolute;bottom:0;left:0;right:0;overflow:hidden}.toast-progress-fill{background:var(--toast-text-muted);transform-origin:0;height:100%;transition:transform .2s linear}.toast-card--success .toast-progress-fill{background:var(--toast-c-success)}.toast-card--error .toast-progress-fill{background:var(--toast-c-error)}.toast-card--warning .toast-progress-fill{background:var(--toast-c-warning)}.toast-card--info .toast-progress-fill{background:var(--toast-c-info)}.toast-card--update .toast-progress-fill{background:var(--toast-c-update)}@keyframes toast-countdown{0%{transform:scaleX(1)}to{transform:scaleX(0)}}.toast-progress-fill--countdown{animation-name:toast-countdown;animation-timing-function:linear;animation-fill-mode:forwards}@media (width<=600px){.toast-viewport{width:auto;max-width:none;left:16px;right:16px;transform:none}.toast-viewport[data-y=top]{top:max(16px, env(safe-area-inset-top))}.toast-viewport[data-y=bottom]{bottom:max(16px, env(safe-area-inset-bottom))}}@media (hover:none){.toast-close{opacity:1;width:28px;height:28px;margin:-5px -8px -5px 0}.toast-action-btn{padding:6px 12px}}@media (prefers-reduced-motion:reduce){.toast-card{transition:opacity .2s,height}.toast-icon,.toast-count,.toast-progress-fill--countdown{animation:none}}`,W=`feather-toast-root`,G=`feather-toast-style`,K={install(e,n={}){let r=k();if(e.provide(`toast`,r),typeof document>`u`)return;if(n.injectStyles!==!1&&!document.getElementById(G)){let e=document.createElement(`style`);e.id=G,e.textContent=U,document.head.appendChild(e)}let i=document.getElementById(W);i||(i=document.createElement(`div`),i.id=W,document.body.appendChild(i)),S();let a=(0,t.createVNode)(H);a.appContext=e._context,(0,t.render)(a,i);let o=e.unmount;e.unmount=(...e)=>{(0,t.render)(null,i),i?.parentNode&&i.parentNode.removeChild(i),o(...e)}}};function q(e){return{id:e.id,title:(0,t.toValue)(e.title),description:(0,t.toValue)(e.description),variant:e.variant,position:e.position,count:e.count??1,action:e.action?.label,cancel:e.cancel?.label}}function J(e,t){return t===void 0?!0:e===void 0?!1:typeof t==`string`?e===t:t.test(e)}function ne(e,t){return J(e.title,t.title)&&J(e.description,t.description)&&(t.variant===void 0||e.variant===t.variant)&&(t.position===void 0||e.position===t.position)}function Y(e){return e.length?e.map(e=>` - [${e.variant}] ${JSON.stringify(e.title)}${e.description?` — ${JSON.stringify(e.description)}`:``}`).join(`
2
- `):` (no toasts)`}function X(){return k().toasts.value}function Z(){return X().map(q)}function Q(e){return Z().find(t=>ne(t,e))}function $(e){let t=Q(e);if(t)return t;throw Error(`Expected a toast matching ${String(JSON.stringify(e,(e,t)=>t instanceof RegExp?String(t):t))}\nActive toasts:\n${Y(Z())}`)}function re(){let e=Z();if(e.length)throw Error(`Expected no toasts, found ${e.length}:\n${Y(e)}`)}async function ie(e,t=`action`){let{id:n}=$(e),r=X().find(e=>e.id===n)?.[t];if(!r)throw Error(`Toast ${JSON.stringify(n)} has no ${t} button`);await r.onClick()}var ae=T;e.CreateFeatherToast=K,e.ToastContainer=H,e.clickToastAction=ie,e.expectNoToasts=re,e.expectToast=$,e.findToast=Q,e.getToasts=Z,e.resetToasts=ae,e.useFeatherToast=k,e.useToast=A});
1
+ (function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require("vue")):typeof define==`function`&&define.amd?define([`exports`,`vue`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.FeatherToast={},e.Vue))})(this,function(e,t){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var n=(0,t.ref)([]),r=0;function i(){return`toast-${++r}-${Date.now()}`}var a=5e3,o=`bottom-right`,s=5,c=()=>({max:s,duration:a,position:o}),l=(0,t.ref)(c());function u(e){return typeof e==`string`?e:e&&typeof e==`object`&&`message`in e&&typeof e.message==`string`?e.message:`Something went wrong`}function d(e){return typeof e==`string`||(0,t.isRef)(e)||typeof e==`function`?{title:e}:e instanceof Error||typeof e==`object`&&e&&`message`in e&&!(`title`in e)&&!(`description`in e)?{title:u(e)}:typeof e==`object`&&e?e:{title:String(e??``)}}function f(e,t){let r=t??l.value.max;if(!r||r<=0)return;let i=n.value.filter(t=>t.position===e),a=i.length-r+1;if(a>0){let e=i.slice(0,a);for(let t of e)h(t.id)}}function p(e){return!e.action&&!e.cancel&&!e.component&&e.progress===void 0&&!e.onDismiss}function m(e){let r=d(e);if(r.id&&n.value.some(e=>e.id===r.id))return E(r.id,r),r.id;let s=r.id??i(),c=r.variant??`default`,u=r.position??l.value.position??o;if(l.value.group!==!1&&!r.id&&c!==`loading`&&p(r)){let e=n.value.find(e=>e.position===u&&e.variant===c&&(0,t.toValue)(e.title)===(0,t.toValue)(r.title)&&(0,t.toValue)(e.description)===(0,t.toValue)(r.description)&&p(e));if(e)return e.count=(e.count??1)+1,e.id}let m=l.value.duration??a,h=r.duration??(c===`loading`?1/0:m);f(u);let g={id:s,title:r.title,description:r.description,variant:c,position:u,duration:h,dismissible:r.dismissible??!0,action:r.action,cancel:r.cancel,progress:r.progress,showProgress:r.showProgress,component:r.component,onDismiss:r.onDismiss};return n.value.push(g),s}function h(e){let t=n.value.findIndex(t=>t.id===e);t>-1&&(n.value[t]?.onDismiss?.(),n.value.splice(t,1),v.delete(e))}function g(){for(let e of n.value)e.onDismiss?.();n.value.splice(0,n.value.length),v.clear()}var _=`feather-toast:flash`,v=new Map,y=!1;function b(e){return{title:(0,t.toValue)(e.title),description:(0,t.toValue)(e.description),variant:e.variant,position:e.position,duration:Number.isFinite(e.duration)?e.duration:void 0}}function x(){let e=[...v.values()];if(v.clear(),e.length)try{sessionStorage.setItem(_,JSON.stringify(e))}catch{}}function S(){try{let e=sessionStorage.getItem(_);if(!e)return;sessionStorage.removeItem(_);for(let t of JSON.parse(e))m(t)}catch{}}function C(e){let t=d(e),n=m(t);return typeof window>`u`||(v.set(n,b(t)),y||(y=!0,window.addEventListener(`pagehide`,x))),n}var w=e=>t=>C({...d(t),variant:e});function T(){n.value.splice(0,n.value.length),v.clear(),l.value=c(),r=0}function E(e,t){let r=n.value.findIndex(t=>t.id===e);if(r>-1){let e=n.value[r];if(!e)return;n.value[r]={...e,...t,id:e.id,variant:t.variant??e.variant,position:t.position??e.position,duration:t.duration??e.duration,dismissible:t.dismissible??e.dismissible,progress:t.progress===void 0?e.progress:t.progress,showProgress:t.showProgress===void 0?e.showProgress:t.showProgress}}}function D(e){return m(e)}D.config=e=>{l.value={...l.value,...e}},D.getConfig=()=>({...l.value}),D.success=e=>m({...d(e),variant:`success`});function O(e){return m({...d(e),variant:`error`})}D.error=O,D.warning=e=>m({...d(e),variant:`warning`}),D.info=e=>m({...d(e),variant:`info`}),D.loading=e=>m({...d(e),variant:`loading`}),D.offline=e=>m({duration:1/0,dismissible:!1,...d(e),variant:`offline`}),D.update=e=>m({duration:8e3,...d(e),variant:`update`}),D.dismiss=h,D.dismissAll=g,D.flash=Object.assign(C,{success:w(`success`),error:w(`error`),warning:w(`warning`),info:w(`info`)}),D.updateToast=E,D.undo=(e,t)=>{let n=typeof e==`string`?{title:e,onUndo:t?.onUndo||(()=>{}),...t}:e,r=!1,i=n.duration??5e3,a=m({title:n.title,description:n.description,position:n.position,duration:i,dismissible:!0,showProgress:!0,action:{label:n.undoLabel||`Undo`,onClick:async()=>{r=!0;try{await n.onUndo()}finally{h(a)}}},onDismiss:()=>{r||n.onDismiss?.()}});return a},D.step=e=>{let t=m({variant:`loading`,duration:1/0,...d(e)});return{id:t,next:e=>{E(t,{variant:`loading`,duration:1/0,...e})},done:e=>{E(t,{variant:`success`,duration:a,...e})},fail:e=>{E(t,{variant:`error`,duration:a,...e})}}},D.custom=(e,t)=>m({...t,component:e}),D.progress=e=>{let t=d(e),n=m({variant:`loading`,duration:1/0,progress:t.progress??0,...t});return{id:n,setProgress:(e,t)=>{E(n,{progress:Math.min(100,Math.max(0,e)),...t})},done:e=>{E(n,{variant:`success`,duration:a,progress:100,...e})},fail:e=>{E(n,{variant:`error`,duration:a,...e})}}},D.copy=async(e,t)=>{let n=d(t||{title:`Copied to clipboard`});try{if(typeof navigator<`u`&&navigator.clipboard&&typeof navigator.clipboard.writeText==`function`)await navigator.clipboard.writeText(e);else throw Error(`Clipboard API unavailable`);return m({title:n.title||`Copied to clipboard`,description:n.description||e,variant:`success`,duration:3e3,...n})}catch(e){return m({title:`Failed to copy`,description:e instanceof Error?e.message:`Clipboard access denied`,variant:`error`,duration:4e3})}},D.network=e=>{let t=null;function n(){t||=m({title:e?.offline?.title??`You are offline`,description:e?.offline?.description??`Check your internet connection.`,variant:`offline`,duration:1/0,dismissible:!1,...e?.offline})}function r(){t&&=(h(t),null),e?.online!==null&&m({title:e?.online?.title??`Back online`,description:e?.online?.description??`Your internet connection was restored.`,variant:`success`,duration:4e3,...e?.online})}return typeof navigator<`u`&&navigator.onLine===!1&&n(),typeof window<`u`&&(window.addEventListener(`offline`,n),window.addEventListener(`online`,r)),{stop:()=>{typeof window<`u`&&(window.removeEventListener(`offline`,n),window.removeEventListener(`online`,r)),t&&=(h(t),null)}}},D.confirm=(e,t)=>{let n=typeof e==`string`?{title:e,...t}:e;return new Promise(e=>{let t=!1,r=n=>{t||(t=!0,e(n),h(i))},i=m({title:n.title??`Are you sure?`,description:n.description,variant:n.variant??`warning`,position:n.position,duration:n.duration??1/0,showProgress:n.duration!==void 0&&n.duration!==1/0,action:{label:n.confirmLabel??`Confirm`,onClick:()=>r(!0)},cancel:{label:n.cancelLabel??`Cancel`,onClick:()=>r(!1)},onDismiss:()=>r(!1)})})},D.retry=(e,t)=>new Promise((n,r)=>{let i=(e,t)=>d(typeof e==`function`?e(t):e),o={...d(t.loading),position:t.position},s=m({...o,variant:`loading`,duration:1/0,dismissible:!1}),c=0,l=async()=>{E(s,{...o,variant:`loading`,duration:1/0,dismissible:!1,action:void 0,onDismiss:void 0});try{let r=await e(),o=i(t.success,r);E(s,{...o,variant:`success`,dismissible:!0,duration:o.duration??a}),n(r)}catch(e){c++;let n=t.error?i(t.error,e):{title:u(e)},o=c<=(t.maxRetries??1/0);E(s,{description:void 0,...n,variant:`error`,dismissible:!0,duration:o?1/0:n.duration??a,action:o?{label:t.retryLabel??`Retry`,onClick:l}:void 0,onDismiss:()=>r(e)}),o||r(e)}};l()}),D.promise=async function(e,t){let n=m({...t.loading,variant:`loading`});try{let r=await e,i=typeof t.success==`function`?t.success(r):t.success;return E(n,{...i,variant:`success`,dismissible:!0,duration:i.duration??a}),r}catch(e){let r=typeof t.error==`function`?t.error(e):t.error;throw E(n,{...r,variant:`error`,dismissible:!0,duration:r.duration??a}),e}};function k(){return{toast:D,toasts:n,config:l,dismiss:h,dismissAll:g}}var A=k,j=[`data-mounted`,`data-front`,`data-visible`,`data-swiping`,`data-swiped`,`role`,`aria-hidden`],M={key:0,class:`toast-spinner`,"aria-hidden":`true`},N=[`innerHTML`],ee={class:`toast-body`},te={key:0,class:`toast-title`},P={key:1,class:`toast-description`},F={key:2,class:`toast-actions`},I={key:0,class:`toast-progress-track`,"aria-hidden":`true`},L=80,R=.4,z=(0,t.defineComponent)({__name:`Toast`,props:{toast:{},index:{},offset:{},height:{},frontHeight:{},visible:{type:Boolean},paused:{type:Boolean}},emits:[`close`,`height`],setup(e,{emit:n}){let r=e,i=n,a={success:`<circle cx="8" cy="8" r="7"/><path d="M5 8l2 2 4-4"/>`,error:`<circle cx="8" cy="8" r="7"/><path d="M5.5 5.5l5 5M10.5 5.5l-5 5"/>`,warning:`<path d="M8 2L14.5 13.5H1.5L8 2z"/><path d="M8 7v2.5M8 11.5v.01"/>`,info:`<circle cx="8" cy="8" r="7"/><path d="M8 7v4M8 5v.01"/>`,offline:`<path d="M2.5 5.5C4 4 5.8 3 8 3c1 0 1.9.2 2.7.5M4.5 8c.8-.7 1.9-1.2 3.2-1.2M8 12v.01M3 3l10 10"/>`,update:`<circle cx="8" cy="8" r="7"/><path d="M8 11V5.5M5.5 7.5L8 5l2.5 2.5"/>`},o=(0,t.computed)(()=>r.index===0),s=(0,t.computed)(()=>(0,t.toValue)(r.toast.title)),c=(0,t.computed)(()=>(0,t.toValue)(r.toast.description)),l=(0,t.computed)(()=>(0,t.toValue)(r.toast.progress)),u=(0,t.computed)(()=>r.toast.variant===`loading`||r.toast.variant===`offline`),d=(0,t.ref)(!1),f=0,p=r.toast.duration,m=0,h=null,g=(0,t.ref)(!1);function _(){h&&=(clearTimeout(h),null)}function v(e){_(),!(e===1/0||e<=0||u.value)&&(p=e,r.paused||E.value?g.value=!0:(g.value=!1,m=Date.now(),h=setTimeout(()=>i(`close`,r.toast.id),e)))}function y(){g.value=!0,h&&(_(),p=Math.max(500,p-(Date.now()-m)))}function b(){r.paused||E.value||v(p)}(0,t.watch)(()=>r.paused,e=>e?y():b()),(0,t.watch)(()=>[r.toast.variant,r.toast.duration,r.toast.count],()=>v(r.toast.duration));let x=(0,t.ref)(null),S=null;function C(){x.value&&i(`height`,r.toast.id,x.value.offsetHeight)}(0,t.onMounted)(()=>{C(),typeof ResizeObserver<`u`&&x.value&&(S=new ResizeObserver(C),S.observe(x.value)),f=requestAnimationFrame(()=>{f=requestAnimationFrame(()=>d.value=!0)}),v(r.toast.duration)});let w=(0,t.computed)(()=>l.value===void 0?r.toast.showProgress&&r.toast.duration!==1/0&&r.toast.duration>0?{animationDuration:`${r.toast.duration}ms`,animationPlayState:g.value?`paused`:`running`}:{}:{transform:`scaleX(${Math.min(100,Math.max(0,l.value))/100})`}),T=(0,t.ref)(0),E=(0,t.ref)(!1),D=(0,t.ref)(!1),O=null,k=0,A=0,z=0,B=null;function V(e){r.toast.dismissible&&e.button===0&&(e.target.closest(`button, a, input, textarea, select`)||(O=e.pointerId,k=e.clientX,A=e.clientY,z=performance.now(),B=null))}function H(e){if(e.pointerId!==O)return;let t=e.clientX-k,n=e.clientY-A;if(!B){if(Math.abs(t)<5&&Math.abs(n)<5)return;if(B=Math.abs(t)>Math.abs(n)?`x`:`y`,B===`y`){O=null;return}e.currentTarget.setPointerCapture(e.pointerId),E.value=!0,y()}T.value=t}function U(e){if(e.pointerId!==O||(O=null,!E.value))return;let t=T.value,n=Math.abs(t)/Math.max(1,performance.now()-z);E.value=!1,Math.abs(t)>L||n>R?(D.value=!0,T.value=Math.sign(t||1)*(Math.abs(t)+240),i(`close`,r.toast.id)):(T.value=0,b())}(0,t.onBeforeUnmount)(()=>{_(),cancelAnimationFrame(f),S?.disconnect()});function W(){i(`close`,r.toast.id)}async function G(e){try{await e?.()}catch(e){console.error(`[feather-toast-vue] Action handler error:`,e)}}let K=(0,t.computed)(()=>({"--index":r.index,"--offset":`${r.offset}px`,"--h":r.height===void 0?void 0:`${r.height}px`,"--front-h":`${r.frontHeight}px`,"--swipe-x":`${T.value}px`,"--swipe-amount":Math.min(1,Math.abs(T.value)/260)}));return(n,r)=>((0,t.openBlock)(),(0,t.createElementBlock)(`li`,{class:(0,t.normalizeClass)([`toast-card`,`toast-card--${e.toast.variant}`]),style:(0,t.normalizeStyle)(K.value),"data-mounted":d.value||void 0,"data-front":o.value||void 0,"data-visible":e.visible||void 0,"data-swiping":E.value||void 0,"data-swiped":D.value||void 0,role:e.toast.variant===`error`?`alert`:`status`,"aria-hidden":!e.visible||void 0,tabindex:`0`,onPointerdown:V,onPointermove:H,onPointerup:U,onPointercancel:U,onKeydown:r[2]||=(0,t.withKeys)(t=>e.toast.dismissible&&W(),[`esc`])},[(0,t.createElementVNode)(`div`,{ref_key:`contentEl`,ref:x,class:`toast-content`},[e.toast.variant===`loading`?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,M)):a[e.toast.variant]?((0,t.openBlock)(),(0,t.createElementBlock)(`svg`,{key:1,class:(0,t.normalizeClass)([`toast-icon`,`toast-icon--${e.toast.variant}`]),viewBox:`0 0 16 16`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.5`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"aria-hidden":`true`,innerHTML:a[e.toast.variant]},null,10,N)):(0,t.createCommentVNode)(``,!0),(0,t.createElementVNode)(`div`,ee,[e.toast.component?((0,t.openBlock)(),(0,t.createBlock)((0,t.resolveDynamicComponent)(e.toast.component),{key:0,toast:e.toast,close:W},null,8,[`toast`])):((0,t.openBlock)(),(0,t.createElementBlock)(t.Fragment,{key:1},[s.value?((0,t.openBlock)(),(0,t.createElementBlock)(`p`,te,[(0,t.createTextVNode)((0,t.toDisplayString)(s.value),1),(e.toast.count??1)>1?((0,t.openBlock)(),(0,t.createElementBlock)(`span`,{key:e.toast.count,class:`toast-count`},`×`+(0,t.toDisplayString)(e.toast.count),1)):(0,t.createCommentVNode)(``,!0)])):(0,t.createCommentVNode)(``,!0),c.value?((0,t.openBlock)(),(0,t.createElementBlock)(`p`,P,(0,t.toDisplayString)(c.value),1)):(0,t.createCommentVNode)(``,!0)],64))]),e.toast.action||e.toast.cancel?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,F,[e.toast.cancel?((0,t.openBlock)(),(0,t.createElementBlock)(`button`,{key:0,class:`toast-action-btn toast-action-btn--cancel`,onClick:r[0]||=(0,t.withModifiers)(t=>G(e.toast.cancel.onClick),[`stop`])},(0,t.toDisplayString)(e.toast.cancel.label),1)):(0,t.createCommentVNode)(``,!0),e.toast.action?((0,t.openBlock)(),(0,t.createElementBlock)(`button`,{key:1,class:`toast-action-btn`,onClick:r[1]||=(0,t.withModifiers)(t=>G(e.toast.action.onClick),[`stop`])},(0,t.toDisplayString)(e.toast.action.label),1)):(0,t.createCommentVNode)(``,!0)])):(0,t.createCommentVNode)(``,!0),e.toast.dismissible?((0,t.openBlock)(),(0,t.createElementBlock)(`button`,{key:3,class:`toast-close`,"aria-label":`Dismiss`,onClick:(0,t.withModifiers)(W,[`stop`])},[...r[3]||=[(0,t.createElementVNode)(`svg`,{viewBox:`0 0 14 14`,fill:`none`,"aria-hidden":`true`},[(0,t.createElementVNode)(`path`,{d:`M2 2l10 10M12 2L2 12`,stroke:`currentColor`,"stroke-width":`1.5`,"stroke-linecap":`round`})],-1)]])):(0,t.createCommentVNode)(``,!0)],512),e.toast.showProgress||l.value!==void 0?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,I,[(0,t.createElementVNode)(`div`,{class:(0,t.normalizeClass)([`toast-progress-fill`,{"toast-progress-fill--countdown":e.toast.showProgress&&l.value===void 0}]),style:(0,t.normalizeStyle)(w.value)},null,6)])):(0,t.createCommentVNode)(``,!0)],46,j))}}),B={"aria-label":`Notifications`,class:`toast-region`},V=(0,t.defineComponent)({__name:`ToastContainer`,setup(e){let{toasts:n,config:r,dismiss:i}=A(),a=(0,t.ref)(!1),o=(0,t.ref)(!1),s=[`top-right`,`top-left`,`top-center`,`bottom-right`,`bottom-left`,`bottom-center`],c=(0,t.reactive)({}),l=(0,t.reactive)({}),u=(0,t.reactive)({}),d=(0,t.computed)(()=>{let e={};for(let t of s)e[t]=[];for(let t of n.value)e[t.position]?.unshift(t);return e});(0,t.watch)(()=>n.value.map(e=>e.id),e=>{for(let t of Object.keys(c))e.includes(t)||delete c[t]});function f(e){return!!(r.value.expand||l[e]||u[e])}function p(e,t){let n=0;for(let r=0;r<t;r++)n+=c[e[r].id]??0;return n}function m(e,t){c[e]=t}function h(e,t){t.pointerType===`mouse`&&(l[e]=!0)}function g(e,t){t.pointerType===`mouse`&&(l[e]=!1)}function _(e,t){t.pointerType!==`mouse`&&(u[e]=!0)}function v(e){if(e.pointerType!==`mouse`&&!e.target?.closest?.(`.toast-viewport`))for(let e of s)u[e]=!1}function y(){o.value=document.visibilityState===`hidden`}return(0,t.watch)(()=>n.value.length,e=>{if(e===0)for(let e of s)u[e]=l[e]=!1}),(0,t.onMounted)(()=>{a.value=!0,document.addEventListener(`pointerdown`,v),document.addEventListener(`visibilitychange`,y)}),(0,t.onBeforeUnmount)(()=>{document.removeEventListener(`pointerdown`,v),document.removeEventListener(`visibilitychange`,y)}),(e,n)=>a.value?((0,t.openBlock)(),(0,t.createBlock)(t.Teleport,{key:0,to:`body`},[(0,t.createElementVNode)(`section`,B,[((0,t.openBlock)(),(0,t.createElementBlock)(t.Fragment,null,(0,t.renderList)(s,e=>(0,t.createVNode)(t.TransitionGroup,{key:e,tag:`ol`,name:`toast`,class:(0,t.normalizeClass)([`toast-viewport`,`toast-viewport--${e}`]),"data-y":e.startsWith(`top`)?`top`:`bottom`,"data-expanded":f(e)||void 0,"data-theme":(0,t.unref)(r).theme??`light`,"data-rich":(0,t.unref)(r).richColors||void 0,onPointerenter:t=>h(e,t),onPointerleave:t=>g(e,t),onPointerdown:t=>_(e,t)},{default:(0,t.withCtx)(()=>[((0,t.openBlock)(!0),(0,t.createElementBlock)(t.Fragment,null,(0,t.renderList)(d.value[e],(n,a)=>((0,t.openBlock)(),(0,t.createBlock)(z,{key:n.id,toast:n,index:a,offset:p(d.value[e],a),"front-height":c[d.value[e][0]?.id??``]??0,height:c[n.id],visible:a<((0,t.unref)(r).visibleToasts??3),paused:o.value||!!l[e]||!!u[e],onClose:(0,t.unref)(i),onHeight:m},null,8,[`toast`,`index`,`offset`,`front-height`,`height`,`visible`,`paused`,`onClose`]))),128))]),_:2},1032,[`class`,`data-y`,`data-expanded`,`data-theme`,`data-rich`,`onPointerenter`,`onPointerleave`,`onPointerdown`])),64))])])):(0,t.createCommentVNode)(``,!0)}}),H=`:root{--toast-bg:#fff;--toast-border:#00000014;--toast-text:#09090b;--toast-text-muted:#71717a;--toast-hover:#f4f4f5;--toast-shadow:0 4px 12px #00000014;--toast-radius:10px;--toast-width:356px;--toast-gap:14px;--toast-peek:14px;--toast-edge:24px;--toast-z:99999;--toast-c-success:#16a34a;--toast-c-error:#dc2626;--toast-c-warning:#d97706;--toast-c-info:#2563eb;--toast-c-muted:#71717a;--toast-c-offline:#6b7280;--toast-c-update:#8b5cf6;--toast-ease:cubic-bezier(.21, 1.02, .73, 1);--toast-duration:.4s}.toast-viewport[data-theme=dark]{--toast-bg:#09090b;--toast-border:#ffffff1a;--toast-text:#fafafa;--toast-text-muted:#a1a1aa;--toast-hover:#ffffff14;--toast-shadow:0 4px 12px #0006}@media (prefers-color-scheme:dark){.toast-viewport[data-theme=system]{--toast-bg:#09090b;--toast-border:#ffffff1a;--toast-text:#fafafa;--toast-text-muted:#a1a1aa;--toast-hover:#ffffff14;--toast-shadow:0 4px 12px #0006}}.toast-viewport[data-rich] .toast-card--success{--toast-bg:#ecfdf3;--toast-border:#bffcd9;--toast-text:#008a2e}.toast-viewport[data-rich] .toast-card--error{--toast-bg:#fff0f0;--toast-border:#ffe0e1;--toast-text:#e60000}.toast-viewport[data-rich] .toast-card--warning{--toast-bg:#fffcf0;--toast-border:#fdf5d3;--toast-text:#dc7609}.toast-viewport[data-rich] .toast-card--info{--toast-bg:#f0f8ff;--toast-border:#d3e0fd;--toast-text:#0973dc}.toast-viewport[data-rich] .toast-card--update{--toast-bg:#f5f3ff;--toast-border:#e4defe;--toast-text:#6d28d9}.toast-viewport[data-rich][data-theme=dark] .toast-card--success{--toast-bg:#001f0f;--toast-border:#003d1c;--toast-text:#59f3a6}.toast-viewport[data-rich][data-theme=dark] .toast-card--error{--toast-bg:#2d0607;--toast-border:#4d0408;--toast-text:#ff9ea1}.toast-viewport[data-rich][data-theme=dark] .toast-card--warning{--toast-bg:#1d1f00;--toast-border:#3d3d00;--toast-text:#f3cf58}.toast-viewport[data-rich][data-theme=dark] .toast-card--info{--toast-bg:#000d1f;--toast-border:#00113d;--toast-text:#5896f3}.toast-viewport[data-rich][data-theme=dark] .toast-card--update{--toast-bg:#170b2e;--toast-border:#2e1a5c;--toast-text:#c4b5fd}.toast-viewport[data-rich] .toast-description{color:var(--toast-text);opacity:.8}.toast-viewport{--lift:-1;z-index:var(--toast-z);width:var(--toast-width);max-width:calc(100vw - var(--toast-edge) * 2);height:0;margin:0;padding:0;font-family:inherit;list-style:none;position:fixed}.toast-viewport[data-y=top]{--lift:1;top:var(--toast-edge)}.toast-viewport[data-y=bottom]{--lift:-1;bottom:var(--toast-edge)}.toast-viewport--top-right,.toast-viewport--bottom-right{right:var(--toast-edge)}.toast-viewport--top-left,.toast-viewport--bottom-left{left:var(--toast-edge)}.toast-viewport--top-center,.toast-viewport--bottom-center{left:50%;transform:translate(-50%)}.toast-card{--y:calc(var(--lift) * -100%);--s:1;z-index:calc(1000 - var(--index,0));height:var(--h,auto);box-sizing:border-box;background:var(--toast-bg);border-radius:var(--toast-radius);box-shadow:0 0 0 1px var(--toast-border), var(--toast-shadow);color:var(--toast-text);opacity:0;pointer-events:auto;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;touch-action:pan-y;transform:translate3d(var(--swipe-x,0px), var(--y), 0) scale(var(--s));transition:transform var(--toast-duration) var(--toast-ease), opacity var(--toast-duration) var(--toast-ease), height var(--toast-duration) var(--toast-ease), box-shadow .2s ease;will-change:transform, opacity;outline:none;margin:0;position:absolute;left:0;right:0}.toast-viewport[data-y=bottom] .toast-card{transform-origin:bottom;bottom:0}.toast-viewport[data-y=top] .toast-card{transform-origin:top;top:0}.toast-card:focus-visible{box-shadow:0 0 0 1px var(--toast-border), 0 0 0 3px #71717a59, var(--toast-shadow)}.toast-card:after{content:"";height:calc(var(--toast-gap) + 1px);position:absolute;left:0;right:0}.toast-viewport[data-y=bottom] .toast-card:after{bottom:100%}.toast-viewport[data-y=top] .toast-card:after{top:100%}.toast-card[data-mounted]{--y:calc(var(--lift) * var(--index) * var(--toast-peek));--s:calc(1 - var(--index) * .05);opacity:1}.toast-viewport:not([data-expanded]) .toast-card:not([data-front]){height:var(--front-h);overflow:hidden}.toast-viewport:not([data-expanded]) .toast-card:not([data-front])>*{opacity:0}.toast-viewport[data-expanded] .toast-card[data-mounted]{--y:calc(var(--lift) * (var(--offset) + var(--index) * var(--toast-gap)));--s:1}.toast-card[data-mounted]:not([data-visible]){opacity:0;pointer-events:none}.toast-card[data-swiping]{opacity:calc(1 - var(--swipe-amount,0) * .8);transition:opacity 0s, height var(--toast-duration) var(--toast-ease);cursor:grabbing}.toast-viewport .toast-card[data-mounted].toast-leave-active{pointer-events:none}.toast-viewport .toast-card[data-mounted].toast-leave-to{opacity:0}.toast-viewport .toast-card[data-mounted][data-front].toast-leave-to:not([data-swiped]){--y:calc(var(--lift) * -100%)}.toast-viewport .toast-card[data-mounted]:not([data-front]).toast-leave-to{--s:calc(1 - var(--index) * .05 - .05)}.toast-content{transition:opacity var(--toast-duration) var(--toast-ease);align-items:flex-start;gap:10px;padding:14px 16px;display:flex}.toast-icon,.toast-spinner{flex-shrink:0;width:16px;height:16px;margin-top:1px}.toast-icon--success{color:var(--toast-c-success)}.toast-icon--error{color:var(--toast-c-error)}.toast-icon--warning{color:var(--toast-c-warning)}.toast-icon--info{color:var(--toast-c-info)}.toast-icon--offline{color:var(--toast-c-offline)}.toast-icon--update{color:var(--toast-c-update)}.toast-viewport[data-rich] .toast-icon{color:currentColor}.toast-icon{animation:toast-icon-in .3s var(--toast-ease)}@keyframes toast-icon-in{0%{opacity:0;transform:scale(.6)}}@keyframes toast-spin{to{transform:rotate(360deg)}}.toast-spinner{box-sizing:border-box;border:1.5px solid var(--toast-border);border-top-color:var(--toast-text-muted);border-radius:50%;animation:.7s linear infinite toast-spin}.toast-body{flex:1;min-width:0}.toast-count{vertical-align:1px;color:var(--toast-text-muted);background:var(--toast-hover);animation:toast-count-pop .3s var(--toast-ease);border-radius:999px;margin-left:6px;padding:0 6px;font-size:11px;font-weight:600;line-height:18px;display:inline-block}@keyframes toast-count-pop{0%{transform:scale(1.5)}}.toast-title{letter-spacing:-.01em;color:var(--toast-text);overflow-wrap:anywhere;margin:0;font-size:13px;font-weight:500;line-height:1.45}.toast-description{color:var(--toast-text-muted);overflow-wrap:anywhere;margin:2px 0 0;font-size:12.5px;line-height:1.5}.toast-actions{flex-shrink:0;align-self:center;gap:6px;display:flex}.toast-action-btn{font:inherit;color:var(--toast-bg);background:var(--toast-text);cursor:pointer;white-space:nowrap;border:0;border-radius:6px;padding:4px 10px;font-size:12px;font-weight:500;line-height:1.4;transition:opacity .15s,background .15s}.toast-action-btn:hover{opacity:.88}.toast-action-btn--cancel{color:var(--toast-text);box-shadow:inset 0 0 0 1px var(--toast-border);background:0 0}.toast-action-btn--cancel:hover{opacity:1;background:var(--toast-hover)}.toast-close{width:20px;height:20px;color:var(--toast-text-muted);cursor:pointer;opacity:.5;background:0 0;border:0;border-radius:5px;flex-shrink:0;justify-content:center;align-items:center;margin:-1px -4px 0 0;padding:0;transition:opacity .15s,background .15s;display:flex}.toast-card:hover .toast-close,.toast-close:focus-visible{opacity:1}.toast-close:hover{background:var(--toast-hover);color:var(--toast-text)}.toast-close svg{width:11px;height:11px}.toast-progress-track{border-radius:0 0 var(--toast-radius) var(--toast-radius);background:var(--toast-border);height:2px;position:absolute;bottom:0;left:0;right:0;overflow:hidden}.toast-progress-fill{background:var(--toast-text-muted);transform-origin:0;height:100%;transition:transform .2s linear}.toast-card--success .toast-progress-fill{background:var(--toast-c-success)}.toast-card--error .toast-progress-fill{background:var(--toast-c-error)}.toast-card--warning .toast-progress-fill{background:var(--toast-c-warning)}.toast-card--info .toast-progress-fill{background:var(--toast-c-info)}.toast-card--update .toast-progress-fill{background:var(--toast-c-update)}@keyframes toast-countdown{0%{transform:scaleX(1)}to{transform:scaleX(0)}}.toast-progress-fill--countdown{animation-name:toast-countdown;animation-timing-function:linear;animation-fill-mode:forwards}@media (hover:none){.toast-close{opacity:1;width:28px;height:28px;margin:-5px -8px -5px 0}.toast-action-btn{padding:6px 12px}}@media (width<=600px){.toast-viewport{--toast-edge:12px;--toast-radius:18px;--toast-gap:6px;--toast-peek:6px;left:max(var(--toast-edge), env(safe-area-inset-left));right:max(var(--toast-edge), env(safe-area-inset-right));width:auto;max-width:none;transform:none}.toast-viewport[data-y=top]{top:max(var(--toast-edge), env(safe-area-inset-top))}.toast-viewport[data-y=bottom]{bottom:max(var(--toast-edge), env(safe-area-inset-bottom))}.toast-card{width:fit-content;max-width:100%;margin-inline:auto}.toast-content{flex-wrap:wrap;align-items:center;gap:6px 8px;padding:8px 12px}.toast-icon,.toast-spinner{width:13px;height:13px;margin-top:0}.toast-title{font-size:12px;line-height:1.35}.toast-description{margin-top:1px;font-size:11.5px;line-height:1.35}.toast-actions{flex-basis:100%;order:1;justify-content:flex-end}.toast-action-btn{border-radius:999px;padding:3px 10px;font-size:11.5px}.toast-close{width:20px;height:20px;margin:-2px -6px -2px 0}.toast-close svg{width:9px;height:9px}}@media (prefers-reduced-motion:reduce){.toast-card{transition:opacity .2s,height}.toast-icon,.toast-count,.toast-progress-fill--countdown{animation:none}}`,U=`feather-toast-root`,W=`feather-toast-style`,G={install(e,n={}){let r=k();if(e.provide(`toast`,r),typeof document>`u`)return;if(n.injectStyles!==!1&&!document.getElementById(W)){let e=document.createElement(`style`);e.id=W,e.textContent=H,document.head.appendChild(e)}let i=document.getElementById(U);i||(i=document.createElement(`div`),i.id=U,document.body.appendChild(i)),S();let a=(0,t.createVNode)(V);a.appContext=e._context,(0,t.render)(a,i);let o=e.unmount;e.unmount=(...e)=>{(0,t.render)(null,i),i?.parentNode&&i.parentNode.removeChild(i),o(...e)}}};function K(e){return{id:e.id,title:(0,t.toValue)(e.title),description:(0,t.toValue)(e.description),variant:e.variant,position:e.position,count:e.count??1,action:e.action?.label,cancel:e.cancel?.label}}function q(e,t){return t===void 0?!0:e===void 0?!1:typeof t==`string`?e===t:t.test(e)}function J(e,t){return q(e.title,t.title)&&q(e.description,t.description)&&(t.variant===void 0||e.variant===t.variant)&&(t.position===void 0||e.position===t.position)}function Y(e){return e.length?e.map(e=>` - [${e.variant}] ${JSON.stringify(e.title)}${e.description?` — ${JSON.stringify(e.description)}`:``}`).join(`
2
+ `):` (no toasts)`}function X(){return k().toasts.value}function Z(){return X().map(K)}function Q(e){return Z().find(t=>J(t,e))}function $(e){let t=Q(e);if(t)return t;throw Error(`Expected a toast matching ${String(JSON.stringify(e,(e,t)=>t instanceof RegExp?String(t):t))}\nActive toasts:\n${Y(Z())}`)}function ne(){let e=Z();if(e.length)throw Error(`Expected no toasts, found ${e.length}:\n${Y(e)}`)}async function re(e,t=`action`){let{id:n}=$(e),r=X().find(e=>e.id===n)?.[t];if(!r)throw Error(`Toast ${JSON.stringify(n)} has no ${t} button`);await r.onClick()}var ie=T;e.CreateFeatherToast=G,e.ToastContainer=V,e.clickToastAction=re,e.expectNoToasts=ne,e.expectToast=$,e.findToast=Q,e.getToasts=Z,e.resetToasts=ie,e.useFeatherToast=k,e.useToast=A});
package/package.json CHANGED
@@ -1,11 +1,12 @@
1
1
  {
2
2
  "name": "feather-toast-vue",
3
- "version": "3.0.0",
3
+ "version": "3.0.2",
4
4
  "description": "A lightweight, customizable toast notification plugin for Vue 3",
5
5
  "homepage": "https://zin-ix.github.io/feather-toast-vue/",
6
6
  "repository": {
7
7
  "type": "git",
8
- "url": "git+https://github.com/zin-ix/feather-toast-vue.git"
8
+ "url": "git+https://github.com/zin-ix/feather-toast-vue.git",
9
+ "directory": "packages/toast"
9
10
  },
10
11
  "bugs": {
11
12
  "url": "https://github.com/zin-ix/feather-toast-vue/issues"
@@ -18,7 +19,8 @@
18
19
  "toast-notification",
19
20
  "vue-plugin",
20
21
  "vite",
21
- "typescript"
22
+ "typescript",
23
+ "feather-vue"
22
24
  ],
23
25
  "license": "MIT",
24
26
  "author": "zin",
@@ -37,33 +39,17 @@
37
39
  "files": [
38
40
  "dist"
39
41
  ],
42
+ "publishConfig": {
43
+ "access": "public"
44
+ },
40
45
  "scripts": {
41
- "dev": "vite",
42
- "build": "npm run build:lib",
43
- "build:lib": "npm-run-all type-check build-only",
44
- "build:demo": "vite build",
45
- "build-only": "vite build --config vite.config.lib.ts",
46
- "preview": "vite preview",
47
- "type-check": "vue-tsc -p tsconfig.app.json",
48
- "prepublishOnly": "npm run build",
49
- "deploy": "npm run build:demo && gh-pages -d dist-demo"
46
+ "build": "npm run type-check && vite build",
47
+ "type-check": "vue-tsc -p tsconfig.json",
48
+ "prepublishOnly": "npm run build"
50
49
  },
51
50
  "peerDependencies": {
52
51
  "vue": "^3.5.0"
53
52
  },
54
- "devDependencies": {
55
- "@tsconfig/node24": "^24.0.4",
56
- "@types/node": "^24.12.2",
57
- "@vitejs/plugin-vue": "^6.0.6",
58
- "@vue/tsconfig": "^0.9.1",
59
- "gh-pages": "^6.3.0",
60
- "npm-run-all2": "^8.0.4",
61
- "typescript": "~6.0.0",
62
- "vite": "^8.0.8",
63
- "vite-plugin-vue-devtools": "^8.1.1",
64
- "vue": "^3.5.32",
65
- "vue-tsc": "^3.2.6"
66
- },
67
53
  "engines": {
68
54
  "node": "^20.19.0 || >=22.12.0"
69
55
  }
package/dist/App.vue.d.ts DELETED
@@ -1,3 +0,0 @@
1
- declare const __VLS_export: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
2
- declare const _default: typeof __VLS_export;
3
- export default _default;
package/dist/favicon.ico DELETED
Binary file
package/dist/main.d.ts DELETED
@@ -1 +0,0 @@
1
- export {};