@turquoisehealth/pit-viper 2.216.0 → 2.217.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 (203) hide show
  1. package/_site/assets/css/pit-viper-a11y.css +45 -9
  2. package/_site/assets/css/pit-viper-consumer.css +40 -4
  3. package/_site/assets/css/pit-viper-v2-scoped.css +45 -14
  4. package/_site/assets/css/pit-viper-v2.css +50 -14
  5. package/_site/assets/css/pit-viper.css +37 -1
  6. package/_src/assets/sprite-v2.svg +1 -1
  7. package/_src/assets/sprite.svg +1 -1
  8. package/package.json +5 -1
  9. package/pv-components/dist/stats/vue/ai/stats.html +4950 -0
  10. package/pv-components/dist/stats/vue/visualizations/stats.html +1 -1
  11. package/pv-components/dist/stats/web/pv-confirmation-stats.html +4950 -0
  12. package/pv-components/dist/stats/web/pv-prompt-input-stats.html +4950 -0
  13. package/pv-components/dist/stats/web/pv-question-stats.html +4950 -0
  14. package/pv-components/dist/stats/web/pv-reasoning-stats.html +4950 -0
  15. package/pv-components/dist/stats/web/pv-tool-stats.html +4950 -0
  16. package/pv-components/dist/vue/ai/components/ai/PvConfirmation/PvConfirmation.vue.d.ts +30 -0
  17. package/pv-components/dist/vue/ai/components/ai/PvConfirmation/types.d.ts +21 -0
  18. package/pv-components/dist/vue/ai/components/ai/PvPromptInput/PvPromptInput.vue.d.ts +46 -0
  19. package/pv-components/dist/vue/ai/components/ai/PvPromptInput/types.d.ts +20 -0
  20. package/pv-components/dist/vue/ai/components/ai/PvQuestion/PvQuestion.vue.d.ts +35 -0
  21. package/pv-components/dist/vue/ai/components/ai/PvQuestion/types.d.ts +24 -0
  22. package/pv-components/dist/vue/ai/components/ai/PvReasoning/PvReasoning.vue.d.ts +33 -0
  23. package/pv-components/dist/vue/ai/components/ai/PvReasoning/types.d.ts +14 -0
  24. package/pv-components/dist/vue/ai/components/ai/PvTool/PvTool.vue.d.ts +35 -0
  25. package/pv-components/dist/vue/ai/components/ai/PvTool/types.d.ts +15 -0
  26. package/pv-components/dist/vue/ai/components/ai/index.d.ts +15 -0
  27. package/pv-components/dist/vue/ai/components/ai/toolLifecycle.d.ts +21 -0
  28. package/pv-components/dist/vue/ai/components/ai/useStickToBottom.d.ts +19 -0
  29. package/pv-components/dist/vue/ai/components/base/PvAccordion/PvAccordion.vue.d.ts +60 -0
  30. package/pv-components/dist/vue/ai/components/base/PvAccordion/types.d.ts +5 -0
  31. package/pv-components/dist/vue/ai/components/base/PvActionBar/PvActionBar.vue.d.ts +36 -0
  32. package/pv-components/dist/vue/ai/components/base/PvActionBar/types.d.ts +2 -0
  33. package/pv-components/dist/vue/ai/components/base/PvActionButton/PvActionButton.vue.d.ts +22 -0
  34. package/pv-components/dist/vue/ai/components/base/PvAiButton/PvAiButton.vue.d.ts +20 -0
  35. package/pv-components/dist/vue/ai/components/base/PvAiButton/types.d.ts +2 -0
  36. package/pv-components/dist/vue/ai/components/base/PvAvatar/PvAvatar.vue.d.ts +7 -0
  37. package/pv-components/dist/vue/ai/components/base/PvAvatar/types.d.ts +20 -0
  38. package/pv-components/dist/vue/ai/components/base/PvAvatarGroup/PvAvatarGroup.vue.d.ts +12 -0
  39. package/pv-components/dist/vue/ai/components/base/PvAvatarGroup/types.d.ts +16 -0
  40. package/pv-components/dist/vue/ai/components/base/PvBanner/PvBanner.vue.d.ts +35 -0
  41. package/pv-components/dist/vue/ai/components/base/PvBanner/types.d.ts +11 -0
  42. package/pv-components/dist/vue/ai/components/base/PvBreadcrumbs/PvBreadcrumbs.vue.d.ts +8 -0
  43. package/pv-components/dist/vue/ai/components/base/PvBreadcrumbs/types.d.ts +6 -0
  44. package/pv-components/dist/vue/ai/components/base/PvButton/PvButton.vue.d.ts +10 -0
  45. package/pv-components/dist/vue/ai/components/base/PvButton/PvButtonWithTooltip.vue.d.ts +8 -0
  46. package/pv-components/dist/vue/ai/components/base/PvButton/helpers.d.ts +3 -0
  47. package/pv-components/dist/vue/ai/components/base/PvButton/types.d.ts +38 -0
  48. package/pv-components/dist/vue/ai/components/base/PvCard/PvCard.vue.d.ts +30 -0
  49. package/pv-components/dist/vue/ai/components/base/PvCard/types.d.ts +2 -0
  50. package/pv-components/dist/vue/ai/components/base/PvCheckbox/PvCheckbox.vue.d.ts +19 -0
  51. package/pv-components/dist/vue/ai/components/base/PvCompanyLabel/PvCompanyLabel.vue.d.ts +14 -0
  52. package/pv-components/dist/vue/ai/components/base/PvCompanyLabel/types.d.ts +2 -0
  53. package/pv-components/dist/vue/ai/components/base/PvCompanyLogo/PvCompanyLogo.vue.d.ts +17 -0
  54. package/pv-components/dist/vue/ai/components/base/PvCompanyLogo/types.d.ts +2 -0
  55. package/pv-components/dist/vue/ai/components/base/PvCompanyTag/PvCompanyTag.vue.d.ts +31 -0
  56. package/pv-components/dist/vue/ai/components/base/PvComponentsConfig/primeVue.config.d.ts +14 -0
  57. package/pv-components/dist/vue/ai/components/base/PvComponentsConfig/usePvComponents.d.ts +2 -0
  58. package/pv-components/dist/vue/ai/components/base/PvCounterBadge/PvCounterBadge.vue.d.ts +21 -0
  59. package/pv-components/dist/vue/ai/components/base/PvCounterBadge/types.d.ts +3 -0
  60. package/pv-components/dist/vue/ai/components/base/PvDatePicker/PvDatePicker.vue.d.ts +103 -0
  61. package/pv-components/dist/vue/ai/components/base/PvDateTime/PvDateTime.vue.d.ts +18 -0
  62. package/pv-components/dist/vue/ai/components/base/PvDateTime/useDateTime.d.ts +9 -0
  63. package/pv-components/dist/vue/ai/components/base/PvDistributionBar/PvDistributionBar.vue.d.ts +7 -0
  64. package/pv-components/dist/vue/ai/components/base/PvDrawer/PvDrawer.vue.d.ts +54 -0
  65. package/pv-components/dist/vue/ai/components/base/PvDropdown/PvDropdown.vue.d.ts +125 -0
  66. package/pv-components/dist/vue/ai/components/base/PvEmptyErrorState/PvEmptyErrorState.vue.d.ts +22 -0
  67. package/pv-components/dist/vue/ai/components/base/PvEmptyErrorState/types.d.ts +11 -0
  68. package/pv-components/dist/vue/ai/components/base/PvExpandableContent/PvExpandableContent.vue.d.ts +34 -0
  69. package/pv-components/dist/vue/ai/components/base/PvExpandableContent/types.d.ts +3 -0
  70. package/pv-components/dist/vue/ai/components/base/PvFilterModal/PvFilterModal.vue.d.ts +80 -0
  71. package/pv-components/dist/vue/ai/components/base/PvFilterModal/PvFilterModalSelectItem.vue.d.ts +33 -0
  72. package/pv-components/dist/vue/ai/components/base/PvFilterModal/types.d.ts +11 -0
  73. package/pv-components/dist/vue/ai/components/base/PvFilterPanel/PvFilterPanel.vue.d.ts +78 -0
  74. package/pv-components/dist/vue/ai/components/base/PvFilterPanel/PvFilterPanelAccordion.vue.d.ts +18 -0
  75. package/pv-components/dist/vue/ai/components/base/PvFilterPanel/PvFilterPanelAppliedFiltersSection.vue.d.ts +12 -0
  76. package/pv-components/dist/vue/ai/components/base/PvFilterPanel/PvFilterPanelCategoryButtonRow.vue.d.ts +14 -0
  77. package/pv-components/dist/vue/ai/components/base/PvFilterPanel/PvFilterPanelOptionRow.vue.d.ts +35 -0
  78. package/pv-components/dist/vue/ai/components/base/PvFilterPanel/advancedFilterModel.d.ts +26 -0
  79. package/pv-components/dist/vue/ai/components/base/PvFilterPanel/aggregateFilterModel.d.ts +56 -0
  80. package/pv-components/dist/vue/ai/components/base/PvFilterPanel/filterOptionDisplay.d.ts +28 -0
  81. package/pv-components/dist/vue/ai/components/base/PvFilterPanel/filterOptionValue.d.ts +15 -0
  82. package/pv-components/dist/vue/ai/components/base/PvFilterPanel/types.d.ts +525 -0
  83. package/pv-components/dist/vue/ai/components/base/PvFilterPanel/usePvFilterPanel.d.ts +30 -0
  84. package/pv-components/dist/vue/ai/components/base/PvFilterPanel/usePvFilterStore.d.ts +5 -0
  85. package/pv-components/dist/vue/ai/components/base/PvGhostInput/PvGhostInput.vue.d.ts +45 -0
  86. package/pv-components/dist/vue/ai/components/base/PvGhostInput/types.d.ts +2 -0
  87. package/pv-components/dist/vue/ai/components/base/PvHeader/PvHeader.vue.d.ts +36 -0
  88. package/pv-components/dist/vue/ai/components/base/PvHorizontalScroller/PvHorizontalScroller.vue.d.ts +36 -0
  89. package/pv-components/dist/vue/ai/components/base/PvHorizontalScroller/types.d.ts +21 -0
  90. package/pv-components/dist/vue/ai/components/base/PvHoverActionMenu/PvHoverActionMenu.vue.d.ts +42 -0
  91. package/pv-components/dist/vue/ai/components/base/PvHoverActionMenu/types.d.ts +15 -0
  92. package/pv-components/dist/vue/ai/components/base/PvIcon/PvIcon.vue.d.ts +14 -0
  93. package/pv-components/dist/vue/ai/components/base/PvInput/PvInput.vue.d.ts +59 -0
  94. package/pv-components/dist/vue/ai/components/base/PvInput/types.d.ts +3 -0
  95. package/pv-components/dist/vue/ai/components/base/PvInsightCard/PvInsightCard.vue.d.ts +29 -0
  96. package/pv-components/dist/vue/ai/components/base/PvMenu/PvMenu.vue.d.ts +57 -0
  97. package/pv-components/dist/vue/ai/components/base/PvMenu/PvMenuControlPanel.vue.d.ts +26 -0
  98. package/pv-components/dist/vue/ai/components/base/PvMenu/PvMenuEmptyState.vue.d.ts +3 -0
  99. package/pv-components/dist/vue/ai/components/base/PvMenu/cascadeUtils.d.ts +42 -0
  100. package/pv-components/dist/vue/ai/components/base/PvMenu/items/PvMenuBaseItem.vue.d.ts +11 -0
  101. package/pv-components/dist/vue/ai/components/base/PvMenu/items/PvMenuItem.vue.d.ts +26 -0
  102. package/pv-components/dist/vue/ai/components/base/PvMenu/items/PvMenuItemAction.vue.d.ts +9 -0
  103. package/pv-components/dist/vue/ai/components/base/PvMenu/items/PvMenuItemVariant.vue.d.ts +22 -0
  104. package/pv-components/dist/vue/ai/components/base/PvMenu/symbols.d.ts +11 -0
  105. package/pv-components/dist/vue/ai/components/base/PvMenu/types.d.ts +31 -0
  106. package/pv-components/dist/vue/ai/components/base/PvMenu/useMenuPosition.d.ts +66 -0
  107. package/pv-components/dist/vue/ai/components/base/PvModal/PvModal.vue.d.ts +31 -0
  108. package/pv-components/dist/vue/ai/components/base/PvMultiSelectButton/PvMultiSelectButton.vue.d.ts +170 -0
  109. package/pv-components/dist/vue/ai/components/base/PvMultiSelectButton/mocks.d.ts +20 -0
  110. package/pv-components/dist/vue/ai/components/base/PvMultiSelectButton/types.d.ts +129 -0
  111. package/pv-components/dist/vue/ai/components/base/PvPagination/PvPagination.vue.d.ts +24 -0
  112. package/pv-components/dist/vue/ai/components/base/PvPagination/types.d.ts +3 -0
  113. package/pv-components/dist/vue/ai/components/base/PvPagination/usePagination.d.ts +12 -0
  114. package/pv-components/dist/vue/ai/components/base/PvPill/PvPill.vue.d.ts +29 -0
  115. package/pv-components/dist/vue/ai/components/base/PvPill/types.d.ts +4 -0
  116. package/pv-components/dist/vue/ai/components/base/PvPopover/PvPopover.vue.d.ts +37 -0
  117. package/pv-components/dist/vue/ai/components/base/PvPopoverMenu/PvPopoverMenu.vue.d.ts +28 -0
  118. package/pv-components/dist/vue/ai/components/base/PvPopoverV2/PvPopoverV2.vue.d.ts +39 -0
  119. package/pv-components/dist/vue/ai/components/base/PvPopoverV2/types.d.ts +36 -0
  120. package/pv-components/dist/vue/ai/components/base/PvProgressBar/PvProgressBar.vue.d.ts +15 -0
  121. package/pv-components/dist/vue/ai/components/base/PvQueryBuilderInput/PvQueryBuilderInput.vue.d.ts +73 -0
  122. package/pv-components/dist/vue/ai/components/base/PvQueryBuilderInput/QueryBuilderMenuOptionRenderer.vue.d.ts +6 -0
  123. package/pv-components/dist/vue/ai/components/base/PvQueryBuilderInput/QueryFormatter.vue.d.ts +20 -0
  124. package/pv-components/dist/vue/ai/components/base/PvQueryBuilderInput/useQueryBuilder.d.ts +44 -0
  125. package/pv-components/dist/vue/ai/components/base/PvRadioGroup/PvRadioGroup.vue.d.ts +30 -0
  126. package/pv-components/dist/vue/ai/components/base/PvRadioGroup/types.d.ts +5 -0
  127. package/pv-components/dist/vue/ai/components/base/PvRange/PvRange.vue.d.ts +36 -0
  128. package/pv-components/dist/vue/ai/components/base/PvRange/types.d.ts +44 -0
  129. package/pv-components/dist/vue/ai/components/base/PvRating/PvRating.vue.d.ts +15 -0
  130. package/pv-components/dist/vue/ai/components/base/PvRating/types.d.ts +4 -0
  131. package/pv-components/dist/vue/ai/components/base/PvReleaseBadge/PvReleaseBadge.vue.d.ts +10 -0
  132. package/pv-components/dist/vue/ai/components/base/PvReleaseBadge/types.d.ts +1 -0
  133. package/pv-components/dist/vue/ai/components/base/PvSearchInput/PvSearchInput.vue.d.ts +33 -0
  134. package/pv-components/dist/vue/ai/components/base/PvSegmentedControl/PvSegmentedControl.vue.d.ts +23 -0
  135. package/pv-components/dist/vue/ai/components/base/PvSegmentedControl/types.d.ts +18 -0
  136. package/pv-components/dist/vue/ai/components/base/PvSelectButton/PvSelectButton.vue.d.ts +85 -0
  137. package/pv-components/dist/vue/ai/components/base/PvSelectButton/PvSelectButtonTrigger/PvSelectButtonTrigger.vue.d.ts +14 -0
  138. package/pv-components/dist/vue/ai/components/base/PvSelectButton/PvSelectButtonTrigger/types.d.ts +27 -0
  139. package/pv-components/dist/vue/ai/components/base/PvSelectButton/mocks.d.ts +21 -0
  140. package/pv-components/dist/vue/ai/components/base/PvSelectButton/types.d.ts +3 -0
  141. package/pv-components/dist/vue/ai/components/base/PvSelectableCard/PvSelectableCard.vue.d.ts +30 -0
  142. package/pv-components/dist/vue/ai/components/base/PvSidebar/PvSidebar.vue.d.ts +38 -0
  143. package/pv-components/dist/vue/ai/components/base/PvSkeleton/PvSkeleton.vue.d.ts +17 -0
  144. package/pv-components/dist/vue/ai/components/base/PvSkeleton/types.d.ts +8 -0
  145. package/pv-components/dist/vue/ai/components/base/PvSpinner/PvSpinner.vue.d.ts +13 -0
  146. package/pv-components/dist/vue/ai/components/base/PvSpinner/types.d.ts +3 -0
  147. package/pv-components/dist/vue/ai/components/base/PvSplitButton/PvSplitButton.vue.d.ts +27 -0
  148. package/pv-components/dist/vue/ai/components/base/PvSplitButton/types.d.ts +12 -0
  149. package/pv-components/dist/vue/ai/components/base/PvSprite/PvSprite.vue.d.ts +9 -0
  150. package/pv-components/dist/vue/ai/components/base/PvStepper/PvStepper.vue.d.ts +16 -0
  151. package/pv-components/dist/vue/ai/components/base/PvSuggestionTag/PvSuggestionTag.vue.d.ts +37 -0
  152. package/pv-components/dist/vue/ai/components/base/PvSwitch/PvSwitch.vue.d.ts +34 -0
  153. package/pv-components/dist/vue/ai/components/base/PvSwitch/types.d.ts +2 -0
  154. package/pv-components/dist/vue/ai/components/base/PvTabList/PvTabList.vue.d.ts +12 -0
  155. package/pv-components/dist/vue/ai/components/base/PvTableOfContents/PvTableOfContents.vue.d.ts +19 -0
  156. package/pv-components/dist/vue/ai/components/base/PvTableOfContents/types.d.ts +6 -0
  157. package/pv-components/dist/vue/ai/components/base/PvTabs/PvTabs.vue.d.ts +20 -0
  158. package/pv-components/dist/vue/ai/components/base/PvTabs/types.d.ts +10 -0
  159. package/pv-components/dist/vue/ai/components/base/PvTag/PvTag.vue.d.ts +53 -0
  160. package/pv-components/dist/vue/ai/components/base/PvTag/types.d.ts +3 -0
  161. package/pv-components/dist/vue/ai/components/base/PvTextArea/PvTextArea.vue.d.ts +51 -0
  162. package/pv-components/dist/vue/ai/components/base/PvTextArea/types.d.ts +2 -0
  163. package/pv-components/dist/vue/ai/components/base/PvToast/PvToast.vue.d.ts +33 -0
  164. package/pv-components/dist/vue/ai/components/base/PvToast/types.d.ts +1 -0
  165. package/pv-components/dist/vue/ai/components/base/PvToggleButton/PvToggleButton.vue.d.ts +48 -0
  166. package/pv-components/dist/vue/ai/components/base/PvToggleButton/types.d.ts +3 -0
  167. package/pv-components/dist/vue/ai/components/base/PvToggleGroup/PvToggleGroup.vue.d.ts +12 -0
  168. package/pv-components/dist/vue/ai/components/base/PvToggleGroup/types.d.ts +12 -0
  169. package/pv-components/dist/vue/ai/components/base/PvTooltip/PvTooltip.vue.d.ts +41 -0
  170. package/pv-components/dist/vue/ai/components/base/PvTooltip/types.d.ts +4 -0
  171. package/pv-components/dist/vue/ai/components/base/PvTooltipV2/PvTooltipV2.vue.d.ts +28 -0
  172. package/pv-components/dist/vue/ai/components/base/PvTooltipV2/types.d.ts +14 -0
  173. package/pv-components/dist/vue/ai/components/base/PvTree/PvButtonTreeItem.vue.d.ts +36 -0
  174. package/pv-components/dist/vue/ai/components/base/PvTree/PvCheckboxTreeItem.vue.d.ts +36 -0
  175. package/pv-components/dist/vue/ai/components/base/PvTree/PvSimpleItemTree.vue.d.ts +7 -0
  176. package/pv-components/dist/vue/ai/components/base/PvTree/PvSimpleNestedTree.vue.d.ts +31 -0
  177. package/pv-components/dist/vue/ai/components/base/PvTree/PvSimpleNestedTreeItem.vue.d.ts +35 -0
  178. package/pv-components/dist/vue/ai/components/base/PvTree/PvTree.vue.d.ts +31 -0
  179. package/pv-components/dist/vue/ai/components/base/PvTree/PvTreeGroup.vue.d.ts +18 -0
  180. package/pv-components/dist/vue/ai/components/base/PvTree/PvTreeItem.vue.d.ts +37 -0
  181. package/pv-components/dist/vue/ai/components/base/PvTree/PvTreeReorderIcon.vue.d.ts +3 -0
  182. package/pv-components/dist/vue/ai/components/base/PvTree/composables/useDragAndDrop.d.ts +23 -0
  183. package/pv-components/dist/vue/ai/components/base/PvTree/composables/useDragAndDropIndicator.d.ts +8 -0
  184. package/pv-components/dist/vue/ai/components/base/PvTree/composables/useDraggingState.d.ts +40 -0
  185. package/pv-components/dist/vue/ai/components/base/PvTree/composables/useHoverIcon.d.ts +6 -0
  186. package/pv-components/dist/vue/ai/components/base/PvTree/composables/useTreeUpdate.d.ts +8 -0
  187. package/pv-components/dist/vue/ai/components/base/PvTree/symbols.d.ts +12 -0
  188. package/pv-components/dist/vue/ai/components/base/PvTree/types.d.ts +61 -0
  189. package/pv-components/dist/vue/ai/components/base/PvWidget/PvWidget.vue.d.ts +18 -0
  190. package/pv-components/dist/vue/ai/components/base/baseProps.d.ts +18 -0
  191. package/pv-components/dist/vue/ai/components/base/index.d.ts +92 -0
  192. package/pv-components/dist/vue/ai/components/layout/PvSidePanel/PvSidePanel.vue.d.ts +24 -0
  193. package/pv-components/dist/vue/ai/pv-components-ai.mjs +951 -0
  194. package/pv-components/dist/vue/ai/pv-components-ai.mjs.map +1 -0
  195. package/pv-components/dist/vue/visualizations/pv-components-visualizations.mjs +1 -1
  196. package/pv-components/dist/vue/visualizations/pv-components-visualizations.mjs.map +1 -1
  197. package/pv-components/dist/web/components/pv-confirmation/pv-confirmation.js +6441 -0
  198. package/pv-components/dist/web/components/pv-prompt-input/pv-prompt-input.js +6541 -0
  199. package/pv-components/dist/web/components/pv-question/pv-question.js +6704 -0
  200. package/pv-components/dist/web/components/pv-reasoning/pv-reasoning.js +6418 -0
  201. package/pv-components/dist/web/components/pv-tool/pv-tool.js +6450 -0
  202. package/pv-components/dist/web/pv-components.iife.js +37 -37
  203. package/pv-components/dist/web/pv-components.iife.js.map +1 -1
@@ -0,0 +1,951 @@
1
+ (function(){try{if(typeof document<`u`){var e=document.createElement(`style`);e.appendChild(document.createTextNode(`.pv-badge-md[data-v-013a5d76]{--inset-size:2px 2px;min-width:20px;min-height:20px;max-height:20px;font-weight:500}.pv-badge-sm[data-v-013a5d76]{--inset-size:0 2px;min-width:16px;min-height:16px;max-height:16px;font-weight:500}.input-icon-position{pointer-events:none;position:absolute;top:8px;left:12px}.pv-question[data-v-38f26601]{--card-radius:.75rem;box-shadow:0 4px 16px #00000029}.pv-question__listbox[data-v-38f26601]:focus-visible{outline:2px solid var(--color-border-accent,#36c5ba);outline-offset:2px;border-radius:.5rem}.pv-question__option[data-v-38f26601],.pv-question__chat[data-v-38f26601]{cursor:pointer;min-width:0}.pv-question__option[data-active][data-v-38f26601],.pv-question__chat[data-active][data-v-38f26601]{background-color:var(--card-hover-background-color,#e8f2f4)}.pv-question__option[data-v-38f26601]:active,.pv-question__chat[data-v-38f26601]:active{background-color:var(--card-pressed-background-color,#c7d8db)}.pv-question__chevron[data-v-38f26601]{visibility:hidden;margin-inline-start:auto}.pv-question__option[data-active] .pv-question__chevron[data-v-38f26601],.pv-question__chat[data-active] .pv-question__chevron[data-v-38f26601]{visibility:visible}.pv-question__check[data-v-38f26601]{margin-inline-start:auto}.pv-question__option[aria-selected=true] .pv-question__chevron[data-v-38f26601]{display:none}.pv-question__chat-badge[data-v-38f26601]{--flex-gap:0;background-color:#e0e5e4;flex:0 0 1rem;justify-content:center;height:1rem}.pv-question__chat-input[data-v-38f26601] .pv-input-text{min-width:0}.pv-confirmation__actions[data-v-c200deca]{--flex-justify:flex-end}.pv-prompt-input[data-v-155361b4]{--flex-align:stretch;cursor:text;transition-property:border-color,box-shadow;transition-duration:.125s}.pv-prompt-input[data-v-155361b4]:hover{border-color:var(--text-input-hover-border-color,#d2d8dc);box-shadow:0 .25px 3px #0003}.pv-prompt-input[data-v-155361b4]:focus-within{border-color:var(--text-input-focus-border-color,#36c5ba)}.pv-prompt-input__textarea[data-v-155361b4]{--flex-align:stretch;width:100%}.pv-prompt-input__textarea[data-v-155361b4] textarea{field-sizing:content;max-height:var(--prompt-input-max-height);resize:none;background-color:#0000;border:0;width:100%;min-width:0;padding:0;overflow-y:auto}.pv-prompt-input__textarea[data-v-155361b4] textarea:focus,.pv-prompt-input__textarea[data-v-155361b4] textarea:focus-visible{outline:none}.pv-prompt-input__footer[data-v-155361b4]{--flex-justify:space-between}.pv-prompt-input__actions[data-v-155361b4]{min-width:0}summary[data-v-d953baf8]{background-image:none;padding-right:2px}.pv-reasoning__content[data-v-6111e5ae]{white-space:pre-wrap;padding:8px 0 8px 24px}.pv-tool__disclosure-content[data-v-a5e28b1a]{padding:0 12px 12px}.pv-tool__heading[data-v-a5e28b1a]{min-width:0}.pv-tool__content[data-v-a5e28b1a]{padding-top:12px}pre[data-v-a5e28b1a]{white-space:pre-wrap;word-break:break-word;max-width:100%;margin:0;overflow-x:auto}
2
+ /*$vite$:1*/`)),document.head.appendChild(e)}}catch(e){console.error(`vite-plugin-css-injected-by-js`,e)}})();import { Fragment as e, computed as t, createBlock as n, createCommentVNode as r, createElementBlock as i, createElementVNode as a, createTextVNode as o, createVNode as s, defineComponent as c, getCurrentInstance as l, mergeModels as u, mergeProps as d, nextTick as f, normalizeClass as p, normalizeStyle as m, onBeforeUnmount as h, onScopeDispose as g, openBlock as _, ref as v, renderList as y, renderSlot as b, toDisplayString as x, useId as ee, useModel as S, vModelDynamic as C, vModelText as w, watch as T, withCtx as E, withDirectives as D, withKeys as te, withModifiers as O } from "vue";
3
+ //#endregion
4
+ //#region src/components/base/PvSpinner/PvSpinner.vue
5
+ var k = /* @__PURE__ */ c({
6
+ __name: "PvSpinner",
7
+ props: {
8
+ size: { default: "lg" },
9
+ variant: { default: "primary" }
10
+ },
11
+ setup(e) {
12
+ let t = {
13
+ xs: "0.75rem",
14
+ sm: "1rem",
15
+ md: "1.25rem",
16
+ lg: "1.5rem",
17
+ xl: "2rem"
18
+ }, n = {
19
+ primary: "pv-spinner",
20
+ dark: "pv-spinner-dark",
21
+ white: "pv-spinner-light"
22
+ };
23
+ return (r, a) => (_(), i("div", {
24
+ "data-testid": "pv-spinner",
25
+ class: p(n[e.variant]),
26
+ style: m({ "--size": t[e.size] })
27
+ }, null, 6));
28
+ }
29
+ }), A = ["ghost"], j = {
30
+ md: "pv-button-small",
31
+ lg: void 0,
32
+ xl: "pv-button-large"
33
+ }, M = (e) => e == null || !j.hasOwnProperty(e) ? null : j[e] || null;
34
+ //#endregion
35
+ //#region src/web-components/utils.ts
36
+ function N() {
37
+ let e = v(!1), t = l()?.root || {};
38
+ return "isCE" in t && t.isCE === !0 && (e.value = !0), e;
39
+ }
40
+ //#endregion
41
+ //#region src/components/base/baseProps.ts
42
+ var P = [
43
+ void 0,
44
+ 10,
45
+ 12,
46
+ 20,
47
+ 24,
48
+ 32,
49
+ 64
50
+ ], F = ["xlink:href"], I = /* @__PURE__ */ c({
51
+ __name: "PvIcon",
52
+ props: {
53
+ name: {},
54
+ size: {}
55
+ },
56
+ setup(e) {
57
+ let n = e, r = N(), o = v(null), s = t(() => ({
58
+ "pv-icon": !0,
59
+ [`pv-icon-${n.size}`]: n.size != null && P.includes(n.size)
60
+ })), c = t(() => r.value && o.value ? `${o.value}#${n.name}` : `#${n.name}`);
61
+ return globalThis.__PV_GLOBAL_SPRITE_PATH__ && (o.value = globalThis.__PV_GLOBAL_SPRITE_PATH__), (e, t) => (_(), i("svg", {
62
+ "data-testid": "pv-icon",
63
+ "aria-hidden": "true",
64
+ class: p(s.value)
65
+ }, [a("use", { "xlink:href": c.value }, null, 8, F)], 2));
66
+ }
67
+ }), L = /* @__PURE__ */ c({
68
+ __name: "PvCounterBadge",
69
+ props: {
70
+ maxValue: { default: 99 },
71
+ prefix: { default: "" },
72
+ size: { default: "sm" },
73
+ value: {},
74
+ variant: { default: "primary" }
75
+ },
76
+ setup(e) {
77
+ let n = e, r = t(() => n.maxValue && n.value && n.value > n.maxValue ? `${n.maxValue}+` : n.value == null ? "-" : `${n.prefix}${n.value}`), a = t(() => ({
78
+ "pv-inline-block pv-inset-square pv-radius pv-text-center": !0,
79
+ "pv-badge-md pv-text-body-md": n.size == "md",
80
+ "pv-badge-sm pv-text-body-sm": n.size == "sm",
81
+ "pv-surface-brand-inverse pv-text-inverse": n.variant == "primary",
82
+ "pv-badge-secondary": n.variant == "secondary",
83
+ "pv-surface-lighten-5": n.variant == "tertiary",
84
+ "pv-text-tertiary": n.variant == "ghost" || n.variant == "tertiary",
85
+ "pv-surface": n.variant == "ghost"
86
+ }));
87
+ return (e, t) => (_(), i("div", {
88
+ class: p(a.value),
89
+ "data-testid": "pv-counter-badge"
90
+ }, x(r.value), 3));
91
+ }
92
+ }), R = (e, t) => {
93
+ let n = e.__vccOpts || e;
94
+ for (let [e, r] of t) n[e] = r;
95
+ return n;
96
+ }, z = /* @__PURE__ */ R(L, [["__scopeId", "data-v-013a5d76"]]), B = ["disabled", "aria-label"], V = {
97
+ key: 2,
98
+ "data-testid": "pv-button-label"
99
+ }, H = /* @__PURE__ */ c({
100
+ __name: "PvButton",
101
+ props: {
102
+ variant: { default: "primary" },
103
+ disabled: {
104
+ type: Boolean,
105
+ default: !1
106
+ },
107
+ size: { default: "lg" },
108
+ loading: {
109
+ type: Boolean,
110
+ default: !1
111
+ },
112
+ label: {},
113
+ leftIcon: {},
114
+ rightIcon: {},
115
+ inverse: {
116
+ type: Boolean,
117
+ default: !1
118
+ },
119
+ leftCounterBadge: {},
120
+ rightCounterBadge: {},
121
+ ariaLabel: {}
122
+ },
123
+ setup(a) {
124
+ let o = a, s = t(() => !o.label || o.loading ? o.label || o.ariaLabel : void 0), c = t(() => {
125
+ let e = [];
126
+ o.inverse && A.includes(o.variant) ? e.push(`pv-button-${o.variant}-inverse`) : e.push(`pv-button-${o.variant}`);
127
+ let t = M(o.size);
128
+ return t && e.push(t), e;
129
+ });
130
+ return (t, o) => (_(), i("button", {
131
+ type: "button",
132
+ class: p(c.value),
133
+ disabled: a.disabled,
134
+ "aria-label": s.value,
135
+ "data-testid": "pv-button"
136
+ }, [a.loading ? (_(), n(k, {
137
+ key: 0,
138
+ size: "sm"
139
+ })) : (_(), i(e, { key: 1 }, [
140
+ a.leftCounterBadge ? (_(), n(z, {
141
+ key: 0,
142
+ value: a.leftCounterBadge,
143
+ variant: "tertiary"
144
+ }, null, 8, ["value"])) : r("", !0),
145
+ a.leftIcon ? (_(), n(I, {
146
+ key: 1,
147
+ name: a.leftIcon,
148
+ "data-testid": "pv-button-left-icon"
149
+ }, null, 8, ["name"])) : r("", !0),
150
+ a.label ? (_(), i("span", V, x(a.label), 1)) : r("", !0),
151
+ a.rightCounterBadge ? (_(), n(z, {
152
+ key: 3,
153
+ value: a.rightCounterBadge,
154
+ variant: "tertiary"
155
+ }, null, 8, ["value"])) : r("", !0),
156
+ a.rightIcon ? (_(), n(I, {
157
+ key: 4,
158
+ name: a.rightIcon,
159
+ "data-testid": "pv-button-right-icon"
160
+ }, null, 8, ["name"])) : r("", !0)
161
+ ], 64))], 10, B));
162
+ }
163
+ }), U = ["for"], ne = {
164
+ key: 0,
165
+ class: "pv-surface-accent pv-inset-square pv-text-body-md pv-radius pv-bordered",
166
+ style: { "--inset-size": "6px 10px" }
167
+ }, W = { class: "pv-relative pv-flex-item" }, G = [
168
+ "disabled",
169
+ "type",
170
+ "placeholder",
171
+ "id",
172
+ "data-invalid",
173
+ "step"
174
+ ], K = /* @__PURE__ */ c({
175
+ __name: "PvInput",
176
+ props: /* @__PURE__ */ u({
177
+ showLabel: { type: Boolean },
178
+ error: { type: Boolean },
179
+ disabled: { type: Boolean },
180
+ placeholder: {},
181
+ type: { default: "text" },
182
+ id: { default: Math.random().toString() },
183
+ lowerLabel: {},
184
+ variant: { default: "white" },
185
+ step: {},
186
+ prefixLabel: {},
187
+ inputIcon: {}
188
+ }, {
189
+ modelValue: {},
190
+ modelModifiers: {}
191
+ }),
192
+ emits: ["update:modelValue"],
193
+ setup(o) {
194
+ let s = o, c = S(o, "modelValue"), l = t(() => s.inputIcon ? { "--inset-size": "8px 12px 6px 36px" } : {});
195
+ return (t, s) => (_(), i(e, null, [
196
+ t.$slots.label || o.showLabel ? (_(), i("label", {
197
+ key: 0,
198
+ "data-testid": "pv-input-label",
199
+ class: "pv-label pv-stack-8",
200
+ for: o.id
201
+ }, [b(t.$slots, "label")], 8, U)) : r("", !0),
202
+ a("div", { class: p(["pv-flex pv-flex-item", { "pv-stack-8": o.lowerLabel }]) }, [o.prefixLabel ? (_(), i("div", ne, x(o.prefixLabel), 1)) : r("", !0), a("div", W, [o.inputIcon ? (_(), n(I, {
203
+ key: 0,
204
+ class: "pv-absolute input-icon-position",
205
+ name: o.inputIcon
206
+ }, null, 8, ["name"])) : r("", !0), D(a("input", d(t.$attrs, {
207
+ "onUpdate:modelValue": s[0] ||= (e) => c.value = e,
208
+ "data-testid": "pv-input",
209
+ class: ["pv-input-text", {
210
+ "pv-inset-square": o.inputIcon,
211
+ "pv-surface-accent": o.variant === "grey"
212
+ }],
213
+ style: [l.value, { width: "100%" }],
214
+ disabled: o.disabled,
215
+ type: o.type,
216
+ placeholder: o.placeholder,
217
+ id: o.id,
218
+ "data-invalid": o.error ? !0 : void 0,
219
+ step: o.step
220
+ }), null, 16, G), [[C, c.value]])])], 2),
221
+ o.lowerLabel ? (_(), i("p", {
222
+ key: 1,
223
+ "data-testid": "pv-input-lower-label",
224
+ style: { "margin-left": "12px" },
225
+ class: p(["pv-text-body-xs", {
226
+ "pv-text-red": o.error,
227
+ "pv-text-subdued": !o.error
228
+ }])
229
+ }, x(o.lowerLabel), 3)) : r("", !0)
230
+ ], 64));
231
+ }
232
+ }), q = ["onKeydown"], J = { class: "pv-question__header pv-inset-square-16 pv-space-between" }, Y = {
233
+ class: "pv-question__header-copy pv-flex-vertical pv-flex-item",
234
+ style: {
235
+ "--flex-align": "flex-start",
236
+ "--flex-gap": "4px",
237
+ "min-width": "0"
238
+ }
239
+ }, X = {
240
+ key: 0,
241
+ class: "pv-text-body-md pv-text-tertiary"
242
+ }, Z = { class: "pv-question__header-actions pv-flex" }, re = {
243
+ key: 0,
244
+ class: "pv-text-body-xs pv-text-tertiary",
245
+ role: "status",
246
+ "aria-live": "polite"
247
+ }, ie = {
248
+ class: "pv-question__body pv-border-bottom",
249
+ style: { "padding-bottom": "2px" }
250
+ }, ae = {
251
+ class: "pv-question__options pv-flex-vertical pv-inset-inline-16",
252
+ style: {
253
+ "--flex-align": "stretch",
254
+ "--flex-gap": "2px"
255
+ }
256
+ }, oe = ["aria-activedescendant"], se = [
257
+ "id",
258
+ "aria-selected",
259
+ "data-active",
260
+ "onClick",
261
+ "onMouseenter"
262
+ ], ce = {
263
+ class: "pv-question__answer-text pv-flex-item pv-text-title-md",
264
+ style: { "min-width": "0" }
265
+ }, le = ["title"], ue = { class: "pv-visually-hidden" }, de = ["data-active"], fe = { class: "pv-question__chat-badge pv-flex pv-radius pv-text-subdued" }, pe = {
266
+ class: "pv-question__chat-input pv-flex-item",
267
+ style: { "min-width": "0" }
268
+ }, me = { class: "pv-question__footer pv-inset-squish-12 pv-space-between" }, he = /* @__PURE__ */ R(/* @__PURE__ */ c({
269
+ __name: "PvQuestion",
270
+ props: /* @__PURE__ */ u({
271
+ chatInputLabel: { default: "Other answer" },
272
+ chatInputPlaceholder: { default: "Something else..." },
273
+ currentQuestion: { default: 1 },
274
+ headerLabel: { default: "Question" },
275
+ options: { default: () => [] },
276
+ subheader: { default: "" },
277
+ totalQuestions: { default: 1 }
278
+ }, {
279
+ modelValue: {},
280
+ modelModifiers: {},
281
+ chatInput: { default: "" },
282
+ chatInputModifiers: {}
283
+ }),
284
+ emits: /* @__PURE__ */ u([
285
+ "close",
286
+ "select",
287
+ "skip",
288
+ "submit"
289
+ ], ["update:modelValue", "update:chatInput"]),
290
+ setup(o, { emit: c }) {
291
+ let l = o, u = c, d = S(o, "modelValue"), p = S(o, "chatInput"), m = ee(), h = `${m}-heading`, g = `${m}-keyboard-hint`, b = v(), C = v(), w = l.options.findIndex((e) => e.id === d.value), E = v(Math.max(w, 0)), D = t(() => l.totalQuestions > 1), k = t(() => E.value < l.options.length ? A(E.value) : void 0);
292
+ T(d, (e) => {
293
+ let t = l.options.findIndex((t) => t.id === e);
294
+ t >= 0 && (E.value = t);
295
+ }), T(() => l.options.map((e) => e.id), (e, t) => {
296
+ let n = e.findIndex((e) => e === d.value);
297
+ if (n >= 0) {
298
+ E.value = n;
299
+ return;
300
+ }
301
+ if (E.value === t.length) {
302
+ E.value = e.length;
303
+ return;
304
+ }
305
+ let r = t[E.value], i = e.indexOf(r);
306
+ E.value = i >= 0 ? i : Math.min(E.value, Math.max(e.length - 1, 0));
307
+ });
308
+ function A(e) {
309
+ return `${m}-option-${e}`;
310
+ }
311
+ function j(e) {
312
+ l.options.length && (E.value = e, f(() => b.value?.focus()));
313
+ }
314
+ function M() {
315
+ E.value = l.options.length, f(() => C.value?.querySelector("input")?.focus());
316
+ }
317
+ function N(e, t) {
318
+ E.value = t, d.value = e.id, u("select", e);
319
+ }
320
+ function P(e, t) {
321
+ N(e, t), f(() => b.value?.focus());
322
+ }
323
+ function F() {
324
+ E.value >= l.options.length && (E.value = 0);
325
+ }
326
+ function L(e) {
327
+ e.key === "ArrowDown" ? (e.preventDefault(), E.value >= l.options.length - 1 ? M() : E.value += 1) : e.key === "ArrowUp" ? (e.preventDefault(), E.value <= 0 ? M() : --E.value) : e.key === "Enter" && l.options[E.value] && (e.preventDefault(), N(l.options[E.value], E.value));
328
+ }
329
+ function R() {
330
+ E.value = l.options.length, d.value = void 0;
331
+ }
332
+ function B(e) {
333
+ if (!(!l.options.length && (e.key === "ArrowDown" || e.key === "ArrowUp"))) {
334
+ if (e.key === "ArrowDown") e.preventDefault(), j(0);
335
+ else if (e.key === "ArrowUp") e.preventDefault(), j(l.options.length - 1);
336
+ else if (e.key === "Enter" && !e.isComposing) {
337
+ e.preventDefault();
338
+ let t = p.value.trim();
339
+ t && u("submit", t);
340
+ }
341
+ }
342
+ }
343
+ function V() {
344
+ u("close");
345
+ }
346
+ function U() {
347
+ u("skip");
348
+ }
349
+ return (t, c) => (_(), i("section", {
350
+ class: "pv-question pv-card pv-surface pv-full-width",
351
+ "data-testid": "pv-question",
352
+ "aria-labelledby": h,
353
+ onKeydown: te(O(U, ["stop", "prevent"]), ["esc"])
354
+ }, [
355
+ a("header", J, [a("div", Y, [a("h3", {
356
+ id: h,
357
+ class: "pv-heading-3"
358
+ }, x(o.headerLabel), 1), o.subheader ? (_(), i("p", X, x(o.subheader), 1)) : r("", !0)]), a("div", Z, [D.value ? (_(), i("span", re, x(o.currentQuestion) + " of " + x(o.totalQuestions), 1)) : r("", !0), s(H, {
359
+ ariaLabel: "Close",
360
+ leftIcon: "close",
361
+ size: "md",
362
+ variant: "ghost",
363
+ onClick: V
364
+ })])]),
365
+ a("div", ie, [a("div", ae, [a("div", {
366
+ ref_key: "listboxRef",
367
+ ref: b,
368
+ class: "pv-question__listbox pv-flex-vertical",
369
+ style: {
370
+ "--flex-align": "stretch",
371
+ "--flex-gap": "2px"
372
+ },
373
+ "data-testid": "pv-question-listbox",
374
+ role: "listbox",
375
+ tabindex: "0",
376
+ "aria-activedescendant": k.value,
377
+ "aria-describedby": g,
378
+ "aria-labelledby": h,
379
+ onFocus: F,
380
+ onKeydown: L
381
+ }, [(_(!0), i(e, null, y(o.options, (e, t) => (_(), i("div", {
382
+ id: A(t),
383
+ key: e.id,
384
+ class: "pv-question__option pv-flex pv-inset-squish-12 pv-radius-lg",
385
+ "data-testid": "pv-question-option",
386
+ role: "option",
387
+ "aria-selected": d.value === e.id,
388
+ "data-active": E.value === t || void 0,
389
+ onClick: (n) => P(e, t),
390
+ onMouseenter: (e) => E.value = t
391
+ }, [
392
+ s(z, {
393
+ value: t + 1,
394
+ size: "sm",
395
+ variant: "tertiary"
396
+ }, null, 8, ["value"]),
397
+ a("span", ce, x(e.label), 1),
398
+ e.helpText ? (_(), i("span", {
399
+ key: 0,
400
+ class: "pv-question__help pv-flex",
401
+ style: { "--flex-gap": "0" },
402
+ title: e.helpText
403
+ }, [s(I, {
404
+ class: "pv-text-tertiary",
405
+ name: "info-circle",
406
+ size: 12
407
+ }), a("span", ue, x(e.helpText), 1)], 8, le)) : r("", !0),
408
+ d.value === e.id ? (_(), n(I, {
409
+ key: 1,
410
+ class: "pv-question__check pv-text-brand",
411
+ name: "check"
412
+ })) : r("", !0),
413
+ s(I, {
414
+ class: "pv-question__chevron pv-text-tertiary",
415
+ name: "chevron-right"
416
+ })
417
+ ], 40, se))), 128))], 40, oe), a("div", {
418
+ ref_key: "chatInputWrapperRef",
419
+ ref: C,
420
+ class: "pv-question__chat pv-flex pv-inset-squish-12 pv-radius-lg",
421
+ "data-testid": "pv-question-chat",
422
+ "data-active": E.value === o.options.length || void 0,
423
+ onClick: M,
424
+ onMouseenter: c[1] ||= (e) => E.value = o.options.length
425
+ }, [
426
+ a("span", fe, [s(I, {
427
+ name: "text-search",
428
+ size: 12
429
+ })]),
430
+ a("div", pe, [s(K, {
431
+ modelValue: p.value,
432
+ "onUpdate:modelValue": c[0] ||= (e) => p.value = e,
433
+ "aria-label": o.chatInputLabel,
434
+ placeholder: o.chatInputPlaceholder,
435
+ onFocus: R,
436
+ onKeydown: B
437
+ }, null, 8, [
438
+ "modelValue",
439
+ "aria-label",
440
+ "placeholder"
441
+ ])]),
442
+ s(I, {
443
+ class: "pv-question__chevron pv-text-tertiary",
444
+ name: "chevron-right"
445
+ })
446
+ ], 40, de)])]),
447
+ a("footer", me, [a("span", {
448
+ id: g,
449
+ class: "pv-text-body-xs pv-text-tertiary"
450
+ }, "↑↓ to navigate • Enter to select • Esc to skip"), s(H, {
451
+ class: "pv-question__skip",
452
+ label: "Skip",
453
+ size: "lg",
454
+ variant: "secondary",
455
+ onClick: U
456
+ })])
457
+ ], 40, q));
458
+ }
459
+ }), [["__scopeId", "data-v-38f26601"]]), ge = {
460
+ key: 0,
461
+ class: "pv-confirmation pv-bordered pv-radius pv-inset-square-16 pv-flow-16",
462
+ "data-testid": "pv-confirmation",
463
+ "aria-label": "Tool approval"
464
+ }, _e = { class: "pv-text-body-sm" }, ve = { class: "pv-flex pv-confirmation__actions" }, ye = {
465
+ key: 1,
466
+ class: "pv-flex pv-text-body-sm pv-text-success",
467
+ role: "status"
468
+ }, be = {
469
+ key: 2,
470
+ class: "pv-flex pv-text-body-sm pv-text-critical",
471
+ role: "status"
472
+ }, xe = /* @__PURE__ */ R(/* @__PURE__ */ c({
473
+ __name: "PvConfirmation",
474
+ props: {
475
+ approval: {},
476
+ approveLabel: { default: "Approve" },
477
+ disabled: {
478
+ type: Boolean,
479
+ default: !1
480
+ },
481
+ message: { default: "This tool requires your approval before it can run." },
482
+ rejectLabel: { default: "Reject" },
483
+ state: {}
484
+ },
485
+ emits: ["respond"],
486
+ setup(n, { emit: c }) {
487
+ let l = n, u = c, d = t(() => l.state === "approval-requested" && l.approval !== void 0 && l.approval.approved === void 0), f = t(() => l.approval?.approved === !0 && (l.state === "approval-responded" || l.state === "input-available" || l.state === "output-available")), p = t(() => l.approval?.approved === !1 || l.state === "output-denied");
488
+ function m(e) {
489
+ u("respond", {
490
+ id: l.approval.id,
491
+ approved: e
492
+ });
493
+ }
494
+ return (t, c) => d.value || f.value || p.value ? (_(), i("section", ge, [d.value ? (_(), i(e, { key: 0 }, [a("div", _e, [b(t.$slots, "default", {}, () => [o(x(n.message), 1)], !0)]), a("div", ve, [s(H, {
495
+ variant: "secondary",
496
+ size: "md",
497
+ label: n.rejectLabel,
498
+ disabled: n.disabled,
499
+ onClick: c[0] ||= (e) => m(!1)
500
+ }, null, 8, ["label", "disabled"]), s(H, {
501
+ size: "md",
502
+ label: n.approveLabel,
503
+ disabled: n.disabled,
504
+ onClick: c[1] ||= (e) => m(!0)
505
+ }, null, 8, ["label", "disabled"])])], 64)) : f.value ? (_(), i("p", ye, [s(I, {
506
+ name: "check-circle",
507
+ size: 20
508
+ }), b(t.$slots, "accepted", {}, () => [c[2] ||= o("You approved this tool execution.", -1)], !0)])) : (_(), i("p", be, [s(I, {
509
+ name: "close-circle",
510
+ size: 20
511
+ }), b(t.$slots, "rejected", {}, () => [c[3] ||= o("You rejected this tool execution.", -1)], !0)]))])) : r("", !0);
512
+ }
513
+ }), [["__scopeId", "data-v-c200deca"]]), Se = {
514
+ class: "pv-flex-vertical",
515
+ style: { "--flex-align": "flex-start" }
516
+ }, Ce = ["for"], we = [
517
+ "rows",
518
+ "disabled",
519
+ "placeholder",
520
+ "id",
521
+ "data-invalid"
522
+ ], Te = /* @__PURE__ */ c({
523
+ __name: "PvTextArea",
524
+ props: /* @__PURE__ */ u({
525
+ error: { type: Boolean },
526
+ disabled: { type: Boolean },
527
+ placeholder: {},
528
+ id: { default: Math.random().toString() },
529
+ lowerLabel: {},
530
+ variant: { default: "white" },
531
+ rows: { default: 4 }
532
+ }, {
533
+ modelValue: {},
534
+ modelModifiers: {}
535
+ }),
536
+ emits: ["update:modelValue"],
537
+ setup(e) {
538
+ let t = S(e, "modelValue");
539
+ return (n, o) => (_(), i("div", Se, [
540
+ n.$slots.label ? (_(), i("label", {
541
+ key: 0,
542
+ class: "pv-label",
543
+ for: e.id
544
+ }, [b(n.$slots, "label")], 8, Ce)) : r("", !0),
545
+ D(a("textarea", d(n.$attrs, {
546
+ "onUpdate:modelValue": o[0] ||= (e) => t.value = e,
547
+ class: ["pv-textarea", { "pv-surface-accent": e.variant === "grey" }],
548
+ rows: e.rows,
549
+ disabled: e.disabled,
550
+ placeholder: e.placeholder,
551
+ id: e.id,
552
+ "data-invalid": e.error ? !0 : void 0
553
+ }), null, 16, we), [[w, t.value]]),
554
+ e.lowerLabel ? (_(), i("p", {
555
+ key: 1,
556
+ style: { "margin-left": "12px" },
557
+ class: p(["pv-text-body-xs", {
558
+ "pv-text-red": e.error,
559
+ "pv-text-subdued": !e.error
560
+ }])
561
+ }, x(e.lowerLabel), 3)) : r("", !0)
562
+ ]));
563
+ }
564
+ }), Ee = ["aria-busy"], De = {
565
+ key: 0,
566
+ class: "pv-full-width pv-flow-8"
567
+ }, Oe = { class: "pv-prompt-input__footer pv-flex pv-full-width" }, ke = { class: "pv-prompt-input__actions pv-flex pv-flex-item" }, Ae = {
568
+ class: "pv-visually-hidden",
569
+ "aria-live": "polite"
570
+ }, je = /* @__PURE__ */ R(/* @__PURE__ */ c({
571
+ __name: "PvPromptInput",
572
+ props: /* @__PURE__ */ u({
573
+ ariaLabel: { default: "Message" },
574
+ disabled: {
575
+ type: Boolean,
576
+ default: !1
577
+ },
578
+ maxHeight: { default: "200px" },
579
+ placeholder: { default: "Ask anything..." },
580
+ rows: { default: 1 },
581
+ status: { default: "ready" },
582
+ stopLabel: { default: "Stop generating" },
583
+ submitLabel: { default: "Send message" }
584
+ }, {
585
+ modelValue: { default: "" },
586
+ modelModifiers: {}
587
+ }),
588
+ emits: /* @__PURE__ */ u(["submit", "stop"], ["update:modelValue"]),
589
+ setup(n, { emit: c }) {
590
+ let l = n, u = c, d = S(n, "modelValue"), f = v(), p = t(() => l.status === "submitted" || l.status === "streaming"), h = t(() => !l.disabled && !p.value && d.value.trim().length > 0);
591
+ function g() {
592
+ h.value && u("submit", d.value.trim());
593
+ }
594
+ function y(e) {
595
+ l.disabled || e.target?.closest("button, a, input, textarea, select, [tabindex]") || f.value?.querySelector("textarea")?.focus();
596
+ }
597
+ function x(e) {
598
+ e.key !== "Enter" || e.shiftKey || e.isComposing || (e.preventDefault(), e.stopPropagation(), g());
599
+ }
600
+ return (t, c) => (_(), i("form", {
601
+ ref_key: "formRef",
602
+ ref: f,
603
+ class: "pv-prompt-input pv-bordered pv-radius pv-inset-square-8 pv-flex-vertical",
604
+ "data-testid": "pv-prompt-input",
605
+ "aria-busy": p.value,
606
+ onSubmit: O(g, ["prevent"]),
607
+ onClick: y
608
+ }, [
609
+ t.$slots.header ? (_(), i("div", De, [b(t.$slots, "header", {}, void 0, !0)])) : r("", !0),
610
+ s(Te, {
611
+ modelValue: d.value,
612
+ "onUpdate:modelValue": c[0] ||= (e) => d.value = e,
613
+ class: "pv-prompt-input__textarea",
614
+ style: m({ "--prompt-input-max-height": n.maxHeight }),
615
+ rows: n.rows,
616
+ placeholder: n.placeholder,
617
+ disabled: n.disabled,
618
+ "aria-label": n.ariaLabel,
619
+ onKeydown: x
620
+ }, null, 8, [
621
+ "modelValue",
622
+ "style",
623
+ "rows",
624
+ "placeholder",
625
+ "disabled",
626
+ "aria-label"
627
+ ]),
628
+ a("div", Oe, [a("div", ke, [b(t.$slots, "actions", {}, void 0, !0)]), s(H, {
629
+ type: p.value ? "button" : "submit",
630
+ variant: p.value ? "secondary" : "primary",
631
+ size: "md",
632
+ "left-icon": p.value ? "stop" : "send",
633
+ "aria-label": p.value ? n.stopLabel : n.submitLabel,
634
+ disabled: n.disabled || !p.value && !h.value,
635
+ onClick: c[1] ||= (e) => p.value && u("stop")
636
+ }, null, 8, [
637
+ "type",
638
+ "variant",
639
+ "left-icon",
640
+ "aria-label",
641
+ "disabled"
642
+ ])]),
643
+ a("p", Ae, [n.status === "submitted" ? (_(), i(e, { key: 0 }, [o("Message submitted.")], 64)) : n.status === "streaming" ? (_(), i(e, { key: 1 }, [o("Response is streaming.")], 64)) : n.status === "error" ? (_(), i(e, { key: 2 }, [o("The message could not be sent.")], 64)) : r("", !0)])
644
+ ], 40, Ee));
645
+ }
646
+ }), [["__scopeId", "data-v-155361b4"]]), Me = [
647
+ "ready",
648
+ "submitted",
649
+ "streaming",
650
+ "error"
651
+ ], Ne = ["open"], Q = /* @__PURE__ */ R(/* @__PURE__ */ c({
652
+ __name: "PvAccordion",
653
+ props: /* @__PURE__ */ u({
654
+ chevronPosition: { default: "right" },
655
+ chevronVariant: { default: "vertical" },
656
+ defaultOpen: { type: Boolean },
657
+ counter: {},
658
+ enableTriggerSlot: {
659
+ type: Boolean,
660
+ default: !1
661
+ },
662
+ enableTriggerFullWidth: {
663
+ type: Boolean,
664
+ default: !1
665
+ },
666
+ header: {},
667
+ summaryStyles: {},
668
+ summaryClasses: {},
669
+ contentStyles: {}
670
+ }, {
671
+ modelValue: { type: Boolean },
672
+ modelModifiers: {}
673
+ }),
674
+ emits: /* @__PURE__ */ u(["summary-mouseenter", "summary-mouseleave"], ["update:modelValue"]),
675
+ setup(o) {
676
+ let s = o, c = S(o, "modelValue");
677
+ s.defaultOpen !== void 0 && (c.value = s.defaultOpen);
678
+ let l = (e) => {
679
+ c.value = e.target.open;
680
+ }, u = { width: s.enableTriggerFullWidth ? "100%" : "fit-content" }, d = t(() => s.chevronVariant === "horizontal" ? s.chevronPosition === "left" ? c.value ? "chevron-down" : "chevron-right" : c.value ? "chevron-down" : "chevron-left" : c.value ? "chevron-up" : "chevron-down");
681
+ return (t, s) => (_(), i("details", {
682
+ "data-testid": "pv-accordion",
683
+ class: "pv-accordion",
684
+ open: c.value,
685
+ onToggle: l
686
+ }, [a("summary", {
687
+ class: p(["pv-flex pv-space-between pv-relative", o.summaryClasses]),
688
+ style: m({
689
+ ...u,
690
+ ...o.summaryStyles
691
+ }),
692
+ onMouseenter: s[0] ||= (e) => t.$emit("summary-mouseenter"),
693
+ onMouseleave: s[1] ||= (e) => t.$emit("summary-mouseleave")
694
+ }, [
695
+ o.chevronPosition === "left" ? (_(), n(I, {
696
+ key: 0,
697
+ name: d.value
698
+ }, null, 8, ["name"])) : r("", !0),
699
+ o.enableTriggerSlot ? b(t.$slots, "trigger", { key: 1 }, void 0, !0) : (_(), i(e, { key: 2 }, [a("span", null, x(o.header), 1), o.counter ? (_(), n(z, {
700
+ key: 0,
701
+ value: o.counter,
702
+ variant: "secondary",
703
+ size: "sm"
704
+ }, null, 8, ["value"])) : r("", !0)], 64)),
705
+ o.chevronPosition === "right" ? (_(), n(I, {
706
+ key: 3,
707
+ name: d.value
708
+ }, null, 8, ["name"])) : r("", !0)
709
+ ], 38), a("div", { style: m(o.contentStyles) }, [b(t.$slots, "default", {}, void 0, !0)], 4)], 40, Ne));
710
+ }
711
+ }), [["__scopeId", "data-v-d953baf8"]]), Pe = {
712
+ class: "pv-flex pv-text-body-sm pv-text-subdued",
713
+ "aria-live": "polite"
714
+ }, $ = { class: "pv-reasoning__content pv-text-body-sm pv-text-subdued" }, Fe = /* @__PURE__ */ R(/* @__PURE__ */ c({
715
+ __name: "PvReasoning",
716
+ props: /* @__PURE__ */ u({
717
+ autoCloseDelay: { default: 1e3 },
718
+ completedLabel: { default: "Reasoning" },
719
+ defaultOpen: {
720
+ type: Boolean,
721
+ default: !1
722
+ },
723
+ duration: {},
724
+ isStreaming: {
725
+ type: Boolean,
726
+ default: !1
727
+ },
728
+ streamingLabel: { default: "Thinking..." }
729
+ }, {
730
+ open: {
731
+ type: Boolean,
732
+ default: !1
733
+ },
734
+ openModifiers: {}
735
+ }),
736
+ emits: ["update:open"],
737
+ setup(e) {
738
+ let r = e, i = S(e, "open"), c = v(), l = v(), u = v(!1), d;
739
+ (r.defaultOpen || r.isStreaming) && (i.value = !0), r.isStreaming && (l.value = Date.now());
740
+ let f = t(() => r.duration ?? c.value), p = t(() => {
741
+ if (r.isStreaming) return r.streamingLabel;
742
+ if (f.value === void 0) return r.completedLabel;
743
+ let e = Math.max(1, Math.round(f.value));
744
+ return `Thought for ${e} ${e === 1 ? "second" : "seconds"}`;
745
+ });
746
+ function m() {
747
+ d !== void 0 && (clearTimeout(d), d = void 0);
748
+ }
749
+ function g() {
750
+ u.value = !0, m();
751
+ }
752
+ return T(() => r.isStreaming, (e, t) => {
753
+ if (m(), e) {
754
+ l.value = Date.now(), c.value = void 0, u.value = !1, i.value = !0;
755
+ return;
756
+ }
757
+ t && (l.value !== void 0 && (c.value = (Date.now() - l.value) / 1e3), u.value || (d = setTimeout(() => {
758
+ u.value || (i.value = !1);
759
+ }, r.autoCloseDelay)));
760
+ }), h(m), (e, t) => (_(), n(Q, {
761
+ modelValue: i.value,
762
+ "onUpdate:modelValue": t[0] ||= (e) => i.value = e,
763
+ "default-open": i.value,
764
+ class: "pv-reasoning",
765
+ "chevron-position": "left",
766
+ "chevron-variant": "horizontal",
767
+ "enable-trigger-full-width": "",
768
+ "enable-trigger-slot": "",
769
+ "summary-classes": {
770
+ "pv-button-ghost": !0,
771
+ "pv-button-small": !0
772
+ },
773
+ "summary-styles": { justifyContent: "flex-start" },
774
+ onClick: g
775
+ }, {
776
+ trigger: E(() => [a("span", Pe, [s(I, {
777
+ name: "brain",
778
+ size: 20
779
+ }), o(" " + x(p.value), 1)])]),
780
+ default: E(() => [a("div", $, [b(e.$slots, "default", {}, void 0, !0)])]),
781
+ _: 3
782
+ }, 8, ["modelValue", "default-open"]));
783
+ }
784
+ }), [["__scopeId", "data-v-6111e5ae"]]), Ie = { class: "pv-tool__heading pv-flex pv-flex-item" }, Le = { class: "pv-text-title-sm pv-truncate" }, Re = { class: "pv-tool__disclosure-content" }, ze = { class: "pv-flow-16 pv-border-top pv-tool__content" }, Be = {
785
+ key: 0,
786
+ class: "pv-flow-8"
787
+ }, Ve = { class: "pv-surface-accent pv-inset-square-12 pv-radius-sm pv-text-body-xs" }, He = {
788
+ key: 1,
789
+ class: "pv-flow-8",
790
+ role: "alert",
791
+ "aria-label": "Tool error"
792
+ }, Ue = { class: "pv-surface-critical pv-inset-square-12 pv-radius-sm pv-text-body-xs pv-text-critical" }, We = {
793
+ key: 2,
794
+ class: "pv-flow-8"
795
+ }, Ge = { class: "pv-surface-accent pv-inset-square-12 pv-radius-sm pv-text-body-xs" }, Ke = /* @__PURE__ */ R(/* @__PURE__ */ c({
796
+ __name: "PvTool",
797
+ props: /* @__PURE__ */ u({
798
+ defaultOpen: {
799
+ type: Boolean,
800
+ default: !1
801
+ },
802
+ errorText: {},
803
+ input: { type: [
804
+ String,
805
+ Number,
806
+ Boolean,
807
+ null,
808
+ Object,
809
+ Array
810
+ ] },
811
+ output: { type: [
812
+ String,
813
+ Number,
814
+ Boolean,
815
+ null,
816
+ Object,
817
+ Array
818
+ ] },
819
+ state: {},
820
+ toolName: {}
821
+ }, {
822
+ open: {
823
+ type: Boolean,
824
+ default: !1
825
+ },
826
+ openModifiers: {}
827
+ }),
828
+ emits: ["update:open"],
829
+ setup(e) {
830
+ let o = e, c = S(e, "open"), l = ["output-available", "output-error"];
831
+ (o.defaultOpen || l.includes(o.state)) && (c.value = !0);
832
+ let u = t(() => ({
833
+ "input-streaming": {
834
+ label: "Pending",
835
+ className: "pv-tag-tertiary"
836
+ },
837
+ "input-available": {
838
+ label: "Running",
839
+ className: "pv-tag-primary"
840
+ },
841
+ "approval-requested": {
842
+ label: "Awaiting approval",
843
+ className: "pv-tag-yellow"
844
+ },
845
+ "approval-responded": {
846
+ label: "Responded",
847
+ className: "pv-tag-tertiary"
848
+ },
849
+ "output-available": {
850
+ label: "Completed",
851
+ className: "pv-tag-success"
852
+ },
853
+ "output-error": {
854
+ label: "Error",
855
+ className: "pv-tag-error"
856
+ },
857
+ "output-denied": {
858
+ label: "Denied",
859
+ className: "pv-tag-error"
860
+ }
861
+ })[o.state]);
862
+ function d(e) {
863
+ if (typeof e == "string") return e;
864
+ try {
865
+ return JSON.stringify(e, null, 2) ?? String(e);
866
+ } catch {
867
+ return String(e);
868
+ }
869
+ }
870
+ return T(() => o.state, (e, t) => {
871
+ e !== t && l.includes(e) && (c.value = !0);
872
+ }), (t, o) => (_(), n(Q, {
873
+ modelValue: c.value,
874
+ "onUpdate:modelValue": o[0] ||= (e) => c.value = e,
875
+ "default-open": c.value,
876
+ class: "pv-tool pv-bordered pv-radius",
877
+ "chevron-position": "right",
878
+ "chevron-variant": "horizontal",
879
+ "enable-trigger-full-width": "",
880
+ "enable-trigger-slot": "",
881
+ "summary-classes": { "pv-inset-square-12": !0 }
882
+ }, {
883
+ trigger: E(() => [a("span", Ie, [
884
+ s(I, {
885
+ name: "settings",
886
+ size: 20
887
+ }),
888
+ a("span", Le, x(e.toolName), 1),
889
+ a("span", {
890
+ class: p([u.value.className, "pv-tag-sm"]),
891
+ role: "status"
892
+ }, x(u.value.label), 3)
893
+ ])]),
894
+ default: E(() => [a("div", Re, [a("div", ze, [t.$slots.input || e.input !== void 0 ? (_(), i("section", Be, [o[1] ||= a("h3", { class: "pv-text-title-xs" }, "Parameters", -1), b(t.$slots, "input", { input: e.input }, () => [a("pre", Ve, [a("code", null, x(d(e.input)), 1)])], !0)])) : r("", !0), e.errorText ? (_(), i("section", He, [o[2] ||= a("h3", { class: "pv-text-title-xs pv-text-critical" }, "Error", -1), a("pre", Ue, x(e.errorText), 1)])) : t.$slots.output || e.output !== void 0 ? (_(), i("section", We, [o[3] ||= a("h3", { class: "pv-text-title-xs" }, "Result", -1), b(t.$slots, "output", { output: e.output }, () => [a("pre", Ge, [a("code", null, x(d(e.output)), 1)])], !0)])) : r("", !0)])])]),
895
+ _: 3
896
+ }, 8, ["modelValue", "default-open"]));
897
+ }
898
+ }), [["__scopeId", "data-v-a5e28b1a"]]), qe = [
899
+ "input-streaming",
900
+ "input-available",
901
+ "approval-requested",
902
+ "approval-responded",
903
+ "output-available",
904
+ "output-error",
905
+ "output-denied"
906
+ ];
907
+ //#endregion
908
+ //#region src/components/ai/useStickToBottom.ts
909
+ function Je(e, t = {}) {
910
+ let n = t.threshold ?? 32, r = v(!0);
911
+ function i() {
912
+ let t = e.value;
913
+ t && (r.value = t.scrollHeight - t.scrollTop - t.clientHeight <= n);
914
+ }
915
+ function a(t = "smooth") {
916
+ let n = e.value;
917
+ n && (n.scrollTo({
918
+ top: n.scrollHeight,
919
+ behavior: t
920
+ }), r.value = !0);
921
+ }
922
+ let o;
923
+ function s(e) {
924
+ let t = () => i();
925
+ e.addEventListener("scroll", t, { passive: !0 });
926
+ let n = () => {
927
+ r.value && a("auto");
928
+ }, s = [], c, l = /* @__PURE__ */ new WeakSet(), u = () => {
929
+ if (c) for (let t of Array.from(e.children)) l.has(t) || (l.add(t), c.observe(t));
930
+ };
931
+ if (typeof ResizeObserver < "u" && (c = new ResizeObserver(n), c.observe(e), u(), s.push(c)), typeof MutationObserver < "u") {
932
+ let t = new MutationObserver(() => {
933
+ u(), n();
934
+ });
935
+ t.observe(e, { childList: !0 }), s.push(t);
936
+ }
937
+ i(), o = () => {
938
+ e.removeEventListener("scroll", t), s.forEach((e) => e.disconnect());
939
+ };
940
+ }
941
+ return T(e, (e) => {
942
+ o?.(), o = void 0, e && s(e);
943
+ }, { immediate: !0 }), g(() => o?.()), {
944
+ isAtBottom: r,
945
+ scrollToBottom: a
946
+ };
947
+ }
948
+ //#endregion
949
+ export { xe as PvConfirmation, je as PvPromptInput, he as PvQuestion, Fe as PvReasoning, Ke as PvTool, Me as promptInputStatuses, qe as toolLifecycleStates, Je as useStickToBottom };
950
+
951
+ //# sourceMappingURL=pv-components-ai.mjs.map