puckeditor-plugin-ai 0.6.7 → 0.6.8

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
@@ -791,6 +791,13 @@
791
791
  outline: 2px solid var(--puck-color-azure-04);
792
792
  outline-offset: 2px;
793
793
  }
794
+ .puck-ai-toggle--disabled {
795
+ cursor: not-allowed;
796
+ opacity: 0.45;
797
+ }
798
+ .puck-ai-toggle--disabled .puck-ai-toggle-input:disabled + .puck-ai-toggle-slider {
799
+ background: var(--puck-color-grey-08);
800
+ }
794
801
  .puck-ai-settings-scroll {
795
802
  flex: 1;
796
803
  overflow-y: auto;
@@ -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.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":[]}
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.puck-ai-toggle--disabled {\n cursor: not-allowed;\n opacity: 0.45;\n}\n\n.puck-ai-toggle--disabled .puck-ai-toggle-input:disabled + .puck-ai-toggle-slider {\n background: var(--puck-color-grey-08);\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.d.mts CHANGED
@@ -189,9 +189,16 @@ type AiSettings = {
189
189
  urlContext: boolean;
190
190
  googleSearch: boolean;
191
191
  enterpriseWebSearch: boolean;
192
+ /**
193
+ * When a migration source URL is present, run Browser Rendering (Puppeteer/Worker) to capture
194
+ * a viewport screenshot and DOM bundle for the model. When off, migration URLs still enable
195
+ * URL context only — no `runBrowserMigrationPipeline` on the server.
196
+ */
197
+ browserCapture: boolean;
192
198
  /**
193
199
  * When migrating from a page URL, run the full browser pipeline (DOM bundle + structured IR).
194
200
  * Slower and uses more Worker time; leave off for screenshot-only + Vertex url_context.
201
+ * Only applies when {@link AiSettings.browserCapture} is enabled.
195
202
  */
196
203
  pageMigrationIr: boolean;
197
204
  figmaToken: string;
package/dist/index.d.ts CHANGED
@@ -189,9 +189,16 @@ type AiSettings = {
189
189
  urlContext: boolean;
190
190
  googleSearch: boolean;
191
191
  enterpriseWebSearch: boolean;
192
+ /**
193
+ * When a migration source URL is present, run Browser Rendering (Puppeteer/Worker) to capture
194
+ * a viewport screenshot and DOM bundle for the model. When off, migration URLs still enable
195
+ * URL context only — no `runBrowserMigrationPipeline` on the server.
196
+ */
197
+ browserCapture: boolean;
192
198
  /**
193
199
  * When migrating from a page URL, run the full browser pipeline (DOM bundle + structured IR).
194
200
  * Slower and uses more Worker time; leave off for screenshot-only + Vertex url_context.
201
+ * Only applies when {@link AiSettings.browserCapture} is enabled.
195
202
  */
196
203
  pageMigrationIr: boolean;
197
204
  figmaToken: string;
package/dist/index.js CHANGED
@@ -345,6 +345,7 @@ var DEFAULT_AI_SETTINGS = {
345
345
  urlContext: false,
346
346
  googleSearch: false,
347
347
  enterpriseWebSearch: false,
348
+ browserCapture: false,
348
349
  pageMigrationIr: false,
349
350
  figmaToken: ""
350
351
  };
@@ -416,12 +417,52 @@ var applyArrayDefaults = (oldProps, newProps, fields) => {
416
417
  }
417
418
  return updatedProps;
418
419
  };
420
+ var scheduleReplacePropsAfterAddInsert = (operation, {
421
+ getState,
422
+ dispatchAction,
423
+ config
424
+ }) => {
425
+ const maxAttempts = 8;
426
+ const tryApply = (attempt) => {
427
+ var _a, _b, _c, _d, _e;
428
+ const existing = getItemById(getState(), operation.id);
429
+ if (existing) {
430
+ const newData = __spreadProps(__spreadValues({}, existing), {
431
+ props: applyArrayDefaults(
432
+ existing.props,
433
+ operation.props,
434
+ (_b = (_a = config.components[existing.type]) == null ? void 0 : _a.fields) != null ? _b : {}
435
+ )
436
+ });
437
+ dispatchAction({
438
+ type: "replace",
439
+ destinationIndex: operation.index,
440
+ destinationZone: operation.zone,
441
+ data: newData,
442
+ recordHistory: false
443
+ });
444
+ return;
445
+ }
446
+ if (attempt >= maxAttempts) {
447
+ const zoneOk = Boolean((_e = (_d = (_c = getState()) == null ? void 0 : _c.indexes) == null ? void 0 : _d.zones) == null ? void 0 : _e[operation.zone]);
448
+ console.error(
449
+ "Puck AI: could not find inserted item after add.",
450
+ zoneOk ? "State may not have synced yet." : `Target zone may be invalid or not yet in the tree: ${operation.zone}`,
451
+ operation
452
+ );
453
+ return;
454
+ }
455
+ const delay = attempt === 0 ? 0 : attempt === 1 ? 0 : attempt === 2 ? 10 : attempt === 3 ? 50 : attempt === 4 ? 100 : 200;
456
+ setTimeout(() => tryApply(attempt + 1), delay);
457
+ };
458
+ queueMicrotask(() => tryApply(0));
459
+ };
419
460
  var dispatchOp = (operation, {
420
461
  getState,
421
462
  dispatchAction,
422
463
  config
423
464
  }) => {
424
- var _a, _b, _c, _d, _e, _f, _g, _h, _i;
465
+ var _a, _b, _c, _d, _e, _f, _g;
425
466
  const state = getState();
426
467
  try {
427
468
  if (operation.op === "add") {
@@ -434,25 +475,10 @@ var dispatchOp = (operation, {
434
475
  id: operation.id,
435
476
  recordHistory: false
436
477
  });
437
- const existing = getItemById(getState(), operation.id);
438
- if (!existing) {
439
- throw new Error(
440
- `Tried to update an item that doesn't exist: ${operation.id}`
441
- );
442
- }
443
- const newData = __spreadProps(__spreadValues({}, existing), {
444
- props: applyArrayDefaults(
445
- existing.props,
446
- operation.props,
447
- (_b = (_a = config.components[existing.type]) == null ? void 0 : _a.fields) != null ? _b : {}
448
- )
449
- });
450
- dispatchAction({
451
- type: "replace",
452
- destinationIndex: operation.index,
453
- destinationZone: operation.zone,
454
- data: newData,
455
- recordHistory: false
478
+ scheduleReplacePropsAfterAddInsert(operation, {
479
+ getState,
480
+ dispatchAction,
481
+ config
456
482
  });
457
483
  }
458
484
  } else if (operation.op === "update") {
@@ -467,7 +493,7 @@ var dispatchOp = (operation, {
467
493
  props: applyArrayDefaults(
468
494
  existing.props,
469
495
  operation.props,
470
- (_d = (_c = config.components[existing.type]) == null ? void 0 : _c.fields) != null ? _d : {}
496
+ (_b = (_a = config.components[existing.type]) == null ? void 0 : _a.fields) != null ? _b : {}
471
497
  )
472
498
  });
473
499
  dispatchAction({
@@ -478,8 +504,8 @@ var dispatchOp = (operation, {
478
504
  recordHistory: false
479
505
  });
480
506
  } else if (operation.op === "updateRoot") {
481
- const existing = (_e = state == null ? void 0 : state.data) == null ? void 0 : _e.root;
482
- const defaultProps = (_g = (_f = config.root) == null ? void 0 : _f.defaultProps) != null ? _g : {};
507
+ const existing = (_c = state == null ? void 0 : state.data) == null ? void 0 : _c.root;
508
+ const defaultProps = (_e = (_d = config.root) == null ? void 0 : _d.defaultProps) != null ? _e : {};
483
509
  dispatchAction({
484
510
  type: "replaceRoot",
485
511
  root: __spreadProps(__spreadValues({}, existing), {
@@ -529,7 +555,7 @@ var dispatchOp = (operation, {
529
555
  recordHistory: false
530
556
  });
531
557
  } else if (operation.op === "reset") {
532
- const defaultRootProps = (_i = (_h = config.root) == null ? void 0 : _h.defaultProps) != null ? _i : {};
558
+ const defaultRootProps = (_g = (_f = config.root) == null ? void 0 : _f.defaultProps) != null ? _g : {};
533
559
  dispatchAction({
534
560
  type: "setData",
535
561
  data: { content: [], root: defaultRootProps },
@@ -1196,21 +1222,30 @@ function ScrollTracking({ children }) {
1196
1222
  function Toggle({
1197
1223
  checked,
1198
1224
  onChange,
1199
- id
1225
+ id,
1226
+ disabled
1200
1227
  }) {
1201
- return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("label", { className: "puck-ai-toggle", htmlFor: id, children: [
1202
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
1203
- "input",
1204
- {
1205
- type: "checkbox",
1206
- id,
1207
- checked,
1208
- onChange: (e) => onChange(e.target.checked),
1209
- className: "puck-ai-toggle-input"
1210
- }
1211
- ),
1212
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "puck-ai-toggle-slider" })
1213
- ] });
1228
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
1229
+ "label",
1230
+ {
1231
+ className: `puck-ai-toggle${disabled ? " puck-ai-toggle--disabled" : ""}`,
1232
+ htmlFor: id,
1233
+ children: [
1234
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
1235
+ "input",
1236
+ {
1237
+ type: "checkbox",
1238
+ id,
1239
+ checked,
1240
+ disabled,
1241
+ onChange: (e) => onChange(e.target.checked),
1242
+ className: "puck-ai-toggle-input"
1243
+ }
1244
+ ),
1245
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "puck-ai-toggle-slider" })
1246
+ ]
1247
+ }
1248
+ );
1214
1249
  }
1215
1250
  function SettingsPanel({
1216
1251
  settings,
@@ -1271,6 +1306,29 @@ function SettingsPanel({
1271
1306
  }
1272
1307
  )
1273
1308
  ] }),
1309
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "puck-ai-settings-row", children: [
1310
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
1311
+ "label",
1312
+ {
1313
+ className: "puck-ai-settings-label",
1314
+ htmlFor: "puck-ai-browser-capture",
1315
+ children: [
1316
+ "Browser capture",
1317
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "puck-ai-settings-hint", children: "Run server-side browser migration (screenshot + DOM bundle) when a migration URL is in the prompt. Turn off to use URL context only without Worker/Puppeteer." })
1318
+ ]
1319
+ }
1320
+ ),
1321
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
1322
+ Toggle,
1323
+ {
1324
+ id: "puck-ai-browser-capture",
1325
+ checked: settings.browserCapture,
1326
+ onChange: (v) => onChange(__spreadValues({
1327
+ browserCapture: v
1328
+ }, v ? {} : { pageMigrationIr: false }))
1329
+ }
1330
+ )
1331
+ ] }),
1274
1332
  /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "puck-ai-settings-row", children: [
1275
1333
  /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
1276
1334
  "label",
@@ -1279,7 +1337,7 @@ function SettingsPanel({
1279
1337
  htmlFor: "puck-ai-page-migration-ir",
1280
1338
  children: [
1281
1339
  "Page migration IR",
1282
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "puck-ai-settings-hint", children: "Full DOM bundle + structured plan when a source URL is captured (slower; screenshot-only when off)" })
1340
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "puck-ai-settings-hint", children: "Full DOM bundle + structured plan when a source URL is captured (slower; screenshot-only when off). Requires Browser capture." })
1283
1341
  ]
1284
1342
  }
1285
1343
  ),
@@ -1287,6 +1345,7 @@ function SettingsPanel({
1287
1345
  Toggle,
1288
1346
  {
1289
1347
  id: "puck-ai-page-migration-ir",
1348
+ disabled: !settings.browserCapture,
1290
1349
  checked: settings.pageMigrationIr,
1291
1350
  onChange: (v) => onChange({ pageMigrationIr: v })
1292
1351
  }
@@ -1546,8 +1605,11 @@ function Chat({
1546
1605
  if (currentSettings.thinkingLevel !== "none")
1547
1606
  geminiConfig.thinkingLevel = currentSettings.thinkingLevel;
1548
1607
  if (currentSettings.urlContext) geminiConfig.urlContext = true;
1549
- if (currentSettings.pageMigrationIr)
1550
- geminiConfig.pageMigrationIr = true;
1608
+ if (currentSettings.browserCapture) {
1609
+ geminiConfig.browserCapture = true;
1610
+ if (currentSettings.pageMigrationIr)
1611
+ geminiConfig.pageMigrationIr = true;
1612
+ }
1551
1613
  if (currentSettings.googleSearch) geminiConfig.googleSearch = true;
1552
1614
  if (currentSettings.enterpriseWebSearch)
1553
1615
  geminiConfig.enterpriseWebSearch = true;