@wallavi/widget 1.6.6 → 1.6.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +145 -144
- package/dist/index.mjs +147 -146
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { useRef, useEffect, useState, useCallback, useMemo } from 'react';
|
|
2
2
|
import { UploadCloud, X, RotateCcw, Loader2, Square, Mic, Paperclip, ArrowUp, Zap, ChevronDown, CheckCircle2, AlertCircle, Search, Check, FileText, FileSpreadsheet } from 'lucide-react';
|
|
3
3
|
import { clsx } from 'clsx';
|
|
4
|
-
import { twMerge } from 'tailwind-merge';
|
|
4
|
+
import { extendTailwindMerge, twMerge as twMerge$1 } from 'tailwind-merge';
|
|
5
5
|
import * as AvatarPrimitive from '@radix-ui/react-avatar';
|
|
6
6
|
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
7
7
|
import ReactMarkdownLib from 'react-markdown';
|
|
@@ -30,7 +30,8 @@ function styleInject(css, { insertAt } = {}) {
|
|
|
30
30
|
}
|
|
31
31
|
|
|
32
32
|
// src/styles.css
|
|
33
|
-
styleInject(".container {\n width: 100%;\n}\n@media (min-width: 640px) {\n .container {\n max-width: 640px;\n }\n}\n@media (min-width: 768px) {\n .container {\n max-width: 768px;\n }\n}\n@media (min-width: 1024px) {\n .container {\n max-width: 1024px;\n }\n}\n@media (min-width: 1280px) {\n .container {\n max-width: 1280px;\n }\n}\n@media (min-width: 1536px) {\n .container {\n max-width: 1536px;\n }\n}\n.pointer-events-none {\n pointer-events: none;\n}\n.visible {\n visibility: visible;\n}\n.collapse {\n visibility: collapse;\n}\n.static {\n position: static;\n}\n.fixed {\n position: fixed;\n}\n.absolute {\n position: absolute;\n}\n.relative {\n position: relative;\n}\n.inset-0 {\n inset: 0px;\n}\n.left-2\\.5 {\n left: 0.625rem;\n}\n.top-1\\/2 {\n top: 50%;\n}\n.z-50 {\n z-index: 50;\n}\n.mb-1 {\n margin-bottom: 0.25rem;\n}\n.mb-2 {\n margin-bottom: 0.5rem;\n}\n.ml-0\\.5 {\n margin-left: 0.125rem;\n}\n.mt-0\\.5 {\n margin-top: 0.125rem;\n}\n.mt-1 {\n margin-top: 0.25rem;\n}\n.block {\n display: block;\n}\n.inline-block {\n display: inline-block;\n}\n.flex {\n display: flex;\n}\n.inline-flex {\n display: inline-flex;\n}\n.table {\n display: table;\n}\n.grid {\n display: grid;\n}\n.hidden {\n display: none;\n}\n.h-10 {\n height: 2.5rem;\n}\n.h-2\\.5 {\n height: 0.625rem;\n}\n.h-20 {\n height: 5rem;\n}\n.h-3 {\n height: 0.75rem;\n}\n.h-3\\.5 {\n height: 0.875rem;\n}\n.h-4 {\n height: 1rem;\n}\n.h-6 {\n height: 1.5rem;\n}\n.h-7 {\n height: 1.75rem;\n}\n.h-8 {\n height: 2rem;\n}\n.h-full {\n height: 100%;\n}\n.max-h-32 {\n max-height: 8rem;\n}\n.max-h-48 {\n max-height: 12rem;\n}\n.max-h-\\[168px\\] {\n max-height: 168px;\n}\n.max-h-\\[180px\\] {\n max-height: 180px;\n}\n.w-0\\.5 {\n width: 0.125rem;\n}\n.w-10 {\n width: 2.5rem;\n}\n.w-2\\.5 {\n width: 0.625rem;\n}\n.w-20 {\n width: 5rem;\n}\n.w-3 {\n width: 0.75rem;\n}\n.w-3\\.5 {\n width: 0.875rem;\n}\n.w-4 {\n width: 1rem;\n}\n.w-6 {\n width: 1.5rem;\n}\n.w-7 {\n width: 1.75rem;\n}\n.w-8 {\n width: 2rem;\n}\n.w-fit {\n width: -moz-fit-content;\n width: fit-content;\n}\n.w-full {\n width: 100%;\n}\n.min-w-0 {\n min-width: 0px;\n}\n.max-w-\\[120px\\] {\n max-width: 120px;\n}\n.max-w-\\[200px\\] {\n max-width: 200px;\n}\n.max-w-\\[78\\%\\] {\n max-width: 78%;\n}\n.max-w-\\[82\\%\\] {\n max-width: 82%;\n}\n.max-w-none {\n max-width: none;\n}\n.flex-1 {\n flex: 1 1 0%;\n}\n.shrink-0 {\n flex-shrink: 0;\n}\n.-translate-y-1\\/2 {\n --tw-translate-y: -50%;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.rotate-180 {\n --tw-rotate: 180deg;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.transform {\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n@keyframes pulse {\n 50% {\n opacity: .5;\n }\n}\n.animate-pulse {\n animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n}\n@keyframes spin {\n to {\n transform: rotate(360deg);\n }\n}\n.animate-spin {\n animation: spin 1s linear infinite;\n}\n.cursor-default {\n cursor: default;\n}\n.cursor-pointer {\n cursor: pointer;\n}\n.select-none {\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n}\n.resize-none {\n resize: none;\n}\n.grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n}\n.flex-col {\n flex-direction: column;\n}\n.flex-wrap {\n flex-wrap: wrap;\n}\n.items-start {\n align-items: flex-start;\n}\n.items-end {\n align-items: flex-end;\n}\n.items-center {\n align-items: center;\n}\n.justify-end {\n justify-content: flex-end;\n}\n.justify-center {\n justify-content: center;\n}\n.justify-between {\n justify-content: space-between;\n}\n.gap-0\\.5 {\n gap: 0.125rem;\n}\n.gap-1 {\n gap: 0.25rem;\n}\n.gap-1\\.5 {\n gap: 0.375rem;\n}\n.gap-2 {\n gap: 0.5rem;\n}\n.gap-2\\.5 {\n gap: 0.625rem;\n}\n.gap-4 {\n gap: 1rem;\n}\n.divide-y > :not([hidden]) ~ :not([hidden]) {\n --tw-divide-y-reverse: 0;\n border-top-width: calc(1px * calc(1 - var(--tw-divide-y-reverse)));\n border-bottom-width: calc(1px * var(--tw-divide-y-reverse));\n}\n.divide-border\\/40 > :not([hidden]) ~ :not([hidden]) {\n border-color: hsl(var(--border) / 0.4);\n}\n.overflow-hidden {\n overflow: hidden;\n}\n.overflow-y-auto {\n overflow-y: auto;\n}\n.overscroll-contain {\n overscroll-behavior: contain;\n}\n.truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.whitespace-pre-wrap {\n white-space: pre-wrap;\n}\n.rounded {\n border-radius: 0.25rem;\n}\n.rounded-2xl {\n border-radius: 1rem;\n}\n.rounded-full {\n border-radius: 9999px;\n}\n.rounded-lg {\n border-radius: var(--radius);\n}\n.rounded-xl {\n border-radius: 0.75rem;\n}\n.rounded-tl-none {\n border-top-left-radius: 0px;\n}\n.rounded-tl-sm {\n border-top-left-radius: calc(var(--radius) - 4px);\n}\n.rounded-tr-sm {\n border-top-right-radius: calc(var(--radius) - 4px);\n}\n.border {\n border-width: 1px;\n}\n.border-2 {\n border-width: 2px;\n}\n.border-b {\n border-bottom-width: 1px;\n}\n.border-l-2 {\n border-left-width: 2px;\n}\n.border-t {\n border-top-width: 1px;\n}\n.border-background {\n border-color: hsl(var(--background));\n}\n.border-black\\/10 {\n border-color: rgb(0 0 0 / 0.1);\n}\n.border-border {\n border-color: hsl(var(--border));\n}\n.border-border\\/30 {\n border-color: hsl(var(--border) / 0.3);\n}\n.border-border\\/40 {\n border-color: hsl(var(--border) / 0.4);\n}\n.border-border\\/50 {\n border-color: hsl(var(--border) / 0.5);\n}\n.border-border\\/60 {\n border-color: hsl(var(--border) / 0.6);\n}\n.border-border\\/70 {\n border-color: hsl(var(--border) / 0.7);\n}\n.border-muted {\n border-color: hsl(var(--muted));\n}\n.border-muted-foreground\\/30 {\n border-color: hsl(var(--muted-foreground) / 0.3);\n}\n.border-red-200 {\n --tw-border-opacity: 1;\n border-color: rgb(254 202 202 / var(--tw-border-opacity, 1));\n}\n.border-white\\/20 {\n border-color: rgb(255 255 255 / 0.2);\n}\n.bg-background {\n background-color: hsl(var(--background));\n}\n.bg-background\\/20 {\n background-color: hsl(var(--background) / 0.2);\n}\n.bg-background\\/40 {\n background-color: hsl(var(--background) / 0.4);\n}\n.bg-background\\/50 {\n background-color: hsl(var(--background) / 0.5);\n}\n.bg-background\\/90 {\n background-color: hsl(var(--background) / 0.9);\n}\n.bg-black\\/10 {\n background-color: rgb(0 0 0 / 0.1);\n}\n.bg-foreground {\n background-color: hsl(var(--foreground));\n}\n.bg-foreground\\/60 {\n background-color: hsl(var(--foreground) / 0.6);\n}\n.bg-muted {\n background-color: hsl(var(--muted));\n}\n.bg-muted-foreground\\/10 {\n background-color: hsl(var(--muted-foreground) / 0.1);\n}\n.bg-muted\\/50 {\n background-color: hsl(var(--muted) / 0.5);\n}\n.bg-muted\\/60 {\n background-color: hsl(var(--muted) / 0.6);\n}\n.bg-primary {\n background-color: hsl(var(--primary));\n}\n.bg-primary\\/5 {\n background-color: hsl(var(--primary) / 0.05);\n}\n.bg-red-50 {\n --tw-bg-opacity: 1;\n background-color: rgb(254 242 242 / var(--tw-bg-opacity, 1));\n}\n.bg-transparent {\n background-color: transparent;\n}\n.bg-white\\/10 {\n background-color: rgb(255 255 255 / 0.1);\n}\n.bg-white\\/15 {\n background-color: rgb(255 255 255 / 0.15);\n}\n.fill-current {\n fill: currentColor;\n}\n.object-cover {\n -o-object-fit: cover;\n object-fit: cover;\n}\n.p-0\\.5 {\n padding: 0.125rem;\n}\n.p-1\\.5 {\n padding: 0.375rem;\n}\n.p-3 {\n padding: 0.75rem;\n}\n.px-1 {\n padding-left: 0.25rem;\n padding-right: 0.25rem;\n}\n.px-2 {\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n}\n.px-2\\.5 {\n padding-left: 0.625rem;\n padding-right: 0.625rem;\n}\n.px-3 {\n padding-left: 0.75rem;\n padding-right: 0.75rem;\n}\n.px-3\\.5 {\n padding-left: 0.875rem;\n padding-right: 0.875rem;\n}\n.px-4 {\n padding-left: 1rem;\n padding-right: 1rem;\n}\n.py-0\\.5 {\n padding-top: 0.125rem;\n padding-bottom: 0.125rem;\n}\n.py-1 {\n padding-top: 0.25rem;\n padding-bottom: 0.25rem;\n}\n.py-1\\.5 {\n padding-top: 0.375rem;\n padding-bottom: 0.375rem;\n}\n.py-2 {\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n}\n.py-2\\.5 {\n padding-top: 0.625rem;\n padding-bottom: 0.625rem;\n}\n.py-3 {\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n}\n.py-4 {\n padding-top: 1rem;\n padding-bottom: 1rem;\n}\n.pb-1\\.5 {\n padding-bottom: 0.375rem;\n}\n.pb-4 {\n padding-bottom: 1rem;\n}\n.pl-2 {\n padding-left: 0.5rem;\n}\n.pl-7 {\n padding-left: 1.75rem;\n}\n.pr-0\\.5 {\n padding-right: 0.125rem;\n}\n.pr-3 {\n padding-right: 0.75rem;\n}\n.pt-2 {\n padding-top: 0.5rem;\n}\n.pt-5 {\n padding-top: 1.25rem;\n}\n.text-left {\n text-align: left;\n}\n.text-center {\n text-align: center;\n}\n.text-start {\n text-align: start;\n}\n.text-end {\n text-align: end;\n}\n.align-middle {\n vertical-align: middle;\n}\n.text-\\[10\\.5px\\] {\n font-size: 10.5px;\n}\n.text-\\[10px\\] {\n font-size: 10px;\n}\n.text-\\[11px\\] {\n font-size: 11px;\n}\n.text-\\[12\\.5px\\] {\n font-size: 12.5px;\n}\n.text-\\[12px\\] {\n font-size: 12px;\n}\n.text-\\[8px\\] {\n font-size: 8px;\n}\n.text-sm {\n font-size: 0.875rem;\n line-height: 1.25rem;\n}\n.text-xs {\n font-size: 0.75rem;\n line-height: 1rem;\n}\n.font-medium {\n font-weight: 500;\n}\n.font-semibold {\n font-weight: 600;\n}\n.uppercase {\n text-transform: uppercase;\n}\n.tabular-nums {\n --tw-numeric-spacing: tabular-nums;\n font-variant-numeric: var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);\n}\n.leading-none {\n line-height: 1;\n}\n.leading-relaxed {\n line-height: 1.625;\n}\n.leading-snug {\n line-height: 1.375;\n}\n.leading-tight {\n line-height: 1.25;\n}\n.tracking-widest {\n letter-spacing: 0.1em;\n}\n.text-background {\n color: hsl(var(--background));\n}\n.text-black\\/40 {\n color: rgb(0 0 0 / 0.4);\n}\n.text-black\\/60 {\n color: rgb(0 0 0 / 0.6);\n}\n.text-destructive {\n color: hsl(var(--destructive));\n}\n.text-destructive\\/70 {\n color: hsl(var(--destructive) / 0.7);\n}\n.text-emerald-500 {\n --tw-text-opacity: 1;\n color: rgb(16 185 129 / var(--tw-text-opacity, 1));\n}\n.text-foreground {\n color: hsl(var(--foreground));\n}\n.text-foreground\\/60 {\n color: hsl(var(--foreground) / 0.6);\n}\n.text-foreground\\/70 {\n color: hsl(var(--foreground) / 0.7);\n}\n.text-foreground\\/80 {\n color: hsl(var(--foreground) / 0.8);\n}\n.text-muted-foreground {\n color: hsl(var(--muted-foreground));\n}\n.text-muted-foreground\\/40 {\n color: hsl(var(--muted-foreground) / 0.4);\n}\n.text-muted-foreground\\/50 {\n color: hsl(var(--muted-foreground) / 0.5);\n}\n.text-muted-foreground\\/70 {\n color: hsl(var(--muted-foreground) / 0.7);\n}\n.text-muted-foreground\\/80 {\n color: hsl(var(--muted-foreground) / 0.8);\n}\n.text-primary {\n color: hsl(var(--primary));\n}\n.text-primary-foreground {\n color: hsl(var(--primary-foreground));\n}\n.text-primary\\/70 {\n color: hsl(var(--primary) / 0.7);\n}\n.text-primary\\/80 {\n color: hsl(var(--primary) / 0.8);\n}\n.text-red-400 {\n --tw-text-opacity: 1;\n color: rgb(248 113 113 / var(--tw-text-opacity, 1));\n}\n.text-red-500 {\n --tw-text-opacity: 1;\n color: rgb(239 68 68 / var(--tw-text-opacity, 1));\n}\n.text-red-600 {\n --tw-text-opacity: 1;\n color: rgb(220 38 38 / var(--tw-text-opacity, 1));\n}\n.text-white\\/60 {\n color: rgb(255 255 255 / 0.6);\n}\n.text-white\\/80 {\n color: rgb(255 255 255 / 0.8);\n}\n.underline {\n text-decoration-line: underline;\n}\n.line-through {\n text-decoration-line: line-through;\n}\n.no-underline {\n text-decoration-line: none;\n}\n.decoration-foreground\\/20 {\n text-decoration-color: hsl(var(--foreground) / 0.2);\n}\n.opacity-100 {\n opacity: 1;\n}\n.opacity-30 {\n opacity: 0.3;\n}\n.opacity-35 {\n opacity: 0.35;\n}\n.opacity-40 {\n opacity: 0.4;\n}\n.opacity-60 {\n opacity: 0.6;\n}\n.opacity-70 {\n opacity: 0.7;\n}\n.opacity-80 {\n opacity: 0.8;\n}\n.shadow-2xl {\n --tw-shadow: 0 25px 50px -12px rgb(0 0 0 / 0.25);\n --tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);\n box-shadow:\n var(--tw-ring-offset-shadow, 0 0 #0000),\n var(--tw-ring-shadow, 0 0 #0000),\n var(--tw-shadow);\n}\n.shadow-sm {\n --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);\n --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);\n box-shadow:\n var(--tw-ring-offset-shadow, 0 0 #0000),\n var(--tw-ring-shadow, 0 0 #0000),\n var(--tw-shadow);\n}\n.shadow-xl {\n --tw-shadow: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);\n --tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);\n box-shadow:\n var(--tw-ring-offset-shadow, 0 0 #0000),\n var(--tw-ring-shadow, 0 0 #0000),\n var(--tw-shadow);\n}\n.outline-none {\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n.ring-2 {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow:\n var(--tw-ring-offset-shadow),\n var(--tw-ring-shadow),\n var(--tw-shadow, 0 0 #0000);\n}\n.ring-inset {\n --tw-ring-inset: inset;\n}\n.ring-primary\\/60 {\n --tw-ring-color: hsl(var(--primary) / 0.6);\n}\n.filter {\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n.backdrop-blur-sm {\n --tw-backdrop-blur: blur(4px);\n backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n}\n.transition {\n transition-property:\n color,\n background-color,\n border-color,\n text-decoration-color,\n fill,\n stroke,\n opacity,\n box-shadow,\n transform,\n filter,\n backdrop-filter;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.transition-all {\n transition-property: all;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.transition-colors {\n transition-property:\n color,\n background-color,\n border-color,\n text-decoration-color,\n fill,\n stroke;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.transition-shadow {\n transition-property: box-shadow;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.transition-transform {\n transition-property: transform;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.duration-100 {\n transition-duration: 100ms;\n}\n.duration-150 {\n transition-duration: 150ms;\n}\n.duration-200 {\n transition-duration: 200ms;\n}\n@keyframes enter {\n from {\n opacity: var(--tw-enter-opacity, 1);\n transform: translate3d(var(--tw-enter-translate-x, 0), var(--tw-enter-translate-y, 0), 0) scale3d(var(--tw-enter-scale, 1), var(--tw-enter-scale, 1), var(--tw-enter-scale, 1)) rotate(var(--tw-enter-rotate, 0));\n }\n}\n@keyframes exit {\n to {\n opacity: var(--tw-exit-opacity, 1);\n transform: translate3d(var(--tw-exit-translate-x, 0), var(--tw-exit-translate-y, 0), 0) scale3d(var(--tw-exit-scale, 1), var(--tw-exit-scale, 1), var(--tw-exit-scale, 1)) rotate(var(--tw-exit-rotate, 0));\n }\n}\n.duration-100 {\n animation-duration: 100ms;\n}\n.duration-150 {\n animation-duration: 150ms;\n}\n.duration-200 {\n animation-duration: 200ms;\n}\n.running {\n animation-play-state: running;\n}\n.wallavi-widget *,\n.wallavi-widget *::before,\n.wallavi-widget *::after {\n box-sizing: border-box;\n border-width: 0;\n border-style: solid;\n}\n.wallavi-widget button {\n cursor: pointer;\n}\n.wallavi-widget img,\n.wallavi-widget video {\n max-width: 100%;\n height: auto;\n}\n.placeholder\\:text-muted-foreground\\/40::-moz-placeholder {\n color: hsl(var(--muted-foreground) / 0.4);\n}\n.placeholder\\:text-muted-foreground\\/40::placeholder {\n color: hsl(var(--muted-foreground) / 0.4);\n}\n.placeholder\\:text-muted-foreground\\/50::-moz-placeholder {\n color: hsl(var(--muted-foreground) / 0.5);\n}\n.placeholder\\:text-muted-foreground\\/50::placeholder {\n color: hsl(var(--muted-foreground) / 0.5);\n}\n.focus-within\\:ring-1:focus-within {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow:\n var(--tw-ring-offset-shadow),\n var(--tw-ring-shadow),\n var(--tw-shadow, 0 0 #0000);\n}\n.focus-within\\:ring-ring\\/40:focus-within {\n --tw-ring-color: hsl(var(--ring) / 0.4);\n}\n.hover\\:border-foreground\\/25:hover {\n border-color: hsl(var(--foreground) / 0.25);\n}\n.hover\\:border-foreground\\/30:hover {\n border-color: hsl(var(--foreground) / 0.3);\n}\n.hover\\:bg-background:hover {\n background-color: hsl(var(--background));\n}\n.hover\\:bg-foreground\\/10:hover {\n background-color: hsl(var(--foreground) / 0.1);\n}\n.hover\\:bg-muted:hover {\n background-color: hsl(var(--muted));\n}\n.hover\\:bg-white\\/10:hover {\n background-color: rgb(255 255 255 / 0.1);\n}\n.hover\\:text-foreground:hover {\n color: hsl(var(--foreground));\n}\n.focus\\:ring-1:focus {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow:\n var(--tw-ring-offset-shadow),\n var(--tw-ring-shadow),\n var(--tw-shadow, 0 0 #0000);\n}\n.focus\\:ring-ring\\/40:focus {\n --tw-ring-color: hsl(var(--ring) / 0.4);\n}\n.disabled\\:opacity-40:disabled {\n opacity: 0.4;\n}\n.disabled\\:opacity-50:disabled {\n opacity: 0.5;\n}\n.dark\\:border-red-800:is(.dark *) {\n --tw-border-opacity: 1;\n border-color: rgb(153 27 27 / var(--tw-border-opacity, 1));\n}\n.dark\\:bg-red-950:is(.dark *) {\n --tw-bg-opacity: 1;\n background-color: rgb(69 10 10 / var(--tw-bg-opacity, 1));\n}\n.dark\\:text-red-400:is(.dark *) {\n --tw-text-opacity: 1;\n color: rgb(248 113 113 / var(--tw-text-opacity, 1));\n}\n");
|
|
33
|
+
styleInject(".ww-pointer-events-none {\n pointer-events: none;\n}\n.ww-absolute {\n position: absolute;\n}\n.ww-relative {\n position: relative;\n}\n.ww-inset-0 {\n inset: 0px;\n}\n.ww-left-2\\.5 {\n left: 0.625rem;\n}\n.ww-top-1\\/2 {\n top: 50%;\n}\n.ww-z-50 {\n z-index: 50;\n}\n.ww-mb-1 {\n margin-bottom: 0.25rem;\n}\n.ww-mb-2 {\n margin-bottom: 0.5rem;\n}\n.ww-ml-0\\.5 {\n margin-left: 0.125rem;\n}\n.ww-mt-0\\.5 {\n margin-top: 0.125rem;\n}\n.ww-mt-1 {\n margin-top: 0.25rem;\n}\n.ww-block {\n display: block;\n}\n.ww-inline-block {\n display: inline-block;\n}\n.ww-flex {\n display: flex;\n}\n.ww-inline-flex {\n display: inline-flex;\n}\n.ww-grid {\n display: grid;\n}\n.ww-hidden {\n display: none;\n}\n.ww-h-10 {\n height: 2.5rem;\n}\n.ww-h-2\\.5 {\n height: 0.625rem;\n}\n.ww-h-20 {\n height: 5rem;\n}\n.ww-h-3 {\n height: 0.75rem;\n}\n.ww-h-3\\.5 {\n height: 0.875rem;\n}\n.ww-h-4 {\n height: 1rem;\n}\n.ww-h-6 {\n height: 1.5rem;\n}\n.ww-h-7 {\n height: 1.75rem;\n}\n.ww-h-8 {\n height: 2rem;\n}\n.ww-h-full {\n height: 100%;\n}\n.ww-max-h-32 {\n max-height: 8rem;\n}\n.ww-max-h-48 {\n max-height: 12rem;\n}\n.ww-max-h-\\[168px\\] {\n max-height: 168px;\n}\n.ww-max-h-\\[180px\\] {\n max-height: 180px;\n}\n.ww-w-0\\.5 {\n width: 0.125rem;\n}\n.ww-w-10 {\n width: 2.5rem;\n}\n.ww-w-2\\.5 {\n width: 0.625rem;\n}\n.ww-w-20 {\n width: 5rem;\n}\n.ww-w-3 {\n width: 0.75rem;\n}\n.ww-w-3\\.5 {\n width: 0.875rem;\n}\n.ww-w-4 {\n width: 1rem;\n}\n.ww-w-6 {\n width: 1.5rem;\n}\n.ww-w-7 {\n width: 1.75rem;\n}\n.ww-w-8 {\n width: 2rem;\n}\n.ww-w-fit {\n width: -moz-fit-content;\n width: fit-content;\n}\n.ww-w-full {\n width: 100%;\n}\n.ww-min-w-0 {\n min-width: 0px;\n}\n.ww-max-w-\\[120px\\] {\n max-width: 120px;\n}\n.ww-max-w-\\[200px\\] {\n max-width: 200px;\n}\n.ww-max-w-\\[78\\%\\] {\n max-width: 78%;\n}\n.ww-max-w-\\[82\\%\\] {\n max-width: 82%;\n}\n.ww-max-w-none {\n max-width: none;\n}\n.ww-flex-1 {\n flex: 1 1 0%;\n}\n.ww-shrink-0 {\n flex-shrink: 0;\n}\n.ww-rotate-180 {\n --tw-rotate: 180deg;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n@keyframes ww-pulse {\n 50% {\n opacity: .5;\n }\n}\n.ww-animate-pulse {\n animation: ww-pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n}\n@keyframes ww-spin {\n to {\n transform: rotate(360deg);\n }\n}\n.ww-animate-spin {\n animation: ww-spin 1s linear infinite;\n}\n.ww-cursor-default {\n cursor: default;\n}\n.ww-cursor-pointer {\n cursor: pointer;\n}\n.ww-select-none {\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n}\n.ww-resize-none {\n resize: none;\n}\n.ww-grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n}\n.ww-flex-col {\n flex-direction: column;\n}\n.ww-flex-wrap {\n flex-wrap: wrap;\n}\n.ww-items-start {\n align-items: flex-start;\n}\n.ww-items-end {\n align-items: flex-end;\n}\n.ww-items-center {\n align-items: center;\n}\n.ww-justify-end {\n justify-content: flex-end;\n}\n.ww-justify-center {\n justify-content: center;\n}\n.ww-justify-between {\n justify-content: space-between;\n}\n.ww-gap-0\\.5 {\n gap: 0.125rem;\n}\n.ww-gap-1 {\n gap: 0.25rem;\n}\n.ww-gap-1\\.5 {\n gap: 0.375rem;\n}\n.ww-gap-2 {\n gap: 0.5rem;\n}\n.ww-gap-2\\.5 {\n gap: 0.625rem;\n}\n.ww-gap-4 {\n gap: 1rem;\n}\n.ww-divide-y > :not([hidden]) ~ :not([hidden]) {\n --tw-divide-y-reverse: 0;\n border-top-width: calc(1px * calc(1 - var(--tw-divide-y-reverse)));\n border-bottom-width: calc(1px * var(--tw-divide-y-reverse));\n}\n.ww-divide-border\\/40 > :not([hidden]) ~ :not([hidden]) {\n border-color: hsl(var(--border) / 0.4);\n}\n.ww-overflow-hidden {\n overflow: hidden;\n}\n.ww-overflow-y-auto {\n overflow-y: auto;\n}\n.ww-overscroll-contain {\n overscroll-behavior: contain;\n}\n.ww-truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.ww-whitespace-pre-wrap {\n white-space: pre-wrap;\n}\n.ww-rounded {\n border-radius: 0.25rem;\n}\n.ww-rounded-2xl {\n border-radius: 1rem;\n}\n.ww-rounded-full {\n border-radius: 9999px;\n}\n.ww-rounded-lg {\n border-radius: var(--radius);\n}\n.ww-rounded-xl {\n border-radius: 0.75rem;\n}\n.ww-rounded-tl-none {\n border-top-left-radius: 0px;\n}\n.ww-rounded-tl-sm {\n border-top-left-radius: calc(var(--radius) - 4px);\n}\n.ww-rounded-tr-sm {\n border-top-right-radius: calc(var(--radius) - 4px);\n}\n.ww-border {\n border-width: 1px;\n}\n.ww-border-2 {\n border-width: 2px;\n}\n.ww-border-b {\n border-bottom-width: 1px;\n}\n.ww-border-l-2 {\n border-left-width: 2px;\n}\n.ww-border-t {\n border-top-width: 1px;\n}\n.ww-border-background {\n border-color: hsl(var(--background));\n}\n.ww-border-black\\/10 {\n border-color: rgb(0 0 0 / 0.1);\n}\n.ww-border-border {\n border-color: hsl(var(--border));\n}\n.ww-border-border\\/30 {\n border-color: hsl(var(--border) / 0.3);\n}\n.ww-border-border\\/40 {\n border-color: hsl(var(--border) / 0.4);\n}\n.ww-border-border\\/50 {\n border-color: hsl(var(--border) / 0.5);\n}\n.ww-border-border\\/60 {\n border-color: hsl(var(--border) / 0.6);\n}\n.ww-border-border\\/70 {\n border-color: hsl(var(--border) / 0.7);\n}\n.ww-border-muted {\n border-color: hsl(var(--muted));\n}\n.ww-border-muted-foreground\\/30 {\n border-color: hsl(var(--muted-foreground) / 0.3);\n}\n.ww-border-red-200 {\n --tw-border-opacity: 1;\n border-color: rgb(254 202 202 / var(--tw-border-opacity, 1));\n}\n.ww-border-white\\/20 {\n border-color: rgb(255 255 255 / 0.2);\n}\n.ww-bg-background {\n background-color: hsl(var(--background));\n}\n.ww-bg-background\\/20 {\n background-color: hsl(var(--background) / 0.2);\n}\n.ww-bg-background\\/40 {\n background-color: hsl(var(--background) / 0.4);\n}\n.ww-bg-background\\/50 {\n background-color: hsl(var(--background) / 0.5);\n}\n.ww-bg-background\\/90 {\n background-color: hsl(var(--background) / 0.9);\n}\n.ww-bg-black\\/10 {\n background-color: rgb(0 0 0 / 0.1);\n}\n.ww-bg-foreground {\n background-color: hsl(var(--foreground));\n}\n.ww-bg-foreground\\/60 {\n background-color: hsl(var(--foreground) / 0.6);\n}\n.ww-bg-muted {\n background-color: hsl(var(--muted));\n}\n.ww-bg-muted-foreground\\/10 {\n background-color: hsl(var(--muted-foreground) / 0.1);\n}\n.ww-bg-muted\\/50 {\n background-color: hsl(var(--muted) / 0.5);\n}\n.ww-bg-muted\\/60 {\n background-color: hsl(var(--muted) / 0.6);\n}\n.ww-bg-primary {\n background-color: hsl(var(--primary));\n}\n.ww-bg-primary\\/5 {\n background-color: hsl(var(--primary) / 0.05);\n}\n.ww-bg-red-50 {\n --tw-bg-opacity: 1;\n background-color: rgb(254 242 242 / var(--tw-bg-opacity, 1));\n}\n.ww-bg-transparent {\n background-color: transparent;\n}\n.ww-bg-white\\/10 {\n background-color: rgb(255 255 255 / 0.1);\n}\n.ww-bg-white\\/15 {\n background-color: rgb(255 255 255 / 0.15);\n}\n.ww-fill-current {\n fill: currentColor;\n}\n.ww-object-cover {\n -o-object-fit: cover;\n object-fit: cover;\n}\n.ww-p-0\\.5 {\n padding: 0.125rem;\n}\n.ww-p-1\\.5 {\n padding: 0.375rem;\n}\n.ww-p-3 {\n padding: 0.75rem;\n}\n.ww-px-1 {\n padding-left: 0.25rem;\n padding-right: 0.25rem;\n}\n.ww-px-2 {\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n}\n.ww-px-2\\.5 {\n padding-left: 0.625rem;\n padding-right: 0.625rem;\n}\n.ww-px-3 {\n padding-left: 0.75rem;\n padding-right: 0.75rem;\n}\n.ww-px-3\\.5 {\n padding-left: 0.875rem;\n padding-right: 0.875rem;\n}\n.ww-px-4 {\n padding-left: 1rem;\n padding-right: 1rem;\n}\n.ww-py-0\\.5 {\n padding-top: 0.125rem;\n padding-bottom: 0.125rem;\n}\n.ww-py-1 {\n padding-top: 0.25rem;\n padding-bottom: 0.25rem;\n}\n.ww-py-1\\.5 {\n padding-top: 0.375rem;\n padding-bottom: 0.375rem;\n}\n.ww-py-2 {\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n}\n.ww-py-2\\.5 {\n padding-top: 0.625rem;\n padding-bottom: 0.625rem;\n}\n.ww-py-3 {\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n}\n.ww-py-4 {\n padding-top: 1rem;\n padding-bottom: 1rem;\n}\n.ww-pb-1\\.5 {\n padding-bottom: 0.375rem;\n}\n.ww-pb-4 {\n padding-bottom: 1rem;\n}\n.ww-pl-2 {\n padding-left: 0.5rem;\n}\n.ww-pl-7 {\n padding-left: 1.75rem;\n}\n.ww-pr-0\\.5 {\n padding-right: 0.125rem;\n}\n.ww-pr-3 {\n padding-right: 0.75rem;\n}\n.ww-pt-2 {\n padding-top: 0.5rem;\n}\n.ww-pt-5 {\n padding-top: 1.25rem;\n}\n.ww-text-left {\n text-align: left;\n}\n.ww-text-center {\n text-align: center;\n}\n.ww-align-middle {\n vertical-align: middle;\n}\n.ww-text-\\[10\\.5px\\] {\n font-size: 10.5px;\n}\n.ww-text-\\[10px\\] {\n font-size: 10px;\n}\n.ww-text-\\[11px\\] {\n font-size: 11px;\n}\n.ww-text-\\[12\\.5px\\] {\n font-size: 12.5px;\n}\n.ww-text-\\[12px\\] {\n font-size: 12px;\n}\n.ww-text-\\[8px\\] {\n font-size: 8px;\n}\n.ww-text-sm {\n font-size: 0.875rem;\n line-height: 1.25rem;\n}\n.ww-text-xs {\n font-size: 0.75rem;\n line-height: 1rem;\n}\n.ww-font-medium {\n font-weight: 500;\n}\n.ww-font-semibold {\n font-weight: 600;\n}\n.ww-uppercase {\n text-transform: uppercase;\n}\n.ww-leading-none {\n line-height: 1;\n}\n.ww-leading-relaxed {\n line-height: 1.625;\n}\n.ww-leading-snug {\n line-height: 1.375;\n}\n.ww-leading-tight {\n line-height: 1.25;\n}\n.ww-tracking-widest {\n letter-spacing: 0.1em;\n}\n.ww-text-background {\n color: hsl(var(--background));\n}\n.ww-text-black\\/40 {\n color: rgb(0 0 0 / 0.4);\n}\n.ww-text-black\\/60 {\n color: rgb(0 0 0 / 0.6);\n}\n.ww-text-destructive {\n color: hsl(var(--destructive));\n}\n.ww-text-destructive\\/70 {\n color: hsl(var(--destructive) / 0.7);\n}\n.ww-text-emerald-500 {\n --tw-text-opacity: 1;\n color: rgb(16 185 129 / var(--tw-text-opacity, 1));\n}\n.ww-text-foreground {\n color: hsl(var(--foreground));\n}\n.ww-text-foreground\\/60 {\n color: hsl(var(--foreground) / 0.6);\n}\n.ww-text-foreground\\/70 {\n color: hsl(var(--foreground) / 0.7);\n}\n.ww-text-foreground\\/80 {\n color: hsl(var(--foreground) / 0.8);\n}\n.ww-text-muted-foreground {\n color: hsl(var(--muted-foreground));\n}\n.ww-text-muted-foreground\\/40 {\n color: hsl(var(--muted-foreground) / 0.4);\n}\n.ww-text-muted-foreground\\/50 {\n color: hsl(var(--muted-foreground) / 0.5);\n}\n.ww-text-muted-foreground\\/70 {\n color: hsl(var(--muted-foreground) / 0.7);\n}\n.ww-text-muted-foreground\\/80 {\n color: hsl(var(--muted-foreground) / 0.8);\n}\n.ww-text-primary {\n color: hsl(var(--primary));\n}\n.ww-text-primary-foreground {\n color: hsl(var(--primary-foreground));\n}\n.ww-text-primary\\/70 {\n color: hsl(var(--primary) / 0.7);\n}\n.ww-text-primary\\/80 {\n color: hsl(var(--primary) / 0.8);\n}\n.ww-text-red-400 {\n --tw-text-opacity: 1;\n color: rgb(248 113 113 / var(--tw-text-opacity, 1));\n}\n.ww-text-red-500 {\n --tw-text-opacity: 1;\n color: rgb(239 68 68 / var(--tw-text-opacity, 1));\n}\n.ww-text-red-600 {\n --tw-text-opacity: 1;\n color: rgb(220 38 38 / var(--tw-text-opacity, 1));\n}\n.ww-text-white\\/60 {\n color: rgb(255 255 255 / 0.6);\n}\n.ww-text-white\\/80 {\n color: rgb(255 255 255 / 0.8);\n}\n.ww-line-through {\n text-decoration-line: line-through;\n}\n.ww-no-underline {\n text-decoration-line: none;\n}\n.ww-decoration-foreground\\/20 {\n text-decoration-color: hsl(var(--foreground) / 0.2);\n}\n.ww-opacity-100 {\n opacity: 1;\n}\n.ww-opacity-30 {\n opacity: 0.3;\n}\n.ww-opacity-35 {\n opacity: 0.35;\n}\n.ww-opacity-40 {\n opacity: 0.4;\n}\n.ww-opacity-60 {\n opacity: 0.6;\n}\n.ww-opacity-70 {\n opacity: 0.7;\n}\n.ww-opacity-80 {\n opacity: 0.8;\n}\n.ww-shadow-2xl {\n --tw-shadow: 0 25px 50px -12px rgb(0 0 0 / 0.25);\n --tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);\n box-shadow:\n var(--tw-ring-offset-shadow, 0 0 #0000),\n var(--tw-ring-shadow, 0 0 #0000),\n var(--tw-shadow);\n}\n.ww-shadow-sm {\n --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);\n --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);\n box-shadow:\n var(--tw-ring-offset-shadow, 0 0 #0000),\n var(--tw-ring-shadow, 0 0 #0000),\n var(--tw-shadow);\n}\n.ww-shadow-xl {\n --tw-shadow: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);\n --tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);\n box-shadow:\n var(--tw-ring-offset-shadow, 0 0 #0000),\n var(--tw-ring-shadow, 0 0 #0000),\n var(--tw-shadow);\n}\n.ww-outline-none {\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n.ww-ring-2 {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow:\n var(--tw-ring-offset-shadow),\n var(--tw-ring-shadow),\n var(--tw-shadow, 0 0 #0000);\n}\n.ww-ring-inset {\n --tw-ring-inset: inset;\n}\n.ww-ring-primary\\/60 {\n --tw-ring-color: hsl(var(--primary) / 0.6);\n}\n.ww-backdrop-blur-sm {\n --tw-backdrop-blur: blur(4px);\n backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n}\n.ww-transition-all {\n transition-property: all;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.ww-transition-colors {\n transition-property:\n color,\n background-color,\n border-color,\n text-decoration-color,\n fill,\n stroke;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.ww-transition-shadow {\n transition-property: box-shadow;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.ww-transition-transform {\n transition-property: transform;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.ww-duration-100 {\n transition-duration: 100ms;\n}\n.ww-duration-150 {\n transition-duration: 150ms;\n}\n.ww-duration-200 {\n transition-duration: 200ms;\n}\n@keyframes enter {\n from {\n opacity: var(--tw-enter-opacity, 1);\n transform: translate3d(var(--tw-enter-translate-x, 0), var(--tw-enter-translate-y, 0), 0) scale3d(var(--tw-enter-scale, 1), var(--tw-enter-scale, 1), var(--tw-enter-scale, 1)) rotate(var(--tw-enter-rotate, 0));\n }\n}\n@keyframes exit {\n to {\n opacity: var(--tw-exit-opacity, 1);\n transform: translate3d(var(--tw-exit-translate-x, 0), var(--tw-exit-translate-y, 0), 0) scale3d(var(--tw-exit-scale, 1), var(--tw-exit-scale, 1), var(--tw-exit-scale, 1)) rotate(var(--tw-exit-rotate, 0));\n }\n}\n.ww-duration-100 {\n animation-duration: 100ms;\n}\n.ww-duration-150 {\n animation-duration: 150ms;\n}\n.ww-duration-200 {\n animation-duration: 200ms;\n}\n.wallavi-widget *,\n.wallavi-widget *::before,\n.wallavi-widget *::after {\n box-sizing: border-box;\n border-width: 0;\n border-style: solid;\n}\n.wallavi-widget button {\n cursor: pointer;\n}\n.wallavi-widget img,\n.wallavi-widget video {\n max-width: 100%;\n height: auto;\n}\n.placeholder\\:ww-text-muted-foreground\\/40::-moz-placeholder {\n color: hsl(var(--muted-foreground) / 0.4);\n}\n.placeholder\\:ww-text-muted-foreground\\/40::placeholder {\n color: hsl(var(--muted-foreground) / 0.4);\n}\n.placeholder\\:ww-text-muted-foreground\\/50::-moz-placeholder {\n color: hsl(var(--muted-foreground) / 0.5);\n}\n.placeholder\\:ww-text-muted-foreground\\/50::placeholder {\n color: hsl(var(--muted-foreground) / 0.5);\n}\n.focus-within\\:ww-ring-1:focus-within {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow:\n var(--tw-ring-offset-shadow),\n var(--tw-ring-shadow),\n var(--tw-shadow, 0 0 #0000);\n}\n.focus-within\\:ww-ring-ring\\/40:focus-within {\n --tw-ring-color: hsl(var(--ring) / 0.4);\n}\n.hover\\:ww-border-foreground\\/25:hover {\n border-color: hsl(var(--foreground) / 0.25);\n}\n.hover\\:ww-border-foreground\\/30:hover {\n border-color: hsl(var(--foreground) / 0.3);\n}\n.hover\\:ww-bg-background:hover {\n background-color: hsl(var(--background));\n}\n.hover\\:ww-bg-foreground\\/10:hover {\n background-color: hsl(var(--foreground) / 0.1);\n}\n.hover\\:ww-bg-muted:hover {\n background-color: hsl(var(--muted));\n}\n.hover\\:ww-bg-white\\/10:hover {\n background-color: rgb(255 255 255 / 0.1);\n}\n.hover\\:ww-text-foreground:hover {\n color: hsl(var(--foreground));\n}\n.focus\\:ww-ring-1:focus {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow:\n var(--tw-ring-offset-shadow),\n var(--tw-ring-shadow),\n var(--tw-shadow, 0 0 #0000);\n}\n.focus\\:ww-ring-ring\\/40:focus {\n --tw-ring-color: hsl(var(--ring) / 0.4);\n}\n.disabled\\:ww-opacity-40:disabled {\n opacity: 0.4;\n}\n.disabled\\:ww-opacity-50:disabled {\n opacity: 0.5;\n}\n.dark\\:ww-border-red-800:is(.ww-dark *) {\n --tw-border-opacity: 1;\n border-color: rgb(153 27 27 / var(--tw-border-opacity, 1));\n}\n.dark\\:ww-bg-red-950:is(.ww-dark *) {\n --tw-bg-opacity: 1;\n background-color: rgb(69 10 10 / var(--tw-bg-opacity, 1));\n}\n.dark\\:ww-text-red-400:is(.ww-dark *) {\n --tw-text-opacity: 1;\n color: rgb(248 113 113 / var(--tw-text-opacity, 1));\n}\n");
|
|
34
|
+
var twMerge = extendTailwindMerge({ prefix: "ww-" });
|
|
34
35
|
var cn = (...inputs) => twMerge(clsx(inputs));
|
|
35
36
|
|
|
36
37
|
// src/types.ts
|
|
@@ -583,10 +584,10 @@ function ChatHeader({
|
|
|
583
584
|
return /* @__PURE__ */ jsxs(
|
|
584
585
|
"header",
|
|
585
586
|
{
|
|
586
|
-
className: "flex items-center justify-between px-4 py-3 shrink-0",
|
|
587
|
+
className: "ww-flex ww-items-center ww-justify-between ww-px-4 ww-py-3 ww-shrink-0",
|
|
587
588
|
style: { backgroundColor: headerBg, color: headerText, borderBottom: `1px solid ${headerText}18` },
|
|
588
589
|
children: [
|
|
589
|
-
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2.5 min-w-0", children: [
|
|
590
|
+
/* @__PURE__ */ jsxs("div", { className: "ww-flex ww-items-center ww-gap-2.5 ww-min-w-0", children: [
|
|
590
591
|
/* @__PURE__ */ jsx(Avatar, { style: { width: 32, height: 32, border: `2px solid ${headerText}30` }, children: profilePicture ? /* @__PURE__ */ jsx(AvatarImage, { src: profilePicture, alt: title }) : /* @__PURE__ */ jsx(
|
|
591
592
|
AvatarFallback,
|
|
592
593
|
{
|
|
@@ -594,17 +595,17 @@ function ChatHeader({
|
|
|
594
595
|
children: title.slice(0, 2).toUpperCase()
|
|
595
596
|
}
|
|
596
597
|
) }),
|
|
597
|
-
/* @__PURE__ */ jsxs("div", { className: "min-w-0", children: [
|
|
598
|
-
/* @__PURE__ */ jsx("p", { className: "font-semibold text-sm truncate leading-tight", children: title }),
|
|
599
|
-
/* @__PURE__ */ jsx("p", { className: "text-[10px] opacity-70 leading-tight", children: "AI Assistant" })
|
|
598
|
+
/* @__PURE__ */ jsxs("div", { className: "ww-min-w-0", children: [
|
|
599
|
+
/* @__PURE__ */ jsx("p", { className: "ww-font-semibold ww-text-sm ww-truncate ww-leading-tight", children: title }),
|
|
600
|
+
/* @__PURE__ */ jsx("p", { className: "ww-text-[10px] ww-opacity-70 ww-leading-tight", children: "AI Assistant" })
|
|
600
601
|
] })
|
|
601
602
|
] }),
|
|
602
|
-
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1", children: [
|
|
603
|
+
/* @__PURE__ */ jsxs("div", { className: "ww-flex ww-items-center ww-gap-1", children: [
|
|
603
604
|
onExpand && /* @__PURE__ */ jsx(
|
|
604
605
|
"button",
|
|
605
606
|
{
|
|
606
607
|
onClick: onExpand,
|
|
607
|
-
className: "rounded-full p-1.5 transition-colors hover:bg-white/10",
|
|
608
|
+
className: "ww-rounded-full ww-p-1.5 ww-transition-colors hover:ww-bg-white/10",
|
|
608
609
|
title: expanded ? "Minimize" : "Expand",
|
|
609
610
|
children: expanded ? /* @__PURE__ */ jsx(MinimizeIcon, {}) : /* @__PURE__ */ jsx(ExpandIcon, {})
|
|
610
611
|
}
|
|
@@ -613,18 +614,18 @@ function ChatHeader({
|
|
|
613
614
|
"button",
|
|
614
615
|
{
|
|
615
616
|
onClick: onReset,
|
|
616
|
-
className: "rounded-full p-1.5 transition-colors hover:bg-white/10",
|
|
617
|
+
className: "ww-rounded-full ww-p-1.5 ww-transition-colors hover:ww-bg-white/10",
|
|
617
618
|
title: "New conversation",
|
|
618
|
-
children: /* @__PURE__ */ jsx(RotateCcw, { className: "h-3.5 w-3.5", style: { color: headerText } })
|
|
619
|
+
children: /* @__PURE__ */ jsx(RotateCcw, { className: "ww-h-3.5 ww-w-3.5", style: { color: headerText } })
|
|
619
620
|
}
|
|
620
621
|
),
|
|
621
622
|
onClose && /* @__PURE__ */ jsx(
|
|
622
623
|
"button",
|
|
623
624
|
{
|
|
624
625
|
onClick: onClose,
|
|
625
|
-
className: "rounded-full p-1.5 transition-colors hover:bg-white/10",
|
|
626
|
+
className: "ww-rounded-full ww-p-1.5 ww-transition-colors hover:ww-bg-white/10",
|
|
626
627
|
title: "Close",
|
|
627
|
-
children: /* @__PURE__ */ jsx(X, { className: "h-3.5 w-3.5", style: { color: headerText } })
|
|
628
|
+
children: /* @__PURE__ */ jsx(X, { className: "ww-h-3.5 ww-w-3.5", style: { color: headerText } })
|
|
628
629
|
}
|
|
629
630
|
)
|
|
630
631
|
] })
|
|
@@ -632,15 +633,15 @@ function ChatHeader({
|
|
|
632
633
|
}
|
|
633
634
|
);
|
|
634
635
|
}
|
|
635
|
-
var cn2 = (...inputs) => twMerge(clsx(inputs));
|
|
636
|
+
var cn2 = (...inputs) => twMerge$1(clsx(inputs));
|
|
636
637
|
function formatBytes(bytes) {
|
|
637
638
|
if (bytes < 1024) return `${bytes} B`;
|
|
638
639
|
if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(0)} KB`;
|
|
639
640
|
return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
|
|
640
641
|
}
|
|
641
642
|
function ChipLeading({ a }) {
|
|
642
|
-
if (a.status === "uploading") return /* @__PURE__ */ jsx(Loader2, { className: "h-3 w-3 shrink-0 animate-spin" });
|
|
643
|
-
if (a.status === "error") return /* @__PURE__ */ jsx(AlertCircle, { className: "h-3 w-3 shrink-0" });
|
|
643
|
+
if (a.status === "uploading") return /* @__PURE__ */ jsx(Loader2, { className: "ww-h-3 ww-w-3 ww-shrink-0 ww-animate-spin" });
|
|
644
|
+
if (a.status === "error") return /* @__PURE__ */ jsx(AlertCircle, { className: "ww-h-3 ww-w-3 ww-shrink-0" });
|
|
644
645
|
const thumbSrc = a.payload?.url ?? a.payload?.base64;
|
|
645
646
|
if (a.mimeType.startsWith("image/") && thumbSrc) {
|
|
646
647
|
return /* @__PURE__ */ jsx(
|
|
@@ -648,38 +649,38 @@ function ChipLeading({ a }) {
|
|
|
648
649
|
{
|
|
649
650
|
src: thumbSrc,
|
|
650
651
|
alt: a.name,
|
|
651
|
-
className: "h-6 w-6 rounded object-cover shrink-0 border border-border/40"
|
|
652
|
+
className: "ww-h-6 ww-w-6 ww-rounded ww-object-cover ww-shrink-0 ww-border ww-border-border/40"
|
|
652
653
|
}
|
|
653
654
|
);
|
|
654
655
|
}
|
|
655
|
-
if (a.mimeType.startsWith("image/")) return /* @__PURE__ */ jsx("div", { className: "h-6 w-6 rounded bg-muted-foreground/10 border border-border/30 shrink-0 flex items-center justify-center", children: /* @__PURE__ */ jsx("span", { className: "text-[8px] font-semibold text-muted-foreground/50", children: "IMG" }) });
|
|
656
|
-
if (a.mimeType === "application/pdf") return /* @__PURE__ */ jsx(FileText, { className: "h-3 w-3 shrink-0 text-red-400" });
|
|
656
|
+
if (a.mimeType.startsWith("image/")) return /* @__PURE__ */ jsx("div", { className: "ww-h-6 ww-w-6 ww-rounded ww-bg-muted-foreground/10 ww-border ww-border-border/30 ww-shrink-0 ww-flex ww-items-center ww-justify-center", children: /* @__PURE__ */ jsx("span", { className: "ww-text-[8px] ww-font-semibold ww-text-muted-foreground/50", children: "IMG" }) });
|
|
657
|
+
if (a.mimeType === "application/pdf") return /* @__PURE__ */ jsx(FileText, { className: "ww-h-3 ww-w-3 ww-shrink-0 ww-text-red-400" });
|
|
657
658
|
if (a.mimeType.includes("csv") || a.mimeType.includes("spreadsheet") || a.name.endsWith(".csv")) {
|
|
658
|
-
return /* @__PURE__ */ jsx(FileSpreadsheet, { className: "h-3 w-3 shrink-0 text-emerald-500" });
|
|
659
|
+
return /* @__PURE__ */ jsx(FileSpreadsheet, { className: "ww-h-3 ww-w-3 ww-shrink-0 ww-text-emerald-500" });
|
|
659
660
|
}
|
|
660
|
-
return /* @__PURE__ */ jsx(FileText, { className: "h-3 w-3 shrink-0" });
|
|
661
|
+
return /* @__PURE__ */ jsx(FileText, { className: "ww-h-3 ww-w-3 ww-shrink-0" });
|
|
661
662
|
}
|
|
662
663
|
function AttachmentChips({ attachments, onRemove }) {
|
|
663
664
|
if (attachments.length === 0) return null;
|
|
664
|
-
return /* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-1.5 px-1 pb-1.5", children: attachments.map((a) => /* @__PURE__ */ jsxs(
|
|
665
|
+
return /* @__PURE__ */ jsx("div", { className: "ww-flex ww-flex-wrap ww-gap-1.5 ww-px-1 ww-pb-1.5", children: attachments.map((a) => /* @__PURE__ */ jsxs(
|
|
665
666
|
"div",
|
|
666
667
|
{
|
|
667
668
|
className: cn2(
|
|
668
|
-
"flex items-center gap-1.5 rounded-lg border px-2 py-1 text-[11px] max-w-[200px]",
|
|
669
|
-
a.status === "error" ? "border-red-200 bg-red-50 text-red-600 dark:border-red-800 dark:bg-red-950 dark:text-red-400" : "border-border bg-muted/60 text-muted-foreground"
|
|
669
|
+
"ww-flex ww-items-center ww-gap-1.5 ww-rounded-lg ww-border ww-px-2 ww-py-1 ww-text-[11px] ww-max-w-[200px]",
|
|
670
|
+
a.status === "error" ? "ww-border-red-200 ww-bg-red-50 ww-text-red-600 dark:ww-border-red-800 dark:ww-bg-red-950 dark:ww-text-red-400" : "ww-border-border ww-bg-muted/60 ww-text-muted-foreground"
|
|
670
671
|
),
|
|
671
672
|
children: [
|
|
672
673
|
/* @__PURE__ */ jsx(ChipLeading, { a }),
|
|
673
|
-
/* @__PURE__ */ jsx("span", { className: "truncate leading-tight", children: a.status === "error" ? a.errorMessage ?? "Upload failed" : a.name }),
|
|
674
|
-
a.status === "ready" && /* @__PURE__ */ jsx("span", { className: "shrink-0 text-muted-foreground/50", children: formatBytes(a.sizeBytes) }),
|
|
674
|
+
/* @__PURE__ */ jsx("span", { className: "ww-truncate ww-leading-tight", children: a.status === "error" ? a.errorMessage ?? "Upload failed" : a.name }),
|
|
675
|
+
a.status === "ready" && /* @__PURE__ */ jsx("span", { className: "ww-shrink-0 ww-text-muted-foreground/50", children: formatBytes(a.sizeBytes) }),
|
|
675
676
|
/* @__PURE__ */ jsx(
|
|
676
677
|
"button",
|
|
677
678
|
{
|
|
678
679
|
type: "button",
|
|
679
680
|
onClick: () => onRemove(a.id),
|
|
680
|
-
className: "shrink-0 rounded-full p-0.5 hover:bg-foreground/10 transition-colors ml-0.5",
|
|
681
|
+
className: "ww-shrink-0 ww-rounded-full ww-p-0.5 hover:ww-bg-foreground/10 ww-transition-colors ww-ml-0.5",
|
|
681
682
|
title: "Remove",
|
|
682
|
-
children: /* @__PURE__ */ jsx(X, { className: "h-2.5 w-2.5" })
|
|
683
|
+
children: /* @__PURE__ */ jsx(X, { className: "ww-h-2.5 ww-w-2.5" })
|
|
683
684
|
}
|
|
684
685
|
)
|
|
685
686
|
]
|
|
@@ -695,8 +696,8 @@ function SentAttachments({ attachments, contrastColor }) {
|
|
|
695
696
|
const images = attachments.filter((a) => a.contentType === "image");
|
|
696
697
|
const files = attachments.filter((a) => a.contentType !== "image");
|
|
697
698
|
const isDark = contrastColor === "#ffffff" || contrastColor === "#fff";
|
|
698
|
-
return /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1.5 w-full", children: [
|
|
699
|
-
images.length > 0 && /* @__PURE__ */ jsx("div", { className: cn("flex gap-1.5 flex-wrap", images.length === 1 && ""), children: images.map((img) => {
|
|
699
|
+
return /* @__PURE__ */ jsxs("div", { className: "ww-flex ww-flex-col ww-gap-1.5 ww-w-full", children: [
|
|
700
|
+
images.length > 0 && /* @__PURE__ */ jsx("div", { className: cn("ww-flex ww-gap-1.5 ww-flex-wrap", images.length === 1 && ""), children: images.map((img) => {
|
|
700
701
|
const src = img.url ?? img.base64;
|
|
701
702
|
return src ? /* @__PURE__ */ jsx(
|
|
702
703
|
"img",
|
|
@@ -704,9 +705,9 @@ function SentAttachments({ attachments, contrastColor }) {
|
|
|
704
705
|
src,
|
|
705
706
|
alt: img.name,
|
|
706
707
|
className: cn(
|
|
707
|
-
"rounded-xl object-cover border",
|
|
708
|
-
images.length === 1 ? "w-full max-h-48" : "h-20 w-20",
|
|
709
|
-
isDark ? "border-white/20" : "border-black/10"
|
|
708
|
+
"ww-rounded-xl ww-object-cover ww-border",
|
|
709
|
+
images.length === 1 ? "ww-w-full ww-max-h-48" : "ww-h-20 ww-w-20",
|
|
710
|
+
isDark ? "ww-border-white/20" : "ww-border-black/10"
|
|
710
711
|
)
|
|
711
712
|
},
|
|
712
713
|
img.id
|
|
@@ -714,24 +715,24 @@ function SentAttachments({ attachments, contrastColor }) {
|
|
|
714
715
|
"div",
|
|
715
716
|
{
|
|
716
717
|
className: cn(
|
|
717
|
-
"h-20 w-20 rounded-xl flex items-center justify-center text-[10px] font-medium",
|
|
718
|
-
isDark ? "bg-white/10 text-white/60" : "bg-black/10 text-black/40"
|
|
718
|
+
"ww-h-20 ww-w-20 ww-rounded-xl ww-flex ww-items-center ww-justify-center ww-text-[10px] ww-font-medium",
|
|
719
|
+
isDark ? "ww-bg-white/10 ww-text-white/60" : "ww-bg-black/10 ww-text-black/40"
|
|
719
720
|
),
|
|
720
721
|
children: "IMG"
|
|
721
722
|
},
|
|
722
723
|
img.id
|
|
723
724
|
);
|
|
724
725
|
}) }),
|
|
725
|
-
files.length > 0 && /* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-1", children: files.map((f) => /* @__PURE__ */ jsxs(
|
|
726
|
+
files.length > 0 && /* @__PURE__ */ jsx("div", { className: "ww-flex ww-flex-wrap ww-gap-1", children: files.map((f) => /* @__PURE__ */ jsxs(
|
|
726
727
|
"div",
|
|
727
728
|
{
|
|
728
729
|
className: cn(
|
|
729
|
-
"flex items-center gap-1 rounded-lg px-2 py-1 text-[11px]",
|
|
730
|
-
isDark ? "bg-white/15 text-white/80" : "bg-black/10 text-black/60"
|
|
730
|
+
"ww-flex ww-items-center ww-gap-1 ww-rounded-lg ww-px-2 ww-py-1 ww-text-[11px]",
|
|
731
|
+
isDark ? "ww-bg-white/15 ww-text-white/80" : "ww-bg-black/10 ww-text-black/60"
|
|
731
732
|
),
|
|
732
733
|
children: [
|
|
733
|
-
/* @__PURE__ */ jsx("span", { className: "truncate max-w-[120px]", children: f.name }),
|
|
734
|
-
/* @__PURE__ */ jsx("span", { className: "opacity-60 shrink-0", children: formatBytes(f.sizeBytes) })
|
|
734
|
+
/* @__PURE__ */ jsx("span", { className: "ww-truncate ww-max-w-[120px]", children: f.name }),
|
|
735
|
+
/* @__PURE__ */ jsx("span", { className: "ww-opacity-60 ww-shrink-0", children: formatBytes(f.sizeBytes) })
|
|
735
736
|
]
|
|
736
737
|
},
|
|
737
738
|
f.id
|
|
@@ -739,50 +740,50 @@ function SentAttachments({ attachments, contrastColor }) {
|
|
|
739
740
|
] });
|
|
740
741
|
}
|
|
741
742
|
function PlanStepIcon({ status }) {
|
|
742
|
-
if (status === "executing") return /* @__PURE__ */ jsx(Loader2, { className: "h-3 w-3 animate-spin text-primary" });
|
|
743
|
-
if (status === "success") return /* @__PURE__ */ jsx(CheckCircle2, { className: "h-3 w-3 text-emerald-500" });
|
|
744
|
-
if (status === "failed") return /* @__PURE__ */ jsx(AlertCircle, { className: "h-3 w-3 text-destructive" });
|
|
745
|
-
return /* @__PURE__ */ jsx("div", { className: "h-3 w-3 rounded-full border-2 border-muted-foreground/30" });
|
|
743
|
+
if (status === "executing") return /* @__PURE__ */ jsx(Loader2, { className: "ww-h-3 ww-w-3 ww-animate-spin ww-text-primary" });
|
|
744
|
+
if (status === "success") return /* @__PURE__ */ jsx(CheckCircle2, { className: "ww-h-3 ww-w-3 ww-text-emerald-500" });
|
|
745
|
+
if (status === "failed") return /* @__PURE__ */ jsx(AlertCircle, { className: "ww-h-3 ww-w-3 ww-text-destructive" });
|
|
746
|
+
return /* @__PURE__ */ jsx("div", { className: "ww-h-3 ww-w-3 ww-rounded-full ww-border-2 ww-border-muted-foreground/30" });
|
|
746
747
|
}
|
|
747
748
|
function PlanCard({ part }) {
|
|
748
749
|
const successCount = part.steps.filter((s) => s.status === "success").length;
|
|
749
750
|
const hasExecuting = part.steps.some((s) => s.status === "executing");
|
|
750
751
|
const allDone = successCount === part.steps.length && part.steps.length > 0;
|
|
751
752
|
const anyFailed = part.steps.some((s) => s.status === "failed");
|
|
752
|
-
return /* @__PURE__ */ jsxs("div", { className: "rounded-xl border bg-background overflow-hidden text-xs w-full shadow-sm", children: [
|
|
753
|
-
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 px-3 py-2 bg-muted/50 border-b", children: [
|
|
754
|
-
hasExecuting ? /* @__PURE__ */ jsx(Loader2, { className: "h-3.5 w-3.5 shrink-0 animate-spin text-primary/80" }) : allDone ? /* @__PURE__ */ jsx(CheckCircle2, { className: "h-3.5 w-3.5 shrink-0 text-emerald-500" }) : anyFailed ? /* @__PURE__ */ jsx(AlertCircle, { className: "h-3.5 w-3.5 shrink-0 text-destructive" }) : /* @__PURE__ */ jsx(Zap, { className: "h-3.5 w-3.5 shrink-0 text-primary/70" }),
|
|
755
|
-
/* @__PURE__ */ jsx("span", { className: "font-medium text-foreground/80 truncate flex-1 leading-snug", children: part.goal }),
|
|
756
|
-
part.steps.length > 0 && /* @__PURE__ */ jsxs("span", { className: "shrink-0 tabular-nums text-muted-foreground", children: [
|
|
753
|
+
return /* @__PURE__ */ jsxs("div", { className: "ww-rounded-xl ww-border ww-bg-background ww-overflow-hidden ww-text-xs ww-w-full ww-shadow-sm", children: [
|
|
754
|
+
/* @__PURE__ */ jsxs("div", { className: "ww-flex ww-items-center ww-gap-2 ww-px-3 ww-py-2 ww-bg-muted/50 ww-border-b", children: [
|
|
755
|
+
hasExecuting ? /* @__PURE__ */ jsx(Loader2, { className: "ww-h-3.5 ww-w-3.5 ww-shrink-0 ww-animate-spin ww-text-primary/80" }) : allDone ? /* @__PURE__ */ jsx(CheckCircle2, { className: "ww-h-3.5 ww-w-3.5 ww-shrink-0 ww-text-emerald-500" }) : anyFailed ? /* @__PURE__ */ jsx(AlertCircle, { className: "ww-h-3.5 ww-w-3.5 ww-shrink-0 ww-text-destructive" }) : /* @__PURE__ */ jsx(Zap, { className: "ww-h-3.5 ww-w-3.5 ww-shrink-0 ww-text-primary/70" }),
|
|
756
|
+
/* @__PURE__ */ jsx("span", { className: "ww-font-medium ww-text-foreground/80 ww-truncate ww-flex-1 ww-leading-snug", children: part.goal }),
|
|
757
|
+
part.steps.length > 0 && /* @__PURE__ */ jsxs("span", { className: "ww-shrink-0 tabular-nums ww-text-muted-foreground", children: [
|
|
757
758
|
successCount,
|
|
758
759
|
"/",
|
|
759
760
|
part.steps.length
|
|
760
761
|
] })
|
|
761
762
|
] }),
|
|
762
|
-
/* @__PURE__ */ jsx("div", { className: "divide-y divide-border/40", children: part.steps.map((step) => /* @__PURE__ */ jsxs(
|
|
763
|
+
/* @__PURE__ */ jsx("div", { className: "ww-divide-y ww-divide-border/40", children: part.steps.map((step) => /* @__PURE__ */ jsxs(
|
|
763
764
|
"div",
|
|
764
765
|
{
|
|
765
766
|
className: cn(
|
|
766
|
-
"flex items-start gap-2.5 px-3 py-2 transition-colors duration-200",
|
|
767
|
-
step.status === "executing" && "bg-primary/5"
|
|
767
|
+
"ww-flex ww-items-start ww-gap-2.5 ww-px-3 ww-py-2 ww-transition-colors ww-duration-200",
|
|
768
|
+
step.status === "executing" && "ww-bg-primary/5"
|
|
768
769
|
),
|
|
769
770
|
children: [
|
|
770
|
-
/* @__PURE__ */ jsx("div", { className: "mt-0.5 shrink-0", children: /* @__PURE__ */ jsx(PlanStepIcon, { status: step.status }) }),
|
|
771
|
+
/* @__PURE__ */ jsx("div", { className: "ww-mt-0.5 ww-shrink-0", children: /* @__PURE__ */ jsx(PlanStepIcon, { status: step.status }) }),
|
|
771
772
|
/* @__PURE__ */ jsxs(
|
|
772
773
|
"span",
|
|
773
774
|
{
|
|
774
775
|
className: cn(
|
|
775
|
-
"leading-relaxed",
|
|
776
|
-
step.status === "pending" && "text-muted-foreground",
|
|
777
|
-
step.status === "executing" && "text-foreground font-medium",
|
|
778
|
-
step.status === "success" && "text-foreground/60 line-through decoration-foreground/20",
|
|
779
|
-
step.status === "failed" && "text-destructive"
|
|
776
|
+
"ww-leading-relaxed",
|
|
777
|
+
step.status === "pending" && "ww-text-muted-foreground",
|
|
778
|
+
step.status === "executing" && "ww-text-foreground ww-font-medium",
|
|
779
|
+
step.status === "success" && "ww-text-foreground/60 ww-line-through ww-decoration-foreground/20",
|
|
780
|
+
step.status === "failed" && "ww-text-destructive"
|
|
780
781
|
),
|
|
781
782
|
children: [
|
|
782
783
|
step.index + 1,
|
|
783
784
|
". ",
|
|
784
785
|
step.description,
|
|
785
|
-
step.error && /* @__PURE__ */ jsx("span", { className: "block text-destructive/70 text-[10px] mt-0.5 no-underline", children: step.error })
|
|
786
|
+
step.error && /* @__PURE__ */ jsx("span", { className: "ww-block ww-text-destructive/70 ww-text-[10px] ww-mt-0.5 ww-no-underline", children: step.error })
|
|
786
787
|
]
|
|
787
788
|
}
|
|
788
789
|
)
|
|
@@ -803,7 +804,7 @@ function ThinkingDots() {
|
|
|
803
804
|
/* @__PURE__ */ jsx(
|
|
804
805
|
"div",
|
|
805
806
|
{
|
|
806
|
-
className: "bg-muted",
|
|
807
|
+
className: "ww-bg-muted",
|
|
807
808
|
style: {
|
|
808
809
|
display: "inline-flex",
|
|
809
810
|
alignItems: "center",
|
|
@@ -830,33 +831,33 @@ function ThinkingDots() {
|
|
|
830
831
|
] });
|
|
831
832
|
}
|
|
832
833
|
function ToolCallBadge({ part }) {
|
|
833
|
-
return /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1.5 text-xs text-muted-foreground bg-muted/60 border rounded-full px-3 py-1 w-fit", children: [
|
|
834
|
-
part.status === "running" && /* @__PURE__ */ jsx(Loader2, { className: "h-3 w-3 animate-spin" }),
|
|
835
|
-
part.status === "done" && /* @__PURE__ */ jsx(CheckCircle2, { className: "h-3 w-3 text-emerald-500" }),
|
|
836
|
-
part.status === "error" && /* @__PURE__ */ jsx(AlertCircle, { className: "h-3 w-3 text-destructive" }),
|
|
834
|
+
return /* @__PURE__ */ jsxs("div", { className: "ww-flex ww-items-center ww-gap-1.5 ww-text-xs ww-text-muted-foreground ww-bg-muted/60 ww-border ww-rounded-full ww-px-3 ww-py-1 ww-w-fit", children: [
|
|
835
|
+
part.status === "running" && /* @__PURE__ */ jsx(Loader2, { className: "ww-h-3 ww-w-3 ww-animate-spin" }),
|
|
836
|
+
part.status === "done" && /* @__PURE__ */ jsx(CheckCircle2, { className: "ww-h-3 ww-w-3 ww-text-emerald-500" }),
|
|
837
|
+
part.status === "error" && /* @__PURE__ */ jsx(AlertCircle, { className: "ww-h-3 ww-w-3 ww-text-destructive" }),
|
|
837
838
|
/* @__PURE__ */ jsxs("span", { children: [
|
|
838
839
|
part.status === "running" ? "Calling" : part.status === "done" ? "Called" : "Failed",
|
|
839
840
|
" ",
|
|
840
|
-
/* @__PURE__ */ jsx("span", { className: "font-medium text-foreground", children: formatToolName(part.toolName) })
|
|
841
|
+
/* @__PURE__ */ jsx("span", { className: "ww-font-medium ww-text-foreground", children: formatToolName(part.toolName) })
|
|
841
842
|
] })
|
|
842
843
|
] });
|
|
843
844
|
}
|
|
844
845
|
function ReasoningBlock({ text }) {
|
|
845
846
|
const [open, setOpen] = useState(false);
|
|
846
|
-
return /* @__PURE__ */ jsxs("div", { className: "mb-1", children: [
|
|
847
|
+
return /* @__PURE__ */ jsxs("div", { className: "ww-mb-1", children: [
|
|
847
848
|
/* @__PURE__ */ jsxs(
|
|
848
849
|
"button",
|
|
849
850
|
{
|
|
850
851
|
onClick: () => setOpen((v) => !v),
|
|
851
|
-
className: "flex items-center gap-1 text-xs text-muted-foreground hover:text-foreground transition-colors",
|
|
852
|
+
className: "ww-flex ww-items-center ww-gap-1 ww-text-xs ww-text-muted-foreground hover:ww-text-foreground ww-transition-colors",
|
|
852
853
|
children: [
|
|
853
|
-
/* @__PURE__ */ jsx(Zap, { className: "h-3 w-3" }),
|
|
854
|
+
/* @__PURE__ */ jsx(Zap, { className: "ww-h-3 ww-w-3" }),
|
|
854
855
|
/* @__PURE__ */ jsx("span", { children: "Reasoning" }),
|
|
855
|
-
/* @__PURE__ */ jsx(ChevronDown, { className: cn("h-3 w-3 transition-transform", open && "rotate-180") })
|
|
856
|
+
/* @__PURE__ */ jsx(ChevronDown, { className: cn("ww-h-3 ww-w-3 ww-transition-transform", open && "ww-rotate-180") })
|
|
856
857
|
]
|
|
857
858
|
}
|
|
858
859
|
),
|
|
859
|
-
open && /* @__PURE__ */ jsx("p", { className: "mt-1 text-xs text-muted-foreground/80 whitespace-pre-wrap border-l-2 border-muted pl-2 leading-relaxed", children: text })
|
|
860
|
+
open && /* @__PURE__ */ jsx("p", { className: "ww-mt-1 ww-text-xs ww-text-muted-foreground/80 ww-whitespace-pre-wrap ww-border-l-2 ww-border-muted ww-pl-2 ww-leading-relaxed", children: text })
|
|
860
861
|
] });
|
|
861
862
|
}
|
|
862
863
|
function PickerSelector({
|
|
@@ -877,12 +878,12 @@ function PickerSelector({
|
|
|
877
878
|
if (!disabled && !isConsumed) onSelect(part.pickerId, part.paramName, opt.value, opt.label);
|
|
878
879
|
};
|
|
879
880
|
return /* @__PURE__ */ jsxs("div", { className: cn(
|
|
880
|
-
"flex flex-col gap-2.5 rounded-xl rounded-tl-none border bg-muted/60 p-3",
|
|
881
|
-
"border-border/50"
|
|
881
|
+
"ww-flex ww-flex-col ww-gap-2.5 ww-rounded-xl ww-rounded-tl-none ww-border ww-bg-muted/60 ww-p-3",
|
|
882
|
+
"ww-border-border/50"
|
|
882
883
|
), children: [
|
|
883
|
-
/* @__PURE__ */ jsx("p", { className: "text-[10.5px] font-semibold uppercase tracking-widest text-muted-foreground/70 leading-none", children: part.label }),
|
|
884
|
-
mode === "list" && /* @__PURE__ */ jsxs("div", { className: "relative", children: [
|
|
885
|
-
/* @__PURE__ */ jsx(Search, { className: "absolute left-2.5 top-1/2 -translate-y-1/2 h-3 w-3 text-muted-foreground/50 pointer-events-none" }),
|
|
884
|
+
/* @__PURE__ */ jsx("p", { className: "ww-text-[10.5px] ww-font-semibold ww-uppercase ww-tracking-widest ww-text-muted-foreground/70 ww-leading-none", children: part.label }),
|
|
885
|
+
mode === "list" && /* @__PURE__ */ jsxs("div", { className: "ww-relative", children: [
|
|
886
|
+
/* @__PURE__ */ jsx(Search, { className: "ww-absolute ww-left-2.5 ww-top-1/2 -translate-y-1/2 ww-h-3 ww-w-3 ww-text-muted-foreground/50 ww-pointer-events-none" }),
|
|
886
887
|
/* @__PURE__ */ jsx(
|
|
887
888
|
"input",
|
|
888
889
|
{
|
|
@@ -891,11 +892,11 @@ function PickerSelector({
|
|
|
891
892
|
onChange: (e) => setQuery(e.target.value),
|
|
892
893
|
placeholder: "Search\u2026",
|
|
893
894
|
disabled: disabled || isConsumed,
|
|
894
|
-
className: "w-full rounded-lg border bg-background pl-7 pr-3 py-1.5 text-xs outline-none focus:ring-1 focus:ring-ring/40 placeholder:text-muted-foreground/40 disabled:opacity-50"
|
|
895
|
+
className: "ww-w-full ww-rounded-lg ww-border ww-bg-background ww-pl-7 ww-pr-3 ww-py-1.5 ww-text-xs ww-outline-none focus:ww-ring-1 focus:ww-ring-ring/40 placeholder:ww-text-muted-foreground/40 disabled:ww-opacity-50"
|
|
895
896
|
}
|
|
896
897
|
)
|
|
897
898
|
] }),
|
|
898
|
-
mode === "pills" && /* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-1.5", children: part.options.map((opt) => {
|
|
899
|
+
mode === "pills" && /* @__PURE__ */ jsx("div", { className: "ww-flex ww-flex-wrap ww-gap-1.5", children: part.options.map((opt) => {
|
|
899
900
|
const sel = part.selectedValue === opt.value;
|
|
900
901
|
const faded = isConsumed && !sel;
|
|
901
902
|
return /* @__PURE__ */ jsxs(
|
|
@@ -904,19 +905,19 @@ function PickerSelector({
|
|
|
904
905
|
disabled: disabled || isConsumed,
|
|
905
906
|
onClick: () => handleClick(opt),
|
|
906
907
|
className: cn(
|
|
907
|
-
"inline-flex items-center gap-1 rounded-full px-3.5 py-1.5 text-[12.5px] font-medium transition-all duration-150 select-none",
|
|
908
|
-
sel ? "bg-foreground text-background shadow-sm" : faded ? "bg-background/50 text-muted-foreground opacity-35 cursor-default" : "bg-background border border-border/70 text-foreground hover:border-foreground/30 hover:bg-background cursor-pointer",
|
|
909
|
-
disabled && !isConsumed && "opacity-60 pointer-events-none"
|
|
908
|
+
"ww-inline-flex ww-items-center ww-gap-1 ww-rounded-full ww-px-3.5 ww-py-1.5 ww-text-[12.5px] ww-font-medium ww-transition-all ww-duration-150 ww-select-none",
|
|
909
|
+
sel ? "ww-bg-foreground ww-text-background ww-shadow-sm" : faded ? "ww-bg-background/50 ww-text-muted-foreground ww-opacity-35 ww-cursor-default" : "ww-bg-background ww-border ww-border-border/70 ww-text-foreground hover:ww-border-foreground/30 hover:ww-bg-background ww-cursor-pointer",
|
|
910
|
+
disabled && !isConsumed && "ww-opacity-60 ww-pointer-events-none"
|
|
910
911
|
),
|
|
911
912
|
children: [
|
|
912
|
-
sel && /* @__PURE__ */ jsx(Check, { className: "h-3 w-3 shrink-0" }),
|
|
913
|
+
sel && /* @__PURE__ */ jsx(Check, { className: "ww-h-3 ww-w-3 ww-shrink-0" }),
|
|
913
914
|
opt.label
|
|
914
915
|
]
|
|
915
916
|
},
|
|
916
917
|
opt.value
|
|
917
918
|
);
|
|
918
919
|
}) }),
|
|
919
|
-
mode === "grid" && /* @__PURE__ */ jsx("div", { className: "grid grid-cols-2 gap-1.5 max-h-[168px] overflow-y-auto pr-0.5 scrollbar-thin", children: part.options.map((opt) => {
|
|
920
|
+
mode === "grid" && /* @__PURE__ */ jsx("div", { className: "ww-grid ww-grid-cols-2 ww-gap-1.5 ww-max-h-[168px] ww-overflow-y-auto ww-pr-0.5 scrollbar-thin", children: part.options.map((opt) => {
|
|
920
921
|
const sel = part.selectedValue === opt.value;
|
|
921
922
|
const faded = isConsumed && !sel;
|
|
922
923
|
return /* @__PURE__ */ jsxs(
|
|
@@ -925,20 +926,20 @@ function PickerSelector({
|
|
|
925
926
|
disabled: disabled || isConsumed,
|
|
926
927
|
onClick: () => handleClick(opt),
|
|
927
928
|
className: cn(
|
|
928
|
-
"flex items-center gap-1.5 rounded-lg px-2.5 py-1.5 text-[12px] font-medium text-left transition-all duration-150 select-none truncate",
|
|
929
|
-
sel ? "bg-foreground text-background" : faded ? "bg-background/40 text-muted-foreground opacity-35 cursor-default" : "bg-background border border-border/60 text-foreground hover:border-foreground/25 cursor-pointer",
|
|
930
|
-
disabled && !isConsumed && "opacity-60 pointer-events-none"
|
|
929
|
+
"ww-flex ww-items-center ww-gap-1.5 ww-rounded-lg ww-px-2.5 ww-py-1.5 ww-text-[12px] ww-font-medium ww-text-left ww-transition-all ww-duration-150 ww-select-none ww-truncate",
|
|
930
|
+
sel ? "ww-bg-foreground ww-text-background" : faded ? "ww-bg-background/40 ww-text-muted-foreground ww-opacity-35 ww-cursor-default" : "ww-bg-background ww-border ww-border-border/60 ww-text-foreground hover:ww-border-foreground/25 ww-cursor-pointer",
|
|
931
|
+
disabled && !isConsumed && "ww-opacity-60 ww-pointer-events-none"
|
|
931
932
|
),
|
|
932
933
|
children: [
|
|
933
|
-
sel ? /* @__PURE__ */ jsx(Check, { className: "h-3 w-3 shrink-0" }) : /* @__PURE__ */ jsx("span", { className: "h-3 w-3 shrink-0" }),
|
|
934
|
-
/* @__PURE__ */ jsx("span", { className: "truncate", children: opt.label })
|
|
934
|
+
sel ? /* @__PURE__ */ jsx(Check, { className: "ww-h-3 ww-w-3 ww-shrink-0" }) : /* @__PURE__ */ jsx("span", { className: "ww-h-3 ww-w-3 ww-shrink-0" }),
|
|
935
|
+
/* @__PURE__ */ jsx("span", { className: "ww-truncate", children: opt.label })
|
|
935
936
|
]
|
|
936
937
|
},
|
|
937
938
|
opt.value
|
|
938
939
|
);
|
|
939
940
|
}) }),
|
|
940
|
-
mode === "list" && /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-0.5 max-h-[180px] overflow-y-auto pr-0.5", children: [
|
|
941
|
-
filtered.length === 0 && /* @__PURE__ */ jsx("p", { className: "py-3 text-center text-xs text-muted-foreground/50", children: "No results" }),
|
|
941
|
+
mode === "list" && /* @__PURE__ */ jsxs("div", { className: "ww-flex ww-flex-col ww-gap-0.5 ww-max-h-[180px] ww-overflow-y-auto ww-pr-0.5", children: [
|
|
942
|
+
filtered.length === 0 && /* @__PURE__ */ jsx("p", { className: "ww-py-3 ww-text-center ww-text-xs ww-text-muted-foreground/50", children: "No results" }),
|
|
942
943
|
filtered.map((opt) => {
|
|
943
944
|
const sel = part.selectedValue === opt.value;
|
|
944
945
|
const faded = isConsumed && !sel;
|
|
@@ -948,16 +949,16 @@ function PickerSelector({
|
|
|
948
949
|
disabled: disabled || isConsumed,
|
|
949
950
|
onClick: () => handleClick(opt),
|
|
950
951
|
className: cn(
|
|
951
|
-
"flex items-center gap-2 rounded-lg px-2.5 py-2 text-[12.5px] text-left transition-all duration-100 select-none",
|
|
952
|
-
sel ? "bg-foreground text-background font-medium" : faded ? "opacity-30 cursor-default" : "hover:bg-background text-foreground cursor-pointer",
|
|
953
|
-
disabled && !isConsumed && "opacity-60 pointer-events-none"
|
|
952
|
+
"ww-flex ww-items-center ww-gap-2 ww-rounded-lg ww-px-2.5 ww-py-2 ww-text-[12.5px] ww-text-left ww-transition-all ww-duration-100 ww-select-none",
|
|
953
|
+
sel ? "ww-bg-foreground ww-text-background ww-font-medium" : faded ? "ww-opacity-30 ww-cursor-default" : "hover:ww-bg-background ww-text-foreground ww-cursor-pointer",
|
|
954
|
+
disabled && !isConsumed && "ww-opacity-60 ww-pointer-events-none"
|
|
954
955
|
),
|
|
955
956
|
children: [
|
|
956
957
|
/* @__PURE__ */ jsx("span", { className: cn(
|
|
957
|
-
"flex h-4 w-4 shrink-0 items-center justify-center rounded-full border text-[10px]",
|
|
958
|
-
sel ? "border-background bg-background/20" : "border-border/50"
|
|
959
|
-
), children: sel && /* @__PURE__ */ jsx(Check, { className: "h-2.5 w-2.5" }) }),
|
|
960
|
-
/* @__PURE__ */ jsx("span", { className: "truncate", children: opt.label })
|
|
958
|
+
"ww-flex ww-h-4 ww-w-4 ww-shrink-0 ww-items-center ww-justify-center ww-rounded-full ww-border ww-text-[10px]",
|
|
959
|
+
sel ? "ww-border-background ww-bg-background/20" : "ww-border-border/50"
|
|
960
|
+
), children: sel && /* @__PURE__ */ jsx(Check, { className: "ww-h-2.5 ww-w-2.5" }) }),
|
|
961
|
+
/* @__PURE__ */ jsx("span", { className: "ww-truncate", children: opt.label })
|
|
961
962
|
]
|
|
962
963
|
},
|
|
963
964
|
opt.value
|
|
@@ -983,10 +984,10 @@ function MessageBubble({
|
|
|
983
984
|
const planParts = message.parts.filter((p) => p.type === "plan");
|
|
984
985
|
const contrastColor = getContrastColor(userColor);
|
|
985
986
|
if (isUser) {
|
|
986
|
-
return /* @__PURE__ */ jsx("div", { className: "flex justify-end", children: /* @__PURE__ */ jsxs(
|
|
987
|
+
return /* @__PURE__ */ jsx("div", { className: "ww-flex ww-justify-end", children: /* @__PURE__ */ jsxs(
|
|
987
988
|
"div",
|
|
988
989
|
{
|
|
989
|
-
className: "max-w-[78%] rounded-2xl rounded-tr-sm px-4 py-2.5 text-sm leading-relaxed flex flex-col gap-2",
|
|
990
|
+
className: "ww-max-w-[78%] ww-rounded-2xl ww-rounded-tr-sm ww-px-4 ww-py-2.5 ww-text-sm ww-leading-relaxed ww-flex ww-flex-col ww-gap-2",
|
|
990
991
|
style: { backgroundColor: userColor, color: contrastColor },
|
|
991
992
|
children: [
|
|
992
993
|
message.attachments && message.attachments.length > 0 && /* @__PURE__ */ jsx(SentAttachments, { attachments: message.attachments, contrastColor }),
|
|
@@ -997,9 +998,9 @@ function MessageBubble({
|
|
|
997
998
|
}
|
|
998
999
|
const visibleToolParts = showThinking ? toolParts : [];
|
|
999
1000
|
const isEmpty = !textPart?.text && visibleToolParts.length === 0 && pickerParts.length === 0;
|
|
1000
|
-
return /* @__PURE__ */ jsxs("div", { className: "flex gap-2.5 items-start", children: [
|
|
1001
|
+
return /* @__PURE__ */ jsxs("div", { className: "ww-flex ww-gap-2.5 ww-items-start", children: [
|
|
1001
1002
|
/* @__PURE__ */ jsx(Avatar2, { style: { width: 28, height: 28, marginTop: 2, border: "1px solid rgba(0,0,0,0.08)" }, children: profilePicture ? /* @__PURE__ */ jsx(AvatarImage2, { src: profilePicture, alt: agentName }) : /* @__PURE__ */ jsx(AvatarFallback2, { style: { fontSize: 10, fontWeight: 600, backgroundColor: "var(--primary, #19191c)", color: "var(--primary-foreground, #fff)" }, children: agentName.slice(0, 2).toUpperCase() }) }),
|
|
1002
|
-
/* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1.5 min-w-0 max-w-[82%]", children: [
|
|
1003
|
+
/* @__PURE__ */ jsxs("div", { className: "ww-flex ww-flex-col ww-gap-1.5 ww-min-w-0 ww-max-w-[82%]", children: [
|
|
1003
1004
|
showThinking && reasoningPart && /* @__PURE__ */ jsx(ReasoningBlock, { text: reasoningPart.text }),
|
|
1004
1005
|
planParts.map((p) => /* @__PURE__ */ jsx(PlanCard, { part: p }, p.planId)),
|
|
1005
1006
|
visibleToolParts.map((t) => /* @__PURE__ */ jsx(ToolCallBadge, { part: t }, t.toolCallId)),
|
|
@@ -1013,7 +1014,7 @@ function MessageBubble({
|
|
|
1013
1014
|
},
|
|
1014
1015
|
p.pickerId
|
|
1015
1016
|
)),
|
|
1016
|
-
isEmpty && isStreaming ? /* @__PURE__ */ jsx(ThinkingDots, {}) : textPart?.text ? /* @__PURE__ */ jsxs("div", { className: "rounded-2xl rounded-tl-sm bg-muted px-4 py-2.5 text-sm leading-relaxed overflow-hidden prose prose-sm max-w-none prose-p:my-1 prose-headings:font-semibold prose-headings:my-1.5 prose-ul:my-1 prose-li:my-0.5 prose-strong:font-semibold", children: [
|
|
1017
|
+
isEmpty && isStreaming ? /* @__PURE__ */ jsx(ThinkingDots, {}) : textPart?.text ? /* @__PURE__ */ jsxs("div", { className: "ww-rounded-2xl ww-rounded-tl-sm ww-bg-muted ww-px-4 ww-py-2.5 ww-text-sm ww-leading-relaxed ww-overflow-hidden ww-prose ww-prose-sm ww-max-w-none prose-p:ww-my-1 prose-headings:ww-font-semibold prose-headings:ww-my-1.5 prose-ul:ww-my-1 prose-li:ww-my-0.5 prose-strong:ww-font-semibold", children: [
|
|
1017
1018
|
/* @__PURE__ */ jsx(
|
|
1018
1019
|
ReactMarkdown,
|
|
1019
1020
|
{
|
|
@@ -1040,14 +1041,14 @@ function MessageBubble({
|
|
|
1040
1041
|
children: textPart.text
|
|
1041
1042
|
}
|
|
1042
1043
|
),
|
|
1043
|
-
isStreaming && /* @__PURE__ */ jsx("span", { className: "inline-block w-0.5 h-3.5 bg-foreground/60 ml-0.5 animate-pulse align-middle" })
|
|
1044
|
+
isStreaming && /* @__PURE__ */ jsx("span", { className: "ww-inline-block ww-w-0.5 ww-h-3.5 ww-bg-foreground/60 ww-ml-0.5 ww-animate-pulse ww-align-middle" })
|
|
1044
1045
|
] }) : null
|
|
1045
1046
|
] })
|
|
1046
1047
|
] });
|
|
1047
1048
|
}
|
|
1048
|
-
var Avatar3 = ({ className, ...p }) => /* @__PURE__ */ jsx(AvatarPrimitive.Root, { className: ["relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full", className].filter(Boolean).join(" "), ...p });
|
|
1049
|
+
var Avatar3 = ({ className, ...p }) => /* @__PURE__ */ jsx(AvatarPrimitive.Root, { className: ["ww-relative ww-flex ww-h-10 ww-w-10 ww-shrink-0 ww-overflow-hidden ww-rounded-full", className].filter(Boolean).join(" "), ...p });
|
|
1049
1050
|
var AvatarImage3 = AvatarPrimitive.Image;
|
|
1050
|
-
var AvatarFallback3 = ({ className, ...p }) => /* @__PURE__ */ jsx(AvatarPrimitive.Fallback, { className: ["flex h-full w-full items-center justify-center rounded-full bg-muted", className].filter(Boolean).join(" "), ...p });
|
|
1051
|
+
var AvatarFallback3 = ({ className, ...p }) => /* @__PURE__ */ jsx(AvatarPrimitive.Fallback, { className: ["ww-flex ww-h-full ww-w-full ww-items-center ww-justify-center ww-rounded-full ww-bg-muted", className].filter(Boolean).join(" "), ...p });
|
|
1051
1052
|
function ChatMessages({
|
|
1052
1053
|
messages,
|
|
1053
1054
|
streaming,
|
|
@@ -1065,13 +1066,13 @@ function ChatMessages({
|
|
|
1065
1066
|
useEffect(() => {
|
|
1066
1067
|
bottomRef.current?.scrollIntoView({ behavior: "smooth" });
|
|
1067
1068
|
}, [messages]);
|
|
1068
|
-
return /* @__PURE__ */ jsxs("div", { className: "flex-1 flex flex-col overflow-y-auto overscroll-contain", children: [
|
|
1069
|
-
showGreeting && /* @__PURE__ */ jsxs("div", { className: "flex gap-2.5 items-start px-4 pt-5", children: [
|
|
1070
|
-
/* @__PURE__ */ jsx(Avatar3, { className: "h-7 w-7 shrink-0 mt-0.5 border", children: profilePicture ? /* @__PURE__ */ jsx(AvatarImage3, { src: profilePicture, alt: agentName }) : /* @__PURE__ */ jsx(AvatarFallback3, { className: "text-[10px] font-semibold bg-primary text-primary-foreground", children: agentName.slice(0, 2).toUpperCase() }) }),
|
|
1071
|
-
/* @__PURE__ */ jsx("div", { className: "rounded-2xl rounded-tl-sm bg-muted px-4 py-2.5 text-sm leading-relaxed max-w-[82%]", children: initialMessages[0] ?? "Hello! How can I help you today?" })
|
|
1069
|
+
return /* @__PURE__ */ jsxs("div", { className: "ww-flex-1 ww-flex ww-flex-col ww-overflow-y-auto ww-overscroll-contain", children: [
|
|
1070
|
+
showGreeting && /* @__PURE__ */ jsxs("div", { className: "ww-flex ww-gap-2.5 ww-items-start ww-px-4 ww-pt-5", children: [
|
|
1071
|
+
/* @__PURE__ */ jsx(Avatar3, { className: "ww-h-7 ww-w-7 ww-shrink-0 ww-mt-0.5 ww-border", children: profilePicture ? /* @__PURE__ */ jsx(AvatarImage3, { src: profilePicture, alt: agentName }) : /* @__PURE__ */ jsx(AvatarFallback3, { className: "ww-text-[10px] ww-font-semibold ww-bg-primary ww-text-primary-foreground", children: agentName.slice(0, 2).toUpperCase() }) }),
|
|
1072
|
+
/* @__PURE__ */ jsx("div", { className: "ww-rounded-2xl ww-rounded-tl-sm ww-bg-muted ww-px-4 ww-py-2.5 ww-text-sm ww-leading-relaxed ww-max-w-[82%]", children: initialMessages[0] ?? "Hello! How can I help you today?" })
|
|
1072
1073
|
] }),
|
|
1073
|
-
showGreeting && /* @__PURE__ */ jsx("div", { className: "flex-1" }),
|
|
1074
|
-
/* @__PURE__ */ jsx("div", { className: "flex flex-col gap-4 px-4 py-4", children: messages.map((msg, i) => /* @__PURE__ */ jsx(
|
|
1074
|
+
showGreeting && /* @__PURE__ */ jsx("div", { className: "ww-flex-1" }),
|
|
1075
|
+
/* @__PURE__ */ jsx("div", { className: "ww-flex ww-flex-col ww-gap-4 ww-px-4 ww-py-4", children: messages.map((msg, i) => /* @__PURE__ */ jsx(
|
|
1075
1076
|
MessageBubble,
|
|
1076
1077
|
{
|
|
1077
1078
|
message: msg,
|
|
@@ -1084,12 +1085,12 @@ function ChatMessages({
|
|
|
1084
1085
|
},
|
|
1085
1086
|
msg.id
|
|
1086
1087
|
)) }),
|
|
1087
|
-
showGreeting && suggestedMessages.length > 0 && /* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-2 px-4 pb-4", children: suggestedMessages.map((msg, i) => /* @__PURE__ */ jsx(
|
|
1088
|
+
showGreeting && suggestedMessages.length > 0 && /* @__PURE__ */ jsx("div", { className: "ww-flex ww-flex-wrap ww-gap-2 ww-px-4 ww-pb-4", children: suggestedMessages.map((msg, i) => /* @__PURE__ */ jsx(
|
|
1088
1089
|
"button",
|
|
1089
1090
|
{
|
|
1090
1091
|
onClick: () => onSuggest(msg),
|
|
1091
1092
|
disabled: streaming,
|
|
1092
|
-
className: "text-xs border rounded-full px-3 py-1.5 hover:bg-muted transition-colors text-left disabled:opacity-50",
|
|
1093
|
+
className: "ww-text-xs ww-border ww-rounded-full ww-px-3 ww-py-1.5 hover:ww-bg-muted ww-transition-colors ww-text-left disabled:ww-opacity-50",
|
|
1093
1094
|
children: msg
|
|
1094
1095
|
},
|
|
1095
1096
|
i
|
|
@@ -1097,7 +1098,7 @@ function ChatMessages({
|
|
|
1097
1098
|
/* @__PURE__ */ jsx("div", { ref: bottomRef })
|
|
1098
1099
|
] });
|
|
1099
1100
|
}
|
|
1100
|
-
var cn3 = (...inputs) => twMerge(clsx(inputs));
|
|
1101
|
+
var cn3 = (...inputs) => twMerge$1(clsx(inputs));
|
|
1101
1102
|
function ChatInput({
|
|
1102
1103
|
input,
|
|
1103
1104
|
setInput,
|
|
@@ -1136,21 +1137,21 @@ function ChatInput({
|
|
|
1136
1137
|
}
|
|
1137
1138
|
};
|
|
1138
1139
|
const hasText = input.trim().length > 0;
|
|
1139
|
-
return /* @__PURE__ */ jsxs("div", { className: "shrink-0 border-t bg-background px-3 py-2.5", children: [
|
|
1140
|
+
return /* @__PURE__ */ jsxs("div", { className: "ww-shrink-0 ww-border-t ww-bg-background ww-px-3 ww-py-2.5", children: [
|
|
1140
1141
|
canRegenerate && onRegenerate && /* @__PURE__ */ jsxs(
|
|
1141
1142
|
"button",
|
|
1142
1143
|
{
|
|
1143
1144
|
onClick: onRegenerate,
|
|
1144
1145
|
disabled: streaming,
|
|
1145
|
-
className: "flex items-center gap-1 text-[11px] text-muted-foreground hover:text-foreground transition-colors mb-2 disabled:opacity-40",
|
|
1146
|
+
className: "ww-flex ww-items-center ww-gap-1 ww-text-[11px] ww-text-muted-foreground hover:ww-text-foreground ww-transition-colors ww-mb-2 disabled:ww-opacity-40",
|
|
1146
1147
|
children: [
|
|
1147
|
-
/* @__PURE__ */ jsx(RotateCcw, { className: "h-3 w-3" }),
|
|
1148
|
+
/* @__PURE__ */ jsx(RotateCcw, { className: "ww-h-3 ww-w-3" }),
|
|
1148
1149
|
"Regenerate response"
|
|
1149
1150
|
]
|
|
1150
1151
|
}
|
|
1151
1152
|
),
|
|
1152
|
-
/* @__PURE__ */ jsxs("div", { className: "flex flex-col rounded-2xl border bg-background shadow-sm focus-within:ring-1 focus-within:ring-ring/40 transition-shadow", children: [
|
|
1153
|
-
hasAttachments && attachments && attachments.length > 0 && /* @__PURE__ */ jsx("div", { className: "px-2 pt-2", children: /* @__PURE__ */ jsx(AttachmentChips, { attachments, onRemove: (id) => onRemoveAttachment?.(id) }) }),
|
|
1153
|
+
/* @__PURE__ */ jsxs("div", { className: "ww-flex ww-flex-col ww-rounded-2xl ww-border ww-bg-background ww-shadow-sm focus-within:ww-ring-1 focus-within:ww-ring-ring/40 ww-transition-shadow", children: [
|
|
1154
|
+
hasAttachments && attachments && attachments.length > 0 && /* @__PURE__ */ jsx("div", { className: "ww-px-2 ww-pt-2", children: /* @__PURE__ */ jsx(AttachmentChips, { attachments, onRemove: (id) => onRemoveAttachment?.(id) }) }),
|
|
1154
1155
|
hasAttachments && /* @__PURE__ */ jsx(
|
|
1155
1156
|
"input",
|
|
1156
1157
|
{
|
|
@@ -1158,7 +1159,7 @@ function ChatInput({
|
|
|
1158
1159
|
type: "file",
|
|
1159
1160
|
multiple: true,
|
|
1160
1161
|
accept: ".csv,.txt,.tsv,.pdf,text/plain,text/csv,application/pdf,image/jpeg,image/png,image/webp,image/gif",
|
|
1161
|
-
className: "hidden",
|
|
1162
|
+
className: "ww-hidden",
|
|
1162
1163
|
onChange: (e) => {
|
|
1163
1164
|
if (e.target.files?.length) {
|
|
1164
1165
|
onAttach(e.target.files);
|
|
@@ -1167,14 +1168,14 @@ function ChatInput({
|
|
|
1167
1168
|
}
|
|
1168
1169
|
}
|
|
1169
1170
|
),
|
|
1170
|
-
/* @__PURE__ */ jsxs("div", { className: "flex items-end gap-2 px-3 py-2", children: [
|
|
1171
|
+
/* @__PURE__ */ jsxs("div", { className: "ww-flex ww-items-end ww-gap-2 ww-px-3 ww-py-2", children: [
|
|
1171
1172
|
/* @__PURE__ */ jsx(
|
|
1172
1173
|
"textarea",
|
|
1173
1174
|
{
|
|
1174
1175
|
id: "wallavi-chat-input",
|
|
1175
1176
|
ref: textareaRef,
|
|
1176
1177
|
rows: 1,
|
|
1177
|
-
className: "flex-1 resize-none bg-transparent text-sm outline-none placeholder:text-muted-foreground/50 leading-relaxed max-h-32 overflow-y-auto py-0.5",
|
|
1178
|
+
className: "ww-flex-1 ww-resize-none ww-bg-transparent ww-text-sm ww-outline-none placeholder:ww-text-muted-foreground/50 ww-leading-relaxed ww-max-h-32 ww-overflow-y-auto ww-py-0.5",
|
|
1178
1179
|
placeholder: placeholder ?? "Send a message\u2026",
|
|
1179
1180
|
value: input,
|
|
1180
1181
|
onChange: (e) => {
|
|
@@ -1207,13 +1208,13 @@ function ChatInput({
|
|
|
1207
1208
|
disabled: streaming || voiceState === "transcribing",
|
|
1208
1209
|
title: voiceState === "recording" ? "Stop recording" : "Record voice message",
|
|
1209
1210
|
className: cn3(
|
|
1210
|
-
"h-7 w-7 shrink-0 rounded-xl flex items-center justify-center transition-all duration-200",
|
|
1211
|
-
voiceState === "recording" && "animate-pulse",
|
|
1212
|
-
voiceState === "error" ? "text-red-500 opacity-80" : "text-muted-foreground hover:text-foreground",
|
|
1213
|
-
(streaming || voiceState === "transcribing") && "opacity-40 pointer-events-none"
|
|
1211
|
+
"ww-h-7 ww-w-7 ww-shrink-0 ww-rounded-xl ww-flex ww-items-center ww-justify-center ww-transition-all ww-duration-200",
|
|
1212
|
+
voiceState === "recording" && "ww-animate-pulse",
|
|
1213
|
+
voiceState === "error" ? "ww-text-red-500 ww-opacity-80" : "ww-text-muted-foreground hover:ww-text-foreground",
|
|
1214
|
+
(streaming || voiceState === "transcribing") && "ww-opacity-40 ww-pointer-events-none"
|
|
1214
1215
|
),
|
|
1215
1216
|
style: voiceState === "recording" ? { color: accentColor } : void 0,
|
|
1216
|
-
children: voiceState === "transcribing" ? /* @__PURE__ */ jsx(Loader2, { className: "h-3.5 w-3.5 animate-spin" }) : voiceState === "recording" ? /* @__PURE__ */ jsx(Square, { className: "h-3.5 w-3.5 fill-current" }) : /* @__PURE__ */ jsx(Mic, { className: "h-3.5 w-3.5" })
|
|
1217
|
+
children: voiceState === "transcribing" ? /* @__PURE__ */ jsx(Loader2, { className: "ww-h-3.5 ww-w-3.5 ww-animate-spin" }) : voiceState === "recording" ? /* @__PURE__ */ jsx(Square, { className: "ww-h-3.5 ww-w-3.5 ww-fill-current" }) : /* @__PURE__ */ jsx(Mic, { className: "ww-h-3.5 ww-w-3.5" })
|
|
1217
1218
|
}
|
|
1218
1219
|
),
|
|
1219
1220
|
hasAttachments && /* @__PURE__ */ jsx(
|
|
@@ -1224,11 +1225,11 @@ function ChatInput({
|
|
|
1224
1225
|
disabled: streaming || isUploading,
|
|
1225
1226
|
title: "Attach file (CSV, image\u2026)",
|
|
1226
1227
|
className: cn3(
|
|
1227
|
-
"h-7 w-7 shrink-0 rounded-xl flex items-center justify-center transition-all duration-200",
|
|
1228
|
-
"text-muted-foreground hover:text-foreground",
|
|
1229
|
-
(streaming || isUploading) && "opacity-40 pointer-events-none"
|
|
1228
|
+
"ww-h-7 ww-w-7 ww-shrink-0 ww-rounded-xl ww-flex ww-items-center ww-justify-center ww-transition-all ww-duration-200",
|
|
1229
|
+
"ww-text-muted-foreground hover:ww-text-foreground",
|
|
1230
|
+
(streaming || isUploading) && "ww-opacity-40 ww-pointer-events-none"
|
|
1230
1231
|
),
|
|
1231
|
-
children: isUploading ? /* @__PURE__ */ jsx(Loader2, { className: "h-3.5 w-3.5 animate-spin" }) : /* @__PURE__ */ jsx(Paperclip, { className: "h-3.5 w-3.5" })
|
|
1232
|
+
children: isUploading ? /* @__PURE__ */ jsx(Loader2, { className: "ww-h-3.5 ww-w-3.5 ww-animate-spin" }) : /* @__PURE__ */ jsx(Paperclip, { className: "ww-h-3.5 ww-w-3.5" })
|
|
1232
1233
|
}
|
|
1233
1234
|
),
|
|
1234
1235
|
/* @__PURE__ */ jsx(
|
|
@@ -1237,11 +1238,11 @@ function ChatInput({
|
|
|
1237
1238
|
onClick: onSend,
|
|
1238
1239
|
disabled: streaming || !hasText || voiceState === "recording" || voiceState === "transcribing",
|
|
1239
1240
|
className: cn3(
|
|
1240
|
-
"h-7 w-7 shrink-0 rounded-xl flex items-center justify-center transition-all duration-200",
|
|
1241
|
-
hasText || streaming ? "opacity-100 shadow-sm" : "opacity-30"
|
|
1241
|
+
"ww-h-7 ww-w-7 ww-shrink-0 ww-rounded-xl ww-flex ww-items-center ww-justify-center ww-transition-all ww-duration-200",
|
|
1242
|
+
hasText || streaming ? "ww-opacity-100 ww-shadow-sm" : "ww-opacity-30"
|
|
1242
1243
|
),
|
|
1243
1244
|
style: hasText || streaming ? { backgroundColor: accentColor, color: getContrastColor(accentColor) } : { backgroundColor: "transparent", color: "currentColor" },
|
|
1244
|
-
children: streaming ? /* @__PURE__ */ jsx(Loader2, { className: "h-3.5 w-3.5 animate-spin" }) : /* @__PURE__ */ jsx(ArrowUp, { className: "h-3.5 w-3.5" })
|
|
1245
|
+
children: streaming ? /* @__PURE__ */ jsx(Loader2, { className: "ww-h-3.5 ww-w-3.5 ww-animate-spin" }) : /* @__PURE__ */ jsx(ArrowUp, { className: "ww-h-3.5 ww-w-3.5" })
|
|
1245
1246
|
}
|
|
1246
1247
|
)
|
|
1247
1248
|
] })
|
|
@@ -1259,7 +1260,7 @@ function ChatWidget({
|
|
|
1259
1260
|
suggestedMessages = [],
|
|
1260
1261
|
messagePlaceholder,
|
|
1261
1262
|
watermark = true,
|
|
1262
|
-
watermarkLogoUrl = "https
|
|
1263
|
+
watermarkLogoUrl = "https:ww-//app.wallavi.com/wallavi.svg",
|
|
1263
1264
|
footer,
|
|
1264
1265
|
theme,
|
|
1265
1266
|
showThinking = false,
|
|
@@ -1354,8 +1355,8 @@ function ChatWidget({
|
|
|
1354
1355
|
"div",
|
|
1355
1356
|
{
|
|
1356
1357
|
className: cn(
|
|
1357
|
-
"wallavi-widget flex flex-col overflow-hidden rounded-2xl border shadow-xl bg-background h-full relative",
|
|
1358
|
-
isDragOver && "ring-2 ring-inset ring-primary/60",
|
|
1358
|
+
"wallavi-widget ww-flex ww-flex-col ww-overflow-hidden ww-rounded-2xl ww-border ww-shadow-xl ww-bg-background ww-h-full ww-relative",
|
|
1359
|
+
isDragOver && "ww-ring-2 ww-ring-inset ww-ring-primary/60",
|
|
1359
1360
|
className
|
|
1360
1361
|
),
|
|
1361
1362
|
style: cssVars,
|
|
@@ -1364,10 +1365,10 @@ function ChatWidget({
|
|
|
1364
1365
|
onDragLeave: handleDragLeave,
|
|
1365
1366
|
onDrop: handleDrop,
|
|
1366
1367
|
children: [
|
|
1367
|
-
isDragOver && enableAttachments && /* @__PURE__ */ jsxs("div", { className: "absolute inset-0 z-50 flex flex-col items-center justify-center gap-2 rounded-2xl bg-background/90 backdrop-blur-sm pointer-events-none", children: [
|
|
1368
|
-
/* @__PURE__ */ jsx(UploadCloud, { className: "h-8 w-8 text-primary/70" }),
|
|
1369
|
-
/* @__PURE__ */ jsx("span", { className: "text-sm font-medium text-foreground/70", children: "Drop files to attach" }),
|
|
1370
|
-
/* @__PURE__ */ jsx("span", { className: "text-xs text-muted-foreground", children: "CSV, TXT, PDF, JPG, PNG, WebP" })
|
|
1368
|
+
isDragOver && enableAttachments && /* @__PURE__ */ jsxs("div", { className: "ww-absolute ww-inset-0 ww-z-50 ww-flex ww-flex-col ww-items-center ww-justify-center ww-gap-2 ww-rounded-2xl ww-bg-background/90 ww-backdrop-blur-sm ww-pointer-events-none", children: [
|
|
1369
|
+
/* @__PURE__ */ jsx(UploadCloud, { className: "ww-h-8 ww-w-8 ww-text-primary/70" }),
|
|
1370
|
+
/* @__PURE__ */ jsx("span", { className: "ww-text-sm ww-font-medium ww-text-foreground/70", children: "Drop files to attach" }),
|
|
1371
|
+
/* @__PURE__ */ jsx("span", { className: "ww-text-xs ww-text-muted-foreground", children: "CSV, TXT, PDF, JPG, PNG, WebP" })
|
|
1371
1372
|
] }),
|
|
1372
1373
|
/* @__PURE__ */ jsx(
|
|
1373
1374
|
ChatHeader,
|
|
@@ -1421,14 +1422,14 @@ function ChatWidget({
|
|
|
1421
1422
|
} : {}
|
|
1422
1423
|
}
|
|
1423
1424
|
),
|
|
1424
|
-
watermark && /* @__PURE__ */ jsxs("footer", { className: "shrink-0 flex items-center justify-center gap-1.5 bg-muted/50 py-1.5 border-t", children: [
|
|
1425
|
+
watermark && /* @__PURE__ */ jsxs("footer", { className: "ww-shrink-0 ww-flex ww-items-center ww-justify-center ww-gap-1.5 ww-bg-muted/50 ww-py-1.5 ww-border-t", children: [
|
|
1425
1426
|
/* @__PURE__ */ jsxs(
|
|
1426
1427
|
"a",
|
|
1427
1428
|
{
|
|
1428
|
-
href: "https
|
|
1429
|
+
href: "https:ww-//wallavi.com",
|
|
1429
1430
|
target: "_blank",
|
|
1430
1431
|
rel: "noopener noreferrer",
|
|
1431
|
-
className: "flex items-center gap-1 text-[10px] text-muted-foreground hover:text-foreground transition-colors",
|
|
1432
|
+
className: "ww-flex ww-items-center ww-gap-1 ww-text-[10px] ww-text-muted-foreground hover:ww-text-foreground ww-transition-colors",
|
|
1432
1433
|
children: [
|
|
1433
1434
|
/* @__PURE__ */ jsx("img", { src: watermarkLogoUrl, alt: "Wallavi", width: 12, height: 12 }),
|
|
1434
1435
|
/* @__PURE__ */ jsx("span", { children: "Powered by Wallavi" })
|
|
@@ -1436,8 +1437,8 @@ function ChatWidget({
|
|
|
1436
1437
|
}
|
|
1437
1438
|
),
|
|
1438
1439
|
footer && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
1439
|
-
/* @__PURE__ */ jsx("span", { className: "text-muted-foreground/40 text-[10px]", children: "\xB7" }),
|
|
1440
|
-
/* @__PURE__ */ jsx("span", { className: "text-[10px] text-muted-foreground", children: footer })
|
|
1440
|
+
/* @__PURE__ */ jsx("span", { className: "ww-text-muted-foreground/40 ww-text-[10px]", children: "\xB7" }),
|
|
1441
|
+
/* @__PURE__ */ jsx("span", { className: "ww-text-[10px] ww-text-muted-foreground", children: footer })
|
|
1441
1442
|
] })
|
|
1442
1443
|
] })
|
|
1443
1444
|
]
|
|
@@ -1644,7 +1645,7 @@ function BubbleWidget({
|
|
|
1644
1645
|
onClose: handleClose,
|
|
1645
1646
|
onExpand: toggleExpanded,
|
|
1646
1647
|
expanded,
|
|
1647
|
-
className: cn("shadow-2xl h-full", panelClassName)
|
|
1648
|
+
className: cn("ww-shadow-2xl ww-h-full", panelClassName)
|
|
1648
1649
|
}
|
|
1649
1650
|
)
|
|
1650
1651
|
}
|