@usecrow/ui 0.1.17 → 0.1.19

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 CHANGED
@@ -2332,6 +2332,176 @@ var PromptInputBox = React3.forwardRef(
2332
2332
  }
2333
2333
  );
2334
2334
  PromptInputBox.displayName = "PromptInputBox";
2335
+ function BrowserUseConfirmation({
2336
+ instruction,
2337
+ onAllow,
2338
+ onDeny
2339
+ }) {
2340
+ const styles = useWidgetStyles2();
2341
+ return /* @__PURE__ */ jsx(
2342
+ "div",
2343
+ {
2344
+ className: "crow-flex crow-flex-col crow-items-start crow-w-full crow-max-w-[90%]",
2345
+ children: /* @__PURE__ */ jsxs(
2346
+ "div",
2347
+ {
2348
+ className: "crow-rounded-2xl crow-px-4 crow-py-3 crow-w-full crow-border",
2349
+ style: {
2350
+ background: styles.colors.botBubble,
2351
+ borderColor: styles.colors.primary
2352
+ },
2353
+ children: [
2354
+ /* @__PURE__ */ jsxs("div", { className: "crow-flex crow-items-center crow-gap-2 crow-mb-2", children: [
2355
+ /* @__PURE__ */ jsx("span", { className: "crow-text-lg", children: "\u{1F5B1}\uFE0F" }),
2356
+ /* @__PURE__ */ jsx(
2357
+ "span",
2358
+ {
2359
+ className: "crow-font-medium crow-text-sm",
2360
+ style: { color: styles.colors.primary },
2361
+ children: "Browser Agent"
2362
+ }
2363
+ )
2364
+ ] }),
2365
+ /* @__PURE__ */ jsx(
2366
+ "p",
2367
+ {
2368
+ className: "crow-text-sm crow-font-medium crow-mb-2",
2369
+ style: { color: styles.colors.botText },
2370
+ children: "Wants to automate your browser:"
2371
+ }
2372
+ ),
2373
+ /* @__PURE__ */ jsxs(
2374
+ "p",
2375
+ {
2376
+ className: "crow-text-sm crow-mb-4 crow-bg-black/5 crow-rounded crow-p-2 crow-italic",
2377
+ style: { color: styles.colors.botText },
2378
+ children: [
2379
+ '"',
2380
+ instruction,
2381
+ '"'
2382
+ ]
2383
+ }
2384
+ ),
2385
+ /* @__PURE__ */ jsxs("div", { className: "crow-flex crow-gap-2 crow-justify-end", children: [
2386
+ /* @__PURE__ */ jsx(
2387
+ "button",
2388
+ {
2389
+ onClick: onDeny,
2390
+ className: "crow-px-4 crow-py-1.5 crow-rounded-lg crow-text-sm crow-font-medium crow-transition-colors hover:crow-opacity-80",
2391
+ style: {
2392
+ background: "transparent",
2393
+ color: styles.colors.botText,
2394
+ border: `1px solid ${styles.colors.border}`
2395
+ },
2396
+ children: "Deny"
2397
+ }
2398
+ ),
2399
+ /* @__PURE__ */ jsx(
2400
+ "button",
2401
+ {
2402
+ onClick: onAllow,
2403
+ className: "crow-px-4 crow-py-1.5 crow-rounded-lg crow-text-sm crow-font-medium crow-transition-colors hover:crow-opacity-90",
2404
+ style: {
2405
+ background: styles.colors.primary,
2406
+ color: "#fff"
2407
+ },
2408
+ children: "Allow"
2409
+ }
2410
+ )
2411
+ ] })
2412
+ ]
2413
+ }
2414
+ )
2415
+ }
2416
+ );
2417
+ }
2418
+ function BrowserUseQuestion({
2419
+ question,
2420
+ onSubmit
2421
+ }) {
2422
+ const styles = useWidgetStyles2();
2423
+ const [answer, setAnswer] = useState("");
2424
+ const [isSubmitting, setIsSubmitting] = useState(false);
2425
+ const handleSubmit = useCallback(() => {
2426
+ if (answer.trim() && !isSubmitting) {
2427
+ setIsSubmitting(true);
2428
+ onSubmit(answer.trim());
2429
+ }
2430
+ }, [answer, isSubmitting, onSubmit]);
2431
+ const handleKeyDown = useCallback(
2432
+ (e) => {
2433
+ if (e.key === "Enter" && !e.shiftKey) {
2434
+ e.preventDefault();
2435
+ handleSubmit();
2436
+ }
2437
+ },
2438
+ [handleSubmit]
2439
+ );
2440
+ return /* @__PURE__ */ jsx("div", { className: "crow-flex crow-flex-col crow-items-start crow-w-full crow-max-w-[90%]", children: /* @__PURE__ */ jsxs(
2441
+ "div",
2442
+ {
2443
+ className: "crow-rounded-2xl crow-px-4 crow-py-3 crow-w-full crow-border",
2444
+ style: {
2445
+ background: styles.colors.botBubble,
2446
+ borderColor: styles.colors.primary
2447
+ },
2448
+ children: [
2449
+ /* @__PURE__ */ jsxs("div", { className: "crow-flex crow-items-center crow-gap-2 crow-mb-2", children: [
2450
+ /* @__PURE__ */ jsx("span", { className: "crow-text-lg", children: "\u{1F916}" }),
2451
+ /* @__PURE__ */ jsx(
2452
+ "span",
2453
+ {
2454
+ className: "crow-font-medium crow-text-sm",
2455
+ style: { color: styles.colors.primary },
2456
+ children: "Browser Agent asks:"
2457
+ }
2458
+ )
2459
+ ] }),
2460
+ /* @__PURE__ */ jsx(
2461
+ "p",
2462
+ {
2463
+ className: "crow-text-sm crow-mb-3",
2464
+ style: { color: styles.colors.botText },
2465
+ children: question
2466
+ }
2467
+ ),
2468
+ /* @__PURE__ */ jsxs("div", { className: "crow-flex crow-gap-2", children: [
2469
+ /* @__PURE__ */ jsx(
2470
+ "input",
2471
+ {
2472
+ type: "text",
2473
+ value: answer,
2474
+ onChange: (e) => setAnswer(e.target.value),
2475
+ onKeyDown: handleKeyDown,
2476
+ placeholder: "Type your response...",
2477
+ disabled: isSubmitting,
2478
+ className: "crow-flex-1 crow-px-3 crow-py-2 crow-rounded-lg crow-text-sm crow-border crow-outline-none focus:crow-ring-2 disabled:crow-opacity-50",
2479
+ style: {
2480
+ background: styles.colors.background,
2481
+ color: styles.colors.text,
2482
+ borderColor: styles.colors.border
2483
+ },
2484
+ autoFocus: true
2485
+ }
2486
+ ),
2487
+ /* @__PURE__ */ jsx(
2488
+ "button",
2489
+ {
2490
+ onClick: handleSubmit,
2491
+ disabled: !answer.trim() || isSubmitting,
2492
+ className: "crow-px-4 crow-py-2 crow-rounded-lg crow-text-sm crow-font-medium crow-transition-colors hover:crow-opacity-90 disabled:crow-opacity-50 disabled:crow-cursor-not-allowed",
2493
+ style: {
2494
+ background: styles.colors.primary,
2495
+ color: "#fff"
2496
+ },
2497
+ children: isSubmitting ? "Sending..." : "Send"
2498
+ }
2499
+ )
2500
+ ] })
2501
+ ]
2502
+ }
2503
+ ) });
2504
+ }
2335
2505
 
2336
2506
  // src/styles/cssVars.ts
2337
2507
  var CSS_VAR_NAMES = {
@@ -2435,7 +2605,7 @@ function getCssVar(varName, element = document.documentElement) {
2435
2605
  var STYLE_ID = "crow-ui-styles";
2436
2606
  var WIDGET_CSS = `*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }
2437
2607
 
2438
- /*! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.crow-pointer-events-none{pointer-events:none}.crow-pointer-events-auto{pointer-events:auto}.crow-fixed{position:fixed}.crow-absolute{position:absolute}.crow-relative{position:relative}.crow-sticky{position:sticky}.crow-bottom-0{bottom:0}.crow-bottom-full{bottom:100%}.crow-left-0{left:0}.crow-right-0{right:0}.crow-top-0{top:0}.crow-z-50{z-index:50}.crow-z-\\[999999\\]{z-index:999999}.crow-m-0{margin:0}.crow-my-1{margin-top:.25rem;margin-bottom:.25rem}.crow-my-2{margin-top:.5rem;margin-bottom:.5rem}.crow-mb-1{margin-bottom:.25rem}.crow-mb-2{margin-bottom:.5rem}.crow-mb-3{margin-bottom:.75rem}.crow-ml-0{margin-left:0}.crow-ml-0\\.5{margin-left:.125rem}.crow-ml-2{margin-left:.5rem}.crow-ml-4{margin-left:1rem}.crow-mt-0{margin-top:0}.crow-mt-0\\.5{margin-top:.125rem}.crow-mt-1{margin-top:.25rem}.crow-mt-2{margin-top:.5rem}.crow-mt-auto{margin-top:auto}.crow-inline-block{display:inline-block}.crow-flex{display:flex}.crow-inline-flex{display:inline-flex}.crow-h-10{height:2.5rem}.crow-h-12{height:3rem}.crow-h-2{height:.5rem}.crow-h-3{height:.75rem}.crow-h-3\\.5{height:.875rem}.crow-h-4{height:1rem}.crow-h-7{height:1.75rem}.crow-h-8{height:2rem}.crow-h-full{height:100%}.crow-max-h-32{max-height:8rem}.crow-max-h-\\[200px\\]{max-height:200px}.crow-min-h-0{min-height:0}.crow-min-h-\\[32px\\]{min-height:32px}.crow-w-0{width:0}.crow-w-0\\.5{width:.125rem}.crow-w-2{width:.5rem}.crow-w-3{width:.75rem}.crow-w-3\\.5{width:.875rem}.crow-w-4{width:1rem}.crow-w-7{width:1.75rem}.crow-w-8{width:2rem}.crow-w-full{width:100%}.crow-min-w-0{min-width:0}.crow-min-w-\\[180px\\]{min-width:180px}.crow-max-w-\\[80\\%\\]{max-width:80%}.crow-max-w-\\[90\\%\\]{max-width:90%}.crow-max-w-full{max-width:100%}.crow-flex-1{flex:1 1 0%}.crow-flex-shrink-0{flex-shrink:0}.crow-rotate-180{--tw-rotate:180deg}.crow-rotate-180,.crow-scale-100{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))}.crow-scale-100{--tw-scale-x:1;--tw-scale-y:1}.crow-scale-110{--tw-scale-x:1.1;--tw-scale-y:1.1;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))}.crow-animate-fade-in{animation:crow-fadeIn .2s ease-out}.crow-animate-pulse{animation:crow-pulse 2s cubic-bezier(.4,0,.6,1) infinite}.crow-animate-slide-up{animation:crow-slideUp .3s ease-out}@keyframes crow-spin{to{transform:rotate(1turn)}}.crow-animate-spin{animation:crow-spin 1s linear infinite}.crow-cursor-default{cursor:default}.crow-cursor-not-allowed{cursor:not-allowed}.crow-cursor-pointer{cursor:pointer}.crow-select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.crow-resize-none{resize:none}.crow-list-decimal{list-style-type:decimal}.crow-list-disc{list-style-type:disc}.crow-flex-row{flex-direction:row}.crow-flex-col{flex-direction:column}.crow-items-start{align-items:flex-start}.crow-items-end{align-items:flex-end}.crow-items-center{align-items:center}.crow-justify-start{justify-content:flex-start}.crow-justify-end{justify-content:flex-end}.crow-justify-center{justify-content:center}.crow-justify-between{justify-content:space-between}.crow-gap-1{gap:.25rem}.crow-gap-1\\.5{gap:.375rem}.crow-gap-2{gap:.5rem}.crow-gap-3{gap:.75rem}.crow-gap-4{gap:1rem}.crow-gap-6{gap:1.5rem}.crow-space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem*var(--tw-space-y-reverse))}.crow-space-y-1\\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.375rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem*var(--tw-space-y-reverse))}.crow-space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem*var(--tw-space-y-reverse))}.crow-space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem*var(--tw-space-y-reverse))}.crow-space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem*var(--tw-space-y-reverse))}.crow-overflow-hidden{overflow:hidden}.crow-overflow-visible{overflow:visible}.crow-overflow-x-auto{overflow-x:auto}.crow-overflow-y-auto{overflow-y:auto}.crow-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.crow-whitespace-pre-wrap{white-space:pre-wrap}.crow-break-words{overflow-wrap:break-word}.crow-rounded{border-radius:.25rem}.crow-rounded-2xl{border-radius:1rem}.crow-rounded-3xl{border-radius:1.5rem}.crow-rounded-full{border-radius:9999px}.crow-rounded-lg{border-radius:.5rem}.crow-rounded-md{border-radius:.375rem}.crow-rounded-xl{border-radius:.75rem}.crow-border{border-width:1px}.crow-border-b{border-bottom-width:1px}.crow-border-l{border-left-width:1px}.crow-border-l-2{border-left-width:2px}.crow-border-r{border-right-width:1px}.crow-border-t{border-top-width:1px}.crow-border-none{border-style:none}.crow-border-gray-100{--tw-border-opacity:1;border-color:rgb(243 244 246/var(--tw-border-opacity,1))}.crow-border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity,1))}.crow-border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity,1))}.crow-border-red-500{--tw-border-opacity:1;border-color:rgb(239 68 68/var(--tw-border-opacity,1))}.crow-bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1))}.crow-bg-blue-50{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity,1))}.crow-bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.crow-bg-gray-200{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity,1))}.crow-bg-gray-400{--tw-bg-opacity:1;background-color:rgb(156 163 175/var(--tw-bg-opacity,1))}.crow-bg-gray-50{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.crow-bg-gray-700{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.crow-bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.crow-bg-gray-900{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity,1))}.crow-bg-red-500{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}.crow-bg-transparent{background-color:transparent}.crow-bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.crow-p-0{padding:0}.crow-p-1{padding:.25rem}.crow-p-1\\.5{padding:.375rem}.crow-p-2{padding:.5rem}.crow-p-3{padding:.75rem}.crow-p-4{padding:1rem}.crow-p-6{padding:1.5rem}.crow-px-1{padding-left:.25rem;padding-right:.25rem}.crow-px-1\\.5{padding-left:.375rem;padding-right:.375rem}.crow-px-2{padding-left:.5rem;padding-right:.5rem}.crow-px-3{padding-left:.75rem;padding-right:.75rem}.crow-px-4{padding-left:1rem;padding-right:1rem}.crow-px-6{padding-left:1.5rem;padding-right:1.5rem}.crow-py-0{padding-top:0;padding-bottom:0}.crow-py-0\\.5{padding-top:.125rem;padding-bottom:.125rem}.crow-py-1{padding-top:.25rem;padding-bottom:.25rem}.crow-py-1\\.5{padding-top:.375rem;padding-bottom:.375rem}.crow-py-2{padding-top:.5rem;padding-bottom:.5rem}.crow-py-3{padding-top:.75rem;padding-bottom:.75rem}.crow-py-6{padding-top:1.5rem;padding-bottom:1.5rem}.crow-py-8{padding-top:2rem;padding-bottom:2rem}.crow-pb-2{padding-bottom:.5rem}.crow-pl-3{padding-left:.75rem}.crow-pl-4{padding-left:1rem}.crow-pl-5{padding-left:1.25rem}.crow-pr-4{padding-right:1rem}.crow-pt-1{padding-top:.25rem}.crow-text-left{text-align:left}.crow-text-center{text-align:center}.crow-text-right{text-align:right}.crow-align-text-bottom{vertical-align:text-bottom}.crow-font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.crow-text-base{font-size:1rem;line-height:1.5rem}.crow-text-lg{font-size:1.125rem;line-height:1.75rem}.crow-text-sm{font-size:.875rem;line-height:1.25rem}.crow-text-xs{font-size:.75rem;line-height:1rem}.crow-font-bold{font-weight:700}.crow-font-medium{font-weight:500}.crow-font-semibold{font-weight:600}.crow-uppercase{text-transform:uppercase}.crow-leading-relaxed{line-height:1.625}.crow-tracking-wide{letter-spacing:.025em}.crow-text-black{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity,1))}.crow-text-blue-300{--tw-text-opacity:1;color:rgb(147 197 253/var(--tw-text-opacity,1))}.crow-text-blue-500{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity,1))}.crow-text-gray-200{--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity,1))}.crow-text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.crow-text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.crow-text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.crow-text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.crow-text-gray-800{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity,1))}.crow-text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}.crow-text-green-500{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity,1))}.crow-text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity,1))}.crow-text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.crow-underline{text-decoration-line:underline}.crow-opacity-0{opacity:0}.crow-opacity-100{opacity:1}.crow-opacity-50{opacity:.5}.crow-opacity-60{opacity:.6}.crow-shadow-2xl{--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color)}.crow-shadow-2xl,.crow-shadow-lg{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.crow-shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.crow-shadow-md{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.crow-backdrop-blur-md{--tw-backdrop-blur:blur(12px)}.crow-backdrop-blur-md,.crow-backdrop-blur-sm{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)}.crow-backdrop-blur-sm{--tw-backdrop-blur:blur(4px)}.crow-transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.crow-transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.crow-transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.crow-transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.crow-transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.crow-duration-150{transition-duration:.15s}.crow-duration-200{transition-duration:.2s}.crow-duration-300{transition-duration:.3s}.crow-duration-500{transition-duration:.5s}.crow-ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.crow-animate-fade-in{animation:crow-fadeIn .2s ease-out}.crow-animate-slide-up{animation:crow-slideUp .3s ease-out}.crow-animate-pulse{animation:crow-pulse 1.5s ease-in-out infinite}.crow-animation-delay-100{animation-delay:.1s}.crow-animation-delay-200{animation-delay:.2s}@keyframes crow-fadeIn{0%{opacity:0}to{opacity:1}}@keyframes crow-slideUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes crow-pulse{0%,to{opacity:1}50%{opacity:.4}}.crow-overflow-y-auto::-webkit-scrollbar{width:6px}.crow-overflow-y-auto::-webkit-scrollbar-track{background:transparent}.crow-overflow-y-auto::-webkit-scrollbar-thumb{background-color:#d1d5db;border-radius:3px}.crow-overflow-y-auto::-webkit-scrollbar-thumb:hover{background-color:#9ca3af}.crow-focus-visible\\:crow-outline-none:focus-visible{outline:none}.crow-focus-visible\\:crow-ring-2:focus-visible{box-shadow:0 0 0 2px var(--crow-primary,#6366f1)}:host{--crow-primary:#6366f1;--crow-primary-dark:#4f46e5;--crow-secondary:#f1f5f9;--crow-accent:#10b981}@media (prefers-color-scheme:dark){:host{--crow-primary:#818cf8;--crow-primary-dark:#6366f1}}.placeholder\\:crow-text-gray-500::-moz-placeholder{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.placeholder\\:crow-text-gray-500::placeholder{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.last\\:crow-mb-0:last-child{margin-bottom:0}.last\\:crow-border-0:last-child{border-width:0}.hover\\:crow-scale-110:hover{--tw-scale-x:1.1;--tw-scale-y:1.1;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))}.hover\\:crow-bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.hover\\:crow-bg-gray-200:hover{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity,1))}.hover\\:crow-bg-gray-700:hover{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.hover\\:crow-bg-gray-800:hover{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.hover\\:crow-bg-red-500:hover{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}.hover\\:crow-text-blue-300:hover{--tw-text-opacity:1;color:rgb(147 197 253/var(--tw-text-opacity,1))}.hover\\:crow-text-gray-700:hover{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.hover\\:crow-text-gray-800:hover{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity,1))}.hover\\:crow-opacity-100:hover{opacity:1}.focus\\:crow-outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\\:crow-ring-0:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\\:crow-ring-0:focus,.focus\\:crow-ring-2:focus{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\\:crow-ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\\:crow-ring-offset-2:focus{--tw-ring-offset-width:2px}.focus-visible\\:crow-outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\\:crow-ring-0:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.disabled\\:crow-pointer-events-none:disabled{pointer-events:none}.disabled\\:crow-cursor-not-allowed:disabled{cursor:not-allowed}.disabled\\:crow-opacity-50:disabled{opacity:.5}`;
2608
+ /*! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.crow-pointer-events-none{pointer-events:none}.crow-pointer-events-auto{pointer-events:auto}.crow-fixed{position:fixed}.crow-absolute{position:absolute}.crow-relative{position:relative}.crow-sticky{position:sticky}.crow-bottom-0{bottom:0}.crow-bottom-full{bottom:100%}.crow-left-0{left:0}.crow-right-0{right:0}.crow-top-0{top:0}.crow-z-50{z-index:50}.crow-z-\\[999999\\]{z-index:999999}.crow-m-0{margin:0}.crow-my-1{margin-top:.25rem;margin-bottom:.25rem}.crow-my-2{margin-top:.5rem;margin-bottom:.5rem}.crow-mb-1{margin-bottom:.25rem}.crow-mb-2{margin-bottom:.5rem}.crow-mb-3{margin-bottom:.75rem}.crow-mb-4{margin-bottom:1rem}.crow-ml-0{margin-left:0}.crow-ml-0\\.5{margin-left:.125rem}.crow-ml-2{margin-left:.5rem}.crow-ml-4{margin-left:1rem}.crow-mt-0{margin-top:0}.crow-mt-0\\.5{margin-top:.125rem}.crow-mt-1{margin-top:.25rem}.crow-mt-2{margin-top:.5rem}.crow-mt-auto{margin-top:auto}.crow-inline-block{display:inline-block}.crow-flex{display:flex}.crow-inline-flex{display:inline-flex}.crow-h-10{height:2.5rem}.crow-h-12{height:3rem}.crow-h-2{height:.5rem}.crow-h-3{height:.75rem}.crow-h-3\\.5{height:.875rem}.crow-h-4{height:1rem}.crow-h-7{height:1.75rem}.crow-h-8{height:2rem}.crow-h-full{height:100%}.crow-max-h-32{max-height:8rem}.crow-max-h-\\[200px\\]{max-height:200px}.crow-min-h-0{min-height:0}.crow-min-h-\\[32px\\]{min-height:32px}.crow-w-0{width:0}.crow-w-0\\.5{width:.125rem}.crow-w-2{width:.5rem}.crow-w-3{width:.75rem}.crow-w-3\\.5{width:.875rem}.crow-w-4{width:1rem}.crow-w-7{width:1.75rem}.crow-w-8{width:2rem}.crow-w-full{width:100%}.crow-min-w-0{min-width:0}.crow-min-w-\\[180px\\]{min-width:180px}.crow-max-w-\\[80\\%\\]{max-width:80%}.crow-max-w-\\[90\\%\\]{max-width:90%}.crow-max-w-full{max-width:100%}.crow-flex-1{flex:1 1 0%}.crow-flex-shrink-0{flex-shrink:0}.crow-rotate-180{--tw-rotate:180deg}.crow-rotate-180,.crow-scale-100{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))}.crow-scale-100{--tw-scale-x:1;--tw-scale-y:1}.crow-scale-110{--tw-scale-x:1.1;--tw-scale-y:1.1;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))}.crow-animate-fade-in{animation:crow-fadeIn .2s ease-out}.crow-animate-pulse{animation:crow-pulse 2s cubic-bezier(.4,0,.6,1) infinite}.crow-animate-slide-up{animation:crow-slideUp .3s ease-out}@keyframes crow-spin{to{transform:rotate(1turn)}}.crow-animate-spin{animation:crow-spin 1s linear infinite}.crow-cursor-default{cursor:default}.crow-cursor-not-allowed{cursor:not-allowed}.crow-cursor-pointer{cursor:pointer}.crow-select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.crow-resize-none{resize:none}.crow-list-decimal{list-style-type:decimal}.crow-list-disc{list-style-type:disc}.crow-flex-row{flex-direction:row}.crow-flex-col{flex-direction:column}.crow-items-start{align-items:flex-start}.crow-items-end{align-items:flex-end}.crow-items-center{align-items:center}.crow-justify-start{justify-content:flex-start}.crow-justify-end{justify-content:flex-end}.crow-justify-center{justify-content:center}.crow-justify-between{justify-content:space-between}.crow-gap-1{gap:.25rem}.crow-gap-1\\.5{gap:.375rem}.crow-gap-2{gap:.5rem}.crow-gap-3{gap:.75rem}.crow-gap-4{gap:1rem}.crow-gap-6{gap:1.5rem}.crow-space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem*var(--tw-space-y-reverse))}.crow-space-y-1\\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.375rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem*var(--tw-space-y-reverse))}.crow-space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem*var(--tw-space-y-reverse))}.crow-space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem*var(--tw-space-y-reverse))}.crow-space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem*var(--tw-space-y-reverse))}.crow-overflow-hidden{overflow:hidden}.crow-overflow-visible{overflow:visible}.crow-overflow-x-auto{overflow-x:auto}.crow-overflow-y-auto{overflow-y:auto}.crow-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.crow-whitespace-pre-wrap{white-space:pre-wrap}.crow-break-words{overflow-wrap:break-word}.crow-rounded{border-radius:.25rem}.crow-rounded-2xl{border-radius:1rem}.crow-rounded-3xl{border-radius:1.5rem}.crow-rounded-full{border-radius:9999px}.crow-rounded-lg{border-radius:.5rem}.crow-rounded-md{border-radius:.375rem}.crow-rounded-xl{border-radius:.75rem}.crow-border{border-width:1px}.crow-border-b{border-bottom-width:1px}.crow-border-l{border-left-width:1px}.crow-border-l-2{border-left-width:2px}.crow-border-r{border-right-width:1px}.crow-border-t{border-top-width:1px}.crow-border-none{border-style:none}.crow-border-gray-100{--tw-border-opacity:1;border-color:rgb(243 244 246/var(--tw-border-opacity,1))}.crow-border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity,1))}.crow-border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity,1))}.crow-border-red-500{--tw-border-opacity:1;border-color:rgb(239 68 68/var(--tw-border-opacity,1))}.crow-bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1))}.crow-bg-black\\/5{background-color:rgba(0,0,0,.05)}.crow-bg-blue-50{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity,1))}.crow-bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.crow-bg-gray-200{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity,1))}.crow-bg-gray-400{--tw-bg-opacity:1;background-color:rgb(156 163 175/var(--tw-bg-opacity,1))}.crow-bg-gray-50{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.crow-bg-gray-700{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.crow-bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.crow-bg-gray-900{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity,1))}.crow-bg-red-500{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}.crow-bg-transparent{background-color:transparent}.crow-bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.crow-p-0{padding:0}.crow-p-1{padding:.25rem}.crow-p-1\\.5{padding:.375rem}.crow-p-2{padding:.5rem}.crow-p-3{padding:.75rem}.crow-p-4{padding:1rem}.crow-p-6{padding:1.5rem}.crow-px-1{padding-left:.25rem;padding-right:.25rem}.crow-px-1\\.5{padding-left:.375rem;padding-right:.375rem}.crow-px-2{padding-left:.5rem;padding-right:.5rem}.crow-px-3{padding-left:.75rem;padding-right:.75rem}.crow-px-4{padding-left:1rem;padding-right:1rem}.crow-px-6{padding-left:1.5rem;padding-right:1.5rem}.crow-py-0{padding-top:0;padding-bottom:0}.crow-py-0\\.5{padding-top:.125rem;padding-bottom:.125rem}.crow-py-1{padding-top:.25rem;padding-bottom:.25rem}.crow-py-1\\.5{padding-top:.375rem;padding-bottom:.375rem}.crow-py-2{padding-top:.5rem;padding-bottom:.5rem}.crow-py-3{padding-top:.75rem;padding-bottom:.75rem}.crow-py-6{padding-top:1.5rem;padding-bottom:1.5rem}.crow-py-8{padding-top:2rem;padding-bottom:2rem}.crow-pb-2{padding-bottom:.5rem}.crow-pl-3{padding-left:.75rem}.crow-pl-4{padding-left:1rem}.crow-pl-5{padding-left:1.25rem}.crow-pr-4{padding-right:1rem}.crow-pt-1{padding-top:.25rem}.crow-text-left{text-align:left}.crow-text-center{text-align:center}.crow-text-right{text-align:right}.crow-align-text-bottom{vertical-align:text-bottom}.crow-font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.crow-text-base{font-size:1rem;line-height:1.5rem}.crow-text-lg{font-size:1.125rem;line-height:1.75rem}.crow-text-sm{font-size:.875rem;line-height:1.25rem}.crow-text-xs{font-size:.75rem;line-height:1rem}.crow-font-bold{font-weight:700}.crow-font-medium{font-weight:500}.crow-font-semibold{font-weight:600}.crow-uppercase{text-transform:uppercase}.crow-italic{font-style:italic}.crow-leading-relaxed{line-height:1.625}.crow-tracking-wide{letter-spacing:.025em}.crow-text-black{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity,1))}.crow-text-blue-300{--tw-text-opacity:1;color:rgb(147 197 253/var(--tw-text-opacity,1))}.crow-text-blue-500{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity,1))}.crow-text-gray-200{--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity,1))}.crow-text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.crow-text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.crow-text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.crow-text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.crow-text-gray-800{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity,1))}.crow-text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}.crow-text-green-500{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity,1))}.crow-text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity,1))}.crow-text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.crow-underline{text-decoration-line:underline}.crow-opacity-0{opacity:0}.crow-opacity-100{opacity:1}.crow-opacity-50{opacity:.5}.crow-opacity-60{opacity:.6}.crow-shadow-2xl{--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color)}.crow-shadow-2xl,.crow-shadow-lg{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.crow-shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.crow-shadow-md{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.crow-outline-none{outline:2px solid transparent;outline-offset:2px}.crow-backdrop-blur-md{--tw-backdrop-blur:blur(12px)}.crow-backdrop-blur-md,.crow-backdrop-blur-sm{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)}.crow-backdrop-blur-sm{--tw-backdrop-blur:blur(4px)}.crow-transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.crow-transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.crow-transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.crow-transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.crow-transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.crow-duration-150{transition-duration:.15s}.crow-duration-200{transition-duration:.2s}.crow-duration-300{transition-duration:.3s}.crow-duration-500{transition-duration:.5s}.crow-ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.crow-animate-fade-in{animation:crow-fadeIn .2s ease-out}.crow-animate-slide-up{animation:crow-slideUp .3s ease-out}.crow-animate-pulse{animation:crow-pulse 1.5s ease-in-out infinite}.crow-animation-delay-100{animation-delay:.1s}.crow-animation-delay-200{animation-delay:.2s}@keyframes crow-fadeIn{0%{opacity:0}to{opacity:1}}@keyframes crow-slideUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes crow-pulse{0%,to{opacity:1}50%{opacity:.4}}.crow-overflow-y-auto::-webkit-scrollbar{width:6px}.crow-overflow-y-auto::-webkit-scrollbar-track{background:transparent}.crow-overflow-y-auto::-webkit-scrollbar-thumb{background-color:#d1d5db;border-radius:3px}.crow-overflow-y-auto::-webkit-scrollbar-thumb:hover{background-color:#9ca3af}.crow-focus-visible\\:crow-outline-none:focus-visible{outline:none}.crow-focus-visible\\:crow-ring-2:focus-visible{box-shadow:0 0 0 2px var(--crow-primary,#6366f1)}:host{--crow-primary:#6366f1;--crow-primary-dark:#4f46e5;--crow-secondary:#f1f5f9;--crow-accent:#10b981}@media (prefers-color-scheme:dark){:host{--crow-primary:#818cf8;--crow-primary-dark:#6366f1}}.placeholder\\:crow-text-gray-500::-moz-placeholder{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.placeholder\\:crow-text-gray-500::placeholder{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.last\\:crow-mb-0:last-child{margin-bottom:0}.last\\:crow-border-0:last-child{border-width:0}.hover\\:crow-scale-110:hover{--tw-scale-x:1.1;--tw-scale-y:1.1;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))}.hover\\:crow-bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.hover\\:crow-bg-gray-200:hover{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity,1))}.hover\\:crow-bg-gray-700:hover{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.hover\\:crow-bg-gray-800:hover{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.hover\\:crow-bg-red-500:hover{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}.hover\\:crow-text-blue-300:hover{--tw-text-opacity:1;color:rgb(147 197 253/var(--tw-text-opacity,1))}.hover\\:crow-text-gray-700:hover{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.hover\\:crow-text-gray-800:hover{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity,1))}.hover\\:crow-opacity-100:hover{opacity:1}.hover\\:crow-opacity-80:hover{opacity:.8}.hover\\:crow-opacity-90:hover{opacity:.9}.focus\\:crow-outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\\:crow-ring-0:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\\:crow-ring-0:focus,.focus\\:crow-ring-2:focus{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\\:crow-ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\\:crow-ring-offset-2:focus{--tw-ring-offset-width:2px}.focus-visible\\:crow-outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\\:crow-ring-0:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.disabled\\:crow-pointer-events-none:disabled{pointer-events:none}.disabled\\:crow-cursor-not-allowed:disabled{cursor:not-allowed}.disabled\\:crow-opacity-50:disabled{opacity:.5}`;
2439
2609
  var injected = false;
2440
2610
  function injectStyles(target = document) {
2441
2611
  if (target === document && injected) return;
@@ -2462,6 +2632,7 @@ function CrowWidget({
2462
2632
  styles: propStyles,
2463
2633
  previewMode = false,
2464
2634
  showThinking: showThinkingProp,
2635
+ agentName: agentNameProp,
2465
2636
  welcomeMessage: welcomeMessageProp,
2466
2637
  onReady,
2467
2638
  onIdentify,
@@ -2470,7 +2641,7 @@ function CrowWidget({
2470
2641
  const {
2471
2642
  styles,
2472
2643
  isLoading: isLoadingStyles,
2473
- agentName,
2644
+ agentName: agentNameFromAPI,
2474
2645
  browserUseEnabled,
2475
2646
  showThinking: showThinkingFromAPI,
2476
2647
  persistAnonymousConversations,
@@ -2481,8 +2652,14 @@ function CrowWidget({
2481
2652
  propStyles,
2482
2653
  skip: previewMode
2483
2654
  });
2655
+ const agentName = agentNameProp ?? agentNameFromAPI;
2484
2656
  const welcomeMessage = welcomeMessageProp ?? welcomeMessageFromAPI;
2485
- console.log("[Crow Widget] persistAnonymousConversations from API:", persistAnonymousConversations, "isLoading:", isLoadingStyles);
2657
+ console.log(
2658
+ "[Crow Widget] persistAnonymousConversations from API:",
2659
+ persistAnonymousConversations,
2660
+ "isLoading:",
2661
+ isLoadingStyles
2662
+ );
2486
2663
  const showThinking = showThinkingProp ?? showThinkingFromAPI;
2487
2664
  const [autoTools, setAutoTools] = useState({});
2488
2665
  const cssVars = stylesToCssVars(styles);
@@ -2492,6 +2669,8 @@ function CrowWidget({
2492
2669
  const [isCollapsed, setIsCollapsed] = useState(variant === "floating");
2493
2670
  const [showConversationList, setShowConversationList] = useState(false);
2494
2671
  const [isVerifiedUser, setIsVerifiedUser] = useState(false);
2672
+ const [pendingConfirmation, setPendingConfirmation] = useState(null);
2673
+ const [pendingQuestion, setPendingQuestion] = useState(null);
2495
2674
  const {
2496
2675
  activeWorkflow,
2497
2676
  startWorkflow,
@@ -2570,7 +2749,10 @@ function CrowWidget({
2570
2749
  useEffect(() => {
2571
2750
  if (shouldRestoreHistory && chat.conversationId && !hasRestoredHistoryRef.current) {
2572
2751
  hasRestoredHistoryRef.current = true;
2573
- console.log("[Crow Widget] Restoring conversation history:", chat.conversationId);
2752
+ console.log(
2753
+ "[Crow Widget] Restoring conversation history:",
2754
+ chat.conversationId
2755
+ );
2574
2756
  conversations.loadAnonymousConversationHistory(chat.conversationId).then((historyMessages) => {
2575
2757
  if (historyMessages.length > 0) {
2576
2758
  chat.loadMessages(historyMessages);
@@ -2624,18 +2806,49 @@ function CrowWidget({
2624
2806
  onIdentify(identify);
2625
2807
  }
2626
2808
  }, [isLoadingStyles, onIdentify]);
2809
+ const handleBrowserConfirmation = useCallback(
2810
+ (instruction) => {
2811
+ return new Promise((resolve) => {
2812
+ setPendingConfirmation({ instruction, resolve });
2813
+ });
2814
+ },
2815
+ []
2816
+ );
2817
+ const handleBrowserQuestion = useCallback(
2818
+ (question) => {
2819
+ return new Promise((resolve) => {
2820
+ setPendingQuestion({ question, resolve });
2821
+ });
2822
+ },
2823
+ []
2824
+ );
2825
+ useEffect(() => {
2826
+ window.__crow_browser_callbacks = {
2827
+ onConfirmation: handleBrowserConfirmation,
2828
+ onQuestion: handleBrowserQuestion
2829
+ };
2830
+ return () => {
2831
+ delete window.__crow_browser_callbacks;
2832
+ };
2833
+ }, [handleBrowserConfirmation, handleBrowserQuestion]);
2627
2834
  useEffect(() => {
2628
2835
  if (browserUseEnabled && !isLoadingStyles && Object.keys(autoTools).length === 0) {
2629
2836
  import('@usecrow/client/browser').then(({ createBrowserUseTool }) => {
2630
2837
  setAutoTools({
2631
- browser_use: createBrowserUseTool({ productId, apiUrl })
2838
+ browser_use: createBrowserUseTool(
2839
+ { productId, apiUrl },
2840
+ {
2841
+ onConfirmation: handleBrowserConfirmation,
2842
+ onQuestion: handleBrowserQuestion
2843
+ }
2844
+ )
2632
2845
  });
2633
- console.log("[Crow] browser_use tool auto-loaded");
2846
+ console.log("[Crow] browser_use tool auto-loaded with callbacks");
2634
2847
  }).catch((err) => {
2635
2848
  console.warn("[Crow] Failed to load browser_use:", err);
2636
2849
  });
2637
2850
  }
2638
- }, [browserUseEnabled, isLoadingStyles, productId, apiUrl, autoTools]);
2851
+ }, [browserUseEnabled, isLoadingStyles, productId, apiUrl, autoTools, handleBrowserConfirmation, handleBrowserQuestion]);
2639
2852
  const mergedTools = { ...autoTools, ...tools };
2640
2853
  useEffect(() => {
2641
2854
  if (Object.keys(mergedTools).length > 0) {
@@ -2702,15 +2915,41 @@ function CrowWidget({
2702
2915
  onExit: handleExitWorkflow
2703
2916
  }
2704
2917
  ) }),
2705
- /* @__PURE__ */ jsx(AnimatePresence, { children: (chat.messages.length > 0 || conversations.isLoadingHistory) && /* @__PURE__ */ jsx(MessagesContainer, { ref: messagesContainerRef, children: /* @__PURE__ */ jsx(
2706
- MessageList,
2707
- {
2708
- messages: chat.messages,
2709
- activeToolCalls: chat.activeToolCalls,
2710
- isLoadingHistory: conversations.isLoadingHistory,
2711
- isGenerating: chat.isLoading
2712
- }
2713
- ) }) }),
2918
+ /* @__PURE__ */ jsx(AnimatePresence, { children: (chat.messages.length > 0 || conversations.isLoadingHistory || pendingConfirmation || pendingQuestion) && /* @__PURE__ */ jsxs(MessagesContainer, { ref: messagesContainerRef, children: [
2919
+ /* @__PURE__ */ jsx(
2920
+ MessageList,
2921
+ {
2922
+ messages: chat.messages,
2923
+ activeToolCalls: chat.activeToolCalls,
2924
+ isLoadingHistory: conversations.isLoadingHistory,
2925
+ isGenerating: chat.isLoading
2926
+ }
2927
+ ),
2928
+ pendingConfirmation && /* @__PURE__ */ jsx("div", { className: "crow-px-4 crow-py-2", children: /* @__PURE__ */ jsx(
2929
+ BrowserUseConfirmation,
2930
+ {
2931
+ instruction: pendingConfirmation.instruction,
2932
+ onAllow: () => {
2933
+ pendingConfirmation.resolve(true);
2934
+ setPendingConfirmation(null);
2935
+ },
2936
+ onDeny: () => {
2937
+ pendingConfirmation.resolve(false);
2938
+ setPendingConfirmation(null);
2939
+ }
2940
+ }
2941
+ ) }),
2942
+ pendingQuestion && /* @__PURE__ */ jsx("div", { className: "crow-px-4 crow-py-2", children: /* @__PURE__ */ jsx(
2943
+ BrowserUseQuestion,
2944
+ {
2945
+ question: pendingQuestion.question,
2946
+ onSubmit: (answer) => {
2947
+ pendingQuestion.resolve(answer);
2948
+ setPendingQuestion(null);
2949
+ }
2950
+ }
2951
+ ) })
2952
+ ] }) }),
2714
2953
  /* @__PURE__ */ jsxs("div", { className: "crow-mt-auto crow-w-full", children: [
2715
2954
  /* @__PURE__ */ jsx(PoweredByBadge, { apiUrl }),
2716
2955
  /* @__PURE__ */ jsx(
@@ -2735,7 +2974,13 @@ function CrowWidget({
2735
2974
  showThinking,
2736
2975
  children: [
2737
2976
  variant === "floating" && /* @__PURE__ */ jsxs(Fragment, { children: [
2738
- /* @__PURE__ */ jsx(ChatBubble, { isExpanded: !isCollapsed, onClick: handleBubbleClick }),
2977
+ /* @__PURE__ */ jsx(
2978
+ ChatBubble,
2979
+ {
2980
+ isExpanded: !isCollapsed,
2981
+ onClick: handleBubbleClick
2982
+ }
2983
+ ),
2739
2984
  !isCollapsed && /* @__PURE__ */ jsx(WidgetShell, { children: renderWidgetContent() })
2740
2985
  ] }),
2741
2986
  variant === "embedded" && /* @__PURE__ */ jsx(WidgetShell, { children: renderWidgetContent() })
@@ -2747,6 +2992,8 @@ function CrowCopilot({
2747
2992
  productId,
2748
2993
  apiUrl = "",
2749
2994
  title = "Copilot",
2995
+ agentName: agentNameProp,
2996
+ welcomeMessage: welcomeMessageProp,
2750
2997
  position = "right",
2751
2998
  width = 400,
2752
2999
  showClose = false,
@@ -2756,16 +3003,26 @@ function CrowCopilot({
2756
3003
  className,
2757
3004
  onReady
2758
3005
  }) {
2759
- const { styles, isLoading: isLoadingStyles, agentName, persistAnonymousConversations, welcomeMessage } = useCopilotStyles({
3006
+ const {
3007
+ styles,
3008
+ isLoading: isLoadingStyles,
3009
+ agentName: agentNameFromAPI,
3010
+ persistAnonymousConversations,
3011
+ welcomeMessage: welcomeMessageFromAPI
3012
+ } = useCopilotStyles({
2760
3013
  productId,
2761
3014
  apiUrl,
2762
3015
  propStyles,
2763
3016
  skip: previewMode
2764
3017
  });
3018
+ const agentName = agentNameProp ?? agentNameFromAPI ?? title;
3019
+ const welcomeMessage = welcomeMessageProp ?? welcomeMessageFromAPI;
2765
3020
  const messagesContainerRef = useRef(null);
2766
3021
  const executeClientToolRef = useRef(null);
2767
3022
  const [showConversationList, setShowConversationList] = useState(false);
2768
3023
  const [isVerifiedUser, setIsVerifiedUser] = useState(false);
3024
+ const [pendingConfirmation, setPendingConfirmation] = useState(null);
3025
+ const [pendingQuestion, setPendingQuestion] = useState(null);
2769
3026
  const conversations = useConversations({ productId, apiUrl });
2770
3027
  const [shouldRestoreHistory, setShouldRestoreHistory] = useState(false);
2771
3028
  const hasRestoredHistoryRef = useRef(false);
@@ -2781,8 +3038,15 @@ function CrowCopilot({
2781
3038
  },
2782
3039
  onToolCall: (event) => {
2783
3040
  if (event.type === "client_call" && event.toolName) {
2784
- console.log("[Crow Copilot] Executing client tool:", event.toolName, event.arguments);
2785
- const result = executeClientToolRef.current?.(event.toolName, event.arguments || {});
3041
+ console.log(
3042
+ "[Crow Copilot] Executing client tool:",
3043
+ event.toolName,
3044
+ event.arguments
3045
+ );
3046
+ const result = executeClientToolRef.current?.(
3047
+ event.toolName,
3048
+ event.arguments || {}
3049
+ );
2786
3050
  result?.then((r) => console.log("[Crow Copilot] Tool result:", r)).catch((e) => console.error("[Crow Copilot] Tool error:", e));
2787
3051
  }
2788
3052
  },
@@ -2811,6 +3075,31 @@ function CrowCopilot({
2811
3075
  }
2812
3076
  });
2813
3077
  executeClientToolRef.current = executeClientTool;
3078
+ const handleBrowserConfirmation = useCallback(
3079
+ (instruction) => {
3080
+ return new Promise((resolve) => {
3081
+ setPendingConfirmation({ instruction, resolve });
3082
+ });
3083
+ },
3084
+ []
3085
+ );
3086
+ const handleBrowserQuestion = useCallback(
3087
+ (question) => {
3088
+ return new Promise((resolve) => {
3089
+ setPendingQuestion({ question, resolve });
3090
+ });
3091
+ },
3092
+ []
3093
+ );
3094
+ useEffect(() => {
3095
+ window.__crow_browser_callbacks = {
3096
+ onConfirmation: handleBrowserConfirmation,
3097
+ onQuestion: handleBrowserQuestion
3098
+ };
3099
+ return () => {
3100
+ delete window.__crow_browser_callbacks;
3101
+ };
3102
+ }, [handleBrowserConfirmation, handleBrowserQuestion]);
2814
3103
  useEffect(() => {
2815
3104
  if (!isLoadingStyles) {
2816
3105
  onReady?.();
@@ -2848,7 +3137,7 @@ function CrowCopilot({
2848
3137
  CopilotStyleProvider,
2849
3138
  {
2850
3139
  styles,
2851
- agentName: agentName || title,
3140
+ agentName,
2852
3141
  isLoading: isLoadingStyles,
2853
3142
  children: /* @__PURE__ */ jsxs(
2854
3143
  "div",
@@ -2882,7 +3171,7 @@ function CrowCopilot({
2882
3171
  color: styles.colors.text,
2883
3172
  fontSize: styles.typography.headerFontSize
2884
3173
  },
2885
- children: agentName || title
3174
+ children: agentName
2886
3175
  }
2887
3176
  ),
2888
3177
  /* @__PURE__ */ jsxs("div", { className: "crow-flex crow-items-center crow-gap-1", children: [
@@ -2928,27 +3217,60 @@ function CrowCopilot({
2928
3217
  onClose: handleCloseConversationList
2929
3218
  }
2930
3219
  ) }),
2931
- /* @__PURE__ */ jsx(MessagesContainer, { ref: messagesContainerRef, children: /* @__PURE__ */ jsx(
2932
- MessageList,
2933
- {
2934
- messages: chat.messages,
2935
- activeToolCalls: chat.activeToolCalls,
2936
- isLoadingHistory: conversations.isLoadingHistory,
2937
- isGenerating: chat.isLoading
2938
- }
2939
- ) }),
2940
- /* @__PURE__ */ jsxs("div", { className: "crow-p-3 crow-border-t", style: { borderColor: styles.colors.border }, children: [
2941
- styles.branding.showPoweredBy && /* @__PURE__ */ jsx(PoweredByBadge, { apiUrl }),
3220
+ /* @__PURE__ */ jsxs(MessagesContainer, { ref: messagesContainerRef, children: [
2942
3221
  /* @__PURE__ */ jsx(
2943
- PromptInputBox,
3222
+ MessageList,
2944
3223
  {
2945
- onSend: handleSend,
2946
- onStop: chat.stopGeneration,
2947
- placeholder: "Ask anything...",
2948
- isLoading: chat.isLoading
3224
+ messages: chat.messages,
3225
+ activeToolCalls: chat.activeToolCalls,
3226
+ isLoadingHistory: conversations.isLoadingHistory,
3227
+ isGenerating: chat.isLoading
2949
3228
  }
2950
- )
2951
- ] })
3229
+ ),
3230
+ pendingConfirmation && /* @__PURE__ */ jsx("div", { className: "crow-px-4 crow-py-2", children: /* @__PURE__ */ jsx(
3231
+ BrowserUseConfirmation,
3232
+ {
3233
+ instruction: pendingConfirmation.instruction,
3234
+ onAllow: () => {
3235
+ pendingConfirmation.resolve(true);
3236
+ setPendingConfirmation(null);
3237
+ },
3238
+ onDeny: () => {
3239
+ pendingConfirmation.resolve(false);
3240
+ setPendingConfirmation(null);
3241
+ }
3242
+ }
3243
+ ) }),
3244
+ pendingQuestion && /* @__PURE__ */ jsx("div", { className: "crow-px-4 crow-py-2", children: /* @__PURE__ */ jsx(
3245
+ BrowserUseQuestion,
3246
+ {
3247
+ question: pendingQuestion.question,
3248
+ onSubmit: (answer) => {
3249
+ pendingQuestion.resolve(answer);
3250
+ setPendingQuestion(null);
3251
+ }
3252
+ }
3253
+ ) })
3254
+ ] }),
3255
+ /* @__PURE__ */ jsxs(
3256
+ "div",
3257
+ {
3258
+ className: "crow-p-3 crow-border-t",
3259
+ style: { borderColor: styles.colors.border },
3260
+ children: [
3261
+ styles.branding.showPoweredBy && /* @__PURE__ */ jsx(PoweredByBadge, { apiUrl }),
3262
+ /* @__PURE__ */ jsx(
3263
+ PromptInputBox,
3264
+ {
3265
+ onSend: handleSend,
3266
+ onStop: chat.stopGeneration,
3267
+ placeholder: "Ask anything...",
3268
+ isLoading: chat.isLoading
3269
+ }
3270
+ )
3271
+ ]
3272
+ }
3273
+ )
2952
3274
  ]
2953
3275
  }
2954
3276
  )