@_solaris/messenger-widget 0.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.
package/dist/style.css ADDED
@@ -0,0 +1 @@
1
+ .wm-launcherWrap[data-v-fabef371]{display:flex;flex-direction:column;align-items:flex-end;gap:10px}.wm-peek[data-v-fabef371]{position:relative;max-width:248px;background:var(--wm-w);border:1px solid var(--wm-g150);border-radius:14px 14px 6px;padding:11px 30px 11px 13px;box-shadow:0 10px 30px #00000029;cursor:pointer;text-align:left;transition:transform .14s ease,box-shadow .14s ease}.wm-peek[data-v-fabef371]:hover{transform:translateY(-1px);box-shadow:0 14px 34px #0003}.wm-peek__text[data-v-fabef371]{margin:0;font-family:var(--wm-f);font-size:12.5px;line-height:1.42;color:var(--wm-g700);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.wm-peek__close[data-v-fabef371]{position:absolute;top:6px;right:6px;width:20px;height:20px;border-radius:6px;border:none;background:transparent;color:var(--wm-g400);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:background .12s ease,color .12s ease}.wm-peek__close[data-v-fabef371]:hover{background:var(--wm-g100);color:var(--wm-g700)}.wm-peek-enter-active[data-v-fabef371]{animation:wm-peekIn-fabef371 .26s cubic-bezier(.34,1.56,.64,1) both}.wm-peek-leave-active[data-v-fabef371]{animation:wm-peekIn-fabef371 .16s ease reverse both}@keyframes wm-peekIn-fabef371{0%{opacity:0;transform:translateY(8px) scale(.94)}to{opacity:1;transform:translateY(0) scale(1)}}.wm-launcher[data-v-fabef371]{position:relative;width:50px;height:50px;border-radius:50%;border:none;background:var(--wm-g900);color:#fff;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;box-shadow:0 4px 16px #00000038;transition:transform .14s ease,box-shadow .14s ease}.wm-launcher[data-v-fabef371]:hover{transform:translateY(-1px);box-shadow:0 8px 22px #00000047}.wm-launcher[data-v-fabef371]:active{transform:translateY(0)}.wm-launcher__badge[data-v-fabef371]{position:absolute;top:-3px;right:-3px;min-width:19px;height:19px;padding:0 5px;border-radius:10px;background:var(--wm-red, #B91C1C);color:#fff;border:2px solid var(--wm-w, #fff);font-family:var(--wm-f);font-size:10.5px;font-weight:700;line-height:1;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box}.wm-aiav[data-v-fe042be7]{position:relative;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center}.wm-aiav__inner[data-v-fe042be7]{width:100%;height:100%;background:linear-gradient(135deg,#1a1825,#0f0e14);border:1px solid rgba(91,95,239,.25);display:flex;align-items:center;justify-content:center}.wm-aiav__inner--glow[data-v-fe042be7]{animation:wm-heroGlow 2.6s ease-in-out infinite}.wm-aiav__pulse[data-v-fe042be7]{position:absolute;top:-3px;right:-3px;bottom:-3px;left:-3px;border:1.5px solid var(--wm-a);opacity:.5;pointer-events:none}.wm-huav[data-v-79449443]{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;overflow:hidden;color:#fff;font-weight:700;line-height:1}.wm-huav img[data-v-79449443]{width:100%;height:100%;object-fit:cover;display:block}.wm-team[data-v-3659b9c1]{display:inline-flex;align-items:center;gap:6px}.wm-team__stack[data-v-3659b9c1]{display:inline-block;position:relative;height:20px}.wm-team__pill[data-v-3659b9c1]{position:absolute;top:0;width:20px;height:20px;border-radius:6px;border:2px solid var(--wm-w);display:inline-flex;align-items:center;justify-content:center;overflow:hidden;color:#fff;font-size:8px;font-weight:700;line-height:1}.wm-team__pill img[data-v-3659b9c1]{width:100%;height:100%;object-fit:cover;display:block}.wm-team__label[data-v-3659b9c1]{font-size:11px;color:var(--wm-g400);white-space:nowrap}.wm-header[data-v-b5f5f6a9]{background:var(--wm-w);border-bottom:1px solid var(--wm-g100);padding:12px 13px;display:flex;align-items:center;gap:9px;flex-shrink:0}.wm-header__icon[data-v-b5f5f6a9]{width:30px;height:30px;border-radius:8px;background:var(--wm-g100);border:none;display:inline-flex;align-items:center;justify-content:center;color:var(--wm-g500);cursor:pointer;flex-shrink:0;transition:background .14s ease}.wm-header__icon[data-v-b5f5f6a9]:hover{background:var(--wm-g150);color:var(--wm-g700)}.wm-header__icon--active[data-v-b5f5f6a9]{background:var(--wm-g200);color:var(--wm-g700)}.wm-header__avatar[data-v-b5f5f6a9]{flex-shrink:0}.wm-header__fill[data-v-b5f5f6a9]{flex:1}.wm-header__main[data-v-b5f5f6a9]{flex:1;min-width:0}.wm-header__title[data-v-b5f5f6a9]{font-size:13.5px;font-weight:600;color:var(--wm-g900);letter-spacing:-.02em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.2}.wm-header__sub[data-v-b5f5f6a9]{margin-top:3px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}.wm-header__status[data-v-b5f5f6a9]{display:inline-flex;align-items:center;gap:5px;min-height:20px;font-size:11px;color:var(--wm-g400)}.wm-header__dot[data-v-b5f5f6a9]{width:5px;height:5px;border-radius:50%;background:var(--wm-green);flex-shrink:0}.wm-header__actions[data-v-b5f5f6a9]{display:flex;gap:4px;flex-shrink:0}.wm-onb[data-v-bd89bc8f]{flex:1;overflow-y:auto;background:var(--wm-w);padding:20px 14px 14px;display:flex;flex-direction:column;gap:18px}.wm-onb__hero[data-v-bd89bc8f]{display:flex;flex-direction:column;align-items:center;text-align:center;padding:28px 8px 6px;gap:14px}.wm-onb__title[data-v-bd89bc8f]{font-size:17px;font-weight:700;color:var(--wm-g900);letter-spacing:-.03em;line-height:1.2}.wm-onb__sub[data-v-bd89bc8f]{font-size:12.5px;color:var(--wm-g400);line-height:1.6;white-space:pre-line}.wm-onb__section-title[data-v-bd89bc8f]{font-size:10px;font-weight:600;color:var(--wm-g300);letter-spacing:.06em;margin-bottom:8px;text-transform:uppercase;padding-left:2px}.wm-onb__links[data-v-bd89bc8f]{display:flex;flex-direction:column;gap:5px}.wm-onb__link[data-v-bd89bc8f]{padding:10px 13px;border-radius:10px;text-align:left;background:var(--wm-w);border:1px solid var(--wm-g150);font-size:13px;font-weight:500;color:var(--wm-g700);font-family:var(--wm-f);cursor:pointer;display:flex;align-items:center;gap:10px;box-shadow:var(--wm-sh1);transition:background .14s ease,border-color .14s ease}.wm-onb__link[data-v-bd89bc8f]:hover{background:var(--wm-g50);border-color:var(--wm-g200)}.wm-onb__link-icon[data-v-bd89bc8f]{width:28px;height:28px;border-radius:8px;background:var(--wm-g100);display:inline-flex;align-items:center;justify-content:center;color:var(--wm-g500);flex-shrink:0}.wm-onb__link-label[data-v-bd89bc8f]{flex:1}.wm-onb__link-chev[data-v-bd89bc8f]{color:var(--wm-g300);flex-shrink:0}.wm-onb__resume-icon[data-v-bd89bc8f]{position:relative;background:linear-gradient(135deg,#1a1825,#0f0e14);border:1px solid rgba(91,95,239,.18);color:#fff}.wm-onb__resume-dot[data-v-bd89bc8f]{position:absolute;top:-3px;right:-3px;width:10px;height:10px;border-radius:50%;background:var(--wm-a);border:2px solid var(--wm-w);box-sizing:border-box}.wm-onb__resume-body[data-v-bd89bc8f]{flex:1;min-width:0;display:flex;flex-direction:column}.wm-onb__resume-title[data-v-bd89bc8f]{font-size:13px;font-weight:600;color:var(--wm-g900);letter-spacing:-.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.wm-onb__resume-preview[data-v-bd89bc8f]{font-size:11.5px;font-weight:400;color:var(--wm-g400);margin-top:2px;line-height:1.4;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.wm-onb__cta[data-v-bd89bc8f]{margin-top:auto;padding-top:8px}.wm-onb__startBtn[data-v-bd89bc8f]{width:100%;padding:11px 11px 11px 16px;border-radius:10px;background:var(--wm-g900);color:#fff;border:none;font-size:13px;font-weight:600;cursor:pointer;font-family:var(--wm-f);transition:background .14s ease}.wm-onb__startBtn[data-v-bd89bc8f]:hover{background:var(--wm-g700)}.wm-onb__startBtn[data-v-bd89bc8f]:disabled{background:var(--wm-g200);cursor:default}.wm-art[data-v-812bda8b]{max-width:280px;background:var(--wm-w);border:1px solid var(--wm-g150);border-radius:var(--wm-r-tl, 4px) var(--wm-r-tr, 14px) var(--wm-r-br, 14px) var(--wm-r-bl, 14px);overflow:hidden;font-family:var(--wm-f);animation:wm-fadeUp .2s ease both;display:flex;flex-direction:column}.wm-art__head[data-v-812bda8b]{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:11px 13px 10px;border-bottom:1px solid var(--wm-g100)}.wm-art__headMain[data-v-812bda8b]{min-width:0;flex:1}.wm-art__title[data-v-812bda8b]{font-size:12.5px;font-weight:600;color:var(--wm-g900);letter-spacing:-.01em;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.wm-art__subtitle[data-v-812bda8b]{font-size:11px;color:var(--wm-g400);margin-top:1px}.wm-art__reference[data-v-812bda8b]{font-size:10.5px;color:var(--wm-g400);font-family:var(--wm-fm);margin-top:1px}.wm-art__badge[data-v-812bda8b]{display:inline-flex;align-items:center;gap:4px;flex-shrink:0;font-size:10px;font-weight:600;border-radius:999px;padding:2px 8px 2px 6px;letter-spacing:.02em}.wm-art__badge--neutral[data-v-812bda8b]{background:var(--wm-g100);color:var(--wm-g500)}.wm-art__badge--success[data-v-812bda8b]{background:#e7f7ee;color:#1f8a4d}.wm-art__badge--warning[data-v-812bda8b]{background:#fff4e0;color:#a35b00}.wm-art__badge--danger[data-v-812bda8b]{background:var(--wm-redBg);color:var(--wm-red)}.wm-art__body[data-v-812bda8b]{display:flex;flex-direction:column;gap:9px;padding:11px 13px 12px}.wm-art__text[data-v-812bda8b]{font-size:12.5px;color:var(--wm-g700);line-height:1.45;white-space:pre-wrap;word-break:break-word}.wm-art__field[data-v-812bda8b]{display:flex;flex-direction:column;gap:4px}.wm-art__fieldLabel[data-v-812bda8b]{font-size:11px;font-weight:600;color:var(--wm-g700)}.wm-art__fieldValue[data-v-812bda8b]{font-size:12.5px;color:var(--wm-g900);background:var(--wm-g50);border:1px solid var(--wm-g100);border-radius:8px;padding:7px 9px;line-height:1.35;word-break:break-word;min-height:32px;display:flex;align-items:center}.wm-art__fieldValue--multi[data-v-812bda8b]{display:block;white-space:pre-wrap;min-height:48px}.wm-art__divider[data-v-812bda8b]{height:1px;background:var(--wm-g100)}.wm-art__image[data-v-812bda8b]{margin:0;padding:0}.wm-art__image img[data-v-812bda8b]{display:block;width:100%;height:auto;background:var(--wm-g100)}.wm-art__image figcaption[data-v-812bda8b]{font-size:11px;color:var(--wm-g400);padding:6px 13px 10px}.wm-art[data-v-d7369333]{max-width:280px;background:var(--wm-w);border:1px solid var(--wm-g150);border-radius:var(--wm-r-tl, 4px) var(--wm-r-tr, 14px) var(--wm-r-br, 14px) var(--wm-r-bl, 14px);overflow:hidden;font-family:var(--wm-f);animation:wm-fadeUp .2s ease both;display:flex;flex-direction:column}.wm-art__head[data-v-d7369333]{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:11px 13px 10px;border-bottom:1px solid var(--wm-g100)}.wm-art__headMain[data-v-d7369333]{min-width:0;flex:1}.wm-art__title[data-v-d7369333]{font-size:12.5px;font-weight:600;color:var(--wm-g900);letter-spacing:-.01em;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.wm-art__subtitle[data-v-d7369333]{font-size:11px;color:var(--wm-g400);margin-top:1px}.wm-art__reference[data-v-d7369333]{font-size:10.5px;color:var(--wm-g400);font-family:var(--wm-fm);margin-top:1px}.wm-art__badge[data-v-d7369333]{display:inline-flex;align-items:center;gap:4px;flex-shrink:0;font-size:10px;font-weight:600;border-radius:999px;padding:2px 8px 2px 6px;letter-spacing:.02em}.wm-art__badge--neutral[data-v-d7369333]{background:var(--wm-g100);color:var(--wm-g500)}.wm-art__badge--success[data-v-d7369333]{background:#e7f7ee;color:#1f8a4d}.wm-art__badge--warning[data-v-d7369333]{background:#fff4e0;color:#a35b00}.wm-art__badge--danger[data-v-d7369333]{background:var(--wm-redBg);color:var(--wm-red)}.wm-art__body[data-v-d7369333]{display:flex;flex-direction:column;gap:9px;padding:11px 13px 12px}.wm-art__text[data-v-d7369333]{font-size:12.5px;color:var(--wm-g700);line-height:1.45;white-space:pre-wrap;word-break:break-word}.wm-art__field[data-v-d7369333]{display:flex;flex-direction:column;gap:4px}.wm-art__fieldLabel[data-v-d7369333]{font-size:11px;font-weight:600;color:var(--wm-g700)}.wm-art__fieldValue[data-v-d7369333]{font-size:12.5px;color:var(--wm-g900);background:var(--wm-g50);border:1px solid var(--wm-g100);border-radius:8px;padding:7px 9px;line-height:1.35;word-break:break-word;min-height:32px;display:flex;align-items:center}.wm-art__fieldValue--multi[data-v-d7369333]{display:block;white-space:pre-wrap;min-height:48px}.wm-art__divider[data-v-d7369333]{height:1px;background:var(--wm-g100)}.wm-art__image[data-v-d7369333]{margin:0;padding:0}.wm-art__image img[data-v-d7369333]{display:block;width:100%;height:auto;background:var(--wm-g100)}.wm-art__image figcaption[data-v-d7369333]{font-size:11px;color:var(--wm-g400);padding:6px 13px 10px}.wm-art[data-v-f0495924]{max-width:280px;background:var(--wm-w);border:1px solid var(--wm-g150);border-radius:var(--wm-r-tl, 4px) var(--wm-r-tr, 14px) var(--wm-r-br, 14px) var(--wm-r-bl, 14px);overflow:hidden;font-family:var(--wm-f);animation:wm-fadeUp .2s ease both;display:flex;flex-direction:column}.wm-art__head[data-v-f0495924]{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:11px 13px 10px;border-bottom:1px solid var(--wm-g100)}.wm-art__headMain[data-v-f0495924]{min-width:0;flex:1}.wm-art__title[data-v-f0495924]{font-size:12.5px;font-weight:600;color:var(--wm-g900);letter-spacing:-.01em;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.wm-art__subtitle[data-v-f0495924]{font-size:11px;color:var(--wm-g400);margin-top:1px}.wm-art__reference[data-v-f0495924]{font-size:10.5px;color:var(--wm-g400);font-family:var(--wm-fm);margin-top:1px}.wm-art__badge[data-v-f0495924]{display:inline-flex;align-items:center;gap:4px;flex-shrink:0;font-size:10px;font-weight:600;border-radius:999px;padding:2px 8px 2px 6px;letter-spacing:.02em}.wm-art__badge--neutral[data-v-f0495924]{background:var(--wm-g100);color:var(--wm-g500)}.wm-art__badge--success[data-v-f0495924]{background:#e7f7ee;color:#1f8a4d}.wm-art__badge--warning[data-v-f0495924]{background:#fff4e0;color:#a35b00}.wm-art__badge--danger[data-v-f0495924]{background:var(--wm-redBg);color:var(--wm-red)}.wm-art__body[data-v-f0495924]{display:flex;flex-direction:column;gap:9px;padding:11px 13px 12px}.wm-art__text[data-v-f0495924]{font-size:12.5px;color:var(--wm-g700);line-height:1.45;white-space:pre-wrap;word-break:break-word}.wm-art__field[data-v-f0495924]{display:flex;flex-direction:column;gap:4px}.wm-art__fieldLabel[data-v-f0495924]{font-size:11px;font-weight:600;color:var(--wm-g700)}.wm-art__fieldValue[data-v-f0495924]{font-size:12.5px;color:var(--wm-g900);background:var(--wm-g50);border:1px solid var(--wm-g100);border-radius:8px;padding:7px 9px;line-height:1.35;word-break:break-word;min-height:32px;display:flex;align-items:center}.wm-art__fieldValue--multi[data-v-f0495924]{display:block;white-space:pre-wrap;min-height:48px}.wm-art__divider[data-v-f0495924]{height:1px;background:var(--wm-g100)}.wm-art__image[data-v-f0495924]{margin:0;padding:0}.wm-art__image img[data-v-f0495924]{display:block;width:100%;height:auto;background:var(--wm-g100)}.wm-art__image figcaption[data-v-f0495924]{font-size:11px;color:var(--wm-g400);padding:6px 13px 10px}.wm-art--ticket[data-v-f0495924]{max-width:320px}.wm-tk__head[data-v-f0495924]{display:block}.wm-tk__title[data-v-f0495924]{white-space:normal;text-overflow:clip;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;line-height:1.35}.wm-tk__sub[data-v-f0495924]{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:4px}.wm-tk__ref[data-v-f0495924]{display:inline-flex;align-items:center;gap:4px;min-width:0;font-size:10.5px;color:var(--wm-g400);font-family:var(--wm-fm)}.wm-tk__ref svg[data-v-f0495924]{flex-shrink:0;opacity:.7}.wm-tk__badge[data-v-f0495924]{padding:3px 9px 3px 7px}.wm-tk__dot[data-v-f0495924]{display:inline-block;width:5px;height:5px;border-radius:50%;background:currentColor;flex-shrink:0}.wm-tk__text[data-v-f0495924]{font-size:12px;color:var(--wm-g500);line-height:1.55;white-space:pre-wrap;word-break:break-word}.wm-tk__prio[data-v-f0495924]{flex-shrink:0;margin-right:6px}.wm-tk__prio rect[data-v-f0495924]{fill:var(--wm-g200)}.wm-tk__prio[data-level="1"] rect[data-v-f0495924]:nth-of-type(1),.wm-tk__prio[data-level="2"] rect[data-v-f0495924]:nth-of-type(1),.wm-tk__prio[data-level="2"] rect[data-v-f0495924]:nth-of-type(2),.wm-tk__prio[data-level="3"] rect[data-v-f0495924]{fill:var(--wm-g700)}.wm-tk__footer[data-v-f0495924]{display:flex;align-items:center;gap:5px;font-size:10.5px;color:var(--wm-g400);padding:7px 13px 9px;border-top:1px solid var(--wm-g100);font-family:var(--wm-fm);background:var(--wm-g50)}.wm-tk__footer svg[data-v-f0495924]{flex-shrink:0;opacity:.7}.wm-result[data-v-037fd69e]{display:flex;align-items:flex-start;gap:10px;padding:10px 13px;background:var(--wm-g50);border:1px solid var(--wm-g150);max-width:420px;border-radius:var(--wm-r-tl, 4px) var(--wm-r-tr, 4px) var(--wm-r-br, 14px) var(--wm-r-bl, 14px)}.wm-result__check[data-v-037fd69e]{width:22px;height:22px;border-radius:7px;background:var(--wm-g200);color:var(--wm-g500);display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.wm-result__check--ok[data-v-037fd69e]{background:var(--wm-g900)}.wm-result__label[data-v-037fd69e]{font-size:12px;font-weight:600;color:var(--wm-g400);font-family:var(--wm-fm);letter-spacing:-.01em}.wm-result__check--ok~.wm-result__body .wm-result__label[data-v-037fd69e],.wm-result__body .wm-result__label[data-v-037fd69e]:not(.wm-result__label--struck){color:var(--wm-g900)}.wm-result__label--struck[data-v-037fd69e]{text-decoration:line-through}.wm-result__detail[data-v-037fd69e]{font-size:12px;line-height:1.45;color:var(--wm-g500);margin-top:3px;white-space:pre-wrap;word-break:break-word}.wm-result__detail[data-v-037fd69e] strong{font-weight:700;color:var(--wm-g700)}.wm-result__detail[data-v-037fd69e] em{font-style:italic}.wm-result__detail[data-v-037fd69e] u{text-decoration:underline;text-underline-offset:2px}.wm-result__detail[data-v-037fd69e] s{text-decoration:line-through;opacity:.75}.wm-result__detail[data-v-037fd69e] a{color:var(--wm-g900);text-decoration:underline;text-underline-offset:2px}.wm-result__detail[data-v-037fd69e] a:hover{opacity:.8}.wm-result__detail[data-v-037fd69e] .wm-md-ul,.wm-result__detail[data-v-037fd69e] .wm-md-ol{margin:2px 0;padding-left:18px}.wm-result__detail[data-v-037fd69e] .wm-md-ul{list-style:disc}.wm-result__detail[data-v-037fd69e] .wm-md-ol{list-style:decimal}.wm-result__detail[data-v-037fd69e] li{margin:0;padding:0}.wm-result__detail[data-v-037fd69e] .wm-md-code{font-family:var(--wm-fm);font-size:11px;background:var(--wm-g100);border:1px solid var(--wm-g150);border-radius:4px;padding:1px 5px;color:var(--wm-g800)}.wm-result__detail[data-v-037fd69e] .wm-md-pre{margin:4px 0;padding:8px 10px;background:var(--wm-g100);border:1px solid var(--wm-g150);border-radius:6px;overflow-x:auto;white-space:pre;font-family:var(--wm-fm);font-size:11px;line-height:1.45;color:var(--wm-g800)}.wm-result__detail[data-v-037fd69e] .wm-md-pre code{font-family:inherit;font-size:inherit;background:none;border:none;padding:0}.wm-result__detail[data-v-037fd69e] .wm-md-h{margin:4px 0 2px;font-weight:700;color:var(--wm-g700);letter-spacing:-.01em;line-height:1.3}.wm-result__detail[data-v-037fd69e] .wm-md-h1{font-size:13px}.wm-result__detail[data-v-037fd69e] .wm-md-h2{font-size:12.5px}.wm-result__detail[data-v-037fd69e] .wm-md-h3,.wm-result__detail[data-v-037fd69e] .wm-md-h4,.wm-result__detail[data-v-037fd69e] .wm-md-h5,.wm-result__detail[data-v-037fd69e] .wm-md-h6{font-size:12px}.wm-result-wrap[data-v-037fd69e]{display:flex;flex-direction:column;gap:3px;max-width:420px}.wm-att[data-v-1cd1267b]{display:block;max-width:268px}.wm-att__imgWrap[data-v-1cd1267b]{display:block;border-radius:12px;overflow:hidden;border:1px solid var(--wm-g150);background:var(--wm-g50);line-height:0}.wm-att__imgWrap img[data-v-1cd1267b]{display:block;width:100%;max-height:220px;object-fit:cover}.wm-att--audio audio[data-v-1cd1267b],.wm-att--video video[data-v-1cd1267b]{width:100%;max-width:268px;border-radius:12px;background:var(--wm-g100)}.wm-att__file[data-v-1cd1267b]{display:inline-flex;align-items:center;gap:8px;padding:8px 12px;background:var(--wm-g50);border:1px solid var(--wm-g150);border-radius:12px;text-decoration:none;color:var(--wm-g900);transition:background .14s ease,border-color .14s ease;max-width:100%}.wm-att__file[data-v-1cd1267b]:hover{background:var(--wm-g100);border-color:var(--wm-g200)}.wm-att__icon[data-v-1cd1267b]{width:26px;height:26px;border-radius:7px;background:var(--wm-w);border:1px solid var(--wm-g150);display:inline-flex;align-items:center;justify-content:center;color:var(--wm-g500);flex-shrink:0}.wm-att__main[data-v-1cd1267b]{display:flex;flex-direction:column;min-width:0}.wm-att__name[data-v-1cd1267b]{font-size:12px;font-weight:500;color:var(--wm-g900);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:200px}.wm-att__meta[data-v-1cd1267b]{font-size:10.5px;color:var(--wm-g400);font-family:var(--wm-fm);margin-top:1px}.wm-att__spin[data-v-1cd1267b]{width:12px;height:12px;border:2px solid var(--wm-g200);border-top-color:var(--wm-g500);border-radius:50%;animation:wm-spin-1cd1267b .8s linear infinite;flex-shrink:0}@keyframes wm-spin-1cd1267b{to{transform:rotate(360deg)}}.wm-bubble[data-v-bcbe5969]{max-width:268px;padding:9px 13px;font-size:13px;line-height:1.58;letter-spacing:-.008em;white-space:pre-wrap;word-break:break-word}.wm-bubble--user[data-v-bcbe5969]{background:var(--wm-g900);color:#fff}.wm-bubble--ai[data-v-bcbe5969],.wm-bubble--human[data-v-bcbe5969]{background:var(--wm-g100);color:var(--wm-g900)}.wm-bubble[data-v-bcbe5969] strong{font-weight:700}.wm-bubble[data-v-bcbe5969] em{font-style:italic}.wm-bubble[data-v-bcbe5969] u{text-decoration:underline;text-underline-offset:2px}.wm-bubble[data-v-bcbe5969] s{text-decoration:line-through;opacity:.75}.wm-bubble[data-v-bcbe5969] a{color:inherit;text-decoration:underline;text-underline-offset:2px}.wm-bubble[data-v-bcbe5969] a:hover{opacity:.8}.wm-bubble[data-v-bcbe5969] .wm-md-ul,.wm-bubble[data-v-bcbe5969] .wm-md-ol{margin:2px 0;padding-left:20px}.wm-bubble[data-v-bcbe5969] .wm-md-ul{list-style:disc}.wm-bubble[data-v-bcbe5969] .wm-md-ol{list-style:decimal}.wm-bubble[data-v-bcbe5969] li{margin:0;padding:0}.wm-bubble[data-v-bcbe5969] .wm-md-code{font-family:var(--wm-fm);font-size:12px;background:#0000000f;padding:1px 5px;border-radius:4px}.wm-bubble--user[data-v-bcbe5969] .wm-md-code{background:#ffffff2e}.wm-bubble[data-v-bcbe5969] .wm-md-pre{margin:4px 0;padding:8px 10px;background:#0000000f;border-radius:8px;overflow-x:auto;white-space:pre;font-family:var(--wm-fm);font-size:12px;line-height:1.45}.wm-bubble--user[data-v-bcbe5969] .wm-md-pre{background:#ffffff2e}.wm-bubble[data-v-bcbe5969] .wm-md-pre code{font-family:inherit;font-size:inherit;background:none;padding:0}.wm-bubble[data-v-bcbe5969] .wm-md-h{margin:4px 0 2px;font-weight:700;letter-spacing:-.01em;line-height:1.3}.wm-bubble[data-v-bcbe5969] .wm-md-h1{font-size:15px}.wm-bubble[data-v-bcbe5969] .wm-md-h2{font-size:14px}.wm-bubble[data-v-bcbe5969] .wm-md-h3,.wm-bubble[data-v-bcbe5969] .wm-md-h4,.wm-bubble[data-v-bcbe5969] .wm-md-h5,.wm-bubble[data-v-bcbe5969] .wm-md-h6{font-size:13px}.wm-bubble[data-v-bcbe5969]{border-radius:var(--wm-r-tl, 4px) var(--wm-r-tr, 14px) var(--wm-r-br, 14px) var(--wm-r-bl, 14px)}.wm-bubble--user[data-v-bcbe5969]{border-radius:var(--wm-r-tl, 14px) var(--wm-r-tr, 14px) var(--wm-r-br, 4px) var(--wm-r-bl, 14px)}.wm-typing[data-v-df2447fd]{padding:11px 16px;background:var(--wm-g100);border-radius:4px 14px 14px;display:inline-flex;gap:5px;align-items:center}.wm-typing span[data-v-df2447fd]{width:5px;height:5px;border-radius:50%;background:var(--wm-g400);display:inline-block;animation:wm-typingDot 1.4s ease-in-out infinite}.wm-list[data-v-f23f2f8c]{flex:1;min-height:0;overflow-y:auto;padding:16px 14px calc(8px + var(--wm-float-h, 0px));display:flex;flex-direction:column;gap:12px;scrollbar-width:thin;scroll-padding-bottom:var(--wm-float-h, 0px);overflow-anchor:none}.wm-list[data-v-f23f2f8c]::-webkit-scrollbar{width:3px}.wm-list[data-v-f23f2f8c]::-webkit-scrollbar-thumb{background:var(--wm-g200);border-radius:10px}.wm-list__sep[data-v-f23f2f8c]{display:flex;align-items:center;gap:8px;margin:-4px 0 4px}.wm-list__line[data-v-f23f2f8c]{flex:1;height:1px;background:var(--wm-g100)}.wm-list__line--strong[data-v-f23f2f8c]{background:var(--wm-g150)}.wm-list__sep-label[data-v-f23f2f8c]{font-size:10px;color:var(--wm-g300);font-family:var(--wm-fm);letter-spacing:.06em;white-space:nowrap}.wm-list__sysep-label[data-v-f23f2f8c]{font-size:10px;color:var(--wm-g400);font-family:var(--wm-fm);letter-spacing:.06em;text-align:center;line-height:1.45;white-space:normal;overflow-wrap:anywhere;max-width:220px}.wm-list__sysep[data-v-f23f2f8c]{display:flex;align-items:center;justify-content:center;gap:8px;margin:4px 0}.wm-list__group[data-v-f23f2f8c]{display:flex;flex-direction:column;gap:3px}.wm-list__group--user[data-v-f23f2f8c]{align-items:flex-end}.wm-list__role[data-v-f23f2f8c]{font-size:10.5px;font-weight:600;color:var(--wm-g400);margin-left:34px;margin-bottom:0}.wm-list__row[data-v-f23f2f8c]{display:flex;align-items:flex-end;gap:8px}.wm-list__row--user[data-v-f23f2f8c]{justify-content:flex-end}.wm-list__row.is-pending[data-v-f23f2f8c]{opacity:.55}.wm-list__row.is-failed[data-v-f23f2f8c] .wm-bubble{background:var(--wm-redBg)!important;color:var(--wm-red)!important}.wm-list__avatarSlot[data-v-f23f2f8c]{width:26px;flex-shrink:0;align-self:flex-end}.wm-list__body[data-v-f23f2f8c]{display:flex;flex-direction:column;gap:4px;max-width:268px}.wm-list__atts[data-v-f23f2f8c]{display:flex;flex-direction:column;gap:4px}.wm-list__atts--align-end[data-v-f23f2f8c]{align-items:flex-end}.wm-list__time[data-v-f23f2f8c]{font-size:10px;color:var(--wm-g300);font-family:var(--wm-fm);margin-left:34px;margin-top:3px}.wm-list__time--right[data-v-f23f2f8c]{margin-left:0;margin-right:0;text-align:right}.fade-up[data-v-f23f2f8c]{animation:wm-fadeUp .2s ease both}.wm-list--silent .fade-up[data-v-f23f2f8c]{animation:none}.wm-list__loadMore[data-v-f23f2f8c]{display:flex;align-items:center;justify-content:center;gap:8px;padding:6px 0 10px;font-size:11px;color:var(--wm-g400);font-family:var(--wm-fm);animation:wm-fadeIn-f23f2f8c .18s ease both}.wm-list__loadMore-spinner[data-v-f23f2f8c]{width:12px;height:12px;border-radius:50%;border:1.5px solid var(--wm-g200);border-top-color:var(--wm-g400);animation:wm-spin-f23f2f8c .8s linear infinite}.wm-list__historyEnd[data-v-f23f2f8c]{text-align:center;padding:4px 0 8px;font-size:10px;color:var(--wm-g300);font-family:var(--wm-fm);letter-spacing:.04em}@keyframes wm-spin-f23f2f8c{to{transform:rotate(360deg)}}@keyframes wm-fadeIn-f23f2f8c{0%{opacity:0}to{opacity:1}}.wm-compose-wrap[data-v-14fa9ec0]{position:relative}.wm-rec[data-v-14fa9ec0]{display:flex;align-items:center;gap:8px;padding:8px 12px;background:var(--wm-redBg);border-top:1px solid #f1c8c8;color:var(--wm-red);font-size:12px;font-weight:500}.wm-rec__dot[data-v-14fa9ec0]{width:8px;height:8px;border-radius:50%;background:var(--wm-red);box-shadow:0 0 #b91c1c73;animation:wm-recPulse-14fa9ec0 1.6s ease-out infinite;flex-shrink:0}.wm-rec__lbl[data-v-14fa9ec0]{flex:1;font-family:var(--wm-fm)}.wm-rec__stop[data-v-14fa9ec0]{border:1px solid var(--wm-red);background:transparent;color:var(--wm-red);border-radius:8px;padding:4px 10px;font-size:11.5px;font-weight:600;cursor:pointer;font-family:var(--wm-f);transition:background .14s ease,color .14s ease}.wm-rec__stop[data-v-14fa9ec0]:hover{background:var(--wm-red);color:#fff}@keyframes wm-recPulse-14fa9ec0{0%{box-shadow:0 0 #b91c1c8c}to{box-shadow:0 0 0 8px #b91c1c00}}.wm-compose[data-v-14fa9ec0]{border-top:1px solid var(--wm-g100);background:var(--wm-w);padding:10px 11px;display:flex;flex-direction:row;align-items:stretch;gap:6px;flex-shrink:0;position:relative}.wm-compose__input[data-v-14fa9ec0]{flex:1;background:var(--wm-g50);border-radius:12px;padding:10px 14px;font-size:13.5px;line-height:1.4;color:var(--wm-g900);border:1px solid transparent;outline:none;font-family:var(--wm-f);caret-color:var(--wm-a);min-width:0;box-sizing:border-box;resize:none;min-height:78px;max-height:150px;overflow-y:auto;transition:border-color .14s ease,background .14s ease,box-shadow .14s ease}.wm-compose__input[data-v-14fa9ec0]::placeholder{color:var(--wm-g300)}.wm-compose__input[data-v-14fa9ec0]:focus{background:var(--wm-w);border-color:var(--wm-g150);box-shadow:0 0 0 3px #00000008}.wm-compose__actions[data-v-14fa9ec0]{display:flex;flex-direction:column;justify-content:flex-end;align-items:center;gap:5px;flex-shrink:0}.wm-compose__icon[data-v-14fa9ec0],.wm-compose__send[data-v-14fa9ec0]{width:28px;height:28px;border-radius:8px;border:none;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;cursor:pointer;transition:background .14s ease,transform .14s ease}.wm-compose__icon[data-v-14fa9ec0]{background:var(--wm-g100);color:var(--wm-g500)}.wm-compose__icon[data-v-14fa9ec0]:hover{background:var(--wm-g150);color:var(--wm-g700)}.wm-compose__icon.is-open[data-v-14fa9ec0]{background:var(--wm-g900);color:#fff;transform:rotate(45deg)}.wm-compose__icon[data-v-14fa9ec0]:disabled{opacity:.5;cursor:default}.wm-compose__send[data-v-14fa9ec0]{background:var(--wm-g900);color:#fff}.wm-compose__send[data-v-14fa9ec0]:hover{background:var(--wm-g700)}.wm-compose__send[data-v-14fa9ec0]:active{transform:scale(.94)}.wm-compose__send.is-empty[data-v-14fa9ec0],.wm-compose__send[data-v-14fa9ec0]:disabled{background:var(--wm-g150);color:var(--wm-g300);cursor:default}.wm-compose__overlay[data-v-14fa9ec0]{position:fixed;top:0;right:0;bottom:0;left:0;background:transparent;z-index:9}.wm-compose__menu[data-v-14fa9ec0]{position:absolute;bottom:calc(100% + 6px);right:11px;min-width:200px;background:var(--wm-w);border:1px solid var(--wm-g150);border-radius:12px;box-shadow:0 10px 32px #00000021,0 2px 6px #0000000d;padding:5px;display:flex;flex-direction:column;gap:1px;z-index:10;animation:wm-fadeUp .18s ease both}.wm-compose__menuItem[data-v-14fa9ec0]{display:flex;align-items:center;gap:9px;padding:8px 10px;border-radius:8px;border:none;background:transparent;text-align:left;color:var(--wm-g700);font-size:12.5px;font-family:var(--wm-f);cursor:pointer;transition:background .14s ease}.wm-compose__menuItem[data-v-14fa9ec0]:hover:not(:disabled){background:var(--wm-g50);color:var(--wm-g900)}.wm-compose__menuItem[data-v-14fa9ec0]:disabled{opacity:.5;cursor:default}.wm-compose__menuIcon[data-v-14fa9ec0]{width:24px;height:24px;border-radius:7px;background:var(--wm-g100);color:var(--wm-g500);display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.wm-chips[data-v-55aa529d]{display:flex;flex-direction:column;align-items:flex-end;gap:5px;padding-bottom:4px;pointer-events:none}.wm-chip[data-v-55aa529d]{pointer-events:auto;padding:7px 14px;border-radius:20px;background:var(--wm-w);border:1px solid var(--wm-g200);font-size:12px;font-weight:500;color:var(--wm-g700);font-family:var(--wm-f);cursor:pointer;line-height:1;box-shadow:0 2px 10px #00000012;white-space:nowrap;transform-origin:bottom right;animation:wm-chipIn-55aa529d .28s cubic-bezier(.22,1,.36,1) both;transition:background .14s ease,transform .1s ease}.wm-chip[data-v-55aa529d]:hover{background:var(--wm-g50)}.wm-chip[data-v-55aa529d]:active{transform:scale(.97)}@keyframes wm-chipIn-55aa529d{0%{opacity:0;transform:translateY(6px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}.wm-approval[data-v-b1be139c]{background:var(--wm-w);border:1px solid var(--wm-g150);border-radius:14px;box-shadow:0 6px 28px #0000001c;overflow:hidden;animation:wm-fadeUp .2s ease both}.wm-approval__head[data-v-b1be139c]{display:flex;align-items:center;gap:10px;padding:11px 14px;border-bottom:1px solid var(--wm-g100)}.wm-approval__icon[data-v-b1be139c]{flex-shrink:0}.wm-approval__main[data-v-b1be139c]{flex:1;min-width:0}.wm-approval__title[data-v-b1be139c]{font-size:12.5px;font-weight:600;color:var(--wm-g900);letter-spacing:-.01em}.wm-approval__detail[data-v-b1be139c]{font-size:11px;color:var(--wm-g400);margin-top:1px}.wm-approval__actions[data-v-b1be139c]{display:flex;gap:7px;padding:9px 14px 11px}.wm-approval__btn[data-v-b1be139c]{flex:1;padding:8px 8px 8px 13px;border-radius:9px;border:none;font-size:12px;font-weight:600;cursor:pointer;font-family:var(--wm-f);transition:filter .14s ease}.wm-approval__btn[data-v-b1be139c]:hover{filter:brightness(.95)}.wm-approval__btn--neutral[data-v-b1be139c]{background:var(--wm-g100);color:var(--wm-g500)}.wm-approval__btn--primary[data-v-b1be139c]{background:var(--wm-g900);color:#fff}.wm-form[data-v-64b40f76]{background:var(--wm-w);border:1px solid var(--wm-g150);border-radius:14px;box-shadow:0 6px 28px #0000001c;overflow:hidden;animation:wm-fadeUp .2s ease both}.wm-form__head[data-v-64b40f76]{display:flex;align-items:center;gap:10px;padding:11px 14px;border-bottom:1px solid var(--wm-g100)}.wm-form__icon[data-v-64b40f76]{flex-shrink:0}.wm-form__main[data-v-64b40f76]{flex:1;min-width:0}.wm-form__title[data-v-64b40f76]{font-size:12.5px;font-weight:600;color:var(--wm-g900);letter-spacing:-.01em}.wm-form__detail[data-v-64b40f76]{font-size:11px;color:var(--wm-g400);margin-top:1px}.wm-form__body[data-v-64b40f76]{display:flex;flex-direction:column;gap:10px;padding:11px 14px 12px;max-height:320px;overflow-y:auto;scrollbar-width:thin}.wm-form__body[data-v-64b40f76]::-webkit-scrollbar{width:3px}.wm-form__body[data-v-64b40f76]::-webkit-scrollbar-thumb{background:var(--wm-g200);border-radius:10px}.wm-form__field[data-v-64b40f76]{display:flex;flex-direction:column;gap:4px}.wm-form__label[data-v-64b40f76]{font-size:11px;font-weight:600;color:var(--wm-g700)}.wm-form__req[data-v-64b40f76]{color:var(--wm-red);margin-left:2px}.wm-form__input[data-v-64b40f76],.wm-form__textarea[data-v-64b40f76],.wm-form__select[data-v-64b40f76]{font-family:var(--wm-f);font-size:12.5px;color:var(--wm-g900);background:var(--wm-w);border:1px solid var(--wm-g150);border-radius:8px;padding:7px 9px;outline:none;transition:border-color .12s ease,box-shadow .12s ease}.wm-form__input[data-v-64b40f76]:focus,.wm-form__textarea[data-v-64b40f76]:focus,.wm-form__select[data-v-64b40f76]:focus{border-color:var(--wm-g500);box-shadow:0 0 0 3px #0000000a}.wm-form__input[data-v-64b40f76]:disabled,.wm-form__textarea[data-v-64b40f76]:disabled,.wm-form__select[data-v-64b40f76]:disabled{background:var(--wm-g50);color:var(--wm-g400)}.wm-form__textarea[data-v-64b40f76]{resize:vertical;min-height:56px}.wm-form__bool[data-v-64b40f76]{display:inline-flex;align-items:center;gap:8px;font-size:12px;color:var(--wm-g700)}.wm-form__multi[data-v-64b40f76]{display:flex;flex-direction:column;gap:5px}.wm-form__multiItem[data-v-64b40f76]{display:inline-flex;align-items:center;gap:8px;font-size:12px;color:var(--wm-g700)}.wm-form__err[data-v-64b40f76]{font-size:11px;color:var(--wm-red);padding:4px 8px;background:var(--wm-redBg);border-radius:6px}.wm-form__submit[data-v-64b40f76]{margin-top:2px;padding:9px;border-radius:9px;border:none;background:var(--wm-g900);color:#fff;font-size:12px;font-weight:600;cursor:pointer;font-family:var(--wm-f);display:inline-flex;align-items:center;justify-content:center;gap:8px;transition:filter .14s ease}.wm-form__submit[data-v-64b40f76]:hover:not(:disabled){filter:brightness(.95)}.wm-form__submit[data-v-64b40f76]:disabled{opacity:.7;cursor:not-allowed}.wm-form__doneLbl[data-v-64b40f76]{margin-top:2px;padding:9px;border-radius:9px;background:var(--wm-g100);color:var(--wm-g500);font-size:12px;text-align:center}.wm-form__spinner[data-v-64b40f76]{width:12px;height:12px;border-radius:50%;border:2px solid rgba(255,255,255,.4);border-top-color:#fff;animation:wm-spin .7s linear infinite}.wm-fb[data-v-6f45ff3b]{margin:4px 0 0;padding:16px;background:var(--wm-g50);border:1px solid var(--wm-g150);border-radius:14px;box-shadow:var(--wm-sh1)}.wm-fb__title[data-v-6f45ff3b]{font-size:13px;font-weight:600;color:var(--wm-g900);letter-spacing:-.02em;margin-bottom:4px}.wm-fb__sub[data-v-6f45ff3b]{font-size:11.5px;color:var(--wm-g400);margin-bottom:14px}.wm-fb__row[data-v-6f45ff3b]{display:flex;gap:0;margin-bottom:14px}.wm-fb__opt[data-v-6f45ff3b]{display:flex;flex-direction:column;align-items:center;gap:4px;background:transparent;border:none;border-radius:10px;padding:7px 0;cursor:pointer;flex:1;min-width:0;transition:background .15s ease}.wm-fb__opt.is-selected[data-v-6f45ff3b]{background:var(--wm-g100)}.wm-fb__emoji[data-v-6f45ff3b]{font-size:22px;line-height:1}.wm-fb__label[data-v-6f45ff3b]{font-size:9.5px;color:var(--wm-g400);font-weight:400}.wm-fb__opt.is-selected .wm-fb__label[data-v-6f45ff3b]{color:var(--wm-g700);font-weight:600}.wm-fb__send[data-v-6f45ff3b]{width:100%;padding:9px;border-radius:10px;background:var(--wm-g900);color:#fff;border:none;font-size:12.5px;font-weight:600;cursor:pointer;font-family:var(--wm-f);transition:background .2s ease}.wm-fb__send[data-v-6f45ff3b]:disabled{background:var(--wm-g200);color:var(--wm-g400);cursor:default}.wm-fb__done[data-v-6f45ff3b]{display:flex;flex-direction:column;align-items:center;gap:8px;padding:8px 0}.wm-fb__check[data-v-6f45ff3b]{width:40px;height:40px;border-radius:12px;background:var(--wm-g900);display:inline-flex;align-items:center;justify-content:center}.wm-fb__doneTitle[data-v-6f45ff3b]{font-size:13px;font-weight:600;color:var(--wm-g900);letter-spacing:-.02em}.wm-fb__doneSub[data-v-6f45ff3b]{font-size:11.5px;color:var(--wm-g400);text-align:center;line-height:1.5}.wm-hd[data-v-1259e822]{position:absolute;top:0;right:0;bottom:0;left:0;z-index:30}.wm-hd__scrim[data-v-1259e822]{position:absolute;top:0;right:0;bottom:0;left:0;background:#0f0e1452;animation:wm-fadeUp .18s ease both}.wm-hd__panel[data-v-1259e822]{position:absolute;top:0;right:0;bottom:0;width:min(312px,100%);background:var(--wm-w);display:flex;flex-direction:column;box-shadow:-8px 0 32px #0000002e;animation:wm-drawerSlide-1259e822 .22s cubic-bezier(.32,.72,0,1) both}@keyframes wm-drawerSlide-1259e822{0%{transform:translate(100%)}to{transform:translate(0)}}.wm-hd__head[data-v-1259e822]{padding:14px 14px 10px;border-bottom:1px solid var(--wm-g100);display:flex;align-items:flex-start;gap:8px;flex-shrink:0}.wm-hd__heading[data-v-1259e822]{flex:1;min-width:0}.wm-hd__title[data-v-1259e822]{font-size:13.5px;font-weight:600;color:var(--wm-g900);letter-spacing:-.02em}.wm-hd__sub[data-v-1259e822]{font-size:11px;color:var(--wm-g400);margin-top:1px}.wm-hd__close[data-v-1259e822]{width:28px;height:28px;border-radius:8px;background:var(--wm-g100);border:none;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;color:var(--wm-g500);flex-shrink:0;transition:background .14s ease}.wm-hd__close[data-v-1259e822]:hover{background:var(--wm-g150);color:var(--wm-g700)}.wm-hd__top[data-v-1259e822]{padding:10px 12px 6px;flex-shrink:0}.wm-hd__new[data-v-1259e822]{width:100%;padding:10px 12px 10px 16px;border-radius:10px;background:var(--wm-g900);border:none;display:flex;align-items:center;gap:9px;cursor:pointer;font-family:var(--wm-f);color:#fff;font-size:12.5px;font-weight:600;letter-spacing:-.01em;transition:background .14s ease}.wm-hd__new[data-v-1259e822]:hover{background:var(--wm-g700)}.wm-hd__newIcon[data-v-1259e822]{width:22px;height:22px;border-radius:7px;background:#ffffff1f;display:inline-flex;align-items:center;justify-content:center;color:#fff}.wm-hd__search[data-v-1259e822]{position:relative;margin:10px 2px 2px}.wm-hd__searchIcon[data-v-1259e822]{position:absolute;top:50%;left:10px;transform:translateY(-50%);color:var(--wm-g400);display:inline-flex}.wm-hd__search input[data-v-1259e822]{width:100%;background:var(--wm-g50);border:1px solid var(--wm-g150);border-radius:9px;padding:7px 11px 7px 30px;font-size:12px;color:var(--wm-g700);font-family:var(--wm-f);outline:none}.wm-hd__search input[data-v-1259e822]:focus{border-color:var(--wm-g200);background:var(--wm-w)}.wm-hd__list[data-v-1259e822]{flex:1;overflow-y:auto;padding:8px 4px 16px}.wm-hd__group[data-v-1259e822]{margin-bottom:14px}.wm-hd__groupLabel[data-v-1259e822]{font-size:10px;font-weight:600;color:var(--wm-g300);letter-spacing:.07em;text-transform:uppercase;padding:0 12px 6px;font-family:var(--wm-fm)}.wm-hd__rows[data-v-1259e822]{display:flex;flex-direction:column;gap:2px}.wm-hd__row[data-v-1259e822]{display:flex;gap:10px;align-items:center;padding:10px 12px;border-radius:10px;background:transparent;border:none;text-align:left;cursor:pointer;width:100%;font-family:var(--wm-f);transition:background .14s ease}.wm-hd__row[data-v-1259e822]:hover{background:var(--wm-g50)}.wm-hd__row--active[data-v-1259e822]{background:var(--wm-g100)}.wm-hd__rowIcon[data-v-1259e822]{position:relative;width:28px;height:28px;border-radius:8px;background:linear-gradient(135deg,#1a1825,#0f0e14);border:1px solid rgba(91,95,239,.18);display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.wm-hd__rowBody[data-v-1259e822]{flex:1;min-width:0}.wm-hd__rowTop[data-v-1259e822]{display:flex;align-items:center;gap:6px}.wm-hd__rowTitle[data-v-1259e822]{font-size:12.5px;font-weight:600;color:var(--wm-g900);letter-spacing:-.01em;flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.wm-hd__rowDot[data-v-1259e822]{position:absolute;top:-3px;right:-3px;width:10px;height:10px;border-radius:50%;background:var(--wm-a);border:2px solid var(--wm-w);box-sizing:border-box}.wm-hd__rowPreview[data-v-1259e822]{font-size:11.5px;color:var(--wm-g400);margin-top:2px;line-height:1.4;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.wm-hd__row--unread .wm-hd__rowTitle[data-v-1259e822]{color:var(--wm-g900)}.wm-hd__row--unread .wm-hd__rowPreview[data-v-1259e822]{color:var(--wm-g700);font-weight:500}.wm-hd__empty[data-v-1259e822]{padding:28px 16px;text-align:center;font-size:12px;color:var(--wm-g400)}.wm-mm[data-v-c1bb81d2]{position:absolute;top:0;right:0;bottom:0;left:0;z-index:25}.wm-mm__scrim[data-v-c1bb81d2]{position:absolute;top:0;right:0;bottom:0;left:0}.wm-mm__pop[data-v-c1bb81d2]{position:absolute;top:56px;right:10px;width:248px;background:var(--wm-w);border:1px solid var(--wm-g150);border-radius:14px;box-shadow:0 14px 40px #00000029,0 2px 8px #0000000f;overflow:hidden;animation:wm-fadeUp .18s ease both;font-family:var(--wm-f)}.wm-mm__section[data-v-c1bb81d2]{padding:6px 4px}.wm-mm__sep[data-v-c1bb81d2]{height:1px;background:var(--wm-g100)}.wm-mm__item[data-v-c1bb81d2]{width:100%;padding:9px 12px;display:flex;align-items:center;gap:10px;background:transparent;border:none;cursor:pointer;font-family:var(--wm-f);text-align:left;color:var(--wm-g700);transition:background .14s ease;border-radius:8px}.wm-mm__item[data-v-c1bb81d2]:hover{background:var(--wm-g50)}.wm-mm__icon[data-v-c1bb81d2]{width:24px;height:24px;border-radius:7px;background:var(--wm-g100);display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;color:var(--wm-g500)}.wm-mm__label[data-v-c1bb81d2]{flex:1;font-size:12.5px;font-weight:500;letter-spacing:-.01em}.wm-mm__hint[data-v-c1bb81d2]{font-size:10.5px;color:var(--wm-g300);font-family:var(--wm-fm)}.wm-mm__item--danger[data-v-c1bb81d2]{color:#b91c1c}.wm-mm__item--danger .wm-mm__icon[data-v-c1bb81d2]{background:#b91c1c14;color:#b91c1c}.wm-mm__toggle[data-v-c1bb81d2]{width:28px;height:16px;border-radius:999px;background:var(--wm-g200);position:relative;flex-shrink:0;transition:background .14s ease;display:inline-block}.wm-mm__toggle--on[data-v-c1bb81d2]{background:var(--wm-g900)}.wm-mm__knob[data-v-c1bb81d2]{position:absolute;top:2px;left:2px;width:12px;height:12px;border-radius:50%;background:#fff;transition:left .14s ease;box-shadow:0 1px 3px #0000002e}.wm-mm__toggle--on .wm-mm__knob[data-v-c1bb81d2]{left:14px}.wm-root[data-v-da51a155]{font-family:var(--wm-f, ui-sans-serif, system-ui, sans-serif);color:var(--wm-g900, #17161A);line-height:1.45}.wm-root--floating[data-v-da51a155],.wm-root--sheet[data-v-da51a155]{position:fixed;right:20px;bottom:20px;z-index:2147483647}.wm-root--embedded[data-v-da51a155]{position:relative;width:100%;height:100%;display:flex}.wm-panel[data-v-da51a155]{background:var(--wm-w);display:flex;flex-direction:column;overflow:hidden}.wm-panel--floating[data-v-da51a155]{position:absolute;right:0;bottom:0;width:420px;max-width:calc(100vw - 32px);height:680px;max-height:calc(100vh - 80px);border-radius:16px;box-shadow:var(--wm-shPanel);animation:wm-widgetPop .25s cubic-bezier(.34,1.56,.64,1) both}.wm-panel--sheet[data-v-da51a155]{position:fixed;top:12px;right:12px;bottom:12px;width:440px;max-width:calc(100vw - 24px);border-radius:18px;box-shadow:var(--wm-shPanel);animation:wm-sheetSlide .32s cubic-bezier(.22,1,.36,1) both}.wm-panel--embedded[data-v-da51a155]{position:relative;width:100%;height:100%;border-radius:0;box-shadow:none}.wm-state[data-v-da51a155]{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:32px 24px;gap:14px;text-align:center}.wm-loading[data-v-da51a155]{flex:1;display:flex;align-items:center;justify-content:center;background:var(--wm-w, #fff);position:relative}.wm-loading__close[data-v-da51a155]{position:absolute;top:12px;right:12px;width:30px;height:30px;border-radius:50%;border:none;background:transparent;color:var(--wm-g500, #5A5753);cursor:pointer;display:inline-flex;align-items:center;justify-content:center}.wm-loading__close[data-v-da51a155]:hover{background:var(--wm-g100, #F2F1EE);color:var(--wm-g900, #17161A)}.wm-loading__spinner[data-v-da51a155]{width:22px;height:22px;border-radius:50%;border:2px solid var(--wm-g150, #E8E6E2);border-top-color:var(--wm-g500, #5A5753);animation:wm-spin-da51a155 .7s linear infinite}@keyframes wm-spin-da51a155{to{transform:rotate(360deg)}}.wm-state__err[data-v-da51a155]{display:flex;align-items:center;gap:12px;padding:12px 14px;background:var(--wm-redBg);border:1px solid #f8d7d7;border-radius:12px;max-width:320px;text-align:left}.wm-state__errIcon[data-v-da51a155]{width:28px;height:28px;border-radius:8px;background:var(--wm-red);color:#fff;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.wm-state__errTitle[data-v-da51a155]{font-size:13px;font-weight:600;color:var(--wm-red)}.wm-state__errSub[data-v-da51a155]{font-size:11px;color:var(--wm-g500);margin-top:2px}.wm-bottom[data-v-da51a155]{position:relative;flex-shrink:0}.wm-float[data-v-da51a155]{position:absolute;left:0;right:0;bottom:100%;padding:0 12px 8px;pointer-events:none;z-index:5}.wm-float>.wm-approval[data-v-da51a155],.wm-float>.wm-fb[data-v-da51a155],.wm-float>.wm-form[data-v-da51a155]{pointer-events:auto}.wm-actionWait[data-v-da51a155]{display:flex;align-items:center;justify-content:center;gap:10px;padding:10px 14px;min-height:98px;background:var(--wm-g50);border-top:1px solid var(--wm-g100);color:var(--wm-g500);font-size:12.5px;font-family:var(--wm-f);flex-shrink:0}.wm-actionWait__spinner[data-v-da51a155]{width:14px;height:14px;border-radius:50%;border:2px solid var(--wm-g200);border-top-color:var(--wm-g500);animation:wm-spin-da51a155 .7s linear infinite;flex-shrink:0}.wm-actionWait__lbl[data-v-da51a155]{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.wm-attached[data-v-da51a155]{display:flex;flex-wrap:wrap;gap:6px;padding:0 12px 8px;background:var(--wm-w);border-top:1px solid var(--wm-g100)}.wm-attached__chip[data-v-da51a155]{display:inline-flex;align-items:center;gap:6px;padding:4px 8px;border-radius:999px;background:var(--wm-g100);border:1px solid var(--wm-g150);font-size:11px;color:var(--wm-g700)}.wm-attached__chip button[data-v-da51a155]{border:none;background:transparent;color:var(--wm-g400);cursor:pointer;padding:0;display:inline-flex}.wm-attached__chip button[data-v-da51a155]:hover{color:var(--wm-g900)}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Render a markdown string to safe HTML.
3
+ *
4
+ * The output is intended to live inside a container that preserves
5
+ * `\n` characters as line breaks (e.g. `white-space: pre-wrap`). Block-level
6
+ * markers (`<ul>`, `<ol>`, `<pre>`, `<h*>`) produce their own visual breaks,
7
+ * so we strip the `\n` separators on either side of a block — otherwise the
8
+ * pre-wrap-preserved newline would stack on top of the block's natural margin
9
+ * and leak a blank line.
10
+ *
11
+ * @param {string} s
12
+ * @returns {string}
13
+ */
14
+ export function renderMarkdown(s: string): string;
@@ -0,0 +1,27 @@
1
+ export function pickRecorderMime(): string;
2
+ export function guessAttachmentKind(mime: any): "image" | "file" | "video";
3
+ /**
4
+ * Prompts the user to pick a screen and returns a single PNG File of the
5
+ * first frame. Resolves null on user cancel.
6
+ */
7
+ export function captureScreenshotFile(): Promise<File>;
8
+ /**
9
+ * Starts a screen recording. Returns a controller object with `stop()` and
10
+ * an `onfinalize` setter; the caller decides what to do with the resulting
11
+ * File. Returns null if the user cancels the picker or the API is missing.
12
+ *
13
+ * The controller fires `onstart`, `ontick(elapsedMs)`, and either `onfinalize(file)`
14
+ * or `oncancel()` once the recorder is fully drained.
15
+ */
16
+ export function startScreenRecording(handlers?: {}): Promise<{
17
+ stop: () => void;
18
+ readonly state: RecordingState;
19
+ }>;
20
+ /**
21
+ * Browser media helpers for the composer: file pick is trivial, but display
22
+ * capture (screenshot, recording) needs guarded MediaDevices access. Keeping
23
+ * the logic here lets both ThreadDetail and NewConversation share the same
24
+ * codepath without duplicating capability detection or codec selection.
25
+ */
26
+ export const SCREEN_CAPTURE_SUPPORTED: boolean;
27
+ export const MEDIA_RECORDER_SUPPORTED: boolean;
@@ -0,0 +1,44 @@
1
+ /**
2
+ * @param {ReturnType<typeof import('./transport.js').createTransport>} transport
3
+ */
4
+ export function createStore(transport: ReturnType<typeof import("./transport.js").createTransport>): {
5
+ state: {
6
+ ready: boolean;
7
+ error: any;
8
+ config: any;
9
+ customer: any;
10
+ conversations: any[];
11
+ messagesByConv: {};
12
+ paginationByConv: {};
13
+ streamingByMsgId: {};
14
+ awaitingCallback: {};
15
+ runningActionsByConv: {};
16
+ connection: string;
17
+ };
18
+ start: () => Promise<void>;
19
+ destroy: () => void;
20
+ createConversation: (body?: {}) => Promise<import("./types.js").Conversation>;
21
+ openConversation: (id: any) => Promise<void>;
22
+ loadMore: (id: any) => Promise<void>;
23
+ patchConversation: (id: any, updates: any) => Promise<void>;
24
+ send: (conversationId: any, text: any, { attachments, metadata }?: {}) => Promise<void>;
25
+ clickCallback: (messageId: any, callbackId: any, inputs: any) => Promise<void>;
26
+ signAttachment: (path: any) => Promise<any>;
27
+ submitFeedback: (conversationId: any, { rating, comment }?: {}) => Promise<void>;
28
+ getPendingApproval: (conversationId: any) => any;
29
+ getActionInFlight: (conversationId: any) => {
30
+ id: string;
31
+ payload: {
32
+ name: any;
33
+ };
34
+ };
35
+ getLatestSuggestions: (conversationId: any) => {
36
+ label: string;
37
+ kind: "cta" | "choice" | "followup" | null;
38
+ }[];
39
+ getLatestForm: (conversationId: any) => {
40
+ message: any;
41
+ form: any;
42
+ };
43
+ setPanelOpen: (open: any) => void;
44
+ };
@@ -0,0 +1,31 @@
1
+ export function avatarColor(name?: string): string;
2
+ export function avatarInitials(name?: string): string;
3
+ export function formatTime(d?: Date): string;
4
+ export namespace colors {
5
+ let w: string;
6
+ let g50: string;
7
+ let g100: string;
8
+ let g150: string;
9
+ let g200: string;
10
+ let g300: string;
11
+ let g400: string;
12
+ let g500: string;
13
+ let g700: string;
14
+ let g900: string;
15
+ let accent: string;
16
+ let accentLight: string;
17
+ let green: string;
18
+ let red: string;
19
+ let redBg: string;
20
+ }
21
+ /**
22
+ * 6 teintes utilisées pour générer une couleur d'avatar humain
23
+ * déterministe à partir d'un nom (HuAv du design v4).
24
+ */
25
+ export const AVATAR_COLORS: string[];
26
+ /**
27
+ * CSS injecté une fois par wwElement.vue. Définit les variables custom
28
+ * sur le wrapper `.wm-root` (sorte de scope local) ; les keyframes sont
29
+ * préfixées `wm-` pour éviter toute collision avec la page hôte.
30
+ */
31
+ export const tokensCss: string;
@@ -0,0 +1,82 @@
1
+ /**
2
+ * @typedef {Object} TransportOptions
3
+ * @property {string} baseUrl e.g. "https://messenger.example.com"
4
+ * @property {string} widgetId UUID of the widget row in the DB.
5
+ * @property {string} userId end-user id (== customer.external_id).
6
+ * @property {string} userHash HMAC-SHA256(secret, userId), hex.
7
+ */
8
+ /**
9
+ * @param {TransportOptions} options
10
+ */
11
+ export function createTransport(options: TransportOptions): {
12
+ on: (eventName: any, handler: any) => () => any;
13
+ start: () => Promise<{
14
+ config: import("./types.js").BootstrapConfig;
15
+ customer: import("./types.js").Customer | null;
16
+ }>;
17
+ stop: () => void;
18
+ setPanelOpen: (open: any) => void;
19
+ bootstrap: () => Promise<{
20
+ config: import("./types.js").BootstrapConfig;
21
+ customer: import("./types.js").Customer | null;
22
+ }>;
23
+ getCustomer: () => Promise<import("./types.js").Customer | null>;
24
+ patchCustomer: (updates: {
25
+ email?: string;
26
+ name?: string;
27
+ metadata?: {
28
+ [x: string]: unknown;
29
+ };
30
+ }) => Promise<any>;
31
+ listConversations: () => Promise<import("./types.js").Conversation[]>;
32
+ createConversation: (body?: {
33
+ id?: string;
34
+ name?: string;
35
+ metadata?: {
36
+ [x: string]: unknown;
37
+ };
38
+ }) => Promise<import("./types.js").Conversation>;
39
+ getConversation: (id: any) => Promise<import("./types.js").Conversation>;
40
+ patchConversation: (id: string, updates: {
41
+ name?: string;
42
+ status?: "open" | "resolved";
43
+ metadata?: {
44
+ [x: string]: unknown;
45
+ };
46
+ }) => Promise<any>;
47
+ listMessages: (conversationId: string, opts?: {
48
+ before?: string;
49
+ since?: string;
50
+ limit?: number;
51
+ }) => Promise<import("./types.js").ListMessagesBefore | import("./types.js").ListMessagesSince>;
52
+ postMessage: (conversationId: string, input: {
53
+ client_msg_id: string;
54
+ text_md: string;
55
+ created_at?: string;
56
+ attachments?: import("./types.js").Attachment[];
57
+ }) => Promise<import("./types.js").PostMessageAck>;
58
+ postCallback: (messageId: string, callbackId: string, inputs?: {
59
+ [x: string]: unknown;
60
+ }) => Promise<any>;
61
+ uploadAttachment: (file: File | Blob) => Promise<import("./types.js").Attachment>;
62
+ signAttachment: (path: string) => Promise<import("./types.js").AttachmentReadTicket>;
63
+ readonly connection: string;
64
+ };
65
+ export type TransportOptions = {
66
+ /**
67
+ * e.g. "https://messenger.example.com"
68
+ */
69
+ baseUrl: string;
70
+ /**
71
+ * UUID of the widget row in the DB.
72
+ */
73
+ widgetId: string;
74
+ /**
75
+ * end-user id (== customer.external_id).
76
+ */
77
+ userId: string;
78
+ /**
79
+ * HMAC-SHA256(secret, userId), hex.
80
+ */
81
+ userHash: string;
82
+ };
@@ -0,0 +1,292 @@
1
+ export type WidgetQuickLink = {
2
+ label: string;
3
+ icon?: string;
4
+ url?: string;
5
+ };
6
+ export type WidgetTeamMember = {
7
+ name: string;
8
+ avatar_url?: string;
9
+ };
10
+ export type WidgetPublicConfig = {
11
+ id: string;
12
+ name: string | null;
13
+ welcome_message: string | null;
14
+ subtitle: string | null;
15
+ primary_color: string | null;
16
+ quick_links: WidgetQuickLink[];
17
+ team_members: WidgetTeamMember[];
18
+ response_time_label: string | null;
19
+ options: {
20
+ [x: string]: unknown;
21
+ };
22
+ };
23
+ export type AgentPublicInfo = {
24
+ name: string | null;
25
+ avatar_url: string | null;
26
+ };
27
+ export type BootstrapConfig = {
28
+ widget: WidgetPublicConfig;
29
+ agent: AgentPublicInfo | null;
30
+ };
31
+ export type Customer = {
32
+ id: string;
33
+ external_id: string;
34
+ email?: string | null;
35
+ name?: string | null;
36
+ metadata?: {
37
+ [x: string]: unknown;
38
+ } | null;
39
+ };
40
+ export type ConversationStatus = "open" | "waiting" | "handled" | "resolved";
41
+ export type ConversationPriority = "urgent" | "normal" | "low";
42
+ export type AIMode = "respond" | "suggest" | "off";
43
+ export type Conversation = {
44
+ id: string;
45
+ company_id?: string | null;
46
+ project_id?: string | null;
47
+ customer_id?: string | null;
48
+ name?: string | null;
49
+ status: ConversationStatus;
50
+ priority?: ConversationPriority;
51
+ ai_mode?: AIMode;
52
+ last_message_at?: string | null;
53
+ metadata?: {
54
+ [x: string]: unknown;
55
+ } | null;
56
+ created_at?: string;
57
+ updated_at?: string;
58
+ };
59
+ export type AuthorType = "user" | "agent_ia" | "agent_human" | "system";
60
+ export type MessageType = "content" | "action" | "function" | "system";
61
+ export type MessageVisibility = "public" | "internal";
62
+ export type MessageStatus = "delivered" | "read";
63
+ export type ActionState = "pending" | "success" | "failure" | "rejected";
64
+ export type FunctionState = "success" | "failure";
65
+ export type AttachmentType = "image" | "file" | "audio" | "video";
66
+ export type Author = {
67
+ type: AuthorType;
68
+ id?: string | null;
69
+ name?: string | null;
70
+ avatar_url?: string | null;
71
+ };
72
+ export type Attachment = {
73
+ type: AttachmentType;
74
+ /**
75
+ * Supabase Storage path (private bucket).
76
+ */
77
+ path: string;
78
+ mime_type?: string | null;
79
+ size_bytes?: number | null;
80
+ metadata?: {
81
+ [x: string]: unknown;
82
+ } | null;
83
+ };
84
+ export type ContentPayload = {
85
+ type: "content";
86
+ attachments?: Attachment[] | null;
87
+ };
88
+ export type ActionPayload = {
89
+ type: "action";
90
+ id: string;
91
+ name: string;
92
+ state: ActionState;
93
+ breakpoint_id?: string | null;
94
+ pending?: {
95
+ goal?: string | null;
96
+ prepared_params?: {
97
+ [x: string]: unknown;
98
+ } | null;
99
+ } | null;
100
+ success?: {
101
+ goal?: string | null;
102
+ params?: {
103
+ [x: string]: unknown;
104
+ } | null;
105
+ summary?: string | null;
106
+ metadata?: {
107
+ [x: string]: unknown;
108
+ } | null;
109
+ } | null;
110
+ failure?: {
111
+ goal?: string | null;
112
+ error?: string | null;
113
+ summary?: string | null;
114
+ } | null;
115
+ rejected?: {
116
+ reason?: string | null;
117
+ metadata?: {
118
+ [x: string]: unknown;
119
+ } | null;
120
+ } | null;
121
+ };
122
+ export type FunctionPayload = {
123
+ type: "function";
124
+ action_id: string;
125
+ action_name: string;
126
+ integration_id: string;
127
+ function_name: string;
128
+ state: FunctionState;
129
+ success?: {
130
+ params?: {
131
+ [x: string]: unknown;
132
+ } | null;
133
+ result?: unknown;
134
+ } | null;
135
+ failure?: {
136
+ error?: string | null;
137
+ params?: {
138
+ [x: string]: unknown;
139
+ } | null;
140
+ } | null;
141
+ };
142
+ export type SystemEvent = "transferred_to_human" | "assigned" | "unassigned" | "resolved" | "reopened" | "idle";
143
+ export type SystemPayload = {
144
+ type: "system";
145
+ event: SystemEvent;
146
+ metadata?: {
147
+ [x: string]: unknown;
148
+ } | null;
149
+ };
150
+ export type MessagePayload = ContentPayload | ActionPayload | FunctionPayload | SystemPayload;
151
+ export type CallbackInput = {
152
+ field: string;
153
+ label?: string | null;
154
+ type?: "text" | "number" | "textarea" | null;
155
+ required?: boolean | null;
156
+ placeholder?: string | null;
157
+ };
158
+ export type MessageCallback = {
159
+ id: string;
160
+ label: string;
161
+ style?: "primary" | "danger" | "neutral" | null;
162
+ inputs?: CallbackInput[] | null;
163
+ };
164
+ export type Message = {
165
+ /**
166
+ * Server bigint primary key. JSON
167
+ * may come through as a number;
168
+ * comparisons use === so callers
169
+ * must keep the type consistent.
170
+ * For optimistic-only entries
171
+ * (pre-ack) it is a temporary UUID
172
+ * string equal to `client_msg_id`.
173
+ */
174
+ id: string | number;
175
+ /**
176
+ * Client-generated UUID v4, sent
177
+ * with the POST and echoed back in
178
+ * the SSE `message` event so the
179
+ * widget can reconcile the
180
+ * optimistic entry. `null` on
181
+ * server-originated messages (IA,
182
+ * system, admin callbacks).
183
+ */
184
+ client_msg_id?: string | null;
185
+ company_id?: string | null;
186
+ project_id?: string | null;
187
+ conversation_id?: string | null;
188
+ author?: Author | null;
189
+ status?: MessageStatus | null;
190
+ type?: MessageType | null;
191
+ visibility?: MessageVisibility | null;
192
+ text_md?: string | null;
193
+ channel?: string | null;
194
+ payload?: MessagePayload | null;
195
+ callbacks?: MessageCallback[] | null;
196
+ metadata?: {
197
+ [x: string]: unknown;
198
+ } | null;
199
+ created_at: string;
200
+ updated_at?: string;
201
+ };
202
+ export type OutgoingMessage = {
203
+ /**
204
+ * Client-generated UUID v4 — the
205
+ * server echoes it back in the SSE
206
+ * `message` event so the widget can
207
+ * reconcile its optimistic entry
208
+ * with the server-minted bigint id.
209
+ */
210
+ client_msg_id: string;
211
+ type: "content";
212
+ text_md: string;
213
+ author: {
214
+ id: string;
215
+ type: "user";
216
+ };
217
+ /**
218
+ * ISO string.
219
+ */
220
+ created_at: string;
221
+ };
222
+ export type AttachmentUploadTicket = {
223
+ /**
224
+ * Signed URL — PUT the file body here.
225
+ */
226
+ upload_url: string;
227
+ /**
228
+ * Supabase upload token.
229
+ */
230
+ token: string;
231
+ /**
232
+ * Final storage path (store on the message).
233
+ */
234
+ path: string;
235
+ };
236
+ export type AttachmentReadTicket = {
237
+ signed_url: string;
238
+ /**
239
+ * ISO string (~24h).
240
+ */
241
+ expires_at: string;
242
+ };
243
+ export type SSEEventType = "connected" | "message_stream" | "message" | "conversation_updated" | "config_updated";
244
+ export type SSEEnvelope = {
245
+ type: SSEEventType;
246
+ /**
247
+ * ISO string.
248
+ */
249
+ timestamp: string;
250
+ /**
251
+ * Event-specific payload.
252
+ */
253
+ data: any;
254
+ };
255
+ export type SSEDataConnected = {
256
+ userId: string;
257
+ };
258
+ export type SSEDataMessageStream = {
259
+ conversation_id: string;
260
+ token: string;
261
+ message_id: string;
262
+ };
263
+ export type SSEDataMessage = {
264
+ conversation_id: string;
265
+ message: Message;
266
+ };
267
+ export type SSEDataConversationUpdated = {
268
+ conversation_id: string;
269
+ changes: Partial<Conversation>;
270
+ };
271
+ export type SSEDataConfigUpdated = {
272
+ config: any;
273
+ };
274
+ export type ListMessagesBefore = {
275
+ messages: Message[];
276
+ /**
277
+ * ISO date — pass to ?before for older.
278
+ */
279
+ next_cursor: string | null;
280
+ };
281
+ export type ListMessagesSince = {
282
+ messages: Message[];
283
+ /**
284
+ * ISO date — pass back to ?since.
285
+ */
286
+ latest_at: string;
287
+ };
288
+ export type PostMessageAck = {
289
+ accepted: true;
290
+ message_id: string;
291
+ conversation_id: string;
292
+ };
@@ -0,0 +1,10 @@
1
+ /**
2
+ * UUID v4 generator with a fallback for environments without crypto.randomUUID.
3
+ *
4
+ * The widget produces a UUID client-side for every outgoing message so the
5
+ * optimistic bubble carries its final id immediately. The server accepts the
6
+ * id as-is in `POST /conversations/:id/messages` (idempotency on retry).
7
+ *
8
+ * @returns {string} A version-4 UUID.
9
+ */
10
+ export function v4(): string;
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Mount (or remount) the widget.
3
+ *
4
+ * @param {{
5
+ * baseUrl: string, widgetId: string, userId: string, userHash: string,
6
+ * displayMode?: 'floating'|'sheet'|'embedded',
7
+ * target?: string|Element, devtools?: boolean
8
+ * }} opts
9
+ * @returns {import('vue').App|null} the Vue app, or null when not mounted
10
+ * (incomplete credentials).
11
+ */
12
+ export function init(opts?: {
13
+ baseUrl: string;
14
+ widgetId: string;
15
+ userId: string;
16
+ userHash: string;
17
+ displayMode?: "floating" | "sheet" | "embedded";
18
+ target?: string | Element;
19
+ devtools?: boolean;
20
+ }): import("vue").App | null;
21
+ /** Unmount the widget and clean up the host element we created. */
22
+ export function destroy(): void;
@@ -0,0 +1,31 @@
1
+ export { createTransport } from "./core/transport.js";
2
+ export { createStore } from "./core/store.js";
3
+ export { renderMarkdown } from "./core/markdown.js";
4
+ export { default as Launcher } from "./components/Launcher.vue";
5
+ export { default as Header } from "./components/Header.vue";
6
+ export { default as Onboarding } from "./components/Onboarding.vue";
7
+ export { default as MessageList } from "./components/MessageList.vue";
8
+ export { default as Composer } from "./components/Composer.vue";
9
+ export { default as Bubble } from "./components/Bubble.vue";
10
+ export { default as Typing } from "./components/Typing.vue";
11
+ export { default as SuggestionChips } from "./components/SuggestionChips.vue";
12
+ export { default as ApprovalCard } from "./components/ApprovalCard.vue";
13
+ export { default as FormCard } from "./components/FormCard.vue";
14
+ export { default as Feedback } from "./components/Feedback.vue";
15
+ export { default as HistoryDrawer } from "./components/HistoryDrawer.vue";
16
+ export { default as MoreMenu } from "./components/MoreMenu.vue";
17
+ export { default as ActionResult } from "./components/ActionResult.vue";
18
+ export { default as AIAvatar } from "./components/AIAvatar.vue";
19
+ export { default as HumanAvatar } from "./components/HumanAvatar.vue";
20
+ export { default as TeamAvatars } from "./components/TeamAvatars.vue";
21
+ export { default as AttachmentPreview } from "./components/AttachmentPreview.vue";
22
+ export { default as ArtifactRenderer } from "./components/ArtifactRenderer.vue";
23
+ export { default as ArtifactFormResponse } from "./components/artifacts/FormResponse.vue";
24
+ export { default as ArtifactInfoCard } from "./components/artifacts/InfoCard.vue";
25
+ export { default as ArtifactTicket } from "./components/artifacts/Ticket.vue";
26
+ export { Messenger };
27
+ export default Messenger;
28
+ import Messenger from './Messenger.vue';
29
+ export { colors, AVATAR_COLORS, avatarColor, avatarInitials, formatTime, tokensCss } from "./core/tokens.js";
30
+ export { v4, v4 as uuid } from "./core/uuid.js";
31
+ export { SCREEN_CAPTURE_SUPPORTED, MEDIA_RECORDER_SUPPORTED, pickRecorderMime, guessAttachmentKind, captureScreenshotFile, startScreenRecording } from "./core/media.js";