puckeditor-plugin-ai 0.6.4 → 0.6.5

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.css CHANGED
@@ -331,6 +331,166 @@
331
331
  .puck-ai-chat-message-data-icon {
332
332
  display: flex;
333
333
  }
334
+ .puck-ai-chat-message-file {
335
+ margin-bottom: 8px;
336
+ margin-top: 8px;
337
+ }
338
+ .puck-ai-chat-message-file--user {
339
+ margin-left: 24px;
340
+ }
341
+ .puck-ai-chat-message-file-image {
342
+ border-radius: 12px;
343
+ display: block;
344
+ max-height: 220px;
345
+ max-width: 100%;
346
+ object-fit: contain;
347
+ }
348
+ .puck-ai-chat-message-file--user .puck-ai-chat-message-file-image {
349
+ background: var(--puck-color-azure-10);
350
+ border: 1px solid var(--puck-color-azure-08);
351
+ }
352
+ .puck-ai-chat-message-file-caption {
353
+ color: var(--puck-color-grey-05);
354
+ display: block;
355
+ font-size: var(--puck-font-size-xxxs);
356
+ margin-top: 4px;
357
+ }
358
+ .puck-ai-chat-message-file--document {
359
+ background: var(--puck-color-azure-10);
360
+ border-radius: 12px;
361
+ padding: 8px 12px;
362
+ }
363
+ .puck-ai-chat-message-file--document a {
364
+ word-break: break-all;
365
+ }
366
+ .puck-ai-chat-message-reasoning {
367
+ background: var(--puck-color-grey-11);
368
+ border: 1px solid var(--puck-color-grey-09);
369
+ border-radius: 10px;
370
+ color: var(--puck-color-grey-04);
371
+ font-size: var(--puck-font-size-xxxs);
372
+ margin-bottom: 8px;
373
+ margin-top: 8px;
374
+ padding: 6px 10px;
375
+ }
376
+ .puck-ai-chat-message-reasoning-summary {
377
+ cursor: pointer;
378
+ font-weight: 600;
379
+ list-style: none;
380
+ display: flex;
381
+ align-items: center;
382
+ gap: 8px;
383
+ }
384
+ .puck-ai-chat-message-reasoning-summary::-webkit-details-marker {
385
+ display: none;
386
+ }
387
+ .puck-ai-chat-message-reasoning-streaming {
388
+ display: inline-flex;
389
+ align-items: center;
390
+ }
391
+ .puck-ai-chat-message-reasoning-body {
392
+ border-top: 1px solid var(--puck-color-grey-09);
393
+ margin-top: 8px;
394
+ padding-top: 8px;
395
+ }
396
+ .puck-ai-chat-message-reasoning-body p {
397
+ margin: 0 0 6px;
398
+ }
399
+ .puck-ai-chat-message-source {
400
+ color: var(--puck-color-grey-05);
401
+ font-size: var(--puck-font-size-xxxs);
402
+ margin-bottom: 6px;
403
+ margin-top: 6px;
404
+ }
405
+ .puck-ai-chat-message-source-meta {
406
+ color: var(--puck-color-grey-07);
407
+ margin-left: 6px;
408
+ }
409
+ .puck-ai-chat-message-step {
410
+ border-top: 1px dashed var(--puck-color-grey-09);
411
+ margin: 8px 0;
412
+ opacity: 0.6;
413
+ }
414
+ .puck-ai-chat-message-tool {
415
+ background: var(--puck-color-grey-12);
416
+ border: 1px solid var(--puck-color-grey-09);
417
+ border-radius: 12px;
418
+ margin-bottom: 8px;
419
+ margin-top: 8px;
420
+ margin-right: 24px;
421
+ padding: 8px 12px;
422
+ }
423
+ .puck-ai-chat-message-tool-header {
424
+ align-items: center;
425
+ display: flex;
426
+ flex-wrap: wrap;
427
+ gap: 8px;
428
+ }
429
+ .puck-ai-chat-message-tool-icon {
430
+ color: var(--puck-color-grey-06);
431
+ display: flex;
432
+ }
433
+ .puck-ai-chat-message-tool-name {
434
+ font-weight: 600;
435
+ color: var(--puck-color-grey-03);
436
+ }
437
+ .puck-ai-chat-message-tool-state {
438
+ align-items: center;
439
+ color: var(--puck-color-grey-05);
440
+ display: inline-flex;
441
+ font-size: var(--puck-font-size-xxxs);
442
+ gap: 6px;
443
+ margin-left: auto;
444
+ }
445
+ .puck-ai-chat-message-tool-error {
446
+ color: var(--puck-color-red-04);
447
+ font-size: var(--puck-font-size-xxxs);
448
+ margin-top: 6px;
449
+ }
450
+ .puck-ai-chat-message-tool-details {
451
+ margin-top: 8px;
452
+ }
453
+ .puck-ai-chat-message-tool-details summary {
454
+ color: var(--puck-color-azure-04);
455
+ cursor: pointer;
456
+ font-size: var(--puck-font-size-xxxs);
457
+ font-weight: 600;
458
+ list-style: none;
459
+ }
460
+ .puck-ai-chat-message-tool-details summary::-webkit-details-marker {
461
+ display: none;
462
+ }
463
+ .puck-ai-chat-message-tool-pre {
464
+ background: var(--puck-color-grey-11);
465
+ border-radius: 6px;
466
+ font-size: 11px;
467
+ line-height: 1.45;
468
+ margin-top: 6px;
469
+ max-height: 200px;
470
+ overflow: auto;
471
+ padding: 8px;
472
+ white-space: pre-wrap;
473
+ word-break: break-word;
474
+ }
475
+ .puck-ai-chat-message-data-summary {
476
+ color: var(--puck-color-grey-05);
477
+ font-size: var(--puck-font-size-xxxs);
478
+ margin-bottom: 6px;
479
+ margin-top: 6px;
480
+ }
481
+ .puck-ai-chat-message-data-raw {
482
+ margin-bottom: 6px;
483
+ margin-top: 6px;
484
+ }
485
+ .puck-ai-chat-message-data-raw summary {
486
+ color: var(--puck-color-grey-05);
487
+ cursor: pointer;
488
+ font-size: var(--puck-font-size-xxxs);
489
+ list-style: none;
490
+ }
491
+ .puck-ai-chat-message-data-raw summary::-webkit-details-marker {
492
+ display: none;
493
+ }
334
494
  .puck-ai-target-banner {
335
495
  align-items: center;
336
496
  background: var(--puck-color-azure-11);
@@ -755,4 +915,32 @@
755
915
  color: var(--puck-color-azure-05);
756
916
  text-decoration: underline;
757
917
  }
918
+ .puck-ai-settings-clear-chat {
919
+ align-items: center;
920
+ align-self: flex-start;
921
+ appearance: none;
922
+ background: var(--puck-color-white);
923
+ border: 1px solid var(--puck-color-red-04);
924
+ border-radius: 6px;
925
+ color: var(--puck-color-red-04);
926
+ cursor: pointer;
927
+ display: inline-flex;
928
+ font-family: inherit;
929
+ font-size: var(--puck-font-size-xxxs);
930
+ font-weight: 600;
931
+ gap: 8px;
932
+ margin-top: 4px;
933
+ padding: 8px 12px;
934
+ }
935
+ .puck-ai-settings-clear-chat:hover:not(:disabled) {
936
+ background: var(--puck-color-grey-12);
937
+ }
938
+ .puck-ai-settings-clear-chat:focus-visible {
939
+ outline: 2px solid var(--puck-color-azure-04);
940
+ outline-offset: 2px;
941
+ }
942
+ .puck-ai-settings-clear-chat:disabled {
943
+ cursor: not-allowed;
944
+ opacity: 0.45;
945
+ }
758
946
  /*# sourceMappingURL=index.css.map */
@@ -1 +1 @@
1
- {"version":3,"sources":["../styles.css"],"sourcesContent":["/* ============================================================\n Color tokens (subset used by plugin-ai)\n ============================================================ */\n:root {\n --puck-color-azure-01: #00175d;\n --puck-color-azure-02: #002c77;\n --puck-color-azure-03: #014292;\n --puck-color-azure-04: #0158ad;\n --puck-color-azure-05: #3479be;\n --puck-color-azure-06: #6499cf;\n --puck-color-azure-08: #abc7e5;\n --puck-color-azure-10: #e7eef7;\n --puck-color-azure-11: #f3f6fb;\n --puck-color-azure-12: #f7faff;\n --puck-color-green-04: #0c680c;\n --puck-color-green-06: #2faa53;\n --puck-color-grey-01: #181818;\n --puck-color-grey-02: #292929;\n --puck-color-grey-03: #404040;\n --puck-color-grey-04: #5a5a5a;\n --puck-color-grey-05: #767676;\n --puck-color-grey-06: #949494;\n --puck-color-grey-07: #ababab;\n --puck-color-grey-08: #c3c3c3;\n --puck-color-grey-09: #dcdcdc;\n --puck-color-grey-10: #efefef;\n --puck-color-grey-11: #f5f5f5;\n --puck-color-grey-12: #fafafa;\n --puck-color-red-02: #6a0a10;\n --puck-color-red-03: #8a1422;\n --puck-color-red-04: #ac1f35;\n --puck-color-red-05: #bf5366;\n --puck-color-black: #000000;\n --puck-color-white: #ffffff;\n --puck-font-size-xxxs: 0.75rem;\n --puck-font-size-xxs: 0.875rem;\n --puck-font-size-xs: 1rem;\n --puck-font-size-s: 1.125rem;\n --puck-font-size-m: 1.3125rem;\n --puck-font-size-base: var(--puck-font-size-xs);\n --line-height-s: 1.333;\n --line-height-m: 1.5;\n}\n\n/* ============================================================\n Loader\n ============================================================ */\n\n@keyframes puck-ai-loader-spin {\n 0% { transform: rotate(0deg) scale(1); }\n 50% { transform: rotate(180deg) scale(0.8); }\n 100% { transform: rotate(360deg) scale(1); }\n}\n\n.puck-ai-loader {\n background: transparent;\n border-radius: 100%;\n border: 2px solid currentColor;\n border-bottom-color: transparent;\n display: inline-block;\n animation: puck-ai-loader-spin 1s 0s infinite linear;\n animation-fill-mode: both;\n}\n\n/* ============================================================\n Icon button\n ============================================================ */\n\n.puck-ai-icon-button {\n appearance: none;\n background: transparent;\n border: none;\n border-radius: 4px;\n color: var(--puck-color-grey-08);\n padding: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n}\n\n.puck-ai-icon-button:hover {\n background-color: var(--puck-color-azure-11);\n color: var(--puck-color-azure-04);\n}\n\n/* ============================================================\n Chat outer panel (outer wrapper)\n ============================================================ */\n\n.puck-ai-chat {\n background: white;\n height: 100%;\n display: flex;\n flex-direction: column;\n text-align: left;\n}\n\n.puck-ai-chat-header {\n align-items: center;\n display: flex;\n gap: 4px;\n padding: 4px 8px 4px 16px;\n font-weight: 600;\n border-bottom: 1px solid var(--puck-color-grey-09);\n flex-shrink: 0;\n}\n\n.puck-ai-chat-header-title {\n flex: 1;\n}\n\n@media (min-width: 638px) {\n .puck-ai-chat-header {\n padding: 12px 8px 12px 16px;\n }\n}\n\n/* Placeholder (shown when no messages, inside the chat body default slot) */\n.puck-ai-chat-placeholder {\n align-items: center;\n box-sizing: border-box;\n color: var(--puck-color-grey-06);\n display: none;\n justify-content: center;\n flex-direction: column;\n height: 100%;\n text-align: center;\n padding: 32px;\n gap: 8px;\n}\n\n@media (min-width: 638px) {\n .puck-ai-chat-placeholder {\n display: flex;\n }\n}\n\n.puck-ai-chat-actions {\n display: flex;\n gap: 8px;\n justify-content: center;\n flex-wrap: wrap;\n margin-top: 4px;\n}\n\n.puck-ai-chat-action,\n.puck-ai-chat-action-outlined {\n border: 1px solid var(--puck-color-azure-04);\n border-radius: 16px;\n padding: 4px 12px;\n font-size: 12px;\n cursor: pointer;\n}\n\n.puck-ai-chat-action {\n background: var(--puck-color-azure-04);\n color: white;\n}\n\n.puck-ai-chat-action:hover {\n opacity: 0.8;\n}\n\n.puck-ai-chat-action-outlined {\n background: transparent;\n color: var(--puck-color-azure-04);\n}\n\n.puck-ai-chat-action-outlined:hover {\n background: var(--puck-color-azure-11);\n}\n\n/* ============================================================\n ChatBody\n ============================================================ */\n\n.puck-ai-chatbody {\n --chat-background-color: white;\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0;\n}\n\n.puck-ai-chatbody-inner {\n background-color: var(--chat-background-color);\n display: flex;\n flex-direction: column;\n position: relative;\n /* flex: 1 + min-height: 0 allows the inner to shrink and scroll correctly */\n flex: 1;\n min-height: 0;\n}\n\n.puck-ai-chatbody--has-messages .puck-ai-chatbody-messages {\n display: flex;\n flex-direction: column-reverse;\n padding: 16px;\n overflow: auto;\n flex: 1;\n min-height: 0;\n}\n\n.puck-ai-chatbody-messages {\n flex: 1;\n min-height: 0;\n overflow: auto;\n}\n\n.puck-ai-chatbody-form {\n background-color: white;\n padding: 16px;\n flex-shrink: 0;\n}\n\n.puck-ai-chatbody--hide-input .puck-ai-chatbody-form {\n display: none;\n}\n\n.puck-ai-chatbody--has-messages .puck-ai-chatbody-form {\n border-top: 1px solid var(--puck-color-grey-09);\n}\n\n@media (min-width: 638px) {\n .puck-ai-chatbody-form {\n border-top: 1px solid var(--puck-color-grey-09);\n }\n}\n\n.puck-ai-chatbody-example-prompts {\n align-items: center;\n display: flex;\n flex-wrap: nowrap;\n gap: 6px;\n padding-top: 16px;\n width: 100%;\n overflow-x: auto;\n}\n\n.puck-ai-chatbody-example-prompt {\n align-items: center;\n background: white;\n border: 1px solid var(--puck-color-grey-09);\n border-radius: 48px;\n cursor: pointer;\n display: flex;\n gap: 4px;\n font-size: var(--puck-font-size-xxxs);\n justify-content: center;\n padding: 6px 12px;\n text-wrap: nowrap;\n text-decoration: none;\n color: inherit;\n}\n\n.puck-ai-chatbody-example-prompt:hover {\n background: var(--puck-color-azure-11);\n border-color: var(--puck-color-azure-08);\n color: var(--puck-color-azure-04);\n}\n\n.puck-ai-chatbody-example-prompt-arrow {\n display: flex;\n margin-left: auto;\n}\n\n.puck-ai-chatbody-default {\n overflow-y: auto;\n flex-grow: 1;\n min-height: 0;\n}\n\n.puck-ai-chatbody--has-messages .puck-ai-chatbody-default {\n /* Remove from layout entirely so it doesn't steal height from the messages area */\n display: none;\n}\n\n.puck-ai-chatbody-loader {\n padding: 16px;\n padding-top: 0;\n}\n\n.puck-ai-chatbody-error {\n align-items: center;\n display: flex;\n gap: 8px;\n font-size: var(--puck-font-size-xxs);\n margin: 16px;\n}\n\n.puck-ai-chatbody-error-label {\n color: var(--puck-color-red-04);\n}\n\n.puck-ai-chatbody-error-action {\n margin-left: auto;\n}\n\n/* ============================================================\n ChatMessage\n ============================================================ */\n\n.puck-ai-chat-message {\n font-size: var(--puck-font-size-xs);\n line-height: var(--line-height-s);\n overflow-wrap: break-word;\n}\n\n.puck-ai-chat-message--user-role .puck-ai-chat-message-text {\n background: var(--puck-color-azure-10);\n border-radius: 16px;\n color: var(--puck-color-grey-03);\n margin-left: 24px;\n margin-bottom: 8px;\n margin-top: 8px;\n padding: 12px 16px;\n}\n\n.puck-ai-chat-message ul,\n.puck-ai-chat-message ol {\n list-style: decimal;\n margin: 0;\n margin-bottom: 12px;\n margin-top: 12px;\n padding-left: 32px;\n}\n\n.puck-ai-chat-message li {\n margin-bottom: 8px;\n margin-top: 8px;\n padding-left: 8px;\n}\n\n.puck-ai-chat-message h1,\n.puck-ai-chat-message h2,\n.puck-ai-chat-message h3,\n.puck-ai-chat-message h4,\n.puck-ai-chat-message h5,\n.puck-ai-chat-message h6 {\n font-weight: 600;\n}\n\n.puck-ai-chat-message p {\n margin-bottom: 8px;\n margin-top: 8px;\n}\n\n.puck-ai-chat-message--user-role .puck-ai-chat-message-text > *:first-of-type {\n margin-top: 0;\n}\n\n.puck-ai-chat-message--user-role .puck-ai-chat-message-text > *:last-of-type {\n margin-bottom: 0;\n}\n\n.puck-ai-chat-message a {\n color: var(--puck-color-azure-04);\n font-weight: 600;\n text-decoration: none;\n}\n\n.puck-ai-chat-message a:hover {\n color: var(--puck-color-azure-05);\n}\n\n.puck-ai-chat-message hr {\n border-top: none;\n border-bottom-color: var(--puck-color-grey-09);\n margin-bottom: 16px;\n margin-top: 16px;\n}\n\n.puck-ai-chat-message blockquote {\n margin-bottom: 8px;\n margin-top: 8px;\n margin-left: 0;\n border-left: 2px solid var(--puck-color-grey-09);\n padding-left: 16px;\n}\n\n.puck-ai-chat-message-data {\n background: var(--puck-color-grey-12);\n border: 1px solid var(--puck-color-grey-08);\n border-radius: 16px;\n color: var(--puck-color-grey-05);\n margin-right: 24px;\n padding: 8px 12px;\n margin-top: 4px;\n margin-bottom: 4px;\n}\n\n.puck-ai-chat-message-data-inner {\n align-items: center;\n display: flex;\n gap: 8px;\n}\n\n.puck-ai-chat-message-data-icon {\n display: flex;\n}\n\n/* ============================================================\n Target component banner\n ============================================================ */\n\n.puck-ai-target-banner {\n align-items: center;\n background: var(--puck-color-azure-11);\n border: 1px solid var(--puck-color-azure-09);\n border-radius: 6px;\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n margin-bottom: 8px;\n padding: 6px 10px;\n font-size: var(--puck-font-size-xxxs);\n line-height: 1.4;\n}\n\n.puck-ai-target-banner-label {\n color: var(--puck-color-azure-05);\n font-weight: 600;\n flex-shrink: 0;\n}\n\n.puck-ai-target-banner-name {\n color: var(--puck-color-grey-02);\n font-weight: 600;\n}\n\n.puck-ai-target-banner-id {\n color: var(--puck-color-grey-05);\n font-family: var(--puck-font-family-monospaced, monospace);\n font-size: 11px;\n background: var(--puck-color-azure-10);\n border-radius: 3px;\n padding: 1px 4px;\n /* Truncate very long IDs */\n max-width: 140px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.puck-ai-target-banner-clear {\n appearance: none;\n background: transparent;\n border: none;\n border-radius: 50%;\n color: var(--puck-color-grey-06);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 16px;\n line-height: 1;\n margin-left: auto;\n padding: 0 2px;\n flex-shrink: 0;\n}\n\n.puck-ai-target-banner-clear:hover {\n color: var(--puck-color-grey-02);\n}\n\n/* ============================================================\n PromptForm\n ============================================================ */\n\n.puck-ai-prompt-form {\n --radius: 9px;\n background-color: var(--puck-color-grey-09);\n border-radius: var(--radius);\n width: 100%;\n}\n\n.puck-ai-prompt-form-inner {\n border-radius: var(--radius);\n padding: 1px;\n position: relative;\n}\n\n.puck-ai-prompt-form--dark {\n background-color: var(--puck-color-grey-02);\n box-shadow: none;\n}\n\n@keyframes puck-ai-glow-loop {\n 0% { transform: translate(-50%, -50%) rotate(0deg); }\n 100% { transform: translate(-50%, -50%) rotate(360deg); }\n}\n\n.puck-ai-prompt-form--glow .puck-ai-prompt-form-glow {\n border: 2px solid transparent;\n border-radius: var(--radius);\n -webkit-mask: linear-gradient(transparent, transparent), linear-gradient(white, white);\n mask: linear-gradient(transparent, transparent), linear-gradient(white, white);\n -webkit-mask-clip: padding-box, border-box;\n mask-clip: padding-box, border-box;\n -webkit-mask-composite: intersect;\n mask-composite: intersect;\n pointer-events: none;\n position: absolute;\n inset: -1px;\n z-index: 0;\n overflow: hidden;\n}\n\n.puck-ai-prompt-form--glow .puck-ai-prompt-form-glow::after {\n background: radial-gradient(circle at center, var(--puck-color-azure-06), transparent 50%);\n content: \"\";\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n aspect-ratio: 1;\n width: 200%;\n animation: puck-ai-glow-loop 3s linear infinite;\n}\n\n.puck-ai-prompt-form-form-inner {\n background-color: white;\n border-radius: 8px;\n position: relative;\n}\n\n.puck-ai-prompt-form-input {\n background-color: transparent;\n border: none;\n display: block;\n resize: none;\n color: var(--puck-color-grey-03);\n padding: 12px 16px;\n padding-left: 16px;\n padding-right: 8px;\n padding-bottom: 4px;\n font-family: inherit;\n font-size: var(--puck-font-size-xs);\n line-height: var(--line-height-s);\n width: 100%;\n box-sizing: border-box;\n}\n\n.puck-ai-prompt-form-input:focus {\n outline: none;\n}\n\n.puck-ai-prompt-form-form-inner:has(.puck-ai-prompt-form-input:focus) {\n outline: 2px solid var(--puck-color-azure-04);\n}\n\n.puck-ai-prompt-form--dark .puck-ai-prompt-form-input {\n background-color: var(--puck-color-grey-01);\n color: var(--puck-color-grey-08);\n}\n\n.puck-ai-prompt-form--is-disabled .puck-ai-prompt-form-input {\n background-color: var(--puck-color-grey-12);\n cursor: not-allowed;\n}\n\n.puck-ai-prompt-form-actions {\n align-items: flex-end;\n cursor: text;\n display: flex;\n gap: 8px;\n bottom: 0;\n left: 0;\n right: 0;\n padding: 6px;\n}\n\n.puck-ai-prompt-form-actions-left {\n align-items: center;\n cursor: auto;\n display: flex;\n padding-left: 8px;\n}\n\n.puck-ai-prompt-form-actions-right {\n cursor: auto;\n margin-left: auto;\n}\n\n.puck-ai-prompt-form-action-submit {\n background: var(--puck-color-azure-04);\n border-radius: 48px;\n border: 0;\n color: white;\n display: flex;\n align-items: center;\n justify-content: center;\n align-self: flex-end;\n padding: 4px;\n pointer-events: auto;\n cursor: pointer;\n}\n\n.puck-ai-prompt-form-action-submit:hover {\n background: var(--puck-color-azure-05);\n}\n\n.puck-ai-prompt-form--is-disabled .puck-ai-prompt-form-action-submit {\n background-color: var(--puck-color-grey-06);\n cursor: not-allowed;\n}\n\n.puck-ai-prompt-form--is-loading .puck-ai-prompt-form-action-submit {\n background-color: var(--puck-color-azure-06);\n cursor: not-allowed;\n}\n\n/* ─── Image attachment button ──────────────────────────────────────────────── */\n\n.puck-ai-image-attach-btn {\n align-items: center;\n background: transparent;\n border: 1px solid transparent;\n border-radius: 6px;\n color: var(--puck-color-grey-05);\n cursor: pointer;\n display: flex;\n justify-content: center;\n padding: 5px;\n transition: background 80ms, color 80ms, border-color 80ms;\n}\n\n.puck-ai-image-attach-btn:hover {\n background: var(--puck-color-grey-11);\n border-color: var(--puck-color-grey-09);\n color: var(--puck-color-grey-02);\n}\n\n.puck-ai-image-attach-btn:disabled {\n color: var(--puck-color-grey-08);\n cursor: not-allowed;\n}\n\n/* ─── Drag-over state ───────────────────────────────────────────────────────── */\n\n.puck-ai-prompt-form--drag-over .puck-ai-prompt-form-form-inner {\n border-color: var(--puck-color-azure-05);\n background: var(--puck-color-azure-12);\n outline: 2px dashed var(--puck-color-azure-05);\n}\n\n/* ─── Image thumbnails strip ────────────────────────────────────────────────── */\n\n.puck-ai-image-thumbnails {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n padding: 8px 10px 0;\n}\n\n.puck-ai-image-thumbnail {\n position: relative;\n border-radius: 6px;\n overflow: hidden;\n width: 56px;\n height: 56px;\n border: 1px solid var(--puck-color-grey-09);\n flex-shrink: 0;\n}\n\n.puck-ai-image-thumbnail img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n display: block;\n}\n\n.puck-ai-image-thumbnail-remove {\n position: absolute;\n top: 2px;\n right: 2px;\n background: rgba(0, 0, 0, 0.55);\n border: none;\n border-radius: 50%;\n color: #fff;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 16px;\n height: 16px;\n padding: 0;\n opacity: 0;\n transition: opacity 120ms;\n}\n\n.puck-ai-image-thumbnail:hover .puck-ai-image-thumbnail-remove {\n opacity: 1;\n}\n\n/* ============================================================\n Toggle switch\n ============================================================ */\n\n.puck-ai-toggle {\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n flex-shrink: 0;\n height: 20px;\n position: relative;\n width: 36px;\n}\n\n.puck-ai-toggle-input {\n height: 0;\n opacity: 0;\n position: absolute;\n width: 0;\n}\n\n.puck-ai-toggle-slider {\n background: var(--puck-color-grey-08);\n border-radius: 20px;\n inset: 0;\n position: absolute;\n transition: background 120ms;\n}\n\n.puck-ai-toggle-slider::after {\n background: white;\n border-radius: 50%;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);\n content: '';\n height: 16px;\n left: 2px;\n position: absolute;\n top: 2px;\n transition: left 120ms;\n width: 16px;\n}\n\n.puck-ai-toggle-input:checked + .puck-ai-toggle-slider {\n background: var(--puck-color-azure-04);\n}\n\n.puck-ai-toggle-input:checked + .puck-ai-toggle-slider::after {\n left: 18px;\n}\n\n.puck-ai-toggle-input:focus-visible + .puck-ai-toggle-slider {\n outline: 2px solid var(--puck-color-azure-04);\n outline-offset: 2px;\n}\n\n/* ============================================================\n Settings panel\n ============================================================ */\n\n.puck-ai-settings-scroll {\n flex: 1;\n overflow-y: auto;\n min-height: 0;\n}\n\n.puck-ai-settings {\n display: flex;\n flex-direction: column;\n gap: 24px;\n padding: 16px;\n}\n\n.puck-ai-settings-section {\n display: flex;\n flex-direction: column;\n}\n\n.puck-ai-settings-section-title {\n color: var(--puck-color-grey-05);\n font-size: 11px;\n font-weight: 600;\n letter-spacing: 0.06em;\n margin-bottom: 4px;\n text-transform: uppercase;\n}\n\n.puck-ai-settings-row {\n align-items: center;\n border-bottom: 1px solid var(--puck-color-grey-10);\n display: flex;\n gap: 12px;\n justify-content: space-between;\n padding: 10px 0;\n}\n\n.puck-ai-settings-row:last-child {\n border-bottom: none;\n}\n\n.puck-ai-settings-row--column {\n align-items: flex-start;\n flex-direction: column;\n gap: 8px;\n}\n\n.puck-ai-settings-label {\n color: var(--puck-color-grey-02);\n cursor: pointer;\n display: flex;\n flex-direction: column;\n font-size: var(--puck-font-size-xxxs);\n font-weight: 500;\n gap: 2px;\n}\n\n.puck-ai-settings-hint {\n color: var(--puck-color-grey-06);\n font-size: 11px;\n font-weight: 400;\n}\n\n.puck-ai-settings-select {\n appearance: none;\n background-color: var(--puck-color-grey-11);\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%23767676'/%3E%3C/svg%3E\");\n background-position: right 8px center;\n background-repeat: no-repeat;\n border: 1px solid var(--puck-color-grey-09);\n border-radius: 6px;\n color: var(--puck-color-grey-02);\n cursor: pointer;\n flex-shrink: 0;\n font-family: inherit;\n font-size: var(--puck-font-size-xxxs);\n padding: 5px 28px 5px 8px;\n}\n\n.puck-ai-settings-select:focus {\n outline: 2px solid var(--puck-color-azure-04);\n outline-offset: 2px;\n}\n\n.puck-ai-settings-input-wrap {\n align-items: center;\n background: var(--puck-color-grey-12);\n border: 1px solid var(--puck-color-grey-09);\n border-radius: 6px;\n display: flex;\n overflow: hidden;\n width: 100%;\n}\n\n.puck-ai-settings-input-wrap:focus-within {\n outline: 2px solid var(--puck-color-azure-04);\n outline-offset: 0;\n}\n\n.puck-ai-settings-input {\n background: transparent;\n border: none;\n color: var(--puck-color-grey-02);\n flex: 1;\n font-family: var(--puck-font-family-monospaced, monospace);\n font-size: 11px;\n min-width: 0;\n padding: 7px 8px;\n}\n\n.puck-ai-settings-input:focus {\n outline: none;\n}\n\n.puck-ai-settings-input-action {\n align-items: center;\n appearance: none;\n background: transparent;\n border: none;\n border-left: 1px solid var(--puck-color-grey-09);\n color: var(--puck-color-grey-06);\n cursor: pointer;\n display: flex;\n flex-shrink: 0;\n justify-content: center;\n padding: 7px 8px;\n}\n\n.puck-ai-settings-input-action:hover {\n background: var(--puck-color-grey-11);\n color: var(--puck-color-grey-02);\n}\n\n.puck-ai-settings-link {\n color: var(--puck-color-azure-04);\n font-size: 11px;\n text-decoration: none;\n}\n\n.puck-ai-settings-link:hover {\n color: var(--puck-color-azure-05);\n text-decoration: underline;\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../styles.css"],"sourcesContent":["/* ============================================================\n Color tokens (subset used by plugin-ai)\n ============================================================ */\n:root {\n --puck-color-azure-01: #00175d;\n --puck-color-azure-02: #002c77;\n --puck-color-azure-03: #014292;\n --puck-color-azure-04: #0158ad;\n --puck-color-azure-05: #3479be;\n --puck-color-azure-06: #6499cf;\n --puck-color-azure-08: #abc7e5;\n --puck-color-azure-10: #e7eef7;\n --puck-color-azure-11: #f3f6fb;\n --puck-color-azure-12: #f7faff;\n --puck-color-green-04: #0c680c;\n --puck-color-green-06: #2faa53;\n --puck-color-grey-01: #181818;\n --puck-color-grey-02: #292929;\n --puck-color-grey-03: #404040;\n --puck-color-grey-04: #5a5a5a;\n --puck-color-grey-05: #767676;\n --puck-color-grey-06: #949494;\n --puck-color-grey-07: #ababab;\n --puck-color-grey-08: #c3c3c3;\n --puck-color-grey-09: #dcdcdc;\n --puck-color-grey-10: #efefef;\n --puck-color-grey-11: #f5f5f5;\n --puck-color-grey-12: #fafafa;\n --puck-color-red-02: #6a0a10;\n --puck-color-red-03: #8a1422;\n --puck-color-red-04: #ac1f35;\n --puck-color-red-05: #bf5366;\n --puck-color-black: #000000;\n --puck-color-white: #ffffff;\n --puck-font-size-xxxs: 0.75rem;\n --puck-font-size-xxs: 0.875rem;\n --puck-font-size-xs: 1rem;\n --puck-font-size-s: 1.125rem;\n --puck-font-size-m: 1.3125rem;\n --puck-font-size-base: var(--puck-font-size-xs);\n --line-height-s: 1.333;\n --line-height-m: 1.5;\n}\n\n/* ============================================================\n Loader\n ============================================================ */\n\n@keyframes puck-ai-loader-spin {\n 0% { transform: rotate(0deg) scale(1); }\n 50% { transform: rotate(180deg) scale(0.8); }\n 100% { transform: rotate(360deg) scale(1); }\n}\n\n.puck-ai-loader {\n background: transparent;\n border-radius: 100%;\n border: 2px solid currentColor;\n border-bottom-color: transparent;\n display: inline-block;\n animation: puck-ai-loader-spin 1s 0s infinite linear;\n animation-fill-mode: both;\n}\n\n/* ============================================================\n Icon button\n ============================================================ */\n\n.puck-ai-icon-button {\n appearance: none;\n background: transparent;\n border: none;\n border-radius: 4px;\n color: var(--puck-color-grey-08);\n padding: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n}\n\n.puck-ai-icon-button:hover {\n background-color: var(--puck-color-azure-11);\n color: var(--puck-color-azure-04);\n}\n\n/* ============================================================\n Chat outer panel (outer wrapper)\n ============================================================ */\n\n.puck-ai-chat {\n background: white;\n height: 100%;\n display: flex;\n flex-direction: column;\n text-align: left;\n}\n\n.puck-ai-chat-header {\n align-items: center;\n display: flex;\n gap: 4px;\n padding: 4px 8px 4px 16px;\n font-weight: 600;\n border-bottom: 1px solid var(--puck-color-grey-09);\n flex-shrink: 0;\n}\n\n.puck-ai-chat-header-title {\n flex: 1;\n}\n\n@media (min-width: 638px) {\n .puck-ai-chat-header {\n padding: 12px 8px 12px 16px;\n }\n}\n\n/* Placeholder (shown when no messages, inside the chat body default slot) */\n.puck-ai-chat-placeholder {\n align-items: center;\n box-sizing: border-box;\n color: var(--puck-color-grey-06);\n display: none;\n justify-content: center;\n flex-direction: column;\n height: 100%;\n text-align: center;\n padding: 32px;\n gap: 8px;\n}\n\n@media (min-width: 638px) {\n .puck-ai-chat-placeholder {\n display: flex;\n }\n}\n\n.puck-ai-chat-actions {\n display: flex;\n gap: 8px;\n justify-content: center;\n flex-wrap: wrap;\n margin-top: 4px;\n}\n\n.puck-ai-chat-action,\n.puck-ai-chat-action-outlined {\n border: 1px solid var(--puck-color-azure-04);\n border-radius: 16px;\n padding: 4px 12px;\n font-size: 12px;\n cursor: pointer;\n}\n\n.puck-ai-chat-action {\n background: var(--puck-color-azure-04);\n color: white;\n}\n\n.puck-ai-chat-action:hover {\n opacity: 0.8;\n}\n\n.puck-ai-chat-action-outlined {\n background: transparent;\n color: var(--puck-color-azure-04);\n}\n\n.puck-ai-chat-action-outlined:hover {\n background: var(--puck-color-azure-11);\n}\n\n/* ============================================================\n ChatBody\n ============================================================ */\n\n.puck-ai-chatbody {\n --chat-background-color: white;\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0;\n}\n\n.puck-ai-chatbody-inner {\n background-color: var(--chat-background-color);\n display: flex;\n flex-direction: column;\n position: relative;\n /* flex: 1 + min-height: 0 allows the inner to shrink and scroll correctly */\n flex: 1;\n min-height: 0;\n}\n\n.puck-ai-chatbody--has-messages .puck-ai-chatbody-messages {\n display: flex;\n flex-direction: column-reverse;\n padding: 16px;\n overflow: auto;\n flex: 1;\n min-height: 0;\n}\n\n.puck-ai-chatbody-messages {\n flex: 1;\n min-height: 0;\n overflow: auto;\n}\n\n.puck-ai-chatbody-form {\n background-color: white;\n padding: 16px;\n flex-shrink: 0;\n}\n\n.puck-ai-chatbody--hide-input .puck-ai-chatbody-form {\n display: none;\n}\n\n.puck-ai-chatbody--has-messages .puck-ai-chatbody-form {\n border-top: 1px solid var(--puck-color-grey-09);\n}\n\n@media (min-width: 638px) {\n .puck-ai-chatbody-form {\n border-top: 1px solid var(--puck-color-grey-09);\n }\n}\n\n.puck-ai-chatbody-example-prompts {\n align-items: center;\n display: flex;\n flex-wrap: nowrap;\n gap: 6px;\n padding-top: 16px;\n width: 100%;\n overflow-x: auto;\n}\n\n.puck-ai-chatbody-example-prompt {\n align-items: center;\n background: white;\n border: 1px solid var(--puck-color-grey-09);\n border-radius: 48px;\n cursor: pointer;\n display: flex;\n gap: 4px;\n font-size: var(--puck-font-size-xxxs);\n justify-content: center;\n padding: 6px 12px;\n text-wrap: nowrap;\n text-decoration: none;\n color: inherit;\n}\n\n.puck-ai-chatbody-example-prompt:hover {\n background: var(--puck-color-azure-11);\n border-color: var(--puck-color-azure-08);\n color: var(--puck-color-azure-04);\n}\n\n.puck-ai-chatbody-example-prompt-arrow {\n display: flex;\n margin-left: auto;\n}\n\n.puck-ai-chatbody-default {\n overflow-y: auto;\n flex-grow: 1;\n min-height: 0;\n}\n\n.puck-ai-chatbody--has-messages .puck-ai-chatbody-default {\n /* Remove from layout entirely so it doesn't steal height from the messages area */\n display: none;\n}\n\n.puck-ai-chatbody-loader {\n padding: 16px;\n padding-top: 0;\n}\n\n.puck-ai-chatbody-error {\n align-items: center;\n display: flex;\n gap: 8px;\n font-size: var(--puck-font-size-xxs);\n margin: 16px;\n}\n\n.puck-ai-chatbody-error-label {\n color: var(--puck-color-red-04);\n}\n\n.puck-ai-chatbody-error-action {\n margin-left: auto;\n}\n\n/* ============================================================\n ChatMessage\n ============================================================ */\n\n.puck-ai-chat-message {\n font-size: var(--puck-font-size-xs);\n line-height: var(--line-height-s);\n overflow-wrap: break-word;\n}\n\n.puck-ai-chat-message--user-role .puck-ai-chat-message-text {\n background: var(--puck-color-azure-10);\n border-radius: 16px;\n color: var(--puck-color-grey-03);\n margin-left: 24px;\n margin-bottom: 8px;\n margin-top: 8px;\n padding: 12px 16px;\n}\n\n.puck-ai-chat-message ul,\n.puck-ai-chat-message ol {\n list-style: decimal;\n margin: 0;\n margin-bottom: 12px;\n margin-top: 12px;\n padding-left: 32px;\n}\n\n.puck-ai-chat-message li {\n margin-bottom: 8px;\n margin-top: 8px;\n padding-left: 8px;\n}\n\n.puck-ai-chat-message h1,\n.puck-ai-chat-message h2,\n.puck-ai-chat-message h3,\n.puck-ai-chat-message h4,\n.puck-ai-chat-message h5,\n.puck-ai-chat-message h6 {\n font-weight: 600;\n}\n\n.puck-ai-chat-message p {\n margin-bottom: 8px;\n margin-top: 8px;\n}\n\n.puck-ai-chat-message--user-role .puck-ai-chat-message-text > *:first-of-type {\n margin-top: 0;\n}\n\n.puck-ai-chat-message--user-role .puck-ai-chat-message-text > *:last-of-type {\n margin-bottom: 0;\n}\n\n.puck-ai-chat-message a {\n color: var(--puck-color-azure-04);\n font-weight: 600;\n text-decoration: none;\n}\n\n.puck-ai-chat-message a:hover {\n color: var(--puck-color-azure-05);\n}\n\n.puck-ai-chat-message hr {\n border-top: none;\n border-bottom-color: var(--puck-color-grey-09);\n margin-bottom: 16px;\n margin-top: 16px;\n}\n\n.puck-ai-chat-message blockquote {\n margin-bottom: 8px;\n margin-top: 8px;\n margin-left: 0;\n border-left: 2px solid var(--puck-color-grey-09);\n padding-left: 16px;\n}\n\n.puck-ai-chat-message-data {\n background: var(--puck-color-grey-12);\n border: 1px solid var(--puck-color-grey-08);\n border-radius: 16px;\n color: var(--puck-color-grey-05);\n margin-right: 24px;\n padding: 8px 12px;\n margin-top: 4px;\n margin-bottom: 4px;\n}\n\n.puck-ai-chat-message-data-inner {\n align-items: center;\n display: flex;\n gap: 8px;\n}\n\n.puck-ai-chat-message-data-icon {\n display: flex;\n}\n\n.puck-ai-chat-message-file {\n margin-bottom: 8px;\n margin-top: 8px;\n}\n\n.puck-ai-chat-message-file--user {\n margin-left: 24px;\n}\n\n.puck-ai-chat-message-file-image {\n border-radius: 12px;\n display: block;\n max-height: 220px;\n max-width: 100%;\n object-fit: contain;\n}\n\n.puck-ai-chat-message-file--user .puck-ai-chat-message-file-image {\n background: var(--puck-color-azure-10);\n border: 1px solid var(--puck-color-azure-08);\n}\n\n.puck-ai-chat-message-file-caption {\n color: var(--puck-color-grey-05);\n display: block;\n font-size: var(--puck-font-size-xxxs);\n margin-top: 4px;\n}\n\n.puck-ai-chat-message-file--document {\n background: var(--puck-color-azure-10);\n border-radius: 12px;\n padding: 8px 12px;\n}\n\n.puck-ai-chat-message-file--document a {\n word-break: break-all;\n}\n\n.puck-ai-chat-message-reasoning {\n background: var(--puck-color-grey-11);\n border: 1px solid var(--puck-color-grey-09);\n border-radius: 10px;\n color: var(--puck-color-grey-04);\n font-size: var(--puck-font-size-xxxs);\n margin-bottom: 8px;\n margin-top: 8px;\n padding: 6px 10px;\n}\n\n.puck-ai-chat-message-reasoning-summary {\n cursor: pointer;\n font-weight: 600;\n list-style: none;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.puck-ai-chat-message-reasoning-summary::-webkit-details-marker {\n display: none;\n}\n\n.puck-ai-chat-message-reasoning-streaming {\n display: inline-flex;\n align-items: center;\n}\n\n.puck-ai-chat-message-reasoning-body {\n border-top: 1px solid var(--puck-color-grey-09);\n margin-top: 8px;\n padding-top: 8px;\n}\n\n.puck-ai-chat-message-reasoning-body p {\n margin: 0 0 6px;\n}\n\n.puck-ai-chat-message-source {\n color: var(--puck-color-grey-05);\n font-size: var(--puck-font-size-xxxs);\n margin-bottom: 6px;\n margin-top: 6px;\n}\n\n.puck-ai-chat-message-source-meta {\n color: var(--puck-color-grey-07);\n margin-left: 6px;\n}\n\n.puck-ai-chat-message-step {\n border-top: 1px dashed var(--puck-color-grey-09);\n margin: 8px 0;\n opacity: 0.6;\n}\n\n.puck-ai-chat-message-tool {\n background: var(--puck-color-grey-12);\n border: 1px solid var(--puck-color-grey-09);\n border-radius: 12px;\n margin-bottom: 8px;\n margin-top: 8px;\n margin-right: 24px;\n padding: 8px 12px;\n}\n\n.puck-ai-chat-message-tool-header {\n align-items: center;\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n}\n\n.puck-ai-chat-message-tool-icon {\n color: var(--puck-color-grey-06);\n display: flex;\n}\n\n.puck-ai-chat-message-tool-name {\n font-weight: 600;\n color: var(--puck-color-grey-03);\n}\n\n.puck-ai-chat-message-tool-state {\n align-items: center;\n color: var(--puck-color-grey-05);\n display: inline-flex;\n font-size: var(--puck-font-size-xxxs);\n gap: 6px;\n margin-left: auto;\n}\n\n.puck-ai-chat-message-tool-error {\n color: var(--puck-color-red-04);\n font-size: var(--puck-font-size-xxxs);\n margin-top: 6px;\n}\n\n.puck-ai-chat-message-tool-details {\n margin-top: 8px;\n}\n\n.puck-ai-chat-message-tool-details summary {\n color: var(--puck-color-azure-04);\n cursor: pointer;\n font-size: var(--puck-font-size-xxxs);\n font-weight: 600;\n list-style: none;\n}\n\n.puck-ai-chat-message-tool-details summary::-webkit-details-marker {\n display: none;\n}\n\n.puck-ai-chat-message-tool-pre {\n background: var(--puck-color-grey-11);\n border-radius: 6px;\n font-size: 11px;\n line-height: 1.45;\n margin-top: 6px;\n max-height: 200px;\n overflow: auto;\n padding: 8px;\n white-space: pre-wrap;\n word-break: break-word;\n}\n\n.puck-ai-chat-message-data-summary {\n color: var(--puck-color-grey-05);\n font-size: var(--puck-font-size-xxxs);\n margin-bottom: 6px;\n margin-top: 6px;\n}\n\n.puck-ai-chat-message-data-raw {\n margin-bottom: 6px;\n margin-top: 6px;\n}\n\n.puck-ai-chat-message-data-raw summary {\n color: var(--puck-color-grey-05);\n cursor: pointer;\n font-size: var(--puck-font-size-xxxs);\n list-style: none;\n}\n\n.puck-ai-chat-message-data-raw summary::-webkit-details-marker {\n display: none;\n}\n\n/* ============================================================\n Target component banner\n ============================================================ */\n\n.puck-ai-target-banner {\n align-items: center;\n background: var(--puck-color-azure-11);\n border: 1px solid var(--puck-color-azure-09);\n border-radius: 6px;\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n margin-bottom: 8px;\n padding: 6px 10px;\n font-size: var(--puck-font-size-xxxs);\n line-height: 1.4;\n}\n\n.puck-ai-target-banner-label {\n color: var(--puck-color-azure-05);\n font-weight: 600;\n flex-shrink: 0;\n}\n\n.puck-ai-target-banner-name {\n color: var(--puck-color-grey-02);\n font-weight: 600;\n}\n\n.puck-ai-target-banner-id {\n color: var(--puck-color-grey-05);\n font-family: var(--puck-font-family-monospaced, monospace);\n font-size: 11px;\n background: var(--puck-color-azure-10);\n border-radius: 3px;\n padding: 1px 4px;\n /* Truncate very long IDs */\n max-width: 140px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.puck-ai-target-banner-clear {\n appearance: none;\n background: transparent;\n border: none;\n border-radius: 50%;\n color: var(--puck-color-grey-06);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 16px;\n line-height: 1;\n margin-left: auto;\n padding: 0 2px;\n flex-shrink: 0;\n}\n\n.puck-ai-target-banner-clear:hover {\n color: var(--puck-color-grey-02);\n}\n\n/* ============================================================\n PromptForm\n ============================================================ */\n\n.puck-ai-prompt-form {\n --radius: 9px;\n background-color: var(--puck-color-grey-09);\n border-radius: var(--radius);\n width: 100%;\n}\n\n.puck-ai-prompt-form-inner {\n border-radius: var(--radius);\n padding: 1px;\n position: relative;\n}\n\n.puck-ai-prompt-form--dark {\n background-color: var(--puck-color-grey-02);\n box-shadow: none;\n}\n\n@keyframes puck-ai-glow-loop {\n 0% { transform: translate(-50%, -50%) rotate(0deg); }\n 100% { transform: translate(-50%, -50%) rotate(360deg); }\n}\n\n.puck-ai-prompt-form--glow .puck-ai-prompt-form-glow {\n border: 2px solid transparent;\n border-radius: var(--radius);\n -webkit-mask: linear-gradient(transparent, transparent), linear-gradient(white, white);\n mask: linear-gradient(transparent, transparent), linear-gradient(white, white);\n -webkit-mask-clip: padding-box, border-box;\n mask-clip: padding-box, border-box;\n -webkit-mask-composite: intersect;\n mask-composite: intersect;\n pointer-events: none;\n position: absolute;\n inset: -1px;\n z-index: 0;\n overflow: hidden;\n}\n\n.puck-ai-prompt-form--glow .puck-ai-prompt-form-glow::after {\n background: radial-gradient(circle at center, var(--puck-color-azure-06), transparent 50%);\n content: \"\";\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n aspect-ratio: 1;\n width: 200%;\n animation: puck-ai-glow-loop 3s linear infinite;\n}\n\n.puck-ai-prompt-form-form-inner {\n background-color: white;\n border-radius: 8px;\n position: relative;\n}\n\n.puck-ai-prompt-form-input {\n background-color: transparent;\n border: none;\n display: block;\n resize: none;\n color: var(--puck-color-grey-03);\n padding: 12px 16px;\n padding-left: 16px;\n padding-right: 8px;\n padding-bottom: 4px;\n font-family: inherit;\n font-size: var(--puck-font-size-xs);\n line-height: var(--line-height-s);\n width: 100%;\n box-sizing: border-box;\n}\n\n.puck-ai-prompt-form-input:focus {\n outline: none;\n}\n\n.puck-ai-prompt-form-form-inner:has(.puck-ai-prompt-form-input:focus) {\n outline: 2px solid var(--puck-color-azure-04);\n}\n\n.puck-ai-prompt-form--dark .puck-ai-prompt-form-input {\n background-color: var(--puck-color-grey-01);\n color: var(--puck-color-grey-08);\n}\n\n.puck-ai-prompt-form--is-disabled .puck-ai-prompt-form-input {\n background-color: var(--puck-color-grey-12);\n cursor: not-allowed;\n}\n\n.puck-ai-prompt-form-actions {\n align-items: flex-end;\n cursor: text;\n display: flex;\n gap: 8px;\n bottom: 0;\n left: 0;\n right: 0;\n padding: 6px;\n}\n\n.puck-ai-prompt-form-actions-left {\n align-items: center;\n cursor: auto;\n display: flex;\n padding-left: 8px;\n}\n\n.puck-ai-prompt-form-actions-right {\n cursor: auto;\n margin-left: auto;\n}\n\n.puck-ai-prompt-form-action-submit {\n background: var(--puck-color-azure-04);\n border-radius: 48px;\n border: 0;\n color: white;\n display: flex;\n align-items: center;\n justify-content: center;\n align-self: flex-end;\n padding: 4px;\n pointer-events: auto;\n cursor: pointer;\n}\n\n.puck-ai-prompt-form-action-submit:hover {\n background: var(--puck-color-azure-05);\n}\n\n.puck-ai-prompt-form--is-disabled .puck-ai-prompt-form-action-submit {\n background-color: var(--puck-color-grey-06);\n cursor: not-allowed;\n}\n\n.puck-ai-prompt-form--is-loading .puck-ai-prompt-form-action-submit {\n background-color: var(--puck-color-azure-06);\n cursor: not-allowed;\n}\n\n/* ─── Image attachment button ──────────────────────────────────────────────── */\n\n.puck-ai-image-attach-btn {\n align-items: center;\n background: transparent;\n border: 1px solid transparent;\n border-radius: 6px;\n color: var(--puck-color-grey-05);\n cursor: pointer;\n display: flex;\n justify-content: center;\n padding: 5px;\n transition: background 80ms, color 80ms, border-color 80ms;\n}\n\n.puck-ai-image-attach-btn:hover {\n background: var(--puck-color-grey-11);\n border-color: var(--puck-color-grey-09);\n color: var(--puck-color-grey-02);\n}\n\n.puck-ai-image-attach-btn:disabled {\n color: var(--puck-color-grey-08);\n cursor: not-allowed;\n}\n\n/* ─── Drag-over state ───────────────────────────────────────────────────────── */\n\n.puck-ai-prompt-form--drag-over .puck-ai-prompt-form-form-inner {\n border-color: var(--puck-color-azure-05);\n background: var(--puck-color-azure-12);\n outline: 2px dashed var(--puck-color-azure-05);\n}\n\n/* ─── Image thumbnails strip ────────────────────────────────────────────────── */\n\n.puck-ai-image-thumbnails {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n padding: 8px 10px 0;\n}\n\n.puck-ai-image-thumbnail {\n position: relative;\n border-radius: 6px;\n overflow: hidden;\n width: 56px;\n height: 56px;\n border: 1px solid var(--puck-color-grey-09);\n flex-shrink: 0;\n}\n\n.puck-ai-image-thumbnail img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n display: block;\n}\n\n.puck-ai-image-thumbnail-remove {\n position: absolute;\n top: 2px;\n right: 2px;\n background: rgba(0, 0, 0, 0.55);\n border: none;\n border-radius: 50%;\n color: #fff;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 16px;\n height: 16px;\n padding: 0;\n opacity: 0;\n transition: opacity 120ms;\n}\n\n.puck-ai-image-thumbnail:hover .puck-ai-image-thumbnail-remove {\n opacity: 1;\n}\n\n/* ============================================================\n Toggle switch\n ============================================================ */\n\n.puck-ai-toggle {\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n flex-shrink: 0;\n height: 20px;\n position: relative;\n width: 36px;\n}\n\n.puck-ai-toggle-input {\n height: 0;\n opacity: 0;\n position: absolute;\n width: 0;\n}\n\n.puck-ai-toggle-slider {\n background: var(--puck-color-grey-08);\n border-radius: 20px;\n inset: 0;\n position: absolute;\n transition: background 120ms;\n}\n\n.puck-ai-toggle-slider::after {\n background: white;\n border-radius: 50%;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);\n content: '';\n height: 16px;\n left: 2px;\n position: absolute;\n top: 2px;\n transition: left 120ms;\n width: 16px;\n}\n\n.puck-ai-toggle-input:checked + .puck-ai-toggle-slider {\n background: var(--puck-color-azure-04);\n}\n\n.puck-ai-toggle-input:checked + .puck-ai-toggle-slider::after {\n left: 18px;\n}\n\n.puck-ai-toggle-input:focus-visible + .puck-ai-toggle-slider {\n outline: 2px solid var(--puck-color-azure-04);\n outline-offset: 2px;\n}\n\n/* ============================================================\n Settings panel\n ============================================================ */\n\n.puck-ai-settings-scroll {\n flex: 1;\n overflow-y: auto;\n min-height: 0;\n}\n\n.puck-ai-settings {\n display: flex;\n flex-direction: column;\n gap: 24px;\n padding: 16px;\n}\n\n.puck-ai-settings-section {\n display: flex;\n flex-direction: column;\n}\n\n.puck-ai-settings-section-title {\n color: var(--puck-color-grey-05);\n font-size: 11px;\n font-weight: 600;\n letter-spacing: 0.06em;\n margin-bottom: 4px;\n text-transform: uppercase;\n}\n\n.puck-ai-settings-row {\n align-items: center;\n border-bottom: 1px solid var(--puck-color-grey-10);\n display: flex;\n gap: 12px;\n justify-content: space-between;\n padding: 10px 0;\n}\n\n.puck-ai-settings-row:last-child {\n border-bottom: none;\n}\n\n.puck-ai-settings-row--column {\n align-items: flex-start;\n flex-direction: column;\n gap: 8px;\n}\n\n.puck-ai-settings-label {\n color: var(--puck-color-grey-02);\n cursor: pointer;\n display: flex;\n flex-direction: column;\n font-size: var(--puck-font-size-xxxs);\n font-weight: 500;\n gap: 2px;\n}\n\n.puck-ai-settings-hint {\n color: var(--puck-color-grey-06);\n font-size: 11px;\n font-weight: 400;\n}\n\n.puck-ai-settings-select {\n appearance: none;\n background-color: var(--puck-color-grey-11);\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%23767676'/%3E%3C/svg%3E\");\n background-position: right 8px center;\n background-repeat: no-repeat;\n border: 1px solid var(--puck-color-grey-09);\n border-radius: 6px;\n color: var(--puck-color-grey-02);\n cursor: pointer;\n flex-shrink: 0;\n font-family: inherit;\n font-size: var(--puck-font-size-xxxs);\n padding: 5px 28px 5px 8px;\n}\n\n.puck-ai-settings-select:focus {\n outline: 2px solid var(--puck-color-azure-04);\n outline-offset: 2px;\n}\n\n.puck-ai-settings-input-wrap {\n align-items: center;\n background: var(--puck-color-grey-12);\n border: 1px solid var(--puck-color-grey-09);\n border-radius: 6px;\n display: flex;\n overflow: hidden;\n width: 100%;\n}\n\n.puck-ai-settings-input-wrap:focus-within {\n outline: 2px solid var(--puck-color-azure-04);\n outline-offset: 0;\n}\n\n.puck-ai-settings-input {\n background: transparent;\n border: none;\n color: var(--puck-color-grey-02);\n flex: 1;\n font-family: var(--puck-font-family-monospaced, monospace);\n font-size: 11px;\n min-width: 0;\n padding: 7px 8px;\n}\n\n.puck-ai-settings-input:focus {\n outline: none;\n}\n\n.puck-ai-settings-input-action {\n align-items: center;\n appearance: none;\n background: transparent;\n border: none;\n border-left: 1px solid var(--puck-color-grey-09);\n color: var(--puck-color-grey-06);\n cursor: pointer;\n display: flex;\n flex-shrink: 0;\n justify-content: center;\n padding: 7px 8px;\n}\n\n.puck-ai-settings-input-action:hover {\n background: var(--puck-color-grey-11);\n color: var(--puck-color-grey-02);\n}\n\n.puck-ai-settings-link {\n color: var(--puck-color-azure-04);\n font-size: 11px;\n text-decoration: none;\n}\n\n.puck-ai-settings-link:hover {\n color: var(--puck-color-azure-05);\n text-decoration: underline;\n}\n\n.puck-ai-settings-clear-chat {\n align-items: center;\n align-self: flex-start;\n appearance: none;\n background: var(--puck-color-white);\n border: 1px solid var(--puck-color-red-04);\n border-radius: 6px;\n color: var(--puck-color-red-04);\n cursor: pointer;\n display: inline-flex;\n font-family: inherit;\n font-size: var(--puck-font-size-xxxs);\n font-weight: 600;\n gap: 8px;\n margin-top: 4px;\n padding: 8px 12px;\n}\n\n.puck-ai-settings-clear-chat:hover:not(:disabled) {\n background: var(--puck-color-grey-12);\n}\n\n.puck-ai-settings-clear-chat:focus-visible {\n outline: 2px solid var(--puck-color-azure-04);\n outline-offset: 2px;\n}\n\n.puck-ai-settings-clear-chat:disabled {\n cursor: not-allowed;\n opacity: 0.45;\n}\n"],"mappings":"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","names":[]}
package/dist/index.js CHANGED
@@ -260,6 +260,15 @@ var Settings = createLucideIcon("Settings", [
260
260
  ["circle", { cx: "12", cy: "12", r: "3", key: "1v7zrd" }]
261
261
  ]);
262
262
 
263
+ // ../../node_modules/.pnpm/lucide-react@0.452.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/trash-2.js
264
+ var Trash2 = createLucideIcon("Trash2", [
265
+ ["path", { d: "M3 6h18", key: "d0wm0j" }],
266
+ ["path", { d: "M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6", key: "4alrt4" }],
267
+ ["path", { d: "M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2", key: "v07s0e" }],
268
+ ["line", { x1: "10", x2: "10", y1: "11", y2: "17", key: "1uufr5" }],
269
+ ["line", { x1: "14", x2: "14", y1: "11", y2: "17", key: "xtxkd" }]
270
+ ]);
271
+
263
272
  // ../../node_modules/.pnpm/lucide-react@0.452.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/triangle-alert.js
264
273
  var TriangleAlert = createLucideIcon("TriangleAlert", [
265
274
  [
@@ -273,6 +282,17 @@ var TriangleAlert = createLucideIcon("TriangleAlert", [
273
282
  ["path", { d: "M12 17h.01", key: "p32p05" }]
274
283
  ]);
275
284
 
285
+ // ../../node_modules/.pnpm/lucide-react@0.452.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/wrench.js
286
+ var Wrench = createLucideIcon("Wrench", [
287
+ [
288
+ "path",
289
+ {
290
+ d: "M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z",
291
+ key: "cbrjhi"
292
+ }
293
+ ]
294
+ ]);
295
+
276
296
  // ../../node_modules/.pnpm/lucide-react@0.452.0_react@19.2.4/node_modules/lucide-react/dist/esm/icons/x.js
277
297
  var X = createLucideIcon("X", [
278
298
  ["path", { d: "M18 6 6 18", key: "1bl5f8" }],
@@ -525,20 +545,165 @@ function ToolStatusDisplay({ status }) {
525
545
  function PuckTool({
526
546
  toolCallId,
527
547
  output,
548
+ status: mergedStatus,
528
549
  defaultLabel = "Thinking..."
529
550
  }) {
530
551
  const toolStatusMap = (0, import_react4.useContext)(toolStatusContext);
531
552
  const contextStatus = toolStatusMap[toolCallId];
532
553
  const outputObj = output;
533
- const status = outputObj && "status" in outputObj ? outputObj.status : contextStatus != null ? contextStatus : { loading: true, label: defaultLabel };
554
+ const status = mergedStatus != null ? mergedStatus : outputObj && "status" in outputObj ? outputObj.status : contextStatus != null ? contextStatus : { loading: true, label: defaultLabel };
534
555
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ToolStatusDisplay, { status });
535
556
  }
557
+ function safeJsonPreview(value, maxLen = 4e3) {
558
+ try {
559
+ const s = JSON.stringify(value, null, 2);
560
+ if (s.length <= maxLen) return s;
561
+ return `${s.slice(0, maxLen)}
562
+ \u2026`;
563
+ } catch (e) {
564
+ return String(value);
565
+ }
566
+ }
567
+ function FileMessagePart({
568
+ part,
569
+ role
570
+ }) {
571
+ var _a, _b;
572
+ const isImage = part.mediaType.startsWith("image/");
573
+ if (isImage) {
574
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
575
+ "div",
576
+ {
577
+ className: `puck-ai-chat-message-file${role === "user" ? " puck-ai-chat-message-file--user" : ""}`,
578
+ children: [
579
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
580
+ "img",
581
+ {
582
+ src: part.url,
583
+ alt: (_a = part.filename) != null ? _a : "Attached image",
584
+ className: "puck-ai-chat-message-file-image"
585
+ }
586
+ ),
587
+ part.filename ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "puck-ai-chat-message-file-caption", children: part.filename }) : null
588
+ ]
589
+ }
590
+ );
591
+ }
592
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "puck-ai-chat-message-file puck-ai-chat-message-file--document", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("a", { href: part.url, target: "_blank", rel: "noopener noreferrer", download: part.filename, children: (_b = part.filename) != null ? _b : part.mediaType }) });
593
+ }
594
+ function ReasoningMessagePart({ part }) {
595
+ const streaming = part.state === "streaming";
596
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("details", { className: "puck-ai-chat-message-reasoning", open: streaming, children: [
597
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("summary", { className: "puck-ai-chat-message-reasoning-summary", children: [
598
+ "Reasoning",
599
+ streaming ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "puck-ai-chat-message-reasoning-streaming", "aria-live": "polite", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Loader, { size: 12 }) }) : null
600
+ ] }),
601
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "puck-ai-chat-message-reasoning-body", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react_markdown.default, { children: part.text }) })
602
+ ] });
603
+ }
604
+ function SdkToolInvocation({ part }) {
605
+ const name = (0, import_ai.getToolName)(part);
606
+ const state = part.state;
607
+ let stateLabel;
608
+ if (state === "input-streaming") stateLabel = "Preparing\u2026";
609
+ else if (state === "input-available") stateLabel = "Running\u2026";
610
+ else if (state === "output-available") stateLabel = "Done";
611
+ else if (state === "output-error") stateLabel = "Error";
612
+ else if (state === "approval-requested") stateLabel = "Awaiting approval";
613
+ else if (state === "approval-responded") stateLabel = "Approval recorded";
614
+ else if (state === "output-denied") stateLabel = "Denied";
615
+ else stateLabel = state;
616
+ const loading = state === "input-streaming" || state === "input-available" || state === "approval-requested";
617
+ const input = "input" in part ? part.input : void 0;
618
+ const output = "output" in part ? part.output : void 0;
619
+ const errorText = "errorText" in part ? part.errorText : void 0;
620
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "puck-ai-chat-message-tool", children: [
621
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "puck-ai-chat-message-tool-header", children: [
622
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "puck-ai-chat-message-tool-icon", "aria-hidden": true, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Wrench, { size: 14 }) }),
623
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "puck-ai-chat-message-tool-name", children: name }),
624
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", { className: "puck-ai-chat-message-tool-state", children: [
625
+ loading ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Loader, { size: 12 }) : null,
626
+ stateLabel
627
+ ] })
628
+ ] }),
629
+ state === "output-error" && errorText ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "puck-ai-chat-message-tool-error", children: errorText }) : null,
630
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("details", { className: "puck-ai-chat-message-tool-details", children: [
631
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("summary", { children: "Input / output" }),
632
+ input !== void 0 ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("pre", { className: "puck-ai-chat-message-tool-pre", children: safeJsonPreview(input) }) : null,
633
+ state === "output-available" && output !== void 0 ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("pre", { className: "puck-ai-chat-message-tool-pre", children: safeJsonPreview(output) }) : null
634
+ ] })
635
+ ] });
636
+ }
637
+ function DataMessagePart({ part }) {
638
+ var _a, _b, _c, _d;
639
+ if (part.type === "data-puck-actions") {
640
+ const actions = part.data;
641
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "puck-ai-chat-message-data-summary", children: [
642
+ "Applied ",
643
+ actions.length,
644
+ " editor action",
645
+ actions.length === 1 ? "" : "s"
646
+ ] });
647
+ }
648
+ if (part.type === "data-build-op") {
649
+ const op = part.data;
650
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "puck-ai-chat-message-data-summary", children: [
651
+ "Build operation: ",
652
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("code", { children: op.op })
653
+ ] });
654
+ }
655
+ if (part.type === "data-finish") {
656
+ const d = part.data;
657
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "puck-ai-chat-message-data-summary", children: [
658
+ "Tokens: in ",
659
+ (_b = (_a = d.tokenUsage) == null ? void 0 : _a.inputTokens) != null ? _b : "\u2014",
660
+ " \xB7 out ",
661
+ (_d = (_c = d.tokenUsage) == null ? void 0 : _c.outputTokens) != null ? _d : "\u2014",
662
+ d.totalCost !== void 0 ? ` \xB7 cost ${d.totalCost}` : ""
663
+ ] });
664
+ }
665
+ if (part.type === "data-page") {
666
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "puck-ai-chat-message-data-summary", children: "Page snapshot attached" });
667
+ }
668
+ if (part.type === "data-new-chat-created" || part.type === "data-tool-status" || part.type === "data-send-screenshot") {
669
+ return null;
670
+ }
671
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("details", { className: "puck-ai-chat-message-data-raw", children: [
672
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("summary", { children: part.type.replace(/^data-/, "") }),
673
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("pre", { className: "puck-ai-chat-message-tool-pre", children: safeJsonPreview(part.data) })
674
+ ] });
675
+ }
536
676
  function ChatMessagePart({ part, role }) {
537
- if (part.type === "text") {
677
+ var _a;
678
+ if ((0, import_ai.isTextUIPart)(part)) {
538
679
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "puck-ai-chat-message-text", children: role === "assistant" || role === "user" ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react_markdown.default, { children: part.text }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { children: part.text }) });
539
680
  }
540
- if (part.type === "tool-createPage" || part.type === "tool-updatePage" || part.type === "tool-userTool") {
541
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(PuckTool, __spreadValues({}, part));
681
+ if ((0, import_ai.isReasoningUIPart)(part)) {
682
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ReasoningMessagePart, { part });
683
+ }
684
+ if ((0, import_ai.isFileUIPart)(part)) {
685
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(FileMessagePart, { part, role });
686
+ }
687
+ if (part.type === "source-url") {
688
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "puck-ai-chat-message-source", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("a", { href: part.url, target: "_blank", rel: "noopener noreferrer", children: (_a = part.title) != null ? _a : part.url }) });
689
+ }
690
+ if (part.type === "source-document") {
691
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "puck-ai-chat-message-source", children: [
692
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { title: part.filename, children: part.title }),
693
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "puck-ai-chat-message-source-meta", children: part.mediaType })
694
+ ] });
695
+ }
696
+ if (part.type === "step-start") {
697
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "puck-ai-chat-message-step", "aria-hidden": true });
698
+ }
699
+ if ((0, import_ai.isToolUIPart)(part)) {
700
+ if (part.type === "tool-createPage" || part.type === "tool-updatePage" || part.type === "tool-userTool") {
701
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(PuckTool, __spreadValues({}, part));
702
+ }
703
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SdkToolInvocation, { part });
704
+ }
705
+ if ((0, import_ai.isDataUIPart)(part)) {
706
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(DataMessagePart, { part });
542
707
  }
543
708
  return null;
544
709
  }
@@ -1012,7 +1177,9 @@ function Toggle({
1012
1177
  }
1013
1178
  function SettingsPanel({
1014
1179
  settings,
1015
- onChange
1180
+ onChange,
1181
+ onClearChatHistory,
1182
+ hasChatMessages
1016
1183
  }) {
1017
1184
  const [showToken, setShowToken] = (0, import_react4.useState)(false);
1018
1185
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "puck-ai-settings-scroll", children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "puck-ai-settings", children: [
@@ -1158,6 +1325,29 @@ function SettingsPanel({
1158
1325
  ),
1159
1326
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "puck-ai-settings-hint", style: { marginTop: 4 }, children: "Paste a Figma URL in chat to generate from your design. Token overrides server config." })
1160
1327
  ] })
1328
+ ] }),
1329
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "puck-ai-settings-section", children: [
1330
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "puck-ai-settings-section-title", children: "Chat" }),
1331
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "puck-ai-settings-row puck-ai-settings-row--column", children: [
1332
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("label", { className: "puck-ai-settings-label", htmlFor: "puck-ai-clear-chat", children: [
1333
+ "Clear chat history",
1334
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "puck-ai-settings-hint", children: "Remove all messages and reset the conversation context for this session." })
1335
+ ] }),
1336
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
1337
+ "button",
1338
+ {
1339
+ id: "puck-ai-clear-chat",
1340
+ type: "button",
1341
+ className: "puck-ai-settings-clear-chat",
1342
+ disabled: !hasChatMessages,
1343
+ onClick: onClearChatHistory,
1344
+ children: [
1345
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Trash2, { size: 14, "aria-hidden": true }),
1346
+ "Clear messages"
1347
+ ]
1348
+ }
1349
+ )
1350
+ ] })
1161
1351
  ] })
1162
1352
  ] }) });
1163
1353
  }
@@ -1399,6 +1589,17 @@ function Chat({
1399
1589
  })
1400
1590
  }));
1401
1591
  }, [messages, toolStatus]);
1592
+ const handleClearChatHistory = (0, import_react4.useCallback)(() => {
1593
+ if (!window.confirm("Clear all messages in this chat?")) return;
1594
+ setMessages([]);
1595
+ setToolStatus({});
1596
+ setError(void 0);
1597
+ localChatId.current = "";
1598
+ setPromptValue("");
1599
+ setAttachedImages([]);
1600
+ pendingSendImagesRef.current = [];
1601
+ setForcedStatus(void 0);
1602
+ }, [setMessages]);
1402
1603
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "puck-ai-chat", ref: pluginRef, children: [
1403
1604
  /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "puck-ai-chat-header", children: [
1404
1605
  showSettings && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
@@ -1423,7 +1624,15 @@ function Chat({
1423
1624
  }
1424
1625
  )
1425
1626
  ] }),
1426
- showSettings ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SettingsPanel, { settings: aiSettings, onChange: setAiSettings }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ToolStatusProvider, { value: toolStatus, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
1627
+ showSettings ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
1628
+ SettingsPanel,
1629
+ {
1630
+ settings: aiSettings,
1631
+ onChange: setAiSettings,
1632
+ onClearChatHistory: handleClearChatHistory,
1633
+ hasChatMessages: messages.length > 0
1634
+ }
1635
+ ) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ToolStatusProvider, { value: toolStatus, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
1427
1636
  ChatBody,
1428
1637
  {
1429
1638
  messages: messagesWithStatuses,
@@ -1508,7 +1717,9 @@ lucide-react/dist/esm/icons/eye.js:
1508
1717
  lucide-react/dist/esm/icons/image.js:
1509
1718
  lucide-react/dist/esm/icons/rotate-ccw.js:
1510
1719
  lucide-react/dist/esm/icons/settings.js:
1720
+ lucide-react/dist/esm/icons/trash-2.js:
1511
1721
  lucide-react/dist/esm/icons/triangle-alert.js:
1722
+ lucide-react/dist/esm/icons/wrench.js:
1512
1723
  lucide-react/dist/esm/icons/x.js:
1513
1724
  lucide-react/dist/esm/lucide-react.js:
1514
1725
  (**