@factorialco/f0-react 4.44.0 → 4.46.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/dist/ChatDocxThumbnail-B3DMs45n.js +48 -0
  2. package/dist/ChatPdfThumbnail-BFbYv0sb.js +38 -0
  3. package/dist/ChatSheetThumbnail-BvnxT-4A.js +38 -0
  4. package/dist/ChatTextThumbnail-yVt_iYi7.js +33 -0
  5. package/dist/{DocumentToolbar-D3GqxyBD.js → DocumentToolbar-BLcBoeNU.js} +5 -5
  6. package/dist/DocxViewer-C0K6oFym.js +68 -0
  7. package/dist/{F0AiProcessingOverlay-rViVqtAb.js → F0AiProcessingOverlay-BZka5wSN.js} +713 -761
  8. package/dist/{F0CanvasPanel-VGTPb68G.js → F0CanvasPanel-BDwye32b.js} +10679 -10600
  9. package/dist/{LocationMap-CdKO0X5V.js → LocationMap-NloaE37G.js} +1 -1
  10. package/dist/Printer-B7iDPx2r.js +54 -0
  11. package/dist/SheetViewer-1AsPdzFt.js +108 -0
  12. package/dist/{TextViewer-Dn0MDAXs.js → TextViewer-Ba0xZQdy.js} +2 -2
  13. package/dist/_commonjs-dynamic-modules-BpilXLfW.js +6 -0
  14. package/dist/ai.d.ts +34 -1
  15. package/dist/ai.js +2 -2
  16. package/dist/component-status.js +1 -1
  17. package/dist/{DocxViewer-BIZmtyWY.js → docx-preview-CSg41tKY.js} +971 -1034
  18. package/dist/experimental.d.ts +31 -4
  19. package/dist/experimental.js +10210 -6404
  20. package/dist/f0.css +1 -1
  21. package/dist/f0.d.ts +74 -1
  22. package/dist/f0.js +65853 -299
  23. package/dist/i18n-provider-defaults.d.ts +4 -0
  24. package/dist/i18n-provider-defaults.js +5 -1
  25. package/dist/{index-DoDUaTro.js → index-3x-af82e.js} +14657 -14408
  26. package/dist/index-BuP079h-.js +545 -0
  27. package/dist/index.css +1 -1
  28. package/dist/index2.css +1 -0
  29. package/dist/pdfWorker-XwYoO_oV.js +13118 -0
  30. package/dist/pdfWorker.css +1 -0
  31. package/dist/sheetPreview-5qeAOp0W.js +35 -0
  32. package/dist/styles.css +1 -1
  33. package/package.json +2 -1
  34. package/tailwind.config.ts +8 -0
  35. package/dist/SheetViewer-HsR5toIL.js +0 -137
  36. package/dist/f0-BaDuQbAV.js +0 -79441
package/dist/f0.css CHANGED
@@ -1 +1 @@
1
- .grid-stack{position:relative}.grid-stack-rtl{direction:ltr}.grid-stack-rtl>.grid-stack-item{direction:rtl}.grid-stack-placeholder>.placeholder-content{background-color:#0000001a;margin:0;position:absolute;width:auto;z-index:0!important}.grid-stack>.grid-stack-item{position:absolute;padding:0;top:0;left:0;width:var(--gs-column-width);height:var(--gs-cell-height)}.grid-stack>.grid-stack-item>.grid-stack-item-content{margin:0;position:absolute;width:auto;overflow-x:hidden;overflow-y:auto}.grid-stack>.grid-stack-item.size-to-content:not(.size-to-content-max)>.grid-stack-item-content{overflow-y:hidden}.grid-stack>.grid-stack-item>.grid-stack-item-content,.grid-stack>.grid-stack-placeholder>.placeholder-content{top:var(--gs-item-margin-top);right:var(--gs-item-margin-right);bottom:var(--gs-item-margin-bottom);left:var(--gs-item-margin-left)}.grid-stack-item>.ui-resizable-handle{position:absolute;font-size:.1px;display:block;touch-action:none}.grid-stack-item.ui-resizable-disabled>.ui-resizable-handle,.grid-stack-item.ui-resizable-autohide>.ui-resizable-handle{display:none}.grid-stack-item>.ui-resizable-ne,.grid-stack-item>.ui-resizable-nw,.grid-stack-item>.ui-resizable-se,.grid-stack-item>.ui-resizable-sw{background-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" fill="none" stroke="%23666" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 20 20"><path d="m10 3 2 2H8l2-2v14l-2-2h4l-2 2"/></svg>');background-repeat:no-repeat;background-position:center}.grid-stack-item>.ui-resizable-ne{transform:rotate(45deg)}.grid-stack-item>.ui-resizable-sw{transform:rotate(45deg)}.grid-stack-item>.ui-resizable-nw{transform:rotate(-45deg)}.grid-stack-item>.ui-resizable-se{transform:rotate(-45deg)}.grid-stack-item>.ui-resizable-nw{cursor:nw-resize;width:20px;height:20px;top:var(--gs-item-margin-top);left:var(--gs-item-margin-left)}.grid-stack-item>.ui-resizable-n{cursor:n-resize;height:10px;top:var(--gs-item-margin-top);left:25px;right:25px}.grid-stack-item>.ui-resizable-ne{cursor:ne-resize;width:20px;height:20px;top:var(--gs-item-margin-top);right:var(--gs-item-margin-right)}.grid-stack-item>.ui-resizable-e{cursor:e-resize;width:10px;top:15px;bottom:15px;right:var(--gs-item-margin-right)}.grid-stack-item>.ui-resizable-se{cursor:se-resize;width:20px;height:20px;bottom:var(--gs-item-margin-bottom);right:var(--gs-item-margin-right)}.grid-stack-item>.ui-resizable-s{cursor:s-resize;height:10px;left:25px;bottom:var(--gs-item-margin-bottom);right:25px}.grid-stack-item>.ui-resizable-sw{cursor:sw-resize;width:20px;height:20px;bottom:var(--gs-item-margin-bottom);left:var(--gs-item-margin-left)}.grid-stack-item>.ui-resizable-w{cursor:w-resize;width:10px;top:15px;bottom:15px;left:var(--gs-item-margin-left)}.grid-stack-item.ui-draggable-dragging>.ui-resizable-handle{display:none!important}.grid-stack-item.ui-draggable-dragging{will-change:left,top}.grid-stack-item.ui-resizable-resizing{will-change:width,height}.ui-draggable-dragging,.ui-resizable-resizing{z-index:10000}.ui-draggable-dragging>.grid-stack-item-content,.ui-resizable-resizing>.grid-stack-item-content{box-shadow:1px 4px 6px #0003;opacity:.8}.grid-stack-animate,.grid-stack-animate .grid-stack-item{transition:left .3s,top .3s,height .3s,width .3s}.grid-stack-animate .grid-stack-item.ui-draggable-dragging,.grid-stack-animate .grid-stack-item.ui-resizable-resizing,.grid-stack-animate .grid-stack-item.grid-stack-placeholder{transition:left 0s,top 0s,height 0s,width 0s}.grid-stack>.grid-stack-item[gs-y="0"]{top:0}.grid-stack>.grid-stack-item[gs-x="0"]{left:0%}.grid-stack-item .ui-resizable-handle{bottom:12px;right:12px;--tw-rotate: 0deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));overflow:hidden;border-radius:.625rem}.grid-stack-item .ui-resizable-se:after{content:"";position:absolute;inset:0;background-image:url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M17.1904 11.6904C17.4443 11.4366 17.8565 11.4366 18.1104 11.6904C18.3641 11.9443 18.3642 12.3565 18.1104 12.6104L12.6104 18.1104C12.3565 18.3642 11.9443 17.3641 11.6904 18.1104C11.4366 17.8565 11.4366 17.4443 11.6904 17.1904L17.1904 11.6904ZM16.1904 6.19043C16.4443 5.93659 16.8565 5.93659 17.1104 6.19043C17.3641 6.44427 17.3642 6.85653 17.1104 7.11035L7.11035 17.1104C6.85653 17.3642 6.44427 17.3641 6.19043 17.1104C5.93659 16.8565 5.93659 16.4443 6.19043 16.1904L16.1904 6.19043Z' fill='%23A1ABBD'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:center;background-size:contain;width:100%;height:100%;background-color:#fff}.ui-draggable-dragging>.grid-stack-item-content{background-color:transparent!important;--tw-shadow: 0 0 #0000 !important;--tw-shadow-colored: 0 0 #0000 !important;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)!important;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s;animation-duration:.2s}.ui-draggable-dragging>.grid-stack-item-content>*{transform-origin:24px 24px;--tw-scale-x: .95 !important;--tw-scale-y: .95 !important;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))!important;cursor:grabbing;border-radius:.875rem;border-color:hsl(var(--neutral-40));--tw-shadow: 0 6px 12px 0 hsl(var(--shadow)/.06),0 16px 24px -12px hsl(var(--shadow)/.05);--tw-shadow-colored: 0 6px 12px 0 var(--tw-shadow-color), 0 16px 24px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s;animation-duration:.2s}.ui.draggable-dragging{cursor:grabbing!important}.grid-stack-placeholder>.placeholder-content{border-radius:.875rem;background-color:hsl(var(--neutral-100) / .05);opacity:.5;--tw-blur: blur(2px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.grid-stack-item>.grid-stack-item-content{overflow:visible!important}.ui-resizable-resizing>.grid-stack-item-content{border-radius:.875rem}:root{--react-pdf-annotation-layer: 1;--annotation-unfocused-field-background: url("data:image/svg+xml;charset=UTF-8,<svg width='1px' height='1px' xmlns='http://www.w3.org/2000/svg'><rect width='100%' height='100%' style='fill:rgba(0, 54, 255, 0.13);'/></svg>");--input-focus-border-color: Highlight;--input-focus-outline: 1px solid Canvas;--input-unfocused-border-color: transparent;--input-disabled-border-color: transparent;--input-hover-border-color: black;--link-outline: none}@media screen and (forced-colors:active){:root{--input-focus-border-color: CanvasText;--input-unfocused-border-color: ActiveText;--input-disabled-border-color: GrayText;--input-hover-border-color: Highlight;--link-outline: 1.5px solid LinkText}.annotationLayer .textWidgetAnnotation :is(input,textarea):required,.annotationLayer .choiceWidgetAnnotation select:required,.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input:required{outline:1.5px solid selectedItem}.annotationLayer .linkAnnotation:hover{-webkit-backdrop-filter:invert(100%);backdrop-filter:invert(100%)}}.annotationLayer{position:absolute;top:0;left:0;pointer-events:none;transform-origin:0 0;z-index:3}.annotationLayer[data-main-rotation="90"] .norotate{transform:rotate(270deg) translate(-100%)}.annotationLayer[data-main-rotation="180"] .norotate{transform:rotate(180deg) translate(-100%,-100%)}.annotationLayer[data-main-rotation="270"] .norotate{transform:rotate(90deg) translateY(-100%)}.annotationLayer canvas{position:absolute;width:100%;height:100%}.annotationLayer section{position:absolute;text-align:initial;pointer-events:auto;box-sizing:border-box;margin:0;transform-origin:0 0}.annotationLayer .linkAnnotation{outline:var(--link-outline)}.annotationLayer :is(.linkAnnotation,.buttonWidgetAnnotation.pushButton)>a{position:absolute;font-size:1em;top:0;left:0;width:100%;height:100%}.annotationLayer :is(.linkAnnotation,.buttonWidgetAnnotation.pushButton)>a:hover{opacity:.2;background:#ff0;box-shadow:0 2px 10px #ff0}.annotationLayer .textAnnotation img{position:absolute;cursor:pointer;width:100%;height:100%;top:0;left:0}.annotationLayer .textWidgetAnnotation :is(input,textarea),.annotationLayer .choiceWidgetAnnotation select,.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input{background-image:var(--annotation-unfocused-field-background);border:2px solid var(--input-unfocused-border-color);box-sizing:border-box;font:calc(9px * var(--scale-factor)) sans-serif;height:100%;margin:0;vertical-align:top;width:100%}.annotationLayer .textWidgetAnnotation :is(input,textarea):required,.annotationLayer .choiceWidgetAnnotation select:required,.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input:required{outline:1.5px solid red}.annotationLayer .choiceWidgetAnnotation select option{padding:0}.annotationLayer .buttonWidgetAnnotation.radioButton input{border-radius:50%}.annotationLayer .textWidgetAnnotation textarea{resize:none}.annotationLayer .textWidgetAnnotation :is(input,textarea)[disabled],.annotationLayer .choiceWidgetAnnotation select[disabled],.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input[disabled]{background:none;border:2px solid var(--input-disabled-border-color);cursor:not-allowed}.annotationLayer .textWidgetAnnotation :is(input,textarea):hover,.annotationLayer .choiceWidgetAnnotation select:hover,.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input:hover{border:2px solid var(--input-hover-border-color)}.annotationLayer .textWidgetAnnotation :is(input,textarea):hover,.annotationLayer .choiceWidgetAnnotation select:hover,.annotationLayer .buttonWidgetAnnotation.checkBox input:hover{border-radius:2px}.annotationLayer .textWidgetAnnotation :is(input,textarea):focus,.annotationLayer .choiceWidgetAnnotation select:focus{background:none;border:2px solid var(--input-focus-border-color);border-radius:2px;outline:var(--input-focus-outline)}.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) :focus{background-image:none;background-color:transparent}.annotationLayer .buttonWidgetAnnotation.checkBox :focus{border:2px solid var(--input-focus-border-color);border-radius:2px;outline:var(--input-focus-outline)}.annotationLayer .buttonWidgetAnnotation.radioButton :focus{border:2px solid var(--input-focus-border-color);outline:var(--input-focus-outline)}.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:before,.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:after,.annotationLayer .buttonWidgetAnnotation.radioButton input:checked:before{background-color:CanvasText;content:"";display:block;position:absolute}.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:before,.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:after{height:80%;left:45%;width:1px}.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:before{transform:rotate(45deg)}.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:after{transform:rotate(-45deg)}.annotationLayer .buttonWidgetAnnotation.radioButton input:checked:before{border-radius:50%;height:50%;left:30%;top:20%;width:50%}.annotationLayer .textWidgetAnnotation input.comb{font-family:monospace;padding-left:2px;padding-right:0}.annotationLayer .textWidgetAnnotation input.comb:focus{width:103%}.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input{-webkit-appearance:none;-moz-appearance:none;appearance:none}.annotationLayer .popupTriggerArea{height:100%;width:100%}.annotationLayer .fileAttachmentAnnotation .popupTriggerArea{position:absolute}.annotationLayer .popupWrapper{position:absolute;font-size:calc(9px * var(--scale-factor));width:100%;min-width:calc(180px * var(--scale-factor));pointer-events:none}.annotationLayer .popup{position:absolute;max-width:calc(180px * var(--scale-factor));background-color:#ff9;box-shadow:0 calc(2px * var(--scale-factor)) calc(5px * var(--scale-factor)) #888;border-radius:calc(2px * var(--scale-factor));padding:calc(6px * var(--scale-factor));margin-left:calc(5px * var(--scale-factor));cursor:pointer;font:message-box;white-space:normal;word-wrap:break-word;pointer-events:auto}.annotationLayer .popup>*{font-size:calc(9px * var(--scale-factor))}.annotationLayer .popup h1{display:inline-block}.annotationLayer .popupDate{display:inline-block;margin-left:calc(5px * var(--scale-factor))}.annotationLayer .popupContent{border-top:1px solid rgba(51,51,51,1);margin-top:calc(2px * var(--scale-factor));padding-top:calc(2px * var(--scale-factor))}.annotationLayer .richText>*{white-space:pre-wrap;font-size:calc(9px * var(--scale-factor))}.annotationLayer .highlightAnnotation,.annotationLayer .underlineAnnotation,.annotationLayer .squigglyAnnotation,.annotationLayer .strikeoutAnnotation,.annotationLayer .freeTextAnnotation,.annotationLayer .lineAnnotation svg line,.annotationLayer .squareAnnotation svg rect,.annotationLayer .circleAnnotation svg ellipse,.annotationLayer .polylineAnnotation svg polyline,.annotationLayer .polygonAnnotation svg polygon,.annotationLayer .caretAnnotation,.annotationLayer .inkAnnotation svg polyline,.annotationLayer .stampAnnotation,.annotationLayer .fileAttachmentAnnotation{cursor:pointer}.annotationLayer section svg{position:absolute;width:100%;height:100%;top:0;left:0}.annotationLayer .annotationTextContent{position:absolute;width:100%;height:100%;opacity:0;color:transparent;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:none}.annotationLayer .annotationTextContent span{width:100%;display:inline-block}:root{--react-pdf-text-layer: 1;--highlight-bg-color: rgba(180, 0, 170, 1);--highlight-selected-bg-color: rgba(0, 100, 0, 1)}@media screen and (forced-colors:active){:root{--highlight-bg-color: Highlight;--highlight-selected-bg-color: ButtonText}}[data-main-rotation="90"]{transform:rotate(90deg) translateY(-100%)}[data-main-rotation="180"]{transform:rotate(180deg) translate(-100%,-100%)}[data-main-rotation="270"]{transform:rotate(270deg) translate(-100%)}.textLayer{position:absolute;text-align:initial;inset:0;overflow:hidden;line-height:1;-webkit-text-size-adjust:none;-moz-text-size-adjust:none;text-size-adjust:none;forced-color-adjust:none;transform-origin:0 0;z-index:2}.textLayer :is(span,br){color:transparent;position:absolute;white-space:pre;cursor:text;margin:0;transform-origin:0 0}.textLayer span.markedContent{top:0;height:0}.textLayer .highlight{margin:-1px;padding:1px;background-color:var(--highlight-bg-color);border-radius:4px}.textLayer .highlight.appended{position:initial}.textLayer .highlight.begin{border-radius:4px 0 0 4px}.textLayer .highlight.end{border-radius:0 4px 4px 0}.textLayer .highlight.middle{border-radius:0}.textLayer .highlight.selected{background-color:var(--highlight-selected-bg-color)}.textLayer br::-moz-selection{background:transparent}.textLayer br::selection{background:transparent}.textLayer .endOfContent{display:block;position:absolute;inset:100% 0 0;z-index:-1;cursor:default;-webkit-user-select:none;-moz-user-select:none;user-select:none}.textLayer .endOfContent.active{top:0}.F0PdfViewer__surface{background-color:hsl(var(--neutral-0));background-image:linear-gradient(hsl(var(--neutral-5)),hsl(var(--neutral-5)))}.F0PdfViewer__page .react-pdf__Page__canvas{display:block;position:relative;z-index:0}.F0PdfViewer__page .react-pdf__Page__textContent{z-index:1;pointer-events:auto;-webkit-user-select:text;-moz-user-select:text;user-select:text}.F0PdfViewer__page .textLayer ::-moz-selection{background-color:hsl(var(--selected-50) / .3)}.F0PdfViewer__page .textLayer ::selection{background-color:hsl(var(--selected-50) / .3)}
1
+ .grid-stack{position:relative}.grid-stack-rtl{direction:ltr}.grid-stack-rtl>.grid-stack-item{direction:rtl}.grid-stack-placeholder>.placeholder-content{background-color:#0000001a;margin:0;position:absolute;width:auto;z-index:0!important}.grid-stack>.grid-stack-item{position:absolute;padding:0;top:0;left:0;width:var(--gs-column-width);height:var(--gs-cell-height)}.grid-stack>.grid-stack-item>.grid-stack-item-content{margin:0;position:absolute;width:auto;overflow-x:hidden;overflow-y:auto}.grid-stack>.grid-stack-item.size-to-content:not(.size-to-content-max)>.grid-stack-item-content{overflow-y:hidden}.grid-stack>.grid-stack-item>.grid-stack-item-content,.grid-stack>.grid-stack-placeholder>.placeholder-content{top:var(--gs-item-margin-top);right:var(--gs-item-margin-right);bottom:var(--gs-item-margin-bottom);left:var(--gs-item-margin-left)}.grid-stack-item>.ui-resizable-handle{position:absolute;font-size:.1px;display:block;touch-action:none}.grid-stack-item.ui-resizable-disabled>.ui-resizable-handle,.grid-stack-item.ui-resizable-autohide>.ui-resizable-handle{display:none}.grid-stack-item>.ui-resizable-ne,.grid-stack-item>.ui-resizable-nw,.grid-stack-item>.ui-resizable-se,.grid-stack-item>.ui-resizable-sw{background-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" fill="none" stroke="%23666" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 20 20"><path d="m10 3 2 2H8l2-2v14l-2-2h4l-2 2"/></svg>');background-repeat:no-repeat;background-position:center}.grid-stack-item>.ui-resizable-ne{transform:rotate(45deg)}.grid-stack-item>.ui-resizable-sw{transform:rotate(45deg)}.grid-stack-item>.ui-resizable-nw{transform:rotate(-45deg)}.grid-stack-item>.ui-resizable-se{transform:rotate(-45deg)}.grid-stack-item>.ui-resizable-nw{cursor:nw-resize;width:20px;height:20px;top:var(--gs-item-margin-top);left:var(--gs-item-margin-left)}.grid-stack-item>.ui-resizable-n{cursor:n-resize;height:10px;top:var(--gs-item-margin-top);left:25px;right:25px}.grid-stack-item>.ui-resizable-ne{cursor:ne-resize;width:20px;height:20px;top:var(--gs-item-margin-top);right:var(--gs-item-margin-right)}.grid-stack-item>.ui-resizable-e{cursor:e-resize;width:10px;top:15px;bottom:15px;right:var(--gs-item-margin-right)}.grid-stack-item>.ui-resizable-se{cursor:se-resize;width:20px;height:20px;bottom:var(--gs-item-margin-bottom);right:var(--gs-item-margin-right)}.grid-stack-item>.ui-resizable-s{cursor:s-resize;height:10px;left:25px;bottom:var(--gs-item-margin-bottom);right:25px}.grid-stack-item>.ui-resizable-sw{cursor:sw-resize;width:20px;height:20px;bottom:var(--gs-item-margin-bottom);left:var(--gs-item-margin-left)}.grid-stack-item>.ui-resizable-w{cursor:w-resize;width:10px;top:15px;bottom:15px;left:var(--gs-item-margin-left)}.grid-stack-item.ui-draggable-dragging>.ui-resizable-handle{display:none!important}.grid-stack-item.ui-draggable-dragging{will-change:left,top}.grid-stack-item.ui-resizable-resizing{will-change:width,height}.ui-draggable-dragging,.ui-resizable-resizing{z-index:10000}.ui-draggable-dragging>.grid-stack-item-content,.ui-resizable-resizing>.grid-stack-item-content{box-shadow:1px 4px 6px #0003;opacity:.8}.grid-stack-animate,.grid-stack-animate .grid-stack-item{transition:left .3s,top .3s,height .3s,width .3s}.grid-stack-animate .grid-stack-item.ui-draggable-dragging,.grid-stack-animate .grid-stack-item.ui-resizable-resizing,.grid-stack-animate .grid-stack-item.grid-stack-placeholder{transition:left 0s,top 0s,height 0s,width 0s}.grid-stack>.grid-stack-item[gs-y="0"]{top:0}.grid-stack>.grid-stack-item[gs-x="0"]{left:0%}.grid-stack-item .ui-resizable-handle{bottom:12px;right:12px;--tw-rotate: 0deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));overflow:hidden;border-radius:.625rem}.grid-stack-item .ui-resizable-se:after{content:"";position:absolute;inset:0;background-image:url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M17.1904 11.6904C17.4443 11.4366 17.8565 11.4366 18.1104 11.6904C18.3641 11.9443 18.3642 12.3565 18.1104 12.6104L12.6104 18.1104C12.3565 18.3642 11.9443 17.3641 11.6904 18.1104C11.4366 17.8565 11.4366 17.4443 11.6904 17.1904L17.1904 11.6904ZM16.1904 6.19043C16.4443 5.93659 16.8565 5.93659 17.1104 6.19043C17.3641 6.44427 17.3642 6.85653 17.1104 7.11035L7.11035 17.1104C6.85653 17.3642 6.44427 17.3641 6.19043 17.1104C5.93659 16.8565 5.93659 16.4443 6.19043 16.1904L16.1904 6.19043Z' fill='%23A1ABBD'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:center;background-size:contain;width:100%;height:100%;background-color:#fff}.ui-draggable-dragging>.grid-stack-item-content{background-color:transparent!important;--tw-shadow: 0 0 #0000 !important;--tw-shadow-colored: 0 0 #0000 !important;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)!important;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s;animation-duration:.2s}.ui-draggable-dragging>.grid-stack-item-content>*{transform-origin:24px 24px;--tw-scale-x: .95 !important;--tw-scale-y: .95 !important;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))!important;cursor:grabbing;border-radius:.875rem;border-color:hsl(var(--neutral-40));--tw-shadow: 0 6px 12px 0 hsl(var(--shadow)/.06),0 16px 24px -12px hsl(var(--shadow)/.05);--tw-shadow-colored: 0 6px 12px 0 var(--tw-shadow-color), 0 16px 24px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s;animation-duration:.2s}.ui.draggable-dragging{cursor:grabbing!important}.grid-stack-placeholder>.placeholder-content{border-radius:.875rem;background-color:hsl(var(--neutral-100) / .05);opacity:.5;--tw-blur: blur(2px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.grid-stack-item>.grid-stack-item-content{overflow:visible!important}.ui-resizable-resizing>.grid-stack-item-content{border-radius:.875rem}
package/dist/f0.d.ts CHANGED
@@ -548,6 +548,15 @@ export declare type AiChatProviderProps = {
548
548
  * @default "right"
549
549
  */
550
550
  side?: "left" | "right";
551
+ /**
552
+ * Edge hosted side-panel content (`setPanelContent`) docks to. Defaults to
553
+ * `side`, keeping everything in one panel. Set it to the opposite edge to
554
+ * split them — e.g. communications: conversations dock left while the AI
555
+ * chat keeps its right-side panel and toggle. The two are still exclusive
556
+ * (opening one swaps the other out); only the main content moves during
557
+ * the swap, uncovering the incoming panel in place.
558
+ */
559
+ panelContentSide?: "left" | "right";
551
560
  /**
552
561
  * Greeting phrase(s) shown by the welcome screen when the chat is empty.
553
562
  * A single string renders once; an array rotates through phrases. Purely
@@ -807,6 +816,16 @@ declare type AiChatProviderReturnValue = {
807
816
  setPanelContent: (content: SidePanelContent | null) => void;
808
817
  /** Clear the custom panel content and fall back to the F0.ai chat. */
809
818
  clearPanelContent: () => void;
819
+ /**
820
+ * Id of the hosted content that was showing when the page last unloaded,
821
+ * pending restoration. The panel holds a skeleton (no AI-chat flash) until
822
+ * the host re-mounts it via `setPanelContent`, cancels via
823
+ * `cancelPanelContentRestore` (content no longer accessible), or a safety
824
+ * timeout falls back to the AI chat.
825
+ */
826
+ restoringPanelContentId: string | null;
827
+ /** Give up on restoring the persisted panel content — show the AI chat. */
828
+ cancelPanelContentRestore: () => void;
810
829
  /**
811
830
  * Edge the whole side panel docks to — the AI chat, hosted content and the
812
831
  * canvas all follow it. Defaults to "right". Hosts flip it to "left" for a
@@ -816,6 +835,14 @@ declare type AiChatProviderReturnValue = {
816
835
  panelSide: "left" | "right";
817
836
  /** Set which edge the side panel docks to. */
818
837
  setPanelSide: React.Dispatch<React.SetStateAction<"left" | "right">>;
838
+ /**
839
+ * Edge hosted panel content (`setPanelContent`) docks to. Defaults to
840
+ * `panelSide`; when it differs, the AI chat and hosted content render in
841
+ * separate windows, one per edge, still mutually exclusive.
842
+ */
843
+ panelContentSide: "left" | "right";
844
+ /** Set which edge hosted panel content docks to. */
845
+ setPanelContentSide: React.Dispatch<React.SetStateAction<"left" | "right">>;
819
846
  } & Pick<AiChatState, "agent" | "chatHeader" | "chatMessages" | "chatInput" | "disclaimer" | "resizable" | "entityRefs" | "canvasActions" | "canvasEntities" | "credits" | "employeeCredits" | "creditWarning" | "fileAttachments" | "onTranscribe"> & {
820
847
  /** The current canvas content, or null when canvas is closed */
821
848
  canvasContent: CanvasContent | null;
@@ -840,6 +867,8 @@ declare interface AiChatState {
840
867
  enabled: boolean;
841
868
  /** Initial edge the panel docks to. @default "right" */
842
869
  side?: "left" | "right";
870
+ /** Initial edge hosted panel content docks to. Defaults to `side`. */
871
+ panelContentSide?: "left" | "right";
843
872
  agent?: string;
844
873
  initialMessage?: string | string[];
845
874
  chatHeader?: React.ReactNode;
@@ -5209,6 +5238,10 @@ export declare const defaultTranslations: {
5209
5238
  readonly addBlockedHint: "Finish filling out the last item you just added in order to add another one";
5210
5239
  readonly addBlockedErrorHint: "Fix the errors in the existing items before adding another one";
5211
5240
  readonly addBlockedMaxHint: "You've reached the maximum number of items";
5241
+ readonly removeConfirmTitle: "Remove item?";
5242
+ readonly removeConfirmMessage: "This item will be removed. This action cannot be undone.";
5243
+ readonly removeError: "Couldn't remove the item. Please try again.";
5244
+ readonly removeErrorTitle: "Remove failed";
5212
5245
  };
5213
5246
  readonly moreInformation: "More information";
5214
5247
  readonly validation: {
@@ -6312,7 +6345,7 @@ export declare interface F0AiChatProps {
6312
6345
  /**
6313
6346
  * @experimental This is an experimental component use it at your own risk
6314
6347
  */
6315
- export declare const F0AiChatProvider: ({ enabled, side, initialMessage, chatHeader, chatMessages, chatInput, welcomeScreenSuggestions, welcomeScreenCards, disclaimer, resizable, defaultVisualizationMode, lockVisualizationMode, historyEnabled, footer, VoiceMode, entityRefs, canvasActions, canvasEntities, credits, employeeCredits, creditWarning, fileAttachments, onTranscribe, onThumbsUp, onThumbsDown, children, agent, tracking, }: AiChatProviderProps) => JSX_2.Element;
6348
+ export declare const F0AiChatProvider: ({ enabled, side, panelContentSide, initialMessage, chatHeader, chatMessages, chatInput, welcomeScreenSuggestions, welcomeScreenCards, disclaimer, resizable, defaultVisualizationMode, lockVisualizationMode, historyEnabled, footer, VoiceMode, entityRefs, canvasActions, canvasEntities, credits, employeeCredits, creditWarning, fileAttachments, onTranscribe, onThumbsUp, onThumbsDown, children, agent, tracking, }: AiChatProviderProps) => JSX_2.Element;
6316
6349
 
6317
6350
  /**
6318
6351
  * Headless chat composer.
@@ -8896,12 +8929,20 @@ declare type F0EntitiesListField = F0BaseField & {
8896
8929
  labels?: F0EntitiesListLabels;
8897
8930
  /** Ids of the items that can be edited (matched against `item.id`) */
8898
8931
  editableIds?: Array<string | number>;
8932
+ /** Ids of the items that can be removed (matched against `item.id`) */
8933
+ removableIds?: Array<string | number>;
8899
8934
  /** Maximum number of rows allowed */
8900
8935
  maxItems?: number;
8901
8936
  /** Per-column presentation options, keyed by item-schema property name */
8902
8937
  columns?: Record<string, F0EntitiesListColumnConfig>;
8903
8938
  /** Custom trailing actions per row (resolved per row) */
8904
8939
  rowActions?: (item: EntitiesListItem, index: number) => F0EntitiesListRowAction[];
8940
+ /** Persistence hook for removing a row (runs after the user confirms) */
8941
+ onRemove?: (item: EntitiesListItem) => Promise<{
8942
+ success: boolean;
8943
+ } | void>;
8944
+ /** Per-item confirmation copy for the remove action */
8945
+ confirmRemove?: (item: EntitiesListItem) => ConfirmDialogOptions;
8905
8946
  /** Conditional rendering based on another field's value */
8906
8947
  renderIf?: EntitiesListFieldRenderIf;
8907
8948
  };
@@ -9033,6 +9074,16 @@ declare interface F0EntitiesListOptions<T = EntitiesListItem> {
9033
9074
  * (pencil) action that opens the edit dialog.
9034
9075
  */
9035
9076
  editableIds?: Array<string | number>;
9077
+ /**
9078
+ * Restricts which items can be removed, matched against each item's `id`
9079
+ * property. The remove counterpart to {@link editableIds}, and independent
9080
+ * of it — a row can be editable but not removable, or vice versa. When
9081
+ * omitted, every item is removable. Items without an `id` (e.g. rows just
9082
+ * added by the user and not yet persisted) stay removable. A row hidden from
9083
+ * this list shows no remove action (`list-view`) / no remove button
9084
+ * (`editable-table`).
9085
+ */
9086
+ removableIds?: Array<string | number>;
9036
9087
  /** Minimum number of rows required (defaults to 1 unless the field is optional) */
9037
9088
  minItems?: number;
9038
9089
  /** Maximum number of rows allowed. When reached the add button is hidden. */
@@ -9046,6 +9097,28 @@ declare interface F0EntitiesListOptions<T = EntitiesListItem> {
9046
9097
  * update or remove the row.
9047
9098
  */
9048
9099
  rowActions?: (item: T, index: number) => F0EntitiesListRowAction<T>[];
9100
+ /**
9101
+ * Persistence hook for removing a row — the delete counterpart to
9102
+ * `createFormDefinition` (add) and `updateFormDefinition` (edit). Called with
9103
+ * the row's item **after** the user confirms the destructive action. Return
9104
+ * `{ success: false }` or throw to keep the row and surface an error; return
9105
+ * `{ success: true }` (or nothing) to drop it from the field value.
9106
+ *
9107
+ * When omitted, removal is value-only (the row is spliced from the array with
9108
+ * no network call) — but the confirmation is still shown, per the CRUD
9109
+ * "Delete & destructive" guidance.
9110
+ */
9111
+ onRemove?: (item: T) => Promise<{
9112
+ success: boolean;
9113
+ } | void>;
9114
+ /**
9115
+ * Per-item confirmation copy for the remove action, so callers can **name the
9116
+ * resource** and its scope (per the CRUD "Delete & destructive" doc). Receives
9117
+ * the row item and returns the confirmation dialog options
9118
+ * (`title`, `msg`, `type`, `confirm`/`cancel` labels). When omitted, a generic
9119
+ * default confirmation is shown.
9120
+ */
9121
+ confirmRemove?: (item: T) => ConfirmDialogOptions;
9049
9122
  }
9050
9123
 
9051
9124
  /**