@scalar/components 0.27.10 → 0.28.1

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 (608) hide show
  1. package/dist/components/ScalarButton/ScalarButton.vue.script.js +2 -2
  2. package/dist/components/ScalarButton/ScalarButton.vue.script.js.map +1 -1
  3. package/dist/components/ScalarButton/constants.js.map +1 -1
  4. package/dist/components/ScalarCard/ScalarCard.vue.script.js +1 -1
  5. package/dist/components/ScalarCard/ScalarCard.vue.script.js.map +1 -1
  6. package/dist/components/ScalarCard/ScalarCardFooter.vue.script.js +1 -1
  7. package/dist/components/ScalarCard/ScalarCardFooter.vue.script.js.map +1 -1
  8. package/dist/components/ScalarCard/ScalarCardHeader.vue.script.js +1 -1
  9. package/dist/components/ScalarCard/ScalarCardHeader.vue.script.js.map +1 -1
  10. package/dist/components/ScalarCard/ScalarCardSection.vue.script.js +1 -1
  11. package/dist/components/ScalarCard/ScalarCardSection.vue.script.js.map +1 -1
  12. package/dist/components/ScalarCard/useCardHeading.js +3 -1
  13. package/dist/components/ScalarCard/useCardHeading.js.map +1 -1
  14. package/dist/components/ScalarCheckboxInput/ScalarCheckbox.vue.script.js +1 -1
  15. package/dist/components/ScalarCheckboxInput/ScalarCheckbox.vue.script.js.map +1 -1
  16. package/dist/components/ScalarCheckboxInput/ScalarCheckboxGroup.vue.d.ts.map +1 -1
  17. package/dist/components/ScalarCheckboxInput/ScalarCheckboxGroup.vue.js.map +1 -1
  18. package/dist/components/ScalarCheckboxInput/ScalarCheckboxGroup.vue.script.js +3 -3
  19. package/dist/components/ScalarCheckboxInput/ScalarCheckboxGroup.vue.script.js.map +1 -1
  20. package/dist/components/ScalarCheckboxInput/ScalarCheckboxInput.vue.script.js +2 -2
  21. package/dist/components/ScalarCheckboxInput/ScalarCheckboxInput.vue.script.js.map +1 -1
  22. package/dist/components/ScalarCheckboxInput/ScalarCheckboxRadioGroup.vue.d.ts.map +1 -1
  23. package/dist/components/ScalarCheckboxInput/ScalarCheckboxRadioGroup.vue.script.js +2 -2
  24. package/dist/components/ScalarCheckboxInput/ScalarCheckboxRadioGroup.vue.script.js.map +1 -1
  25. package/dist/components/ScalarCodeBlock/ScalarCodeBlock.vue.d.ts.map +1 -1
  26. package/dist/components/ScalarCodeBlock/ScalarCodeBlock.vue.js.map +1 -1
  27. package/dist/components/ScalarCodeBlock/ScalarCodeBlock.vue.script.js +11 -3
  28. package/dist/components/ScalarCodeBlock/ScalarCodeBlock.vue.script.js.map +1 -1
  29. package/dist/components/ScalarCodeBlock/ScalarCodeBlockCopy.vue.script.js +2 -2
  30. package/dist/components/ScalarCodeBlock/ScalarCodeBlockCopy.vue.script.js.map +1 -1
  31. package/dist/components/ScalarCodeBlock/constants.d.ts +1 -0
  32. package/dist/components/ScalarCodeBlock/constants.d.ts.map +1 -1
  33. package/dist/components/ScalarCodeBlock/constants.js +1 -0
  34. package/dist/components/ScalarCodeBlock/constants.js.map +1 -1
  35. package/dist/components/ScalarColorModeToggle/ScalarColorModeToggle.vue.d.ts.map +1 -1
  36. package/dist/components/ScalarColorModeToggle/ScalarColorModeToggle.vue.script.js +1 -1
  37. package/dist/components/ScalarColorModeToggle/ScalarColorModeToggle.vue.script.js.map +1 -1
  38. package/dist/components/ScalarColorModeToggle/ScalarColorModeToggleButton.vue.script.js +1 -1
  39. package/dist/components/ScalarColorModeToggle/ScalarColorModeToggleButton.vue.script.js.map +1 -1
  40. package/dist/components/ScalarColorModeToggle/ScalarColorModeToggleIcon.vue.js +1 -1
  41. package/dist/components/ScalarColorModeToggle/ScalarColorModeToggleIcon.vue.script.js +1 -1
  42. package/dist/components/ScalarColorModeToggle/ScalarColorModeToggleIcon.vue.script.js.map +1 -1
  43. package/dist/components/ScalarCombobox/ScalarCombobox.vue.d.ts +1 -1
  44. package/dist/components/ScalarCombobox/ScalarCombobox.vue.d.ts.map +1 -1
  45. package/dist/components/ScalarCombobox/ScalarCombobox.vue.script.js +3 -3
  46. package/dist/components/ScalarCombobox/ScalarCombobox.vue.script.js.map +1 -1
  47. package/dist/components/ScalarCombobox/ScalarComboboxMultiselect.vue.d.ts +1 -1
  48. package/dist/components/ScalarCombobox/ScalarComboboxMultiselect.vue.d.ts.map +1 -1
  49. package/dist/components/ScalarCombobox/ScalarComboboxMultiselect.vue.js.map +1 -1
  50. package/dist/components/ScalarCombobox/ScalarComboboxMultiselect.vue.script.js +4 -4
  51. package/dist/components/ScalarCombobox/ScalarComboboxMultiselect.vue.script.js.map +1 -1
  52. package/dist/components/ScalarCombobox/ScalarComboboxOption.vue.script.js +1 -1
  53. package/dist/components/ScalarCombobox/ScalarComboboxOption.vue.script.js.map +1 -1
  54. package/dist/components/ScalarCombobox/ScalarComboboxOptionGroup.vue.script.js +1 -1
  55. package/dist/components/ScalarCombobox/ScalarComboboxOptionGroup.vue.script.js.map +1 -1
  56. package/dist/components/ScalarCombobox/ScalarComboboxOptions.vue.d.ts +1 -1
  57. package/dist/components/ScalarCombobox/ScalarComboboxOptions.vue.d.ts.map +1 -1
  58. package/dist/components/ScalarCombobox/ScalarComboboxOptions.vue.js.map +1 -1
  59. package/dist/components/ScalarCombobox/ScalarComboboxOptions.vue.script.js +6 -10
  60. package/dist/components/ScalarCombobox/ScalarComboboxOptions.vue.script.js.map +1 -1
  61. package/dist/components/ScalarCombobox/ScalarComboboxPopover.vue.d.ts.map +1 -1
  62. package/dist/components/ScalarCombobox/ScalarComboboxPopover.vue.script.js +1 -1
  63. package/dist/components/ScalarCombobox/ScalarComboboxPopover.vue.script.js.map +1 -1
  64. package/dist/components/ScalarCombobox/filter-by-option-label.js.map +1 -1
  65. package/dist/components/ScalarCombobox/types.js.map +1 -1
  66. package/dist/components/ScalarCopy/ScalarCopy.vue.d.ts.map +1 -1
  67. package/dist/components/ScalarCopy/ScalarCopy.vue.script.js +2 -2
  68. package/dist/components/ScalarCopy/ScalarCopy.vue.script.js.map +1 -1
  69. package/dist/components/ScalarCopy/ScalarCopyBackdrop.vue.script.js +1 -1
  70. package/dist/components/ScalarCopy/ScalarCopyBackdrop.vue.script.js.map +1 -1
  71. package/dist/components/ScalarCopy/ScalarCopyButton.vue.script.js +2 -2
  72. package/dist/components/ScalarCopy/ScalarCopyButton.vue.script.js.map +1 -1
  73. package/dist/components/ScalarDropdown/ScalarDropdown.vue.script.js +2 -2
  74. package/dist/components/ScalarDropdown/ScalarDropdown.vue.script.js.map +1 -1
  75. package/dist/components/ScalarDropdown/ScalarDropdownButton.vue.js +1 -1
  76. package/dist/components/ScalarDropdown/ScalarDropdownButton.vue.script.js +1 -1
  77. package/dist/components/ScalarDropdown/ScalarDropdownButton.vue.script.js.map +1 -1
  78. package/dist/components/ScalarDropdown/ScalarDropdownDivider.vue.js +1 -1
  79. package/dist/components/ScalarDropdown/ScalarDropdownDivider.vue.js.map +1 -1
  80. package/dist/components/ScalarDropdown/ScalarDropdownDivider.vue.script.js.map +1 -1
  81. package/dist/components/ScalarDropdown/ScalarDropdownItem.vue.d.ts.map +1 -1
  82. package/dist/components/ScalarDropdown/ScalarDropdownItem.vue.js +1 -1
  83. package/dist/components/ScalarDropdown/ScalarDropdownItem.vue.script.js +1 -1
  84. package/dist/components/ScalarDropdown/ScalarDropdownItem.vue.script.js.map +1 -1
  85. package/dist/components/ScalarDropdown/ScalarDropdownMenu.vue.script.js +1 -1
  86. package/dist/components/ScalarDropdown/ScalarDropdownMenu.vue.script.js.map +1 -1
  87. package/dist/components/ScalarDropdown/useDropdown.js.map +1 -1
  88. package/dist/components/ScalarErrorBoundary/ScalarErrorBoundary.vue.script.js +2 -2
  89. package/dist/components/ScalarErrorBoundary/ScalarErrorBoundary.vue.script.js.map +1 -1
  90. package/dist/components/ScalarFileUpload/ScalarFileUpload.vue.d.ts.map +1 -1
  91. package/dist/components/ScalarFileUpload/ScalarFileUpload.vue.script.js +3 -3
  92. package/dist/components/ScalarFileUpload/ScalarFileUpload.vue.script.js.map +1 -1
  93. package/dist/components/ScalarFileUpload/ScalarFileUploadDropTarget.vue.script.js +1 -1
  94. package/dist/components/ScalarFileUpload/ScalarFileUploadDropTarget.vue.script.js.map +1 -1
  95. package/dist/components/ScalarFileUpload/ScalarFileUploadError.vue.script.js +1 -1
  96. package/dist/components/ScalarFileUpload/ScalarFileUploadError.vue.script.js.map +1 -1
  97. package/dist/components/ScalarFileUpload/ScalarFileUploadFileList.vue.d.ts.map +1 -1
  98. package/dist/components/ScalarFileUpload/ScalarFileUploadFileList.vue.script.js +2 -2
  99. package/dist/components/ScalarFileUpload/ScalarFileUploadFileList.vue.script.js.map +1 -1
  100. package/dist/components/ScalarFileUpload/ScalarFileUploadInput.vue.d.ts.map +1 -1
  101. package/dist/components/ScalarFileUpload/ScalarFileUploadInput.vue.script.js +1 -1
  102. package/dist/components/ScalarFileUpload/ScalarFileUploadInput.vue.script.js.map +1 -1
  103. package/dist/components/ScalarFileUpload/ScalarFileUploadInputCompact.vue.script.js +1 -1
  104. package/dist/components/ScalarFileUpload/ScalarFileUploadInputCompact.vue.script.js.map +1 -1
  105. package/dist/components/ScalarFileUpload/ScalarFileUploadLoading.vue.script.js +1 -1
  106. package/dist/components/ScalarFileUpload/ScalarFileUploadLoading.vue.script.js.map +1 -1
  107. package/dist/components/ScalarFileUpload/types.js.map +1 -1
  108. package/dist/components/ScalarFloating/ScalarFloating.vue.script.js +4 -2
  109. package/dist/components/ScalarFloating/ScalarFloating.vue.script.js.map +1 -1
  110. package/dist/components/ScalarFloating/ScalarFloatingBackdrop.vue.script.js +1 -1
  111. package/dist/components/ScalarFloating/ScalarFloatingBackdrop.vue.script.js.map +1 -1
  112. package/dist/components/ScalarFloating/useResizeWithTarget.js.map +1 -1
  113. package/dist/components/ScalarForm/ScalarForm.vue.script.js +1 -1
  114. package/dist/components/ScalarForm/ScalarForm.vue.script.js.map +1 -1
  115. package/dist/components/ScalarForm/ScalarFormError.vue.script.js +1 -1
  116. package/dist/components/ScalarForm/ScalarFormError.vue.script.js.map +1 -1
  117. package/dist/components/ScalarForm/ScalarFormField.vue.script.js +1 -1
  118. package/dist/components/ScalarForm/ScalarFormField.vue.script.js.map +1 -1
  119. package/dist/components/ScalarForm/ScalarFormInput.vue.script.js +1 -1
  120. package/dist/components/ScalarForm/ScalarFormInput.vue.script.js.map +1 -1
  121. package/dist/components/ScalarForm/ScalarFormInputGroup.vue.script.js +1 -1
  122. package/dist/components/ScalarForm/ScalarFormInputGroup.vue.script.js.map +1 -1
  123. package/dist/components/ScalarForm/ScalarFormSection.vue.js +1 -1
  124. package/dist/components/ScalarForm/ScalarFormSection.vue.js.map +1 -1
  125. package/dist/components/ScalarForm/ScalarFormSection.vue.script.js.map +1 -1
  126. package/dist/components/ScalarForm/useFormGroups.js.map +1 -1
  127. package/dist/components/ScalarHeader/ScalarHeader.vue.script.js +1 -1
  128. package/dist/components/ScalarHeader/ScalarHeader.vue.script.js.map +1 -1
  129. package/dist/components/ScalarHeader/ScalarHeaderButton.vue.script.js +1 -1
  130. package/dist/components/ScalarHeader/ScalarHeaderButton.vue.script.js.map +1 -1
  131. package/dist/components/ScalarHotkey/ScalarHotkey.vue.script.js +1 -1
  132. package/dist/components/ScalarHotkey/ScalarHotkey.vue.script.js.map +1 -1
  133. package/dist/components/ScalarHotkey/constants.js.map +1 -1
  134. package/dist/components/ScalarHotkey/formatHotkey.js +1 -8
  135. package/dist/components/ScalarHotkey/formatHotkey.js.map +1 -1
  136. package/dist/components/ScalarIcon/IconList.vue.d.ts.map +1 -1
  137. package/dist/components/ScalarIcon/ScalarIcon.vue.js +1 -1
  138. package/dist/components/ScalarIcon/ScalarIcon.vue.script.js +1 -1
  139. package/dist/components/ScalarIcon/ScalarIcon.vue.script.js.map +1 -1
  140. package/dist/components/ScalarIcon/ScalarIconLegacyAdapter.vue.script.js +1 -1
  141. package/dist/components/ScalarIcon/ScalarIconLegacyAdapter.vue.script.js.map +1 -1
  142. package/dist/components/ScalarIcon/icons/Add.svg.virtual.js +1 -1
  143. package/dist/components/ScalarIcon/icons/Add.svg.virtual.js.map +1 -1
  144. package/dist/components/ScalarIcon/icons/AddTab.svg.virtual.js +1 -1
  145. package/dist/components/ScalarIcon/icons/AddTab.svg.virtual.js.map +1 -1
  146. package/dist/components/ScalarIcon/icons/Alert.svg.virtual.js +1 -1
  147. package/dist/components/ScalarIcon/icons/Alert.svg.virtual.js.map +1 -1
  148. package/dist/components/ScalarIcon/icons/ArrowLeft.svg.virtual.js +1 -1
  149. package/dist/components/ScalarIcon/icons/ArrowLeft.svg.virtual.js.map +1 -1
  150. package/dist/components/ScalarIcon/icons/ArrowRight.svg.virtual.js +1 -1
  151. package/dist/components/ScalarIcon/icons/ArrowRight.svg.virtual.js.map +1 -1
  152. package/dist/components/ScalarIcon/icons/Brackets.svg.virtual.js +1 -1
  153. package/dist/components/ScalarIcon/icons/Brackets.svg.virtual.js.map +1 -1
  154. package/dist/components/ScalarIcon/icons/Branch.svg.virtual.js +1 -1
  155. package/dist/components/ScalarIcon/icons/Branch.svg.virtual.js.map +1 -1
  156. package/dist/components/ScalarIcon/icons/Changelog.svg.virtual.js +1 -1
  157. package/dist/components/ScalarIcon/icons/Changelog.svg.virtual.js.map +1 -1
  158. package/dist/components/ScalarIcon/icons/Checkmark.svg.virtual.js +1 -1
  159. package/dist/components/ScalarIcon/icons/Checkmark.svg.virtual.js.map +1 -1
  160. package/dist/components/ScalarIcon/icons/ChevronDown.svg.virtual.js +1 -1
  161. package/dist/components/ScalarIcon/icons/ChevronDown.svg.virtual.js.map +1 -1
  162. package/dist/components/ScalarIcon/icons/ChevronLeft.svg.virtual.js +1 -1
  163. package/dist/components/ScalarIcon/icons/ChevronLeft.svg.virtual.js.map +1 -1
  164. package/dist/components/ScalarIcon/icons/ChevronRight.svg.virtual.js +1 -1
  165. package/dist/components/ScalarIcon/icons/ChevronRight.svg.virtual.js.map +1 -1
  166. package/dist/components/ScalarIcon/icons/ChevronUp.svg.virtual.js +1 -1
  167. package/dist/components/ScalarIcon/icons/ChevronUp.svg.virtual.js.map +1 -1
  168. package/dist/components/ScalarIcon/icons/Clipboard.svg.virtual.js +1 -1
  169. package/dist/components/ScalarIcon/icons/Clipboard.svg.virtual.js.map +1 -1
  170. package/dist/components/ScalarIcon/icons/Close.svg.virtual.js +1 -1
  171. package/dist/components/ScalarIcon/icons/Close.svg.virtual.js.map +1 -1
  172. package/dist/components/ScalarIcon/icons/CloseTab.svg.virtual.js +1 -1
  173. package/dist/components/ScalarIcon/icons/CloseTab.svg.virtual.js.map +1 -1
  174. package/dist/components/ScalarIcon/icons/CloseTabs.svg.virtual.js +1 -1
  175. package/dist/components/ScalarIcon/icons/CloseTabs.svg.virtual.js.map +1 -1
  176. package/dist/components/ScalarIcon/icons/Cloud.svg.virtual.js +1 -1
  177. package/dist/components/ScalarIcon/icons/Cloud.svg.virtual.js.map +1 -1
  178. package/dist/components/ScalarIcon/icons/CodeFolder.svg.virtual.js +1 -1
  179. package/dist/components/ScalarIcon/icons/CodeFolder.svg.virtual.js.map +1 -1
  180. package/dist/components/ScalarIcon/icons/Cog.svg.virtual.js +1 -1
  181. package/dist/components/ScalarIcon/icons/Cog.svg.virtual.js.map +1 -1
  182. package/dist/components/ScalarIcon/icons/Collection.svg.virtual.js +1 -1
  183. package/dist/components/ScalarIcon/icons/Collection.svg.virtual.js.map +1 -1
  184. package/dist/components/ScalarIcon/icons/Cookie.svg.virtual.js +1 -1
  185. package/dist/components/ScalarIcon/icons/Cookie.svg.virtual.js.map +1 -1
  186. package/dist/components/ScalarIcon/icons/DarkMode.svg.virtual.js +1 -1
  187. package/dist/components/ScalarIcon/icons/DarkMode.svg.virtual.js.map +1 -1
  188. package/dist/components/ScalarIcon/icons/Delete.svg.virtual.js +1 -1
  189. package/dist/components/ScalarIcon/icons/Delete.svg.virtual.js.map +1 -1
  190. package/dist/components/ScalarIcon/icons/Discord.svg.virtual.js +1 -1
  191. package/dist/components/ScalarIcon/icons/Discord.svg.virtual.js.map +1 -1
  192. package/dist/components/ScalarIcon/icons/DocsPage.svg.virtual.js +1 -1
  193. package/dist/components/ScalarIcon/icons/DocsPage.svg.virtual.js.map +1 -1
  194. package/dist/components/ScalarIcon/icons/Download.svg.virtual.js +1 -1
  195. package/dist/components/ScalarIcon/icons/Download.svg.virtual.js.map +1 -1
  196. package/dist/components/ScalarIcon/icons/Duplicate.svg.virtual.js +1 -1
  197. package/dist/components/ScalarIcon/icons/Duplicate.svg.virtual.js.map +1 -1
  198. package/dist/components/ScalarIcon/icons/Edit.svg.virtual.js +1 -1
  199. package/dist/components/ScalarIcon/icons/Edit.svg.virtual.js.map +1 -1
  200. package/dist/components/ScalarIcon/icons/Ellipses.svg.virtual.js +1 -1
  201. package/dist/components/ScalarIcon/icons/Ellipses.svg.virtual.js.map +1 -1
  202. package/dist/components/ScalarIcon/icons/Email.svg.virtual.js +1 -1
  203. package/dist/components/ScalarIcon/icons/Email.svg.virtual.js.map +1 -1
  204. package/dist/components/ScalarIcon/icons/Error.svg.virtual.js +1 -1
  205. package/dist/components/ScalarIcon/icons/Error.svg.virtual.js.map +1 -1
  206. package/dist/components/ScalarIcon/icons/Example.svg.virtual.js +1 -1
  207. package/dist/components/ScalarIcon/icons/Example.svg.virtual.js.map +1 -1
  208. package/dist/components/ScalarIcon/icons/ExternalLink.svg.virtual.js +1 -1
  209. package/dist/components/ScalarIcon/icons/ExternalLink.svg.virtual.js.map +1 -1
  210. package/dist/components/ScalarIcon/icons/FilterList.svg.virtual.js +1 -1
  211. package/dist/components/ScalarIcon/icons/FilterList.svg.virtual.js.map +1 -1
  212. package/dist/components/ScalarIcon/icons/Folder.svg.virtual.js +1 -1
  213. package/dist/components/ScalarIcon/icons/Folder.svg.virtual.js.map +1 -1
  214. package/dist/components/ScalarIcon/icons/GitHub.svg.virtual.js +1 -1
  215. package/dist/components/ScalarIcon/icons/GitHub.svg.virtual.js.map +1 -1
  216. package/dist/components/ScalarIcon/icons/GitHubLine.svg.virtual.js +1 -1
  217. package/dist/components/ScalarIcon/icons/GitHubLine.svg.virtual.js.map +1 -1
  218. package/dist/components/ScalarIcon/icons/Globe.svg.virtual.js +1 -1
  219. package/dist/components/ScalarIcon/icons/Globe.svg.virtual.js.map +1 -1
  220. package/dist/components/ScalarIcon/icons/Google.svg.virtual.js +1 -1
  221. package/dist/components/ScalarIcon/icons/Google.svg.virtual.js.map +1 -1
  222. package/dist/components/ScalarIcon/icons/Help.svg.virtual.js +1 -1
  223. package/dist/components/ScalarIcon/icons/Help.svg.virtual.js.map +1 -1
  224. package/dist/components/ScalarIcon/icons/Hide.svg.virtual.js +1 -1
  225. package/dist/components/ScalarIcon/icons/Hide.svg.virtual.js.map +1 -1
  226. package/dist/components/ScalarIcon/icons/History.svg.virtual.js +1 -1
  227. package/dist/components/ScalarIcon/icons/History.svg.virtual.js.map +1 -1
  228. package/dist/components/ScalarIcon/icons/House.svg.virtual.js +1 -1
  229. package/dist/components/ScalarIcon/icons/House.svg.virtual.js.map +1 -1
  230. package/dist/components/ScalarIcon/icons/Import.svg.virtual.js +1 -1
  231. package/dist/components/ScalarIcon/icons/Import.svg.virtual.js.map +1 -1
  232. package/dist/components/ScalarIcon/icons/Info.svg.virtual.js +1 -1
  233. package/dist/components/ScalarIcon/icons/Info.svg.virtual.js.map +1 -1
  234. package/dist/components/ScalarIcon/icons/Key.svg.virtual.js +1 -1
  235. package/dist/components/ScalarIcon/icons/Key.svg.virtual.js.map +1 -1
  236. package/dist/components/ScalarIcon/icons/Leave.svg.virtual.js +1 -1
  237. package/dist/components/ScalarIcon/icons/Leave.svg.virtual.js.map +1 -1
  238. package/dist/components/ScalarIcon/icons/LightDarkModeToggle.svg.virtual.js +1 -1
  239. package/dist/components/ScalarIcon/icons/LightDarkModeToggle.svg.virtual.js.map +1 -1
  240. package/dist/components/ScalarIcon/icons/LightMode.svg.virtual.js +1 -1
  241. package/dist/components/ScalarIcon/icons/LightMode.svg.virtual.js.map +1 -1
  242. package/dist/components/ScalarIcon/icons/Link.svg.virtual.js +1 -1
  243. package/dist/components/ScalarIcon/icons/Link.svg.virtual.js.map +1 -1
  244. package/dist/components/ScalarIcon/icons/Lock.svg.virtual.js +1 -1
  245. package/dist/components/ScalarIcon/icons/Lock.svg.virtual.js.map +1 -1
  246. package/dist/components/ScalarIcon/icons/Logo.svg.virtual.js +1 -1
  247. package/dist/components/ScalarIcon/icons/Logo.svg.virtual.js.map +1 -1
  248. package/dist/components/ScalarIcon/icons/Magic.svg.virtual.js +1 -1
  249. package/dist/components/ScalarIcon/icons/Magic.svg.virtual.js.map +1 -1
  250. package/dist/components/ScalarIcon/icons/Markdown.svg.virtual.js +1 -1
  251. package/dist/components/ScalarIcon/icons/Markdown.svg.virtual.js.map +1 -1
  252. package/dist/components/ScalarIcon/icons/Menu.svg.virtual.js +1 -1
  253. package/dist/components/ScalarIcon/icons/Menu.svg.virtual.js.map +1 -1
  254. package/dist/components/ScalarIcon/icons/NotAllowed.svg.virtual.js +1 -1
  255. package/dist/components/ScalarIcon/icons/NotAllowed.svg.virtual.js.map +1 -1
  256. package/dist/components/ScalarIcon/icons/Page.svg.virtual.js +1 -1
  257. package/dist/components/ScalarIcon/icons/Page.svg.virtual.js.map +1 -1
  258. package/dist/components/ScalarIcon/icons/Pencil.svg.virtual.js +1 -1
  259. package/dist/components/ScalarIcon/icons/Pencil.svg.virtual.js.map +1 -1
  260. package/dist/components/ScalarIcon/icons/Play.svg.virtual.js +1 -1
  261. package/dist/components/ScalarIcon/icons/Play.svg.virtual.js.map +1 -1
  262. package/dist/components/ScalarIcon/icons/Refresh.svg.virtual.js +1 -1
  263. package/dist/components/ScalarIcon/icons/Refresh.svg.virtual.js.map +1 -1
  264. package/dist/components/ScalarIcon/icons/Roadmap.svg.virtual.js +1 -1
  265. package/dist/components/ScalarIcon/icons/Roadmap.svg.virtual.js.map +1 -1
  266. package/dist/components/ScalarIcon/icons/Scribble.svg.virtual.js +1 -1
  267. package/dist/components/ScalarIcon/icons/Scribble.svg.virtual.js.map +1 -1
  268. package/dist/components/ScalarIcon/icons/Search.svg.virtual.js +1 -1
  269. package/dist/components/ScalarIcon/icons/Search.svg.virtual.js.map +1 -1
  270. package/dist/components/ScalarIcon/icons/Server.svg.virtual.js +1 -1
  271. package/dist/components/ScalarIcon/icons/Server.svg.virtual.js.map +1 -1
  272. package/dist/components/ScalarIcon/icons/Settings.svg.virtual.js +1 -1
  273. package/dist/components/ScalarIcon/icons/Settings.svg.virtual.js.map +1 -1
  274. package/dist/components/ScalarIcon/icons/Show.svg.virtual.js +1 -1
  275. package/dist/components/ScalarIcon/icons/Show.svg.virtual.js.map +1 -1
  276. package/dist/components/ScalarIcon/icons/Sort.svg.virtual.js +1 -1
  277. package/dist/components/ScalarIcon/icons/Sort.svg.virtual.js.map +1 -1
  278. package/dist/components/ScalarIcon/icons/Terminal.svg.virtual.js +1 -1
  279. package/dist/components/ScalarIcon/icons/Terminal.svg.virtual.js.map +1 -1
  280. package/dist/components/ScalarIcon/icons/Trash.svg.virtual.js +1 -1
  281. package/dist/components/ScalarIcon/icons/Trash.svg.virtual.js.map +1 -1
  282. package/dist/components/ScalarIcon/icons/Unlock.svg.virtual.js +1 -1
  283. package/dist/components/ScalarIcon/icons/Unlock.svg.virtual.js.map +1 -1
  284. package/dist/components/ScalarIcon/icons/Unwatch.svg.virtual.js +1 -1
  285. package/dist/components/ScalarIcon/icons/Unwatch.svg.virtual.js.map +1 -1
  286. package/dist/components/ScalarIcon/icons/Upload.svg.virtual.js +1 -1
  287. package/dist/components/ScalarIcon/icons/Upload.svg.virtual.js.map +1 -1
  288. package/dist/components/ScalarIcon/icons/User.svg.virtual.js +1 -1
  289. package/dist/components/ScalarIcon/icons/User.svg.virtual.js.map +1 -1
  290. package/dist/components/ScalarIcon/icons/UserSwitch.svg.virtual.js +1 -1
  291. package/dist/components/ScalarIcon/icons/UserSwitch.svg.virtual.js.map +1 -1
  292. package/dist/components/ScalarIcon/icons/Users.svg.virtual.js +1 -1
  293. package/dist/components/ScalarIcon/icons/Users.svg.virtual.js.map +1 -1
  294. package/dist/components/ScalarIcon/icons/Versions.svg.virtual.js +1 -1
  295. package/dist/components/ScalarIcon/icons/Versions.svg.virtual.js.map +1 -1
  296. package/dist/components/ScalarIcon/icons/Wallet.svg.virtual.js +1 -1
  297. package/dist/components/ScalarIcon/icons/Wallet.svg.virtual.js.map +1 -1
  298. package/dist/components/ScalarIcon/icons/Watch.svg.virtual.js +1 -1
  299. package/dist/components/ScalarIcon/icons/Watch.svg.virtual.js.map +1 -1
  300. package/dist/components/ScalarIcon/icons/Workspace.svg.virtual.js +1 -1
  301. package/dist/components/ScalarIcon/icons/Workspace.svg.virtual.js.map +1 -1
  302. package/dist/components/ScalarIcon/icons/index.d.ts +1 -1
  303. package/dist/components/ScalarIcon/icons/index.d.ts.map +1 -1
  304. package/dist/components/ScalarIcon/icons/programming-framework-angular.svg.virtual.js +1 -1
  305. package/dist/components/ScalarIcon/icons/programming-framework-angular.svg.virtual.js.map +1 -1
  306. package/dist/components/ScalarIcon/icons/programming-framework-astro.svg.virtual.js +1 -1
  307. package/dist/components/ScalarIcon/icons/programming-framework-astro.svg.virtual.js.map +1 -1
  308. package/dist/components/ScalarIcon/icons/programming-framework-laravel.svg.virtual.js +1 -1
  309. package/dist/components/ScalarIcon/icons/programming-framework-laravel.svg.virtual.js.map +1 -1
  310. package/dist/components/ScalarIcon/icons/programming-framework-nextdotjs.svg.virtual.js +1 -1
  311. package/dist/components/ScalarIcon/icons/programming-framework-nextdotjs.svg.virtual.js.map +1 -1
  312. package/dist/components/ScalarIcon/icons/programming-framework-react.svg.virtual.js +1 -1
  313. package/dist/components/ScalarIcon/icons/programming-framework-react.svg.virtual.js.map +1 -1
  314. package/dist/components/ScalarIcon/icons/programming-framework-vuedotjs.svg.virtual.js +1 -1
  315. package/dist/components/ScalarIcon/icons/programming-framework-vuedotjs.svg.virtual.js.map +1 -1
  316. package/dist/components/ScalarIcon/icons/programming-language-c.svg.virtual.js +1 -1
  317. package/dist/components/ScalarIcon/icons/programming-language-c.svg.virtual.js.map +1 -1
  318. package/dist/components/ScalarIcon/icons/programming-language-clojure.svg.virtual.js +1 -1
  319. package/dist/components/ScalarIcon/icons/programming-language-clojure.svg.virtual.js.map +1 -1
  320. package/dist/components/ScalarIcon/icons/programming-language-csharp.svg.virtual.js +1 -1
  321. package/dist/components/ScalarIcon/icons/programming-language-csharp.svg.virtual.js.map +1 -1
  322. package/dist/components/ScalarIcon/icons/programming-language-css3.svg.virtual.js +1 -1
  323. package/dist/components/ScalarIcon/icons/programming-language-css3.svg.virtual.js.map +1 -1
  324. package/dist/components/ScalarIcon/icons/programming-language-dart.svg.virtual.js +1 -1
  325. package/dist/components/ScalarIcon/icons/programming-language-dart.svg.virtual.js.map +1 -1
  326. package/dist/components/ScalarIcon/icons/programming-language-fsharp.svg.virtual.js +1 -1
  327. package/dist/components/ScalarIcon/icons/programming-language-fsharp.svg.virtual.js.map +1 -1
  328. package/dist/components/ScalarIcon/icons/programming-language-go.svg.virtual.js +1 -1
  329. package/dist/components/ScalarIcon/icons/programming-language-go.svg.virtual.js.map +1 -1
  330. package/dist/components/ScalarIcon/icons/programming-language-html5.svg.virtual.js +1 -1
  331. package/dist/components/ScalarIcon/icons/programming-language-html5.svg.virtual.js.map +1 -1
  332. package/dist/components/ScalarIcon/icons/programming-language-http.svg.virtual.js +1 -1
  333. package/dist/components/ScalarIcon/icons/programming-language-http.svg.virtual.js.map +1 -1
  334. package/dist/components/ScalarIcon/icons/programming-language-java.svg.virtual.js +1 -1
  335. package/dist/components/ScalarIcon/icons/programming-language-java.svg.virtual.js.map +1 -1
  336. package/dist/components/ScalarIcon/icons/programming-language-javascript.svg.virtual.js +1 -1
  337. package/dist/components/ScalarIcon/icons/programming-language-javascript.svg.virtual.js.map +1 -1
  338. package/dist/components/ScalarIcon/icons/programming-language-json.svg.virtual.js +1 -1
  339. package/dist/components/ScalarIcon/icons/programming-language-json.svg.virtual.js.map +1 -1
  340. package/dist/components/ScalarIcon/icons/programming-language-julia.svg.virtual.js +36 -0
  341. package/dist/components/ScalarIcon/icons/programming-language-julia.svg.virtual.js.map +1 -0
  342. package/dist/components/ScalarIcon/icons/programming-language-kotlin.svg.virtual.js +1 -1
  343. package/dist/components/ScalarIcon/icons/programming-language-kotlin.svg.virtual.js.map +1 -1
  344. package/dist/components/ScalarIcon/icons/programming-language-node.svg.virtual.js +1 -1
  345. package/dist/components/ScalarIcon/icons/programming-language-node.svg.virtual.js.map +1 -1
  346. package/dist/components/ScalarIcon/icons/programming-language-objc.svg.virtual.js +1 -1
  347. package/dist/components/ScalarIcon/icons/programming-language-objc.svg.virtual.js.map +1 -1
  348. package/dist/components/ScalarIcon/icons/programming-language-ocaml.svg.virtual.js +1 -1
  349. package/dist/components/ScalarIcon/icons/programming-language-ocaml.svg.virtual.js.map +1 -1
  350. package/dist/components/ScalarIcon/icons/programming-language-php.svg.virtual.js +1 -1
  351. package/dist/components/ScalarIcon/icons/programming-language-php.svg.virtual.js.map +1 -1
  352. package/dist/components/ScalarIcon/icons/programming-language-powershell.svg.virtual.js +1 -1
  353. package/dist/components/ScalarIcon/icons/programming-language-powershell.svg.virtual.js.map +1 -1
  354. package/dist/components/ScalarIcon/icons/programming-language-python.svg.virtual.js +1 -1
  355. package/dist/components/ScalarIcon/icons/programming-language-python.svg.virtual.js.map +1 -1
  356. package/dist/components/ScalarIcon/icons/programming-language-r.svg.virtual.js +1 -1
  357. package/dist/components/ScalarIcon/icons/programming-language-r.svg.virtual.js.map +1 -1
  358. package/dist/components/ScalarIcon/icons/programming-language-ruby.svg.virtual.js +1 -1
  359. package/dist/components/ScalarIcon/icons/programming-language-ruby.svg.virtual.js.map +1 -1
  360. package/dist/components/ScalarIcon/icons/programming-language-rust.svg.virtual.js +1 -1
  361. package/dist/components/ScalarIcon/icons/programming-language-rust.svg.virtual.js.map +1 -1
  362. package/dist/components/ScalarIcon/icons/programming-language-scala.svg.virtual.js +1 -1
  363. package/dist/components/ScalarIcon/icons/programming-language-scala.svg.virtual.js.map +1 -1
  364. package/dist/components/ScalarIcon/icons/programming-language-shell.svg.virtual.js +1 -1
  365. package/dist/components/ScalarIcon/icons/programming-language-shell.svg.virtual.js.map +1 -1
  366. package/dist/components/ScalarIcon/icons/programming-language-swift.svg.virtual.js +1 -1
  367. package/dist/components/ScalarIcon/icons/programming-language-swift.svg.virtual.js.map +1 -1
  368. package/dist/components/ScalarIcon/icons/programming-language-typescript.svg.virtual.js +1 -1
  369. package/dist/components/ScalarIcon/icons/programming-language-typescript.svg.virtual.js.map +1 -1
  370. package/dist/components/ScalarIcon/icons/programming-script-code.svg.virtual.js +1 -1
  371. package/dist/components/ScalarIcon/icons/programming-script-code.svg.virtual.js.map +1 -1
  372. package/dist/components/ScalarIcon/icons/programming-tool-git.svg.virtual.js +1 -1
  373. package/dist/components/ScalarIcon/icons/programming-tool-git.svg.virtual.js.map +1 -1
  374. package/dist/components/ScalarIcon/icons/programming-tool-tailwindcss.svg.virtual.js +1 -1
  375. package/dist/components/ScalarIcon/icons/programming-tool-tailwindcss.svg.virtual.js.map +1 -1
  376. package/dist/components/ScalarIcon/logos/Adonisjs.svg.virtual.js +1 -1
  377. package/dist/components/ScalarIcon/logos/Adonisjs.svg.virtual.js.map +1 -1
  378. package/dist/components/ScalarIcon/logos/Astro.svg.virtual.js +1 -1
  379. package/dist/components/ScalarIcon/logos/Astro.svg.virtual.js.map +1 -1
  380. package/dist/components/ScalarIcon/logos/Docusaurus.svg.virtual.js +1 -1
  381. package/dist/components/ScalarIcon/logos/Docusaurus.svg.virtual.js.map +1 -1
  382. package/dist/components/ScalarIcon/logos/Dotnet.svg.virtual.js +1 -1
  383. package/dist/components/ScalarIcon/logos/Dotnet.svg.virtual.js.map +1 -1
  384. package/dist/components/ScalarIcon/logos/Elysiajs.svg.virtual.js +1 -1
  385. package/dist/components/ScalarIcon/logos/Elysiajs.svg.virtual.js.map +1 -1
  386. package/dist/components/ScalarIcon/logos/Express.svg.virtual.js +1 -1
  387. package/dist/components/ScalarIcon/logos/Express.svg.virtual.js.map +1 -1
  388. package/dist/components/ScalarIcon/logos/Fastapi.svg.virtual.js +1 -1
  389. package/dist/components/ScalarIcon/logos/Fastapi.svg.virtual.js.map +1 -1
  390. package/dist/components/ScalarIcon/logos/Fastify.svg.virtual.js +1 -1
  391. package/dist/components/ScalarIcon/logos/Fastify.svg.virtual.js.map +1 -1
  392. package/dist/components/ScalarIcon/logos/Go.svg.virtual.js +1 -1
  393. package/dist/components/ScalarIcon/logos/Go.svg.virtual.js.map +1 -1
  394. package/dist/components/ScalarIcon/logos/Hono.svg.virtual.js +1 -1
  395. package/dist/components/ScalarIcon/logos/Hono.svg.virtual.js.map +1 -1
  396. package/dist/components/ScalarIcon/logos/Laravel.svg.virtual.js +1 -1
  397. package/dist/components/ScalarIcon/logos/Laravel.svg.virtual.js.map +1 -1
  398. package/dist/components/ScalarIcon/logos/Litestar.svg.virtual.js +1 -1
  399. package/dist/components/ScalarIcon/logos/Litestar.svg.virtual.js.map +1 -1
  400. package/dist/components/ScalarIcon/logos/Nestjs.svg.virtual.js +1 -1
  401. package/dist/components/ScalarIcon/logos/Nestjs.svg.virtual.js.map +1 -1
  402. package/dist/components/ScalarIcon/logos/Nextjs.svg.virtual.js +1 -1
  403. package/dist/components/ScalarIcon/logos/Nextjs.svg.virtual.js.map +1 -1
  404. package/dist/components/ScalarIcon/logos/Nitro.svg.virtual.js +1 -1
  405. package/dist/components/ScalarIcon/logos/Nitro.svg.virtual.js.map +1 -1
  406. package/dist/components/ScalarIcon/logos/Nuxt.svg.virtual.js +1 -1
  407. package/dist/components/ScalarIcon/logos/Nuxt.svg.virtual.js.map +1 -1
  408. package/dist/components/ScalarIcon/logos/Openapi.svg.virtual.js +1 -1
  409. package/dist/components/ScalarIcon/logos/Openapi.svg.virtual.js.map +1 -1
  410. package/dist/components/ScalarIcon/logos/Platformatic.svg.virtual.js +1 -1
  411. package/dist/components/ScalarIcon/logos/Platformatic.svg.virtual.js.map +1 -1
  412. package/dist/components/ScalarIcon/logos/React.svg.virtual.js +1 -1
  413. package/dist/components/ScalarIcon/logos/React.svg.virtual.js.map +1 -1
  414. package/dist/components/ScalarIcon/logos/Rust.svg.virtual.js +1 -1
  415. package/dist/components/ScalarIcon/logos/Rust.svg.virtual.js.map +1 -1
  416. package/dist/components/ScalarIcon/logos/Svelte.svg.virtual.js +1 -1
  417. package/dist/components/ScalarIcon/logos/Svelte.svg.virtual.js.map +1 -1
  418. package/dist/components/ScalarIcon/logos/Vue.svg.virtual.js +1 -1
  419. package/dist/components/ScalarIcon/logos/Vue.svg.virtual.js.map +1 -1
  420. package/dist/components/ScalarIcon/utils/index.js +4 -2
  421. package/dist/components/ScalarIcon/utils/index.js.map +1 -1
  422. package/dist/components/ScalarIcon/variants.js.map +1 -1
  423. package/dist/components/ScalarIconButton/ScalarIconButton.vue.script.js +1 -1
  424. package/dist/components/ScalarIconButton/ScalarIconButton.vue.script.js.map +1 -1
  425. package/dist/components/ScalarListbox/ScalarListbox.vue.d.ts.map +1 -1
  426. package/dist/components/ScalarListbox/ScalarListbox.vue.script.js +1 -1
  427. package/dist/components/ScalarListbox/ScalarListbox.vue.script.js.map +1 -1
  428. package/dist/components/ScalarListbox/ScalarListboxCheckbox.vue.script.js +1 -1
  429. package/dist/components/ScalarListbox/ScalarListboxCheckbox.vue.script.js.map +1 -1
  430. package/dist/components/ScalarListbox/ScalarListboxInput.vue.script.js +1 -1
  431. package/dist/components/ScalarListbox/ScalarListboxInput.vue.script.js.map +1 -1
  432. package/dist/components/ScalarListbox/ScalarListboxItem.vue.script.js +1 -1
  433. package/dist/components/ScalarListbox/ScalarListboxItem.vue.script.js.map +1 -1
  434. package/dist/components/ScalarLoading/ScalarLoading.vue.js +1 -1
  435. package/dist/components/ScalarLoading/ScalarLoading.vue.script.js +1 -1
  436. package/dist/components/ScalarLoading/ScalarLoading.vue.script.js.map +1 -1
  437. package/dist/components/ScalarLoading/useLoadingState.js.map +1 -1
  438. package/dist/components/ScalarMarkdown/ScalarMarkdown.vue.script.js +1 -1
  439. package/dist/components/ScalarMarkdown/ScalarMarkdown.vue.script.js.map +1 -1
  440. package/dist/components/ScalarMarkdown/ScalarMarkdownSummary.vue.script.js +2 -2
  441. package/dist/components/ScalarMarkdown/ScalarMarkdownSummary.vue.script.js.map +1 -1
  442. package/dist/components/ScalarMenu/ScalarMenu.vue.script.js +1 -1
  443. package/dist/components/ScalarMenu/ScalarMenu.vue.script.js.map +1 -1
  444. package/dist/components/ScalarMenu/ScalarMenuButton.vue.script.js +1 -1
  445. package/dist/components/ScalarMenu/ScalarMenuButton.vue.script.js.map +1 -1
  446. package/dist/components/ScalarMenu/ScalarMenuLink.vue.script.js +1 -1
  447. package/dist/components/ScalarMenu/ScalarMenuLink.vue.script.js.map +1 -1
  448. package/dist/components/ScalarMenu/ScalarMenuProduct.vue.script.js +1 -1
  449. package/dist/components/ScalarMenu/ScalarMenuProduct.vue.script.js.map +1 -1
  450. package/dist/components/ScalarMenu/ScalarMenuProducts.vue.d.ts.map +1 -1
  451. package/dist/components/ScalarMenu/ScalarMenuProducts.vue.script.js +1 -1
  452. package/dist/components/ScalarMenu/ScalarMenuProducts.vue.script.js.map +1 -1
  453. package/dist/components/ScalarMenu/ScalarMenuResources.vue.script.js +1 -1
  454. package/dist/components/ScalarMenu/ScalarMenuResources.vue.script.js.map +1 -1
  455. package/dist/components/ScalarMenu/ScalarMenuSection.vue.script.js +1 -1
  456. package/dist/components/ScalarMenu/ScalarMenuSection.vue.script.js.map +1 -1
  457. package/dist/components/ScalarMenu/ScalarMenuSupport.vue.script.js +1 -1
  458. package/dist/components/ScalarMenu/ScalarMenuSupport.vue.script.js.map +1 -1
  459. package/dist/components/ScalarMenu/ScalarMenuTeamPicker.vue.d.ts.map +1 -1
  460. package/dist/components/ScalarMenu/ScalarMenuTeamPicker.vue.script.js +1 -1
  461. package/dist/components/ScalarMenu/ScalarMenuTeamPicker.vue.script.js.map +1 -1
  462. package/dist/components/ScalarMenu/ScalarMenuTeamProfile.vue.script.js +1 -1
  463. package/dist/components/ScalarMenu/ScalarMenuTeamProfile.vue.script.js.map +1 -1
  464. package/dist/components/ScalarMenu/ScalarMenuWorkspacePicker.vue.d.ts.map +1 -1
  465. package/dist/components/ScalarMenu/ScalarMenuWorkspacePicker.vue.script.js +3 -3
  466. package/dist/components/ScalarMenu/ScalarMenuWorkspacePicker.vue.script.js.map +1 -1
  467. package/dist/components/ScalarModal/ScalarModal.vue.d.ts.map +1 -1
  468. package/dist/components/ScalarModal/ScalarModal.vue.js +3 -3
  469. package/dist/components/ScalarModal/ScalarModal.vue.script.js +1 -1
  470. package/dist/components/ScalarModal/ScalarModal.vue.script.js.map +1 -1
  471. package/dist/components/ScalarPopover/ScalarPopover.vue.script.js +1 -1
  472. package/dist/components/ScalarPopover/ScalarPopover.vue.script.js.map +1 -1
  473. package/dist/components/ScalarSavePrompt/ScalarSavePrompt.vue.d.ts.map +1 -1
  474. package/dist/components/ScalarSavePrompt/ScalarSavePrompt.vue.script.js +3 -3
  475. package/dist/components/ScalarSavePrompt/ScalarSavePrompt.vue.script.js.map +1 -1
  476. package/dist/components/ScalarSearchInput/ScalarSearchInput.vue.d.ts.map +1 -1
  477. package/dist/components/ScalarSearchInput/ScalarSearchInput.vue.script.js +2 -2
  478. package/dist/components/ScalarSearchInput/ScalarSearchInput.vue.script.js.map +1 -1
  479. package/dist/components/ScalarSearchResults/ScalarSearchResultItem.vue.script.js +1 -1
  480. package/dist/components/ScalarSearchResults/ScalarSearchResultItem.vue.script.js.map +1 -1
  481. package/dist/components/ScalarSearchResults/ScalarSearchResultList.vue.script.js +3 -3
  482. package/dist/components/ScalarSearchResults/ScalarSearchResultList.vue.script.js.map +1 -1
  483. package/dist/components/ScalarSidebar/ScalarSidebar.vue.script.js +1 -1
  484. package/dist/components/ScalarSidebar/ScalarSidebar.vue.script.js.map +1 -1
  485. package/dist/components/ScalarSidebar/ScalarSidebarButton.vue.js.map +1 -1
  486. package/dist/components/ScalarSidebar/ScalarSidebarButton.vue.script.js +3 -3
  487. package/dist/components/ScalarSidebar/ScalarSidebarButton.vue.script.js.map +1 -1
  488. package/dist/components/ScalarSidebar/ScalarSidebarFooter.vue.script.js +1 -1
  489. package/dist/components/ScalarSidebar/ScalarSidebarFooter.vue.script.js.map +1 -1
  490. package/dist/components/ScalarSidebar/ScalarSidebarGroup.vue.d.ts.map +1 -1
  491. package/dist/components/ScalarSidebar/ScalarSidebarGroup.vue.js.map +1 -1
  492. package/dist/components/ScalarSidebar/ScalarSidebarGroup.vue.script.js +19 -26
  493. package/dist/components/ScalarSidebar/ScalarSidebarGroup.vue.script.js.map +1 -1
  494. package/dist/components/ScalarSidebar/ScalarSidebarGroupToggle.vue.script.js +1 -1
  495. package/dist/components/ScalarSidebar/ScalarSidebarGroupToggle.vue.script.js.map +1 -1
  496. package/dist/components/ScalarSidebar/ScalarSidebarGroupToggleButton.vue.d.ts +64 -0
  497. package/dist/components/ScalarSidebar/ScalarSidebarGroupToggleButton.vue.d.ts.map +1 -0
  498. package/dist/components/ScalarSidebar/ScalarSidebarGroupToggleButton.vue.js +7 -0
  499. package/dist/components/ScalarSidebar/ScalarSidebarGroupToggleButton.vue.js.map +1 -0
  500. package/dist/components/ScalarSidebar/ScalarSidebarGroupToggleButton.vue.script.js +41 -0
  501. package/dist/components/ScalarSidebar/ScalarSidebarGroupToggleButton.vue.script.js.map +1 -0
  502. package/dist/components/ScalarSidebar/ScalarSidebarGroupToggleSpacer.vue.d.ts +16 -0
  503. package/dist/components/ScalarSidebar/ScalarSidebarGroupToggleSpacer.vue.d.ts.map +1 -0
  504. package/dist/components/ScalarSidebar/ScalarSidebarGroupToggleSpacer.vue.js +7 -0
  505. package/dist/components/ScalarSidebar/ScalarSidebarGroupToggleSpacer.vue.js.map +1 -0
  506. package/dist/components/ScalarSidebar/ScalarSidebarGroupToggleSpacer.vue.script.js +16 -0
  507. package/dist/components/ScalarSidebar/ScalarSidebarGroupToggleSpacer.vue.script.js.map +1 -0
  508. package/dist/components/ScalarSidebar/ScalarSidebarIndent.vue.js +1 -1
  509. package/dist/components/ScalarSidebar/ScalarSidebarIndent.vue.script.js +1 -1
  510. package/dist/components/ScalarSidebar/ScalarSidebarIndent.vue.script.js.map +1 -1
  511. package/dist/components/ScalarSidebar/ScalarSidebarItem.vue.script.js +1 -1
  512. package/dist/components/ScalarSidebar/ScalarSidebarItem.vue.script.js.map +1 -1
  513. package/dist/components/ScalarSidebar/ScalarSidebarItems.vue.script.js +1 -1
  514. package/dist/components/ScalarSidebar/ScalarSidebarItems.vue.script.js.map +1 -1
  515. package/dist/components/ScalarSidebar/ScalarSidebarLoading.vue.script.js +1 -1
  516. package/dist/components/ScalarSidebar/ScalarSidebarLoading.vue.script.js.map +1 -1
  517. package/dist/components/ScalarSidebar/ScalarSidebarNestedItems.vue.d.ts.map +1 -1
  518. package/dist/components/ScalarSidebar/ScalarSidebarNestedItems.vue.script.js +4 -4
  519. package/dist/components/ScalarSidebar/ScalarSidebarNestedItems.vue.script.js.map +1 -1
  520. package/dist/components/ScalarSidebar/ScalarSidebarSearchButton.vue.d.ts.map +1 -1
  521. package/dist/components/ScalarSidebar/ScalarSidebarSearchButton.vue.js.map +1 -1
  522. package/dist/components/ScalarSidebar/ScalarSidebarSearchButton.vue.script.js +6 -6
  523. package/dist/components/ScalarSidebar/ScalarSidebarSearchButton.vue.script.js.map +1 -1
  524. package/dist/components/ScalarSidebar/ScalarSidebarSearchInput.vue.d.ts.map +1 -1
  525. package/dist/components/ScalarSidebar/ScalarSidebarSearchInput.vue.script.js +2 -2
  526. package/dist/components/ScalarSidebar/ScalarSidebarSearchInput.vue.script.js.map +1 -1
  527. package/dist/components/ScalarSidebar/ScalarSidebarSection.vue.script.js +2 -2
  528. package/dist/components/ScalarSidebar/ScalarSidebarSection.vue.script.js.map +1 -1
  529. package/dist/components/ScalarSidebar/ScalarSidebarSpacer.vue.script.js +1 -1
  530. package/dist/components/ScalarSidebar/ScalarSidebarSpacer.vue.script.js.map +1 -1
  531. package/dist/components/ScalarSidebar/findScrollContainer.js.map +1 -1
  532. package/dist/components/ScalarSidebar/index.d.ts +2 -0
  533. package/dist/components/ScalarSidebar/index.d.ts.map +1 -1
  534. package/dist/components/ScalarSidebar/index.js +3 -1
  535. package/dist/components/ScalarSidebar/useSidebarGroups.js +1 -1
  536. package/dist/components/ScalarSidebar/useSidebarGroups.js.map +1 -1
  537. package/dist/components/ScalarSidebar/useSidebarNestedItems.js +3 -1
  538. package/dist/components/ScalarSidebar/useSidebarNestedItems.js.map +1 -1
  539. package/dist/components/ScalarTeleport/ScalarTeleport.vue.script.js +1 -1
  540. package/dist/components/ScalarTeleport/ScalarTeleport.vue.script.js.map +1 -1
  541. package/dist/components/ScalarTeleport/ScalarTeleportRoot.vue.script.js +1 -1
  542. package/dist/components/ScalarTeleport/ScalarTeleportRoot.vue.script.js.map +1 -1
  543. package/dist/components/ScalarTeleport/useTeleport.js.map +1 -1
  544. package/dist/components/ScalarTextArea/ScalarTextArea.vue.d.ts.map +1 -1
  545. package/dist/components/ScalarTextArea/ScalarTextArea.vue.js.map +1 -1
  546. package/dist/components/ScalarTextArea/ScalarTextArea.vue.script.js +2 -2
  547. package/dist/components/ScalarTextArea/ScalarTextArea.vue.script.js.map +1 -1
  548. package/dist/components/ScalarTextInput/ScalarTextInput.vue.d.ts.map +1 -1
  549. package/dist/components/ScalarTextInput/ScalarTextInput.vue.js.map +1 -1
  550. package/dist/components/ScalarTextInput/ScalarTextInput.vue.script.js +4 -4
  551. package/dist/components/ScalarTextInput/ScalarTextInput.vue.script.js.map +1 -1
  552. package/dist/components/ScalarTextInput/ScalarTextInputCopy.vue.d.ts.map +1 -1
  553. package/dist/components/ScalarTextInput/ScalarTextInputCopy.vue.js.map +1 -1
  554. package/dist/components/ScalarTextInput/ScalarTextInputCopy.vue.script.js +4 -4
  555. package/dist/components/ScalarTextInput/ScalarTextInputCopy.vue.script.js.map +1 -1
  556. package/dist/components/ScalarThemeSwatches/ScalarThemeSwatches.vue.script.js +1 -1
  557. package/dist/components/ScalarThemeSwatches/ScalarThemeSwatches.vue.script.js.map +1 -1
  558. package/dist/components/ScalarThemeSwatches/useThemeSwatches.js.map +1 -1
  559. package/dist/components/ScalarToggle/ScalarToggle.vue.d.ts.map +1 -1
  560. package/dist/components/ScalarToggle/ScalarToggle.vue.script.js +2 -2
  561. package/dist/components/ScalarToggle/ScalarToggle.vue.script.js.map +1 -1
  562. package/dist/components/ScalarToggle/ScalarToggleGroup.vue.d.ts.map +1 -1
  563. package/dist/components/ScalarToggle/ScalarToggleGroup.vue.js.map +1 -1
  564. package/dist/components/ScalarToggle/ScalarToggleGroup.vue.script.js +3 -3
  565. package/dist/components/ScalarToggle/ScalarToggleGroup.vue.script.js.map +1 -1
  566. package/dist/components/ScalarToggle/ScalarToggleInput.vue.script.js +1 -1
  567. package/dist/components/ScalarToggle/ScalarToggleInput.vue.script.js.map +1 -1
  568. package/dist/components/ScalarToggle/ScalarToggleSlider.vue.script.js +1 -1
  569. package/dist/components/ScalarToggle/ScalarToggleSlider.vue.script.js.map +1 -1
  570. package/dist/components/ScalarToggle/ScalarTristateToggle.vue.d.ts.map +1 -1
  571. package/dist/components/ScalarToggle/ScalarTristateToggle.vue.script.js +2 -2
  572. package/dist/components/ScalarToggle/ScalarTristateToggle.vue.script.js.map +1 -1
  573. package/dist/components/ScalarToggle/ScalarTristateToggleGroup.vue.d.ts.map +1 -1
  574. package/dist/components/ScalarToggle/ScalarTristateToggleGroup.vue.js.map +1 -1
  575. package/dist/components/ScalarToggle/ScalarTristateToggleGroup.vue.script.js +3 -3
  576. package/dist/components/ScalarToggle/ScalarTristateToggleGroup.vue.script.js.map +1 -1
  577. package/dist/components/ScalarToggle/ScalarTristateToggleInput.vue.script.js +1 -1
  578. package/dist/components/ScalarToggle/ScalarTristateToggleInput.vue.script.js.map +1 -1
  579. package/dist/components/ScalarTooltip/ScalarHotkeyTooltip.vue.script.js +1 -1
  580. package/dist/components/ScalarTooltip/ScalarHotkeyTooltip.vue.script.js.map +1 -1
  581. package/dist/components/ScalarTooltip/ScalarTooltip.vue.d.ts.map +1 -1
  582. package/dist/components/ScalarTooltip/ScalarTooltip.vue.js.map +1 -1
  583. package/dist/components/ScalarTooltip/ScalarTooltip.vue.script.js +1 -1
  584. package/dist/components/ScalarTooltip/ScalarTooltip.vue.script.js.map +1 -1
  585. package/dist/components/ScalarTooltip/useTooltip.d.ts.map +1 -1
  586. package/dist/components/ScalarTooltip/useTooltip.js +40 -1
  587. package/dist/components/ScalarTooltip/useTooltip.js.map +1 -1
  588. package/dist/components/ScalarVirtualCodeBlock/ScalarVirtualCodeBlock.vue.script.js +1 -1
  589. package/dist/components/ScalarVirtualCodeBlock/ScalarVirtualCodeBlock.vue.script.js.map +1 -1
  590. package/dist/components/ScalarVirtualText/ScalarVirtualText.vue.d.ts.map +1 -1
  591. package/dist/components/ScalarVirtualText/ScalarVirtualText.vue.js +1 -1
  592. package/dist/components/ScalarVirtualText/ScalarVirtualText.vue.script.js +1 -1
  593. package/dist/components/ScalarVirtualText/ScalarVirtualText.vue.script.js.map +1 -1
  594. package/dist/components/ScalarVirtualText/ScalarVirtualTextSearch.vue.js +1 -1
  595. package/dist/components/ScalarVirtualText/ScalarVirtualTextSearch.vue.script.js +1 -1
  596. package/dist/components/ScalarVirtualText/ScalarVirtualTextSearch.vue.script.js.map +1 -1
  597. package/dist/components/ScalarWrappingText/ScalarWrappingText.vue.d.ts.map +1 -1
  598. package/dist/components/ScalarWrappingText/ScalarWrappingText.vue.script.js +1 -1
  599. package/dist/components/ScalarWrappingText/ScalarWrappingText.vue.script.js.map +1 -1
  600. package/dist/components/ScalarWrappingText/constants.js +5 -0
  601. package/dist/components/ScalarWrappingText/constants.js.map +1 -1
  602. package/dist/helpers/add-scalar-classes.js.map +1 -1
  603. package/dist/index.d.ts +1 -1
  604. package/dist/index.d.ts.map +1 -1
  605. package/dist/index.js +3 -1
  606. package/dist/style.css +76 -46
  607. package/dist/vue-styles.css +20 -21
  608. package/package.json +14 -14
@@ -1 +1 @@
1
- {"version":3,"file":"ScalarColorModeToggleIcon.vue.script.js","names":[],"sources":["../../../src/components/ScalarColorModeToggle/ScalarColorModeToggleIcon.vue"],"sourcesContent":["<script lang=\"ts\">\nimport { useBindCx } from '@scalar/use-hooks/useBindCx'\nimport { type Component, computed } from 'vue'\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport type ScalarColorModeToggle from './ScalarColorModeToggle.vue'\n\n/**\n * Scalar Color Mode Toggle Icon component\n *\n * An icon that toggles between a sun and moon.\n *\n * If you need a toggle that is aware of and sets color mode,\n * you want {@link ScalarColorModeToggle} instead.\n *\n * @example\n * <ScalarColorModeToggleIcon v-model=\"isDarkMode\" />\n */\nexport default {}\n</script>\n<script lang=\"ts\" setup>\nconst { is = 'button', mode = 'light' } = defineProps<{\n /** The element or component this component should render as. */\n is?: string | Component\n /** Whether the toggle is a sun or moon icon */\n mode?: 'light' | 'dark'\n}>()\n\ndefineOptions({ inheritAttrs: false })\nconst { cx } = useBindCx()\n\nconst ariaLabel = computed<string>(() =>\n mode === 'dark' ? 'Set light mode' : 'Set dark mode',\n)\n</script>\n<template>\n <!-- Icon -->\n <component\n :is=\"is\"\n :aria-label=\"ariaLabel\"\n :class=\"`toggle-icon-${mode}`\"\n :type=\"is === 'button' ? 'button' : undefined\"\n v-bind=\"cx('size-3 flex items-center justify-center text-c-1')\">\n <span class=\"toggle-icon-sun-ray\" />\n <span class=\"toggle-icon-sun-ray\" />\n <span class=\"toggle-icon-sun-ray\" />\n <span class=\"toggle-icon-sun-ray\" />\n <span class=\"toggle-icon-ellipse\">\n <span class=\"toggle-icon-moon-mask\" />\n </span>\n </component>\n</template>\n<style scoped>\n.toggle-icon-ellipse {\n width: 7px;\n height: 7px;\n border-radius: 50%;\n box-shadow: inset 0 0 0 1px currentColor;\n overflow: hidden;\n position: relative;\n background: var(--scalar-background-1);\n display: inline-block;\n transition:\n width 0.3s ease-in-out,\n height 0.3s ease-in-out;\n}\n.toggle-icon-moon-mask {\n width: 100%;\n height: 100%;\n border: 1px solid currentColor;\n display: block;\n left: 2.5px;\n bottom: 2.5px;\n position: absolute;\n border-radius: 50%;\n background: var(--scalar-background-1);\n transition: transform 0.3s ease-in-out;\n transform: translate3d(4px, -4px, 0);\n}\n.toggle-icon-sun-ray {\n width: 12px;\n height: 1px;\n border-radius: 8px;\n background: currentColor;\n position: absolute;\n transition: transform 0.3s ease-in-out;\n}\n.toggle-icon-sun-ray:nth-of-type(2) {\n transform: rotate(90deg);\n}\n.toggle-icon-sun-ray:nth-of-type(3) {\n transform: rotate(45deg);\n}\n.toggle-icon-sun-ray:nth-of-type(4) {\n transform: rotate(-45deg);\n}\n.toggle-icon-dark .toggle-icon-ellipse {\n width: 10px;\n height: 10px;\n mask-image: radial-gradient(\n circle at bottom left,\n pink 10px,\n transparent 12px\n );\n}\n.toggle-icon-dark .toggle-icon-sun-ray {\n transform: scale(0);\n}\n.toggle-icon-dark .toggle-icon-moon-mask {\n transform: translate3d(0, 0, 0);\n}\n</style>\n"],"mappings":";;;;;;;;;;EA6BA,MAAM,EAAE,OAAO,WAAU;EAEzB,MAAM,YAAY,eAChB,QAAA,SAAS,SAAS,mBAAmB,gBACvC;;uBAIE,YAaY,wBAZL,QAAA,GAAE,EADT,WAaY;IAXT,cAAY,UAAA;IACZ,OAAK,eAAiB,QAAA;IACtB,MAAM,QAAA,OAAE,WAAA,WAA2B,KAAA;MAC5B,MAAA,GAAE,CAAA,mDAAA,CAAA,EAAA;2BAC0B,CAAA,GAAA,OAAA,OAAA,OAAA,KAAA;KAApC,mBAAoC,QAAA,EAA9B,OAAM,uBAAqB,EAAA,MAAA,GAAA;KACjC,mBAAoC,QAAA,EAA9B,OAAM,uBAAqB,EAAA,MAAA,GAAA;KACjC,mBAAoC,QAAA,EAA9B,OAAM,uBAAqB,EAAA,MAAA,GAAA;KACjC,mBAAoC,QAAA,EAA9B,OAAM,uBAAqB,EAAA,MAAA,GAAA;KACjC,mBAEO,QAAA,EAFD,OAAM,uBAAqB,EAAA,CAC/B,mBAAsC,QAAA,EAAhC,OAAM,yBAAuB,CAAA,CAAA,EAAA,GAAA"}
1
+ {"version":3,"file":"ScalarColorModeToggleIcon.vue.script.js","names":[],"sources":["../../../src/components/ScalarColorModeToggle/ScalarColorModeToggleIcon.vue"],"sourcesContent":["<script lang=\"ts\">\nimport { useBindCx } from '@scalar/use-hooks/useBindCx'\nimport { type Component, computed } from 'vue'\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport type ScalarColorModeToggle from './ScalarColorModeToggle.vue'\n\n/**\n * Scalar Color Mode Toggle Icon component\n *\n * An icon that toggles between a sun and moon.\n *\n * If you need a toggle that is aware of and sets color mode,\n * you want {@link ScalarColorModeToggle} instead.\n *\n * @example\n * <ScalarColorModeToggleIcon v-model=\"isDarkMode\" />\n */\nexport default {}\n</script>\n<script lang=\"ts\" setup>\nconst { is = 'button', mode = 'light' } = defineProps<{\n /** The element or component this component should render as. */\n is?: string | Component\n /** Whether the toggle is a sun or moon icon */\n mode?: 'light' | 'dark'\n}>()\n\ndefineOptions({ inheritAttrs: false })\nconst { cx } = useBindCx()\n\nconst ariaLabel = computed<string>(() =>\n mode === 'dark' ? 'Set light mode' : 'Set dark mode',\n)\n</script>\n<template>\n <!-- Icon -->\n <component\n :is=\"is\"\n :aria-label=\"ariaLabel\"\n :class=\"`toggle-icon-${mode}`\"\n :type=\"is === 'button' ? 'button' : undefined\"\n v-bind=\"cx('size-3 flex items-center justify-center text-c-1')\">\n <span class=\"toggle-icon-sun-ray\" />\n <span class=\"toggle-icon-sun-ray\" />\n <span class=\"toggle-icon-sun-ray\" />\n <span class=\"toggle-icon-sun-ray\" />\n <span class=\"toggle-icon-ellipse\">\n <span class=\"toggle-icon-moon-mask\" />\n </span>\n </component>\n</template>\n<style scoped>\n.toggle-icon-ellipse {\n width: 7px;\n height: 7px;\n border-radius: 50%;\n box-shadow: inset 0 0 0 1px currentColor;\n overflow: hidden;\n position: relative;\n background: var(--scalar-background-1);\n display: inline-block;\n transition:\n width 0.3s ease-in-out,\n height 0.3s ease-in-out;\n}\n.toggle-icon-moon-mask {\n width: 100%;\n height: 100%;\n border: 1px solid currentColor;\n display: block;\n left: 2.5px;\n bottom: 2.5px;\n position: absolute;\n border-radius: 50%;\n background: var(--scalar-background-1);\n transition: transform 0.3s ease-in-out;\n transform: translate3d(4px, -4px, 0);\n}\n.toggle-icon-sun-ray {\n width: 12px;\n height: 1px;\n border-radius: 8px;\n background: currentColor;\n position: absolute;\n transition: transform 0.3s ease-in-out;\n}\n.toggle-icon-sun-ray:nth-of-type(2) {\n transform: rotate(90deg);\n}\n.toggle-icon-sun-ray:nth-of-type(3) {\n transform: rotate(45deg);\n}\n.toggle-icon-sun-ray:nth-of-type(4) {\n transform: rotate(-45deg);\n}\n.toggle-icon-dark .toggle-icon-ellipse {\n width: 10px;\n height: 10px;\n mask-image: radial-gradient(\n circle at bottom left,\n pink 10px,\n transparent 12px\n );\n}\n.toggle-icon-dark .toggle-icon-sun-ray {\n transform: scale(0);\n}\n.toggle-icon-dark .toggle-icon-moon-mask {\n transform: translate3d(0, 0, 0);\n}\n</style>\n"],"mappings":";;;;;;;;;;EA6BA,MAAM,EAAE,OAAO,UAAU;EAEzB,MAAM,YAAY,eAChB,QAAA,SAAS,SAAS,mBAAmB,eACvC;;uBAIE,YAaY,wBAZL,QAAA,EAAE,GADT,WAaY;IAXT,cAAY,UAAA;IACZ,OAAK,eAAiB,QAAA;IACtB,MAAM,QAAA,OAAE,WAAA,WAA2B,KAAA;MAC5B,MAAA,EAAA,CAAE,CAAA,kDAAA,CAAA,GAAA;2BAC0B,CAAA,GAAA,OAAA,OAAA,OAAA,KAAA;KAApC,mBAAoC,QAAA,EAA9B,OAAM,sBAAqB,GAAA,MAAA,EAAA;KACjC,mBAAoC,QAAA,EAA9B,OAAM,sBAAqB,GAAA,MAAA,EAAA;KACjC,mBAAoC,QAAA,EAA9B,OAAM,sBAAqB,GAAA,MAAA,EAAA;KACjC,mBAAoC,QAAA,EAA9B,OAAM,sBAAqB,GAAA,MAAA,EAAA;KACjC,mBAEO,QAAA,EAFD,OAAM,sBAAqB,GAAA,CAC/B,mBAAsC,QAAA,EAAhC,OAAM,wBAAuB,CAAA,CAAA,GAAA,EAAA"}
@@ -38,7 +38,7 @@ declare const __VLS_export: <O extends Option = Option, G extends OptionGroup<O>
38
38
  slots: ComboboxSlots<O, G>;
39
39
  emit: ((evt: "add") => void) & ((event: "update:modelValue", value: O | undefined) => void);
40
40
  }>) => import("vue").VNode & {
41
- __ctx?: Awaited<typeof __VLS_setup>;
41
+ __ctx?: NonNullable<Awaited<typeof __VLS_setup>>;
42
42
  };
43
43
  type __VLS_PrettifyLocal<T> = (T extends any ? {
44
44
  [K in keyof T]: T[K];
@@ -1 +1 @@
1
- {"version":3,"file":"ScalarCombobox.vue.d.ts","sourceRoot":"","sources":["../../../src/components/ScalarCombobox/ScalarCombobox.vue"],"names":[],"mappings":"AAsGA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AAG9D,OAAO,KAAK,EAEV,aAAa,EACb,cAAc,EACd,MAAM,EACN,WAAW,EACX,eAAe,EAChB,MAAM,SAAS,CAAA;AAGhB;;;;;;;;;;GAUG;wBACkB,OAAO,YAAY;AAAxC,wBAAyC;AAGzC,QAAA,MAAM,YAAY,GAAK,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,EAC1F,aAAa,WAAW,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,EAC9D,YAAY,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC,EAC3G,gBAAgB,WAAW,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,EAClE;WAgKO,OAAO,KAAK,EAAE,WAAW,GAAG,mBAAmB,CAAC;QA9JpD,6CAA6C;iBACpC,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC;QAC9B,sDAAsD;sBACxC,MAAM;QACpB;;;;WAIG;mBACQ,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC;;qBAgBtB,CAAC;;;;KAqI6E,CAAC,GAAG,CAAC,OAAO,UAAU,SAAS;QAAE,oBAAoB,EAAE,MAAM,CAAC,CAAA;KAAE,GAAG,CAAC,GAAG,EAAE,CAAC;YAC5J,CAAC,OAAO,EAAE,EAAE,KAAK,IAAI;WACtB,GAAG;;UAEJ,qFAAoC;EAEvC,KACQ,OAAO,KAAK,EAAE,KAAK,GAAG;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC,OAAO,WAAW,CAAC,CAAA;CAAI,CAAC;AAC5E,KAAK,mBAAmB,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,GAAG,GAAG;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAG,GAAG;KAAG,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAG,CAAC,GAAG,EAAE,CAAC"}
1
+ {"version":3,"file":"ScalarCombobox.vue.d.ts","sourceRoot":"","sources":["../../../src/components/ScalarCombobox/ScalarCombobox.vue"],"names":[],"mappings":"AAsGA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AAG9D,OAAO,KAAK,EAEV,aAAa,EACb,cAAc,EACd,MAAM,EACN,WAAW,EACX,eAAe,EAChB,MAAM,SAAS,CAAA;AAGhB;;;;;;;;;;GAUG;wBACkB,OAAO,YAAY;AAAxC,wBAAyC;AAGzC,QAAA,MAAM,YAAY,GAAK,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,EAC1F,aAAa,WAAW,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,EAC9D,YAAY,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC,EAC3G,gBAAgB,WAAW,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,EAClE;WAkKO,OAAO,KAAK,EAAE,WAAW,GAAG,mBAAmB,CAAC;QAhKpD,6CAA6C;iBACpC,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC;QAC9B,sDAAsD;sBACxC,MAAM;QACpB;;;;WAIG;mBACQ,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC;;qBAgBtB,CAAC;;;;KAuI6E,CAAC,GAAG,CAAC,OAAO,UAAU,SAAS;QAAE,oBAAoB,EAAE,MAAM,CAAC,CAAA;KAAE,GAAG,CAAC,GAAG,EAAE,CAAC;YAC5J,CAAC,OAAO,EAAE,EAAE,KAAK,IAAI;WACtB,GAAG;;UAEJ,qFAAoC;EAEvC,KACQ,OAAO,KAAK,EAAE,KAAK,GAAG;IAAE,KAAK,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC,CAAA;CAAI,CAAC;AACzF,KAAK,mBAAmB,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,GAAG,GAAG;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAG,GAAG;KAAG,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAG,CAAC,GAAG,EAAE,CAAC"}
@@ -1,9 +1,9 @@
1
1
  import ScalarComboboxOptions_default from "./ScalarComboboxOptions.vue.js";
2
2
  import ScalarComboboxPopover_default from "./ScalarComboboxPopover.vue.js";
3
3
  import { createBlock, createSlots, createVNode, defineComponent, guardReactiveProps, mergeModels, normalizeProps, openBlock, renderSlot, useModel, withCtx } from "vue";
4
- var ScalarCombobox_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
4
+ var ScalarCombobox_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
5
5
  __name: "ScalarCombobox",
6
- props: /* @__PURE__ */ mergeModels({
6
+ props: /*@__PURE__*/ mergeModels({
7
7
  options: {},
8
8
  placeholder: {},
9
9
  filterFn: { type: Function },
@@ -21,7 +21,7 @@ var ScalarCombobox_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */
21
21
  "modelValue": {},
22
22
  "modelModifiers": {}
23
23
  }),
24
- emits: /* @__PURE__ */ mergeModels(["add"], ["update:modelValue"]),
24
+ emits: /*@__PURE__*/ mergeModels(["add"], ["update:modelValue"]),
25
25
  setup(__props, { emit: __emit }) {
26
26
  const emit = __emit;
27
27
  const model = useModel(__props, "modelValue");
@@ -1 +1 @@
1
- {"version":3,"file":"ScalarCombobox.vue.script.js","names":["$slots"],"sources":["../../../src/components/ScalarCombobox/ScalarCombobox.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar Combobox component\n *\n * A searchable select input with support for filtering, option groups,\n * and custom option rendering.\n *\n * @example\n * <ScalarCombobox v-model=\"selected\" :options=\"options\">\n * <ScalarButton>{{ selected?.label ?? 'Select' }}</ScalarButton>\n * </ScalarCombobox>\n */\nexport default {}\n</script>\n\n<!-- prettier-ignore-attribute generic -->\n<script\n setup\n lang=\"ts\"\n generic=\"O extends Option = Option, G extends OptionGroup<O> = OptionGroup<O>\">\nimport type { ScalarFloatingOptions } from '../ScalarFloating'\nimport ComboboxOptions from './ScalarComboboxOptions.vue'\nimport ComboboxPopover from './ScalarComboboxPopover.vue'\nimport type {\n ComboboxEmits,\n ComboboxSlots,\n FilterFunction,\n Option,\n OptionGroup,\n OptionsOrGroups,\n} from './types'\n\ndefineProps<\n {\n /** The options to display in the combobox */\n options: OptionsOrGroups<O, G>\n /** The placeholder text to display in the combobox */\n placeholder?: string\n /** A function to filter the options based on a query,\n * if not provided, the options will be filtered by option label\n *\n * @see {@link FilterFunction} for more information\n */\n filterFn?: FilterFunction<O, G>\n } & ScalarFloatingOptions\n>()\n\nconst emit = defineEmits<ComboboxEmits>()\n\nconst model = defineModel<O>()\n\ndefineSlots<ComboboxSlots<O, G>>()\n</script>\n<template>\n <ComboboxPopover\n :middleware\n :offset\n :placement=\"placement ?? 'bottom-start'\"\n :resize\n :target\n :teleport>\n <template #default=\"{ open }\">\n <slot :open />\n </template>\n <template #popover=\"{ open, close }\">\n <ComboboxOptions\n :filterFn\n :modelValue=\"model ? [model] : []\"\n :open\n :options\n :placeholder\n @add=\"() => (close(), emit('add'))\"\n @update:modelValue=\"(v) => (close(), (model = v[0]))\">\n <!-- Pass through the combobox slots -->\n <template\n v-if=\"$slots.option\"\n #option=\"props\">\n <slot\n name=\"option\"\n v-bind=\"props\" />\n </template>\n <template\n v-if=\"$slots.group\"\n #group=\"props\">\n <slot\n name=\"group\"\n v-bind=\"props\" />\n </template>\n <template\n v-if=\"$slots.add\"\n #add=\"props\">\n <slot\n name=\"add\"\n v-bind=\"props\" />\n </template>\n </ComboboxOptions>\n </template>\n </ComboboxPopover>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;EA+CA,MAAM,OAAO;EAEb,MAAM,QAAQ,SAAc,SAAA,aAAC;;uBAK3B,YA2CkB,+BAAA;IA1Cf,YAAA,QAAA;IACA,QAAA,QAAA;IACA,WAAW,QAAA,aAAS;IACpB,QAAA,QAAA;IACA,QAAA,QAAA;IACA,UAAA,QAAA;;IACU,SAAO,SACF,EADM,WAAI,CACxB,WAAc,KAAA,QAAA,WAAA,EAAP,MAAI,CAAA,CAAA,CAAA;IAEF,SAAO,SA+BE,EA/BE,MAAM,YAAK,CAC/B,YA8BkB,+BAAA;KA7Bf,UAAA,QAAA;KACA,YAAY,MAAA,QAAK,CAAI,MAAA,MAAK,GAAA,EAAA;KAC1B;KACA,SAAA,QAAA;KACA,aAAA,QAAA;KACA,cAAY,OAAK,EAAI,KAAI,MAAA;KACzB,wBAAoB,OAAO,OAAK,EAAK,MAAA,QAAQ,EAAC;;KAGvCA,KAAAA,OAAO,SAAA;YACZ;mBAAQ,UAAK,CACd,WAEmB,KAAA,QAAA,UAAA,eAAA,mBAAT,MAAK,CAAA,CAAA,CAAA,CAAA;;;KAGTA,KAAAA,OAAO,QAAA;YACZ;mBAAO,UAAK,CACb,WAEmB,KAAA,QAAA,SAAA,eAAA,mBAAT,MAAK,CAAA,CAAA,CAAA,CAAA;;;KAGTA,KAAAA,OAAO,MAAA;YACZ;mBAAK,UAAK,CACX,WAEmB,KAAA,QAAA,OAAA,eAAA,mBAAT,MAAK,CAAA,CAAA,CAAA,CAAA"}
1
+ {"version":3,"file":"ScalarCombobox.vue.script.js","names":["$slots"],"sources":["../../../src/components/ScalarCombobox/ScalarCombobox.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar Combobox component\n *\n * A searchable select input with support for filtering, option groups,\n * and custom option rendering.\n *\n * @example\n * <ScalarCombobox v-model=\"selected\" :options=\"options\">\n * <ScalarButton>{{ selected?.label ?? 'Select' }}</ScalarButton>\n * </ScalarCombobox>\n */\nexport default {}\n</script>\n\n<!-- prettier-ignore-attribute generic -->\n<script\n setup\n lang=\"ts\"\n generic=\"O extends Option = Option, G extends OptionGroup<O> = OptionGroup<O>\">\nimport type { ScalarFloatingOptions } from '../ScalarFloating'\nimport ComboboxOptions from './ScalarComboboxOptions.vue'\nimport ComboboxPopover from './ScalarComboboxPopover.vue'\nimport type {\n ComboboxEmits,\n ComboboxSlots,\n FilterFunction,\n Option,\n OptionGroup,\n OptionsOrGroups,\n} from './types'\n\ndefineProps<\n {\n /** The options to display in the combobox */\n options: OptionsOrGroups<O, G>\n /** The placeholder text to display in the combobox */\n placeholder?: string\n /** A function to filter the options based on a query,\n * if not provided, the options will be filtered by option label\n *\n * @see {@link FilterFunction} for more information\n */\n filterFn?: FilterFunction<O, G>\n } & ScalarFloatingOptions\n>()\n\nconst emit = defineEmits<ComboboxEmits>()\n\nconst model = defineModel<O>()\n\ndefineSlots<ComboboxSlots<O, G>>()\n</script>\n<template>\n <ComboboxPopover\n :middleware\n :offset\n :placement=\"placement ?? 'bottom-start'\"\n :resize\n :target\n :teleport>\n <template #default=\"{ open }\">\n <slot :open />\n </template>\n <template #popover=\"{ open, close }\">\n <ComboboxOptions\n :filterFn\n :modelValue=\"model ? [model] : []\"\n :open\n :options\n :placeholder\n @add=\"() => (close(), emit('add'))\"\n @update:modelValue=\"(v) => (close(), (model = v[0]))\">\n <!-- Pass through the combobox slots -->\n <template\n v-if=\"$slots.option\"\n #option=\"props\">\n <slot\n name=\"option\"\n v-bind=\"props\" />\n </template>\n <template\n v-if=\"$slots.group\"\n #group=\"props\">\n <slot\n name=\"group\"\n v-bind=\"props\" />\n </template>\n <template\n v-if=\"$slots.add\"\n #add=\"props\">\n <slot\n name=\"add\"\n v-bind=\"props\" />\n </template>\n </ComboboxOptions>\n </template>\n </ComboboxPopover>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;EA+CA,MAAM,OAAO;EAEb,MAAM,QAAQ,SAAc,SAAA,YAAC;;uBAK3B,YA2CkB,+BAAA;IA1Cf,YAAA,QAAA;IACA,QAAA,QAAA;IACA,WAAW,QAAA,aAAS;IACpB,QAAA,QAAA;IACA,QAAA,QAAA;IACA,UAAA,QAAA;;IACU,SAAO,SACF,EADM,WAAI,CACxB,WAAc,KAAA,QAAA,WAAA,EAAP,KAAI,CAAA,CAAA,CAAA;IAEF,SAAO,SA+BE,EA/BE,MAAM,YAAK,CAC/B,YA8BkB,+BAAA;KA7Bf,UAAA,QAAA;KACA,YAAY,MAAA,QAAK,CAAI,MAAA,KAAK,IAAA,CAAA;KAC1B;KACA,SAAA,QAAA;KACA,aAAA,QAAA;KACA,cAAY,MAAK,GAAI,KAAI,KAAA;KACzB,wBAAoB,OAAO,MAAK,GAAK,MAAA,QAAQ,EAAC;;KAGvCA,KAAAA,OAAO,SAAA;YACZ;mBAAQ,UAAK,CACd,WAEmB,KAAA,QAAA,UAAA,eAAA,mBAAT,KAAK,CAAA,CAAA,CAAA,CAAA;;;KAGTA,KAAAA,OAAO,QAAA;YACZ;mBAAO,UAAK,CACb,WAEmB,KAAA,QAAA,SAAA,eAAA,mBAAT,KAAK,CAAA,CAAA,CAAA,CAAA;;;KAGTA,KAAAA,OAAO,MAAA;YACZ;mBAAK,UAAK,CACX,WAEmB,KAAA,QAAA,OAAA,eAAA,mBAAT,KAAK,CAAA,CAAA,CAAA,CAAA"}
@@ -463,7 +463,7 @@ declare const __VLS_export: <O extends Option = Option, G extends OptionGroup<O>
463
463
  slots: ComboboxSlots<O, G>;
464
464
  emit: ((evt: "add") => void) & ((event: "update:modelValue", value: O[]) => void);
465
465
  }>) => import("vue").VNode & {
466
- __ctx?: Awaited<typeof __VLS_setup>;
466
+ __ctx?: NonNullable<Awaited<typeof __VLS_setup>>;
467
467
  };
468
468
  type __VLS_PrettifyLocal<T> = (T extends any ? {
469
469
  [K in keyof T]: T[K];
@@ -1 +1 @@
1
- {"version":3,"file":"ScalarComboboxMultiselect.vue.d.ts","sourceRoot":"","sources":["../../../src/components/ScalarCombobox/ScalarComboboxMultiselect.vue"],"names":[],"mappings":"AAgHA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AAG9D,OAAO,KAAK,EAEV,aAAa,EACb,cAAc,EACd,MAAM,EACN,WAAW,EACX,eAAe,EAChB,MAAM,SAAS,CAAA;AAGhB;;;;;;;;;GASG;wBACkB,OAAO,YAAY;AAAxC,wBAAyC;AAGzC,QAAA,MAAM,YAAY,GAAM,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,EAC3F,aAAa,WAAW,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,EAC9D,YAAY,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC,EAC3G,gBAAgB,WAAW,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,EAClE;WAmLO,OAAO,KAAK,EAAE,WAAW,GAAG,mBAAmB,CAAC;QAjLpD,6CAA6C;iBACpC,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC;QAC9B,sDAAsD;sBACxC,MAAM;QACpB;;;;WAIG;mBACQ,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC;;qBAyBtB,CAAC,EAAE;;;;KA+I2E,CAAC,GAAG,CAAC,OAAO,UAAU,SAAS;QAAE,oBAAoB,EAAE,MAAM,CAAC,CAAA;KAAE,GAAG,CAAC,GAAG,EAAE,CAAC;YAC5J,CAAC,OAAO,EAAE,OAAO,KAAK,EAAE,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAAsB,KAAK,IAAI;WACxE,GAAG;;UAEJ,2EAAoC;EAEvC,KACQ,OAAO,KAAK,EAAE,KAAK,GAAG;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC,OAAO,WAAW,CAAC,CAAA;CAAI,CAAC;AAC5E,KAAK,mBAAmB,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,GAAG,GAAG;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAG,GAAG;KAAG,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAG,CAAC,GAAG,EAAE,CAAC"}
1
+ {"version":3,"file":"ScalarComboboxMultiselect.vue.d.ts","sourceRoot":"","sources":["../../../src/components/ScalarCombobox/ScalarComboboxMultiselect.vue"],"names":[],"mappings":"AAgHA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AAG9D,OAAO,KAAK,EAEV,aAAa,EACb,cAAc,EACd,MAAM,EACN,WAAW,EACX,eAAe,EAChB,MAAM,SAAS,CAAA;AAGhB;;;;;;;;;GASG;wBACkB,OAAO,YAAY;AAAxC,wBAAyC;AAGzC,QAAA,MAAM,YAAY,GAAM,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,EAC3F,aAAa,WAAW,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,EAC9D,YAAY,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC,EAC3G,gBAAgB,WAAW,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,EAClE;WAoLO,OAAO,KAAK,EAAE,WAAW,GAAG,mBAAmB,CAAC;QAlLpD,6CAA6C;iBACpC,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC;QAC9B,sDAAsD;sBACxC,MAAM;QACpB;;;;WAIG;mBACQ,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC;;qBAyBtB,CAAC,EAAE;;;;KAgJ2E,CAAC,GAAG,CAAC,OAAO,UAAU,SAAS;QAAE,oBAAoB,EAAE,MAAM,CAAC,CAAA;KAAE,GAAG,CAAC,GAAG,EAAE,CAAC;YAC5J,CAAC,OAAO,EAAE,OAAO,KAAK,EAAE,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAAsB,KAAK,IAAI;WACxE,GAAG;;UAEJ,2EAAoC;EAEvC,KACQ,OAAO,KAAK,EAAE,KAAK,GAAG;IAAE,KAAK,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC,CAAA;CAAI,CAAC;AACzF,KAAK,mBAAmB,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,GAAG,GAAG;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAG,GAAG;KAAG,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAG,CAAC,GAAG,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ScalarComboboxMultiselect.vue.js","names":[],"sources":["../../../src/components/ScalarCombobox/ScalarComboboxMultiselect.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar Combobox Multiselect component\n *\n * A searchable select input that supports selecting multiple options.\n *\n * @example\n * <ScalarComboboxMultiselect v-model=\"selected\" :options=\"options\">\n * <ScalarButton>Select items</ScalarButton>\n * </ScalarComboboxMultiselect>\n */\nexport default {}\n</script>\n\n<!-- prettier-ignore-attribute generic -->\n<script\n setup\n lang=\"ts\"\n generic=\" O extends Option = Option, G extends OptionGroup<O> = OptionGroup<O> \">\nimport { ref } from 'vue'\n\nimport type { ScalarFloatingOptions } from '../ScalarFloating'\nimport ComboboxOptions from './ScalarComboboxOptions.vue'\nimport ComboboxPopover from './ScalarComboboxPopover.vue'\nimport type {\n ComboboxEmits,\n ComboboxSlots,\n FilterFunction,\n Option,\n OptionGroup,\n OptionsOrGroups,\n} from './types'\n\ndefineProps<\n {\n /** The options to display in the combobox */\n options: OptionsOrGroups<O, G>\n /** The placeholder text to display in the combobox */\n placeholder?: string\n /** A function to filter the options based on a query,\n * if not provided, the options will be filtered by option label\n *\n * @see {@link FilterFunction} for more information\n */\n filterFn?: FilterFunction<O, G>\n } & ScalarFloatingOptions\n>()\n\nconst emit = defineEmits<ComboboxEmits>()\n\nconst model = defineModel<O[]>({ default: [] })\n\ndefineSlots<ComboboxSlots<O, G>>()\n\n/** Propagate up the popover ref */\nconst comboboxPopoverRef = ref<typeof ComboboxPopover | null>(null)\n\ndefineExpose({ comboboxPopoverRef })\n</script>\n<template>\n <ComboboxPopover\n ref=\"comboboxPopoverRef\"\n :middleware=\"middleware\"\n :offset=\"offset\"\n :placement=\"placement ?? 'bottom-start'\"\n :resize=\"resize\"\n :target=\"target\"\n :teleport=\"teleport\">\n <template #default=\"{ open }\">\n <slot :open />\n </template>\n <template #popover=\"{ open }\">\n <ComboboxOptions\n v-if=\"options?.length\"\n v-model=\"model\"\n :filterFn\n multiselect\n :open\n :options\n :placeholder\n @add=\"emit('add')\">\n <!-- Pass through the combobox slots -->\n <template\n v-if=\"$slots.option\"\n #option=\"props\">\n <slot\n name=\"option\"\n v-bind=\"props\" />\n </template>\n <template\n v-if=\"$slots.group\"\n #group=\"props\">\n <slot\n name=\"group\"\n v-bind=\"props\" />\n </template>\n <template\n v-if=\"$slots.add\"\n #add=\"props\">\n <slot\n name=\"add\"\n v-bind=\"props\" />\n </template>\n </ComboboxOptions>\n </template>\n </ComboboxPopover>\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"ScalarComboboxMultiselect.vue.js","names":[],"sources":["../../../src/components/ScalarCombobox/ScalarComboboxMultiselect.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar Combobox Multiselect component\n *\n * A searchable select input that supports selecting multiple options.\n *\n * @example\n * <ScalarComboboxMultiselect v-model=\"selected\" :options=\"options\">\n * <ScalarButton>Select items</ScalarButton>\n * </ScalarComboboxMultiselect>\n */\nexport default {}\n</script>\n\n<!-- prettier-ignore-attribute generic -->\n<script\n setup\n lang=\"ts\"\n generic=\" O extends Option = Option, G extends OptionGroup<O> = OptionGroup<O> \">\nimport { ref } from 'vue'\n\nimport type { ScalarFloatingOptions } from '../ScalarFloating'\nimport ComboboxOptions from './ScalarComboboxOptions.vue'\nimport ComboboxPopover from './ScalarComboboxPopover.vue'\nimport type {\n ComboboxEmits,\n ComboboxSlots,\n FilterFunction,\n Option,\n OptionGroup,\n OptionsOrGroups,\n} from './types'\n\ndefineProps<\n {\n /** The options to display in the combobox */\n options: OptionsOrGroups<O, G>\n /** The placeholder text to display in the combobox */\n placeholder?: string\n /** A function to filter the options based on a query,\n * if not provided, the options will be filtered by option label\n *\n * @see {@link FilterFunction} for more information\n */\n filterFn?: FilterFunction<O, G>\n } & ScalarFloatingOptions\n>()\n\nconst emit = defineEmits<ComboboxEmits>()\n\nconst model = defineModel<O[]>({ default: () => [] })\n\ndefineSlots<ComboboxSlots<O, G>>()\n\n/** Propagate up the popover ref */\nconst comboboxPopoverRef = ref<typeof ComboboxPopover | null>(null)\n\ndefineExpose({ comboboxPopoverRef })\n</script>\n<template>\n <ComboboxPopover\n ref=\"comboboxPopoverRef\"\n :middleware=\"middleware\"\n :offset=\"offset\"\n :placement=\"placement ?? 'bottom-start'\"\n :resize=\"resize\"\n :target=\"target\"\n :teleport=\"teleport\">\n <template #default=\"{ open }\">\n <slot :open />\n </template>\n <template #popover=\"{ open }\">\n <ComboboxOptions\n v-if=\"options?.length\"\n v-model=\"model\"\n :filterFn\n multiselect\n :open\n :options\n :placeholder\n @add=\"emit('add')\">\n <!-- Pass through the combobox slots -->\n <template\n v-if=\"$slots.option\"\n #option=\"props\">\n <slot\n name=\"option\"\n v-bind=\"props\" />\n </template>\n <template\n v-if=\"$slots.group\"\n #group=\"props\">\n <slot\n name=\"group\"\n v-bind=\"props\" />\n </template>\n <template\n v-if=\"$slots.add\"\n #add=\"props\">\n <slot\n name=\"add\"\n v-bind=\"props\" />\n </template>\n </ComboboxOptions>\n </template>\n </ComboboxPopover>\n</template>\n"],"mappings":""}
@@ -1,9 +1,9 @@
1
1
  import ScalarComboboxOptions_default from "./ScalarComboboxOptions.vue.js";
2
2
  import ScalarComboboxPopover_default from "./ScalarComboboxPopover.vue.js";
3
3
  import { createBlock, createCommentVNode, createSlots, defineComponent, guardReactiveProps, mergeModels, normalizeProps, openBlock, ref, renderSlot, useModel, withCtx } from "vue";
4
- var ScalarComboboxMultiselect_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
4
+ var ScalarComboboxMultiselect_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
5
5
  __name: "ScalarComboboxMultiselect",
6
- props: /* @__PURE__ */ mergeModels({
6
+ props: /*@__PURE__*/ mergeModels({
7
7
  options: {},
8
8
  placeholder: {},
9
9
  filterFn: { type: Function },
@@ -18,10 +18,10 @@ var ScalarComboboxMultiselect_vue_vue_type_script_setup_true_lang_default = /* @
18
18
  middleware: {},
19
19
  teleport: { type: [Boolean, String] }
20
20
  }, {
21
- "modelValue": { default: [] },
21
+ "modelValue": { default: () => [] },
22
22
  "modelModifiers": {}
23
23
  }),
24
- emits: /* @__PURE__ */ mergeModels(["add"], ["update:modelValue"]),
24
+ emits: /*@__PURE__*/ mergeModels(["add"], ["update:modelValue"]),
25
25
  setup(__props, { expose: __expose, emit: __emit }) {
26
26
  const emit = __emit;
27
27
  const model = useModel(__props, "modelValue");
@@ -1 +1 @@
1
- {"version":3,"file":"ScalarComboboxMultiselect.vue.script.js","names":["$slots"],"sources":["../../../src/components/ScalarCombobox/ScalarComboboxMultiselect.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar Combobox Multiselect component\n *\n * A searchable select input that supports selecting multiple options.\n *\n * @example\n * <ScalarComboboxMultiselect v-model=\"selected\" :options=\"options\">\n * <ScalarButton>Select items</ScalarButton>\n * </ScalarComboboxMultiselect>\n */\nexport default {}\n</script>\n\n<!-- prettier-ignore-attribute generic -->\n<script\n setup\n lang=\"ts\"\n generic=\" O extends Option = Option, G extends OptionGroup<O> = OptionGroup<O> \">\nimport { ref } from 'vue'\n\nimport type { ScalarFloatingOptions } from '../ScalarFloating'\nimport ComboboxOptions from './ScalarComboboxOptions.vue'\nimport ComboboxPopover from './ScalarComboboxPopover.vue'\nimport type {\n ComboboxEmits,\n ComboboxSlots,\n FilterFunction,\n Option,\n OptionGroup,\n OptionsOrGroups,\n} from './types'\n\ndefineProps<\n {\n /** The options to display in the combobox */\n options: OptionsOrGroups<O, G>\n /** The placeholder text to display in the combobox */\n placeholder?: string\n /** A function to filter the options based on a query,\n * if not provided, the options will be filtered by option label\n *\n * @see {@link FilterFunction} for more information\n */\n filterFn?: FilterFunction<O, G>\n } & ScalarFloatingOptions\n>()\n\nconst emit = defineEmits<ComboboxEmits>()\n\nconst model = defineModel<O[]>({ default: [] })\n\ndefineSlots<ComboboxSlots<O, G>>()\n\n/** Propagate up the popover ref */\nconst comboboxPopoverRef = ref<typeof ComboboxPopover | null>(null)\n\ndefineExpose({ comboboxPopoverRef })\n</script>\n<template>\n <ComboboxPopover\n ref=\"comboboxPopoverRef\"\n :middleware=\"middleware\"\n :offset=\"offset\"\n :placement=\"placement ?? 'bottom-start'\"\n :resize=\"resize\"\n :target=\"target\"\n :teleport=\"teleport\">\n <template #default=\"{ open }\">\n <slot :open />\n </template>\n <template #popover=\"{ open }\">\n <ComboboxOptions\n v-if=\"options?.length\"\n v-model=\"model\"\n :filterFn\n multiselect\n :open\n :options\n :placeholder\n @add=\"emit('add')\">\n <!-- Pass through the combobox slots -->\n <template\n v-if=\"$slots.option\"\n #option=\"props\">\n <slot\n name=\"option\"\n v-bind=\"props\" />\n </template>\n <template\n v-if=\"$slots.group\"\n #group=\"props\">\n <slot\n name=\"group\"\n v-bind=\"props\" />\n </template>\n <template\n v-if=\"$slots.add\"\n #add=\"props\">\n <slot\n name=\"add\"\n v-bind=\"props\" />\n </template>\n </ComboboxOptions>\n </template>\n </ComboboxPopover>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;EAgDA,MAAM,OAAO;EAEb,MAAM,QAAQ,SAAgB,SAAA,aAAgB;;EAK9C,MAAM,qBAAqB,IAAmC,KAAI;AAElE,WAAa,EAAE,oBAAoB,CAAA;;uBAGjC,YA6CkB,+BAAA;aA5CZ;IAAJ,KAAI;IACH,YAAY,QAAA;IACZ,QAAQ,QAAA;IACR,WAAW,QAAA,aAAS;IACpB,QAAQ,QAAA;IACR,QAAQ,QAAA;IACR,UAAU,QAAA;;IACA,SAAO,SACF,EADM,WAAI,CACxB,WAAc,KAAA,QAAA,WAAA,EAAP,MAAI,CAAA,CAAA,CAAA;IAEF,SAAO,SAgCE,EAhCE,WAAI,CAEhB,QAAA,SAAS,UAAA,WAAA,EADjB,YA+BkB,+BAAA;;iBA7BP,MAAA;wEAAK,QAAA;KACb,UAAA,QAAA;KACD,aAAA;KACC;KACA,SAAA,QAAA;KACA,aAAA,QAAA;KACA,OAAG,OAAA,OAAA,OAAA,MAAA,WAAE,KAAI,MAAA;;KAGFA,KAAAA,OAAO,SAAA;YACZ;mBAAQ,UAAK,CACd,WAEmB,KAAA,QAAA,UAAA,eAAA,mBAAT,MAAK,CAAA,CAAA,CAAA,CAAA;;;KAGTA,KAAAA,OAAO,QAAA;YACZ;mBAAO,UAAK,CACb,WAEmB,KAAA,QAAA,SAAA,eAAA,mBAAT,MAAK,CAAA,CAAA,CAAA,CAAA;;;KAGTA,KAAAA,OAAO,MAAA;YACZ;mBAAK,UAAK,CACX,WAEmB,KAAA,QAAA,OAAA,eAAA,mBAAT,MAAK,CAAA,CAAA,CAAA,CAAA"}
1
+ {"version":3,"file":"ScalarComboboxMultiselect.vue.script.js","names":["$slots"],"sources":["../../../src/components/ScalarCombobox/ScalarComboboxMultiselect.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar Combobox Multiselect component\n *\n * A searchable select input that supports selecting multiple options.\n *\n * @example\n * <ScalarComboboxMultiselect v-model=\"selected\" :options=\"options\">\n * <ScalarButton>Select items</ScalarButton>\n * </ScalarComboboxMultiselect>\n */\nexport default {}\n</script>\n\n<!-- prettier-ignore-attribute generic -->\n<script\n setup\n lang=\"ts\"\n generic=\" O extends Option = Option, G extends OptionGroup<O> = OptionGroup<O> \">\nimport { ref } from 'vue'\n\nimport type { ScalarFloatingOptions } from '../ScalarFloating'\nimport ComboboxOptions from './ScalarComboboxOptions.vue'\nimport ComboboxPopover from './ScalarComboboxPopover.vue'\nimport type {\n ComboboxEmits,\n ComboboxSlots,\n FilterFunction,\n Option,\n OptionGroup,\n OptionsOrGroups,\n} from './types'\n\ndefineProps<\n {\n /** The options to display in the combobox */\n options: OptionsOrGroups<O, G>\n /** The placeholder text to display in the combobox */\n placeholder?: string\n /** A function to filter the options based on a query,\n * if not provided, the options will be filtered by option label\n *\n * @see {@link FilterFunction} for more information\n */\n filterFn?: FilterFunction<O, G>\n } & ScalarFloatingOptions\n>()\n\nconst emit = defineEmits<ComboboxEmits>()\n\nconst model = defineModel<O[]>({ default: () => [] })\n\ndefineSlots<ComboboxSlots<O, G>>()\n\n/** Propagate up the popover ref */\nconst comboboxPopoverRef = ref<typeof ComboboxPopover | null>(null)\n\ndefineExpose({ comboboxPopoverRef })\n</script>\n<template>\n <ComboboxPopover\n ref=\"comboboxPopoverRef\"\n :middleware=\"middleware\"\n :offset=\"offset\"\n :placement=\"placement ?? 'bottom-start'\"\n :resize=\"resize\"\n :target=\"target\"\n :teleport=\"teleport\">\n <template #default=\"{ open }\">\n <slot :open />\n </template>\n <template #popover=\"{ open }\">\n <ComboboxOptions\n v-if=\"options?.length\"\n v-model=\"model\"\n :filterFn\n multiselect\n :open\n :options\n :placeholder\n @add=\"emit('add')\">\n <!-- Pass through the combobox slots -->\n <template\n v-if=\"$slots.option\"\n #option=\"props\">\n <slot\n name=\"option\"\n v-bind=\"props\" />\n </template>\n <template\n v-if=\"$slots.group\"\n #group=\"props\">\n <slot\n name=\"group\"\n v-bind=\"props\" />\n </template>\n <template\n v-if=\"$slots.add\"\n #add=\"props\">\n <slot\n name=\"add\"\n v-bind=\"props\" />\n </template>\n </ComboboxOptions>\n </template>\n </ComboboxPopover>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;EAgDA,MAAM,OAAO;EAEb,MAAM,QAAQ,SAAgB,SAAA,YAAsB;;EAKpD,MAAM,qBAAqB,IAAmC,IAAI;EAElE,SAAa,EAAE,mBAAmB,CAAC;;uBAGjC,YA6CkB,+BAAA;aA5CZ;IAAJ,KAAI;IACH,YAAY,QAAA;IACZ,QAAQ,QAAA;IACR,WAAW,QAAA,aAAS;IACpB,QAAQ,QAAA;IACR,QAAQ,QAAA;IACR,UAAU,QAAA;;IACA,SAAO,SACF,EADM,WAAI,CACxB,WAAc,KAAA,QAAA,WAAA,EAAP,KAAI,CAAA,CAAA,CAAA;IAEF,SAAO,SAgCE,EAhCE,WAAI,CAEhB,QAAA,SAAS,UAAA,UAAA,GADjB,YA+BkB,+BAAA;;iBA7BP,MAAA;wEAAK,QAAA;KACb,UAAA,QAAA;KACD,aAAA;KACC;KACA,SAAA,QAAA;KACA,aAAA,QAAA;KACA,OAAG,OAAA,OAAA,OAAA,MAAA,WAAE,KAAI,KAAA;;KAGFA,KAAAA,OAAO,SAAA;YACZ;mBAAQ,UAAK,CACd,WAEmB,KAAA,QAAA,UAAA,eAAA,mBAAT,KAAK,CAAA,CAAA,CAAA,CAAA;;;KAGTA,KAAAA,OAAO,QAAA;YACZ;mBAAO,UAAK,CACb,WAEmB,KAAA,QAAA,SAAA,eAAA,mBAAT,KAAK,CAAA,CAAA,CAAA,CAAA;;;KAGTA,KAAAA,OAAO,MAAA;YACZ;mBAAK,UAAK,CACX,WAEmB,KAAA,QAAA,OAAA,eAAA,mBAAT,KAAK,CAAA,CAAA,CAAA,CAAA"}
@@ -2,7 +2,7 @@ import { cva, cx } from "@scalar/use-hooks/useBindCx";
2
2
  import { createElementBlock, defineComponent, normalizeClass, openBlock, renderSlot, unref } from "vue";
3
3
  //#region src/components/ScalarCombobox/ScalarComboboxOption.vue?vue&type=script&setup=true&lang.ts
4
4
  var _hoisted_1 = ["aria-selected"];
5
- var ScalarComboboxOption_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
5
+ var ScalarComboboxOption_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
6
6
  __name: "ScalarComboboxOption",
7
7
  props: {
8
8
  active: { type: Boolean },
@@ -1 +1 @@
1
- {"version":3,"file":"ScalarComboboxOption.vue.script.js","names":[],"sources":["../../../src/components/ScalarCombobox/ScalarComboboxOption.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar Combobox Option component\n *\n * A single selectable option within a combobox list.\n * Handles active and selected states.\n *\n * @example\n * <ScalarComboboxOption :active=\"true\" :selected=\"false\">\n * Option Label\n * </ScalarComboboxOption>\n */\nexport default {}\n</script>\n\n<script setup lang=\"ts\">\nimport { cva, cx } from '@scalar/use-hooks/useBindCx'\n\nconst { active, selected } = defineProps<{\n active?: boolean\n selected?: boolean\n}>()\n\nconst variants = cva({\n base: [\n // Group\n 'group/item',\n // Layout\n 'flex min-w-0 items-center gap-1.5 rounded px-2 py-1.5 text-left',\n // Text / background style\n 'truncate bg-transparent text-c-1',\n // Interaction\n 'cursor-pointer hover:bg-b-2',\n ],\n variants: {\n selected: { true: 'text-c-1' },\n active: { true: 'bg-b-2' },\n },\n})\n</script>\n<template>\n <li\n :aria-selected=\"selected\"\n :class=\"cx(variants({ active, selected }))\"\n role=\"option\"\n tabindex=\"-1\">\n <slot\n :active\n :selected />\n </li>\n</template>\n"],"mappings":";;;;;;;;;;;EAuBA,MAAM,WAAW,IAAI;GACnB,MAAM;IAEJ;IAEA;IAEA;IAEA;IACD;GACD,UAAU;IACR,UAAU,EAAE,MAAM,YAAY;IAC9B,QAAQ,EAAE,MAAM,UAAU;IAC3B;GACF,CAAA;;uBAGC,mBAQK,MAAA;IAPF,iBAAe,QAAA;IACf,OAAK,eAAE,MAAA,GAAE,CAAC,MAAA,SAAQ,CAAA;KAAA,QAAG,QAAA;KAAM,UAAE,QAAA;KAAQ,CAAA,CAAA,CAAA;IACtC,MAAK;IACL,UAAS;OACT,WAEc,KAAA,QAAA,WAAA;IADX,QAAA,QAAA;IACA,UAAA,QAAA"}
1
+ {"version":3,"file":"ScalarComboboxOption.vue.script.js","names":[],"sources":["../../../src/components/ScalarCombobox/ScalarComboboxOption.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar Combobox Option component\n *\n * A single selectable option within a combobox list.\n * Handles active and selected states.\n *\n * @example\n * <ScalarComboboxOption :active=\"true\" :selected=\"false\">\n * Option Label\n * </ScalarComboboxOption>\n */\nexport default {}\n</script>\n\n<script setup lang=\"ts\">\nimport { cva, cx } from '@scalar/use-hooks/useBindCx'\n\nconst { active, selected } = defineProps<{\n active?: boolean\n selected?: boolean\n}>()\n\nconst variants = cva({\n base: [\n // Group\n 'group/item',\n // Layout\n 'flex min-w-0 items-center gap-1.5 rounded px-2 py-1.5 text-left',\n // Text / background style\n 'truncate bg-transparent text-c-1',\n // Interaction\n 'cursor-pointer hover:bg-b-2',\n ],\n variants: {\n selected: { true: 'text-c-1' },\n active: { true: 'bg-b-2' },\n },\n})\n</script>\n<template>\n <li\n :aria-selected=\"selected\"\n :class=\"cx(variants({ active, selected }))\"\n role=\"option\"\n tabindex=\"-1\">\n <slot\n :active\n :selected />\n </li>\n</template>\n"],"mappings":";;;;;;;;;;;EAuBA,MAAM,WAAW,IAAI;GACnB,MAAM;IAEJ;IAEA;IAEA;IAEA;GACF;GACA,UAAU;IACR,UAAU,EAAE,MAAM,WAAW;IAC7B,QAAQ,EAAE,MAAM,SAAS;GAC3B;EACF,CAAC;;uBAGC,mBAQK,MAAA;IAPF,iBAAe,QAAA;IACf,OAAK,eAAE,MAAA,EAAA,CAAE,CAAC,MAAA,QAAA,CAAQ,CAAA;KAAA,QAAG,QAAA;KAAM,UAAE,QAAA;IAAQ,CAAA,CAAA,CAAA;IACtC,MAAK;IACL,UAAS;OACT,WAEc,KAAA,QAAA,WAAA;IADX,QAAA,QAAA;IACA,UAAA,QAAA"}
@@ -6,7 +6,7 @@ var _hoisted_1 = [
6
6
  "role"
7
7
  ];
8
8
  var _hoisted_2 = ["id"];
9
- var ScalarComboboxOptionGroup_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
9
+ var ScalarComboboxOptionGroup_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
10
10
  __name: "ScalarComboboxOptionGroup",
11
11
  props: {
12
12
  id: { default: () => useId() },
@@ -1 +1 @@
1
- {"version":3,"file":"ScalarComboboxOptionGroup.vue.script.js","names":[],"sources":["../../../src/components/ScalarCombobox/ScalarComboboxOptionGroup.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar Combobox Option Group component\n *\n * Groups related options under an optional label within a combobox.\n *\n * @example\n * <ScalarComboboxOptionGroup>\n * <template #label>Group Name</template>\n * <!-- options -->\n * </ScalarComboboxOptionGroup>\n */\nexport default {}\n</script>\n\n<script setup lang=\"ts\">\nimport { useId } from 'vue'\n\nconst { id = useId(), hidden = false } = defineProps<{\n id?: string\n hidden?: boolean\n}>()\n</script>\n<template>\n <div\n :id=\"id\"\n :aria-labelledby=\"id ? `${id}-label` : undefined\"\n class=\"contents\"\n :role=\"hidden ? undefined : 'group'\">\n <div\n v-if=\"!hidden\"\n :id=\"`${id}-label`\"\n class=\"min-w-0 truncate px-2.5 py-1.5 text-c-2\">\n <slot name=\"label\" />\n </div>\n <slot />\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;uBAwBE,mBAYM,OAAA;IAXH,IAAI,QAAA;IACJ,mBAAiB,QAAA,KAAE,GAAM,QAAA,GAAE,UAAW,KAAA;IACvC,OAAM;IACL,MAAM,QAAA,SAAS,KAAA,IAAS;QAEhB,QAAA,UAAA,WAAA,EADT,mBAKM,OAAA;;IAHH,IAAE,GAAK,QAAA,GAAE;IACV,OAAM;OACN,WAAqB,KAAA,QAAA,QAAA,CAAA,EAAA,GAAA,WAAA,IAAA,mBAAA,IAAA,KAAA,EAEvB,WAAQ,KAAA,QAAA,UAAA,CAAA,EAAA,GAAA,WAAA"}
1
+ {"version":3,"file":"ScalarComboboxOptionGroup.vue.script.js","names":[],"sources":["../../../src/components/ScalarCombobox/ScalarComboboxOptionGroup.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar Combobox Option Group component\n *\n * Groups related options under an optional label within a combobox.\n *\n * @example\n * <ScalarComboboxOptionGroup>\n * <template #label>Group Name</template>\n * <!-- options -->\n * </ScalarComboboxOptionGroup>\n */\nexport default {}\n</script>\n\n<script setup lang=\"ts\">\nimport { useId } from 'vue'\n\nconst { id = useId(), hidden = false } = defineProps<{\n id?: string\n hidden?: boolean\n}>()\n</script>\n<template>\n <div\n :id=\"id\"\n :aria-labelledby=\"id ? `${id}-label` : undefined\"\n class=\"contents\"\n :role=\"hidden ? undefined : 'group'\">\n <div\n v-if=\"!hidden\"\n :id=\"`${id}-label`\"\n class=\"min-w-0 truncate px-2.5 py-1.5 text-c-2\">\n <slot name=\"label\" />\n </div>\n <slot />\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;uBAwBE,mBAYM,OAAA;IAXH,IAAI,QAAA;IACJ,mBAAiB,QAAA,KAAE,GAAM,QAAA,GAAE,UAAW,KAAA;IACvC,OAAM;IACL,MAAM,QAAA,SAAS,KAAA,IAAS;QAEhB,QAAA,UAAA,UAAA,GADT,mBAKM,OAAA;;IAHH,IAAE,GAAK,QAAA,GAAE;IACV,OAAM;OACN,WAAqB,KAAA,QAAA,OAAA,CAAA,GAAA,GAAA,UAAA,KAAA,mBAAA,IAAA,IAAA,GAEvB,WAAQ,KAAA,QAAA,SAAA,CAAA,GAAA,GAAA,UAAA"}
@@ -38,7 +38,7 @@ declare const __VLS_export: <O extends Option = Option, G extends OptionGroup<O>
38
38
  slots: Omit<ComboboxSlots<O, G>, "default">;
39
39
  emit: ((evt: "add") => void) & ((event: "update:modelValue", value: O[]) => void);
40
40
  }>) => import("vue").VNode & {
41
- __ctx?: Awaited<typeof __VLS_setup>;
41
+ __ctx?: NonNullable<Awaited<typeof __VLS_setup>>;
42
42
  };
43
43
  type __VLS_PrettifyLocal<T> = (T extends any ? {
44
44
  [K in keyof T]: T[K];
@@ -1 +1 @@
1
- {"version":3,"file":"ScalarComboboxOptions.vue.d.ts","sourceRoot":"","sources":["../../../src/components/ScalarCombobox/ScalarComboboxOptions.vue"],"names":[],"mappings":"AAgTA,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,MAAM,EACX,KAAK,WAAW,EAChB,KAAK,eAAe,EAErB,MAAM,SAAS,CAAA;AAGhB;;;;;;;;GAQG;wBACkB,OAAO,YAAY;AAAxC,wBAAyC;AAGzC,QAAA,MAAM,YAAY,GAAK,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,EAC1F,aAAa,WAAW,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,EAC9D,YAAY,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC,EAC3G,gBAAgB,WAAW,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,EAClE;WA+dO,OAAO,KAAK,EAAE,WAAW,GAAG,mBAAmB,CAAC;QA7dtD,6CAA6C;iBACpC,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC;QAC9B,sDAAsD;sBACxC,MAAM;QACpB;;;;;WAKG;mBACQ,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC;QAC/B,qEAAqE;sBACvD,OAAO;;qBAqKV,CAAC,EAAE;;;;KA4S2E,CAAC,GAAG,CAAC,OAAO,UAAU,SAAS;QAAE,oBAAoB,EAAE,MAAM,CAAC,CAAA;KAAE,GAAG,CAAC,GAAG,EAAE,CAAC;YAC5J,CAAC,OAAO,EAAE,EAAE,KAAK,IAAI;WACtB,GAAG;;UAEJ,2EAAoC;EAEvC,KACQ,OAAO,KAAK,EAAE,KAAK,GAAG;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC,OAAO,WAAW,CAAC,CAAA;CAAI,CAAC;AAC5E,KAAK,mBAAmB,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,GAAG,GAAG;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAG,GAAG;KAAG,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAG,CAAC,GAAG,EAAE,CAAC"}
1
+ {"version":3,"file":"ScalarComboboxOptions.vue.d.ts","sourceRoot":"","sources":["../../../src/components/ScalarCombobox/ScalarComboboxOptions.vue"],"names":[],"mappings":"AAgTA,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,MAAM,EACX,KAAK,WAAW,EAChB,KAAK,eAAe,EAErB,MAAM,SAAS,CAAA;AAGhB;;;;;;;;GAQG;wBACkB,OAAO,YAAY;AAAxC,wBAAyC;AAGzC,QAAA,MAAM,YAAY,GAAK,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,EAC1F,aAAa,WAAW,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,EAC9D,YAAY,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC,EAC3G,gBAAgB,WAAW,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,EAClE;WAueO,OAAO,KAAK,EAAE,WAAW,GAAG,mBAAmB,CAAC;QAretD,6CAA6C;iBACpC,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC;QAC9B,sDAAsD;sBACxC,MAAM;QACpB;;;;;WAKG;mBACQ,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC;QAC/B,qEAAqE;sBACvD,OAAO;;qBAqKV,CAAC,EAAE;;;;KAoT2E,CAAC,GAAG,CAAC,OAAO,UAAU,SAAS;QAAE,oBAAoB,EAAE,MAAM,CAAC,CAAA;KAAE,GAAG,CAAC,GAAG,EAAE,CAAC;YAC5J,CAAC,OAAO,EAAE,EAAE,KAAK,IAAI;WACtB,GAAG;;UAEJ,2EAAoC;EAEvC,KACQ,OAAO,KAAK,EAAE,KAAK,GAAG;IAAE,KAAK,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC,CAAA;CAAI,CAAC;AACzF,KAAK,mBAAmB,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,GAAG,GAAG;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAG,GAAG;KAAG,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAG,CAAC,GAAG,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ScalarComboboxOptions.vue.js","names":[],"sources":["../../../src/components/ScalarCombobox/ScalarComboboxOptions.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar Combobox Options component\n *\n * Renders the searchable option list for a combobox, including\n * filtering, keyboard navigation, and an optional \"add new\" action.\n *\n * @example\n * <ScalarComboboxOptions v-model=\"selected\" :options=\"options\" />\n */\nexport default {}\n</script>\n\n<!-- prettier-ignore-attribute generic -->\n<script\n setup\n lang=\"ts\"\n generic=\"O extends Option = Option, G extends OptionGroup<O> = OptionGroup<O>\">\nimport { filterByOptionLabel } from '@/components/ScalarCombobox/filter-by-option-label'\nimport { ScalarIconMagnifyingGlass, ScalarIconPlus } from '@scalar/icons'\nimport { computed, onMounted, ref, useId, watch } from 'vue'\n\nimport { ScalarListboxCheckbox } from '../ScalarListbox'\nimport ComboboxOption from './ScalarComboboxOption.vue'\nimport ComboboxOptionGroup from './ScalarComboboxOptionGroup.vue'\nimport {\n type ComboboxEmits,\n type ComboboxSlots,\n type FilterFunction,\n type Option,\n type OptionGroup,\n type OptionsOrGroups,\n isGroups,\n} from './types'\n\nconst {\n options: optionsOrGroups,\n placeholder,\n filterFn = filterByOptionLabel,\n multiselect,\n} = defineProps<{\n /** The options to display in the combobox */\n options: OptionsOrGroups<O, G>\n /** The placeholder text to display in the combobox */\n placeholder?: string\n /**\n * A function to filter the options based on a query,\n * if not provided, the options will be filtered by option label\n *\n * @see {@link FilterFunction} for more information\n */\n filterFn?: FilterFunction<O, G>\n /** Whether the combobox is in multiselect mode, defaults to false */\n multiselect?: boolean\n}>()\n\nconst emit = defineEmits<ComboboxEmits>()\n\nconst model = defineModel<O[]>({ default: [] })\n\nconst slots = defineSlots<Omit<ComboboxSlots<O, G>, 'default'>>()\n\ndefineOptions({ inheritAttrs: false })\n\n/** A unique ID for the combobox */\nconst id = `scalar-combobox-items-${useId()}`\n\n/** A static option entry for the \"Add a new option\" option */\nconst addOption: Option = { id: `${useId()}-add`, label: 'Add a new option' }\n\n/** Generate a unique ID for an option */\nfunction getOptionId(option: Option) {\n return `${id}-${option.id}`\n}\n\n/** A flat list of all options */\nconst options = computed<O[]>(() =>\n isGroups(optionsOrGroups)\n ? optionsOrGroups.flatMap((group) => group.options)\n : optionsOrGroups,\n)\n\n/** An list of all groups */\nconst groups = computed<G[]>(\n () =>\n isGroups(optionsOrGroups)\n ? optionsOrGroups // G extends OptionGroup<O>\n : /*\n We know G is an unextended OptionGroup<O> here because of the\n structure of the component props so we can cast it to G\n */\n [{ label: '', options: optionsOrGroups } as G], // G is OptionGroup<O>\n)\n\nconst query = ref<string>('')\nconst activeRef = ref<Option | undefined>(model.value?.[0] ?? options.value[0])\n\n// Clear the query on open and close\nonMounted(() => {\n // Clear the query\n query.value = ''\n\n // Set the active option to the selected option or the first option\n activeRef.value = model.value?.[0] ?? options.value[0]\n\n // Scroll to the selected option\n const selected = model.value[0]\n if (selected) {\n setTimeout(() => {\n const value = model.value[0]\n if (!value) {\n return\n }\n\n document\n ?.getElementById(getOptionId(value))\n ?.scrollIntoView({ block: 'nearest' })\n }, 10)\n }\n})\n\n// Set the top option as active when searching\nwatch(\n () => query.value,\n () => (activeRef.value = withAdd.value[0]),\n)\n\n/** The filtered list of options */\nconst filtered = computed<O[]>(() =>\n filterFn(query.value, options.value, groups.value),\n)\n\n/** The list of filtered options with the \"Add a new option\" option */\nconst withAdd = computed<Option[]>(() =>\n slots.add ? [...filtered.value, addOption] : filtered.value,\n)\n\nfunction toggleSelected(option: Option | undefined) {\n if (!option) {\n return\n }\n\n if (option.id === addOption.id) {\n addNew()\n return\n }\n\n if (multiselect) {\n // Remove from selection list\n if (model.value.some((o) => o.id === option.id)) {\n model.value = model.value.filter((o) => o.id !== option.id)\n }\n // Add to selection list\n else {\n model.value = [\n ...model.value,\n options.value.find((o) => o.id === option.id)!,\n ]\n }\n } else {\n // Set selection for single select mode\n model.value = [options.value.find((o) => o.id === option.id)!]\n }\n}\n\nfunction moveActive(dir: 1 | -1) {\n const list = withAdd.value\n\n // Find active index\n const activeIdx = list.findIndex(\n (option) => option.id === activeRef.value?.id,\n )\n\n // Calculate next index and exit if it's out of bounds\n const nextIdx = activeIdx + dir\n\n if (nextIdx < 0 || nextIdx > list.length - 1) {\n return\n }\n\n activeRef.value = list[nextIdx]! // We know it's in bounds from the check above\n\n if (!activeRef.value) {\n return\n }\n\n // Scroll to the active option\n document?.getElementById(getOptionId(activeRef.value))?.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n })\n}\n\nfunction addNew() {\n emit('add')\n query.value = ''\n}\n\n// Manual autofocus for the input\nconst input = ref<HTMLInputElement | null>(null)\n\n// This must be a setTimeout to ensure there is no scroll jump. nextTick does not work here.\nonMounted(() => setTimeout(() => input.value?.focus(), 0))\n</script>\n<template>\n <div class=\"relative flex\">\n <ScalarIconMagnifyingGlass\n class=\"pointer-events-none absolute left-2.5 top-1/2 -translate-y-1/2 text-c-3 size-4\" />\n <input\n ref=\"input\"\n v-model=\"query\"\n :aria-activedescendant=\"activeRef ? getOptionId(activeRef) : undefined\"\n aria-autocomplete=\"list\"\n :aria-controls=\"id\"\n class=\"min-w-0 flex-1 rounded border-0 py-2.5 pl-8 pr-3 leading-none text-c-1 -outline-offset-1\"\n data-1p-ignore\n :placeholder\n role=\"combobox\"\n tabindex=\"0\"\n type=\"text\"\n @keydown.down.prevent=\"moveActive(1)\"\n @keydown.enter.prevent=\"activeRef && toggleSelected(activeRef)\"\n @keydown.up.prevent=\"moveActive(-1)\" />\n </div>\n <ul\n v-show=\"filtered.length || slots.add\"\n :id=\"id\"\n :aria-multiselectable=\"multiselect\"\n class=\"border-t p-0.75 custom-scroll overscroll-contain flex-1 min-h-0\"\n role=\"listbox\"\n tabindex=\"-1\">\n <ComboboxOptionGroup\n v-for=\"(group, i) in groups\"\n :id=\"`${id}-group-${i}`\"\n :key=\"i\"\n :hidden=\"\n // Only show the group label if there are some results\n !group.options.some((o) => filtered.some((f) => f.id === o.id)) ||\n // And it has a label\n !group.label\n \">\n <template #label>\n <slot\n v-if=\"$slots.group\"\n :group\n name=\"group\" />\n <template v-else>\n {{ group.label }}\n </template>\n </template>\n <template\n v-for=\"option in filtered\"\n :key=\"option.id\">\n <ComboboxOption\n v-if=\"group.options.some((o) => o.id === option.id)\"\n :id=\"getOptionId(option)\"\n v-slot=\"{ active, selected }\"\n :active=\"activeRef?.id === option.id\"\n :selected=\"model.some((o) => o.id === option.id)\"\n @click=\"toggleSelected(option)\"\n @mousedown.prevent\n @mouseenter=\"activeRef = option\">\n <slot\n v-if=\"$slots.option\"\n :active\n name=\"option\"\n :option\n :selected />\n <template v-else>\n <ScalarListboxCheckbox\n :multiselect\n :selected=\"model.some((o) => o.id === option.id)\" />\n <span class=\"inline-block min-w-0 flex-1 truncate text-c-1\">\n {{ option.label }}\n </span>\n </template>\n </ComboboxOption>\n </template>\n </ComboboxOptionGroup>\n <ComboboxOption\n v-if=\"slots.add\"\n :id=\"getOptionId(addOption)\"\n v-slot=\"{ active }\"\n :active=\"activeRef?.id === addOption.id\"\n @click=\"addNew\"\n @mousedown.prevent\n @mouseenter=\"activeRef = addOption\">\n <ScalarIconPlus class=\"size-4 p-px\" />\n <slot\n :active\n name=\"add\" />\n </ComboboxOption>\n </ul>\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"ScalarComboboxOptions.vue.js","names":[],"sources":["../../../src/components/ScalarCombobox/ScalarComboboxOptions.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar Combobox Options component\n *\n * Renders the searchable option list for a combobox, including\n * filtering, keyboard navigation, and an optional \"add new\" action.\n *\n * @example\n * <ScalarComboboxOptions v-model=\"selected\" :options=\"options\" />\n */\nexport default {}\n</script>\n\n<!-- prettier-ignore-attribute generic -->\n<script\n setup\n lang=\"ts\"\n generic=\"O extends Option = Option, G extends OptionGroup<O> = OptionGroup<O>\">\nimport { filterByOptionLabel } from '@/components/ScalarCombobox/filter-by-option-label'\nimport { ScalarIconMagnifyingGlass, ScalarIconPlus } from '@scalar/icons'\nimport { computed, onMounted, ref, useId, watch } from 'vue'\n\nimport { ScalarListboxCheckbox } from '../ScalarListbox'\nimport ComboboxOption from './ScalarComboboxOption.vue'\nimport ComboboxOptionGroup from './ScalarComboboxOptionGroup.vue'\nimport {\n type ComboboxEmits,\n type ComboboxSlots,\n type FilterFunction,\n type Option,\n type OptionGroup,\n type OptionsOrGroups,\n isGroups,\n} from './types'\n\nconst {\n options: optionsOrGroups,\n placeholder,\n filterFn = filterByOptionLabel,\n multiselect,\n} = defineProps<{\n /** The options to display in the combobox */\n options: OptionsOrGroups<O, G>\n /** The placeholder text to display in the combobox */\n placeholder?: string\n /**\n * A function to filter the options based on a query,\n * if not provided, the options will be filtered by option label\n *\n * @see {@link FilterFunction} for more information\n */\n filterFn?: FilterFunction<O, G>\n /** Whether the combobox is in multiselect mode, defaults to false */\n multiselect?: boolean\n}>()\n\nconst emit = defineEmits<ComboboxEmits>()\n\nconst model = defineModel<O[]>({ default: () => [] })\n\nconst slots = defineSlots<Omit<ComboboxSlots<O, G>, 'default'>>()\n\ndefineOptions({ inheritAttrs: false })\n\n/** A unique ID for the combobox */\nconst id = `scalar-combobox-items-${useId()}`\n\n/** A static option entry for the \"Add a new option\" option */\nconst addOption: Option = { id: `${useId()}-add`, label: 'Add a new option' }\n\n/** Generate a unique ID for an option */\nfunction getOptionId(option: Option) {\n return `${id}-${option.id}`\n}\n\n/** A flat list of all options */\nconst options = computed<O[]>(() =>\n isGroups(optionsOrGroups)\n ? optionsOrGroups.flatMap((group) => group.options)\n : optionsOrGroups,\n)\n\n/** An list of all groups */\nconst groups = computed<G[]>(\n () =>\n isGroups(optionsOrGroups)\n ? optionsOrGroups // G extends OptionGroup<O>\n : /*\n We know G is an unextended OptionGroup<O> here because of the\n structure of the component props so we can cast it to G\n */\n [{ label: '', options: optionsOrGroups } as G], // G is OptionGroup<O>\n)\n\nconst query = ref<string>('')\nconst activeRef = ref<Option | undefined>(model.value?.[0] ?? options.value[0])\n\n// Clear the query on open and close\nonMounted(() => {\n // Clear the query\n query.value = ''\n\n // Set the active option to the selected option or the first option\n activeRef.value = model.value?.[0] ?? options.value[0]\n\n // Scroll to the selected option\n const selected = model.value[0]\n if (selected) {\n setTimeout(() => {\n const value = model.value[0]\n if (!value) {\n return\n }\n\n document\n ?.getElementById(getOptionId(value))\n ?.scrollIntoView({ block: 'nearest' })\n }, 10)\n }\n})\n\n// Set the top option as active when searching\nwatch(\n () => query.value,\n () => (activeRef.value = withAdd.value[0]),\n)\n\n/** The filtered list of options */\nconst filtered = computed<O[]>(() =>\n filterFn(query.value, options.value, groups.value),\n)\n\n/** The list of filtered options with the \"Add a new option\" option */\nconst withAdd = computed<Option[]>(() =>\n slots.add ? [...filtered.value, addOption] : filtered.value,\n)\n\nfunction toggleSelected(option: Option | undefined) {\n if (!option) {\n return\n }\n\n if (option.id === addOption.id) {\n addNew()\n return\n }\n\n if (multiselect) {\n // Remove from selection list\n if (model.value.some((o) => o.id === option.id)) {\n model.value = model.value.filter((o) => o.id !== option.id)\n }\n // Add to selection list\n else {\n model.value = [\n ...model.value,\n options.value.find((o) => o.id === option.id)!,\n ]\n }\n } else {\n // Set selection for single select mode\n model.value = [options.value.find((o) => o.id === option.id)!]\n }\n}\n\nfunction moveActive(dir: 1 | -1) {\n const list = withAdd.value\n\n // Find active index\n const activeIdx = list.findIndex(\n (option) => option.id === activeRef.value?.id,\n )\n\n // Calculate next index and exit if it's out of bounds\n const nextIdx = activeIdx + dir\n\n if (nextIdx < 0 || nextIdx > list.length - 1) {\n return\n }\n\n activeRef.value = list[nextIdx]! // We know it's in bounds from the check above\n\n if (!activeRef.value) {\n return\n }\n\n // Scroll to the active option\n document?.getElementById(getOptionId(activeRef.value))?.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n })\n}\n\nfunction addNew() {\n emit('add')\n query.value = ''\n}\n\n// Manual autofocus for the input\nconst input = ref<HTMLInputElement | null>(null)\n\n// This must be a setTimeout to ensure there is no scroll jump. nextTick does not work here.\nonMounted(() => setTimeout(() => input.value?.focus(), 0))\n</script>\n<template>\n <div class=\"relative flex\">\n <ScalarIconMagnifyingGlass\n class=\"pointer-events-none absolute left-2.5 top-1/2 -translate-y-1/2 text-c-3 size-4\" />\n <input\n ref=\"input\"\n v-model=\"query\"\n :aria-activedescendant=\"activeRef ? getOptionId(activeRef) : undefined\"\n aria-autocomplete=\"list\"\n :aria-controls=\"id\"\n class=\"min-w-0 flex-1 rounded border-0 py-2.5 pl-8 pr-3 leading-none text-c-1 -outline-offset-1\"\n data-1p-ignore\n :placeholder\n role=\"combobox\"\n tabindex=\"0\"\n type=\"text\"\n @keydown.down.prevent=\"moveActive(1)\"\n @keydown.enter.prevent=\"activeRef && toggleSelected(activeRef)\"\n @keydown.up.prevent=\"moveActive(-1)\" />\n </div>\n <ul\n v-show=\"filtered.length || slots.add\"\n :id=\"id\"\n :aria-multiselectable=\"multiselect\"\n class=\"border-t p-0.75 custom-scroll overscroll-contain flex-1 min-h-0\"\n role=\"listbox\"\n tabindex=\"-1\">\n <ComboboxOptionGroup\n v-for=\"(group, i) in groups\"\n :id=\"`${id}-group-${i}`\"\n :key=\"i\"\n :hidden=\"\n // Only show the group label if there are some results\n !group.options.some((o) => filtered.some((f) => f.id === o.id)) ||\n // And it has a label\n !group.label\n \">\n <template #label>\n <slot\n v-if=\"$slots.group\"\n :group\n name=\"group\" />\n <template v-else>\n {{ group.label }}\n </template>\n </template>\n <template\n v-for=\"option in filtered\"\n :key=\"option.id\">\n <ComboboxOption\n v-if=\"group.options.some((o) => o.id === option.id)\"\n :id=\"getOptionId(option)\"\n v-slot=\"{ active, selected }\"\n :active=\"activeRef?.id === option.id\"\n :selected=\"model.some((o) => o.id === option.id)\"\n @click=\"toggleSelected(option)\"\n @mousedown.prevent\n @mouseenter=\"activeRef = option\">\n <slot\n v-if=\"$slots.option\"\n :active\n name=\"option\"\n :option\n :selected />\n <template v-else>\n <ScalarListboxCheckbox\n :multiselect\n :selected=\"model.some((o) => o.id === option.id)\" />\n <span class=\"inline-block min-w-0 flex-1 truncate text-c-1\">\n {{ option.label }}\n </span>\n </template>\n </ComboboxOption>\n </template>\n </ComboboxOptionGroup>\n <ComboboxOption\n v-if=\"slots.add\"\n :id=\"getOptionId(addOption)\"\n v-slot=\"{ active }\"\n :active=\"activeRef?.id === addOption.id\"\n @click=\"addNew\"\n @mousedown.prevent\n @mouseenter=\"activeRef = addOption\">\n <ScalarIconPlus class=\"size-4 p-px\" />\n <slot\n :active\n name=\"add\" />\n </ComboboxOption>\n </ul>\n</template>\n"],"mappings":""}
@@ -10,10 +10,10 @@ var _hoisted_1 = { class: "relative flex" };
10
10
  var _hoisted_2 = ["aria-activedescendant", "placeholder"];
11
11
  var _hoisted_3 = ["aria-multiselectable"];
12
12
  var _hoisted_4 = { class: "inline-block min-w-0 flex-1 truncate text-c-1" };
13
- var ScalarComboboxOptions_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
13
+ var ScalarComboboxOptions_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
14
14
  inheritAttrs: false,
15
15
  __name: "ScalarComboboxOptions",
16
- props: /* @__PURE__ */ mergeModels({
16
+ props: /*@__PURE__*/ mergeModels({
17
17
  options: {},
18
18
  placeholder: {},
19
19
  filterFn: {
@@ -22,10 +22,10 @@ var ScalarComboboxOptions_vue_vue_type_script_setup_true_lang_default = /* @__PU
22
22
  },
23
23
  multiselect: { type: Boolean }
24
24
  }, {
25
- "modelValue": { default: [] },
25
+ "modelValue": { default: () => [] },
26
26
  "modelModifiers": {}
27
27
  }),
28
- emits: /* @__PURE__ */ mergeModels(["add"], ["update:modelValue"]),
28
+ emits: /*@__PURE__*/ mergeModels(["add"], ["update:modelValue"]),
29
29
  setup(__props, { emit: __emit }) {
30
30
  const emit = __emit;
31
31
  const model = useModel(__props, "modelValue");
@@ -122,10 +122,7 @@ var ScalarComboboxOptions_vue_vue_type_script_setup_true_lang_default = /* @__PU
122
122
  key: i,
123
123
  hidden: !group.options.some((o) => filtered.value.some((f) => f.id === o.id)) || !group.label
124
124
  }, {
125
- label: withCtx(() => [_ctx.$slots.group ? renderSlot(_ctx.$slots, "group", {
126
- key: 0,
127
- group
128
- }) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [createTextVNode(toDisplayString(group.label), 1)], 64))]),
125
+ label: withCtx(() => [_ctx.$slots.group ? renderSlot(_ctx.$slots, "group", { group }, void 0, void 0, 0) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [createTextVNode(toDisplayString(group.label), 1)], 64))]),
129
126
  default: withCtx(() => [(openBlock(true), createElementBlock(Fragment, null, renderList(filtered.value, (option) => {
130
127
  return openBlock(), createElementBlock(Fragment, { key: option.id }, [group.options.some((o) => o.id === option.id) ? (openBlock(), createBlock(ScalarComboboxOption_default, {
131
128
  key: 0,
@@ -137,11 +134,10 @@ var ScalarComboboxOptions_vue_vue_type_script_setup_true_lang_default = /* @__PU
137
134
  onMouseenter: ($event) => activeRef.value = option
138
135
  }, {
139
136
  default: withCtx(({ active, selected }) => [_ctx.$slots.option ? renderSlot(_ctx.$slots, "option", {
140
- key: 0,
141
137
  active,
142
138
  option,
143
139
  selected
144
- }) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [createVNode(unref(ScalarListboxCheckbox_default), {
140
+ }, void 0, void 0, 0) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [createVNode(unref(ScalarListboxCheckbox_default), {
145
141
  multiselect: __props.multiselect,
146
142
  selected: model.value.some((o) => o.id === option.id)
147
143
  }, null, 8, ["multiselect", "selected"]), createElementVNode("span", _hoisted_4, toDisplayString(option.label), 1)], 64))]),
@@ -1 +1 @@
1
- {"version":3,"file":"ScalarComboboxOptions.vue.script.js","names":["$slots"],"sources":["../../../src/components/ScalarCombobox/ScalarComboboxOptions.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar Combobox Options component\n *\n * Renders the searchable option list for a combobox, including\n * filtering, keyboard navigation, and an optional \"add new\" action.\n *\n * @example\n * <ScalarComboboxOptions v-model=\"selected\" :options=\"options\" />\n */\nexport default {}\n</script>\n\n<!-- prettier-ignore-attribute generic -->\n<script\n setup\n lang=\"ts\"\n generic=\"O extends Option = Option, G extends OptionGroup<O> = OptionGroup<O>\">\nimport { filterByOptionLabel } from '@/components/ScalarCombobox/filter-by-option-label'\nimport { ScalarIconMagnifyingGlass, ScalarIconPlus } from '@scalar/icons'\nimport { computed, onMounted, ref, useId, watch } from 'vue'\n\nimport { ScalarListboxCheckbox } from '../ScalarListbox'\nimport ComboboxOption from './ScalarComboboxOption.vue'\nimport ComboboxOptionGroup from './ScalarComboboxOptionGroup.vue'\nimport {\n type ComboboxEmits,\n type ComboboxSlots,\n type FilterFunction,\n type Option,\n type OptionGroup,\n type OptionsOrGroups,\n isGroups,\n} from './types'\n\nconst {\n options: optionsOrGroups,\n placeholder,\n filterFn = filterByOptionLabel,\n multiselect,\n} = defineProps<{\n /** The options to display in the combobox */\n options: OptionsOrGroups<O, G>\n /** The placeholder text to display in the combobox */\n placeholder?: string\n /**\n * A function to filter the options based on a query,\n * if not provided, the options will be filtered by option label\n *\n * @see {@link FilterFunction} for more information\n */\n filterFn?: FilterFunction<O, G>\n /** Whether the combobox is in multiselect mode, defaults to false */\n multiselect?: boolean\n}>()\n\nconst emit = defineEmits<ComboboxEmits>()\n\nconst model = defineModel<O[]>({ default: [] })\n\nconst slots = defineSlots<Omit<ComboboxSlots<O, G>, 'default'>>()\n\ndefineOptions({ inheritAttrs: false })\n\n/** A unique ID for the combobox */\nconst id = `scalar-combobox-items-${useId()}`\n\n/** A static option entry for the \"Add a new option\" option */\nconst addOption: Option = { id: `${useId()}-add`, label: 'Add a new option' }\n\n/** Generate a unique ID for an option */\nfunction getOptionId(option: Option) {\n return `${id}-${option.id}`\n}\n\n/** A flat list of all options */\nconst options = computed<O[]>(() =>\n isGroups(optionsOrGroups)\n ? optionsOrGroups.flatMap((group) => group.options)\n : optionsOrGroups,\n)\n\n/** An list of all groups */\nconst groups = computed<G[]>(\n () =>\n isGroups(optionsOrGroups)\n ? optionsOrGroups // G extends OptionGroup<O>\n : /*\n We know G is an unextended OptionGroup<O> here because of the\n structure of the component props so we can cast it to G\n */\n [{ label: '', options: optionsOrGroups } as G], // G is OptionGroup<O>\n)\n\nconst query = ref<string>('')\nconst activeRef = ref<Option | undefined>(model.value?.[0] ?? options.value[0])\n\n// Clear the query on open and close\nonMounted(() => {\n // Clear the query\n query.value = ''\n\n // Set the active option to the selected option or the first option\n activeRef.value = model.value?.[0] ?? options.value[0]\n\n // Scroll to the selected option\n const selected = model.value[0]\n if (selected) {\n setTimeout(() => {\n const value = model.value[0]\n if (!value) {\n return\n }\n\n document\n ?.getElementById(getOptionId(value))\n ?.scrollIntoView({ block: 'nearest' })\n }, 10)\n }\n})\n\n// Set the top option as active when searching\nwatch(\n () => query.value,\n () => (activeRef.value = withAdd.value[0]),\n)\n\n/** The filtered list of options */\nconst filtered = computed<O[]>(() =>\n filterFn(query.value, options.value, groups.value),\n)\n\n/** The list of filtered options with the \"Add a new option\" option */\nconst withAdd = computed<Option[]>(() =>\n slots.add ? [...filtered.value, addOption] : filtered.value,\n)\n\nfunction toggleSelected(option: Option | undefined) {\n if (!option) {\n return\n }\n\n if (option.id === addOption.id) {\n addNew()\n return\n }\n\n if (multiselect) {\n // Remove from selection list\n if (model.value.some((o) => o.id === option.id)) {\n model.value = model.value.filter((o) => o.id !== option.id)\n }\n // Add to selection list\n else {\n model.value = [\n ...model.value,\n options.value.find((o) => o.id === option.id)!,\n ]\n }\n } else {\n // Set selection for single select mode\n model.value = [options.value.find((o) => o.id === option.id)!]\n }\n}\n\nfunction moveActive(dir: 1 | -1) {\n const list = withAdd.value\n\n // Find active index\n const activeIdx = list.findIndex(\n (option) => option.id === activeRef.value?.id,\n )\n\n // Calculate next index and exit if it's out of bounds\n const nextIdx = activeIdx + dir\n\n if (nextIdx < 0 || nextIdx > list.length - 1) {\n return\n }\n\n activeRef.value = list[nextIdx]! // We know it's in bounds from the check above\n\n if (!activeRef.value) {\n return\n }\n\n // Scroll to the active option\n document?.getElementById(getOptionId(activeRef.value))?.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n })\n}\n\nfunction addNew() {\n emit('add')\n query.value = ''\n}\n\n// Manual autofocus for the input\nconst input = ref<HTMLInputElement | null>(null)\n\n// This must be a setTimeout to ensure there is no scroll jump. nextTick does not work here.\nonMounted(() => setTimeout(() => input.value?.focus(), 0))\n</script>\n<template>\n <div class=\"relative flex\">\n <ScalarIconMagnifyingGlass\n class=\"pointer-events-none absolute left-2.5 top-1/2 -translate-y-1/2 text-c-3 size-4\" />\n <input\n ref=\"input\"\n v-model=\"query\"\n :aria-activedescendant=\"activeRef ? getOptionId(activeRef) : undefined\"\n aria-autocomplete=\"list\"\n :aria-controls=\"id\"\n class=\"min-w-0 flex-1 rounded border-0 py-2.5 pl-8 pr-3 leading-none text-c-1 -outline-offset-1\"\n data-1p-ignore\n :placeholder\n role=\"combobox\"\n tabindex=\"0\"\n type=\"text\"\n @keydown.down.prevent=\"moveActive(1)\"\n @keydown.enter.prevent=\"activeRef && toggleSelected(activeRef)\"\n @keydown.up.prevent=\"moveActive(-1)\" />\n </div>\n <ul\n v-show=\"filtered.length || slots.add\"\n :id=\"id\"\n :aria-multiselectable=\"multiselect\"\n class=\"border-t p-0.75 custom-scroll overscroll-contain flex-1 min-h-0\"\n role=\"listbox\"\n tabindex=\"-1\">\n <ComboboxOptionGroup\n v-for=\"(group, i) in groups\"\n :id=\"`${id}-group-${i}`\"\n :key=\"i\"\n :hidden=\"\n // Only show the group label if there are some results\n !group.options.some((o) => filtered.some((f) => f.id === o.id)) ||\n // And it has a label\n !group.label\n \">\n <template #label>\n <slot\n v-if=\"$slots.group\"\n :group\n name=\"group\" />\n <template v-else>\n {{ group.label }}\n </template>\n </template>\n <template\n v-for=\"option in filtered\"\n :key=\"option.id\">\n <ComboboxOption\n v-if=\"group.options.some((o) => o.id === option.id)\"\n :id=\"getOptionId(option)\"\n v-slot=\"{ active, selected }\"\n :active=\"activeRef?.id === option.id\"\n :selected=\"model.some((o) => o.id === option.id)\"\n @click=\"toggleSelected(option)\"\n @mousedown.prevent\n @mouseenter=\"activeRef = option\">\n <slot\n v-if=\"$slots.option\"\n :active\n name=\"option\"\n :option\n :selected />\n <template v-else>\n <ScalarListboxCheckbox\n :multiselect\n :selected=\"model.some((o) => o.id === option.id)\" />\n <span class=\"inline-block min-w-0 flex-1 truncate text-c-1\">\n {{ option.label }}\n </span>\n </template>\n </ComboboxOption>\n </template>\n </ComboboxOptionGroup>\n <ComboboxOption\n v-if=\"slots.add\"\n :id=\"getOptionId(addOption)\"\n v-slot=\"{ active }\"\n :active=\"activeRef?.id === addOption.id\"\n @click=\"addNew\"\n @mousedown.prevent\n @mouseenter=\"activeRef = addOption\">\n <ScalarIconPlus class=\"size-4 p-px\" />\n <slot\n :active\n name=\"add\" />\n </ComboboxOption>\n </ul>\n</template>\n"],"mappings":"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"}
1
+ {"version":3,"file":"ScalarComboboxOptions.vue.script.js","names":["$slots"],"sources":["../../../src/components/ScalarCombobox/ScalarComboboxOptions.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar Combobox Options component\n *\n * Renders the searchable option list for a combobox, including\n * filtering, keyboard navigation, and an optional \"add new\" action.\n *\n * @example\n * <ScalarComboboxOptions v-model=\"selected\" :options=\"options\" />\n */\nexport default {}\n</script>\n\n<!-- prettier-ignore-attribute generic -->\n<script\n setup\n lang=\"ts\"\n generic=\"O extends Option = Option, G extends OptionGroup<O> = OptionGroup<O>\">\nimport { filterByOptionLabel } from '@/components/ScalarCombobox/filter-by-option-label'\nimport { ScalarIconMagnifyingGlass, ScalarIconPlus } from '@scalar/icons'\nimport { computed, onMounted, ref, useId, watch } from 'vue'\n\nimport { ScalarListboxCheckbox } from '../ScalarListbox'\nimport ComboboxOption from './ScalarComboboxOption.vue'\nimport ComboboxOptionGroup from './ScalarComboboxOptionGroup.vue'\nimport {\n type ComboboxEmits,\n type ComboboxSlots,\n type FilterFunction,\n type Option,\n type OptionGroup,\n type OptionsOrGroups,\n isGroups,\n} from './types'\n\nconst {\n options: optionsOrGroups,\n placeholder,\n filterFn = filterByOptionLabel,\n multiselect,\n} = defineProps<{\n /** The options to display in the combobox */\n options: OptionsOrGroups<O, G>\n /** The placeholder text to display in the combobox */\n placeholder?: string\n /**\n * A function to filter the options based on a query,\n * if not provided, the options will be filtered by option label\n *\n * @see {@link FilterFunction} for more information\n */\n filterFn?: FilterFunction<O, G>\n /** Whether the combobox is in multiselect mode, defaults to false */\n multiselect?: boolean\n}>()\n\nconst emit = defineEmits<ComboboxEmits>()\n\nconst model = defineModel<O[]>({ default: () => [] })\n\nconst slots = defineSlots<Omit<ComboboxSlots<O, G>, 'default'>>()\n\ndefineOptions({ inheritAttrs: false })\n\n/** A unique ID for the combobox */\nconst id = `scalar-combobox-items-${useId()}`\n\n/** A static option entry for the \"Add a new option\" option */\nconst addOption: Option = { id: `${useId()}-add`, label: 'Add a new option' }\n\n/** Generate a unique ID for an option */\nfunction getOptionId(option: Option) {\n return `${id}-${option.id}`\n}\n\n/** A flat list of all options */\nconst options = computed<O[]>(() =>\n isGroups(optionsOrGroups)\n ? optionsOrGroups.flatMap((group) => group.options)\n : optionsOrGroups,\n)\n\n/** An list of all groups */\nconst groups = computed<G[]>(\n () =>\n isGroups(optionsOrGroups)\n ? optionsOrGroups // G extends OptionGroup<O>\n : /*\n We know G is an unextended OptionGroup<O> here because of the\n structure of the component props so we can cast it to G\n */\n [{ label: '', options: optionsOrGroups } as G], // G is OptionGroup<O>\n)\n\nconst query = ref<string>('')\nconst activeRef = ref<Option | undefined>(model.value?.[0] ?? options.value[0])\n\n// Clear the query on open and close\nonMounted(() => {\n // Clear the query\n query.value = ''\n\n // Set the active option to the selected option or the first option\n activeRef.value = model.value?.[0] ?? options.value[0]\n\n // Scroll to the selected option\n const selected = model.value[0]\n if (selected) {\n setTimeout(() => {\n const value = model.value[0]\n if (!value) {\n return\n }\n\n document\n ?.getElementById(getOptionId(value))\n ?.scrollIntoView({ block: 'nearest' })\n }, 10)\n }\n})\n\n// Set the top option as active when searching\nwatch(\n () => query.value,\n () => (activeRef.value = withAdd.value[0]),\n)\n\n/** The filtered list of options */\nconst filtered = computed<O[]>(() =>\n filterFn(query.value, options.value, groups.value),\n)\n\n/** The list of filtered options with the \"Add a new option\" option */\nconst withAdd = computed<Option[]>(() =>\n slots.add ? [...filtered.value, addOption] : filtered.value,\n)\n\nfunction toggleSelected(option: Option | undefined) {\n if (!option) {\n return\n }\n\n if (option.id === addOption.id) {\n addNew()\n return\n }\n\n if (multiselect) {\n // Remove from selection list\n if (model.value.some((o) => o.id === option.id)) {\n model.value = model.value.filter((o) => o.id !== option.id)\n }\n // Add to selection list\n else {\n model.value = [\n ...model.value,\n options.value.find((o) => o.id === option.id)!,\n ]\n }\n } else {\n // Set selection for single select mode\n model.value = [options.value.find((o) => o.id === option.id)!]\n }\n}\n\nfunction moveActive(dir: 1 | -1) {\n const list = withAdd.value\n\n // Find active index\n const activeIdx = list.findIndex(\n (option) => option.id === activeRef.value?.id,\n )\n\n // Calculate next index and exit if it's out of bounds\n const nextIdx = activeIdx + dir\n\n if (nextIdx < 0 || nextIdx > list.length - 1) {\n return\n }\n\n activeRef.value = list[nextIdx]! // We know it's in bounds from the check above\n\n if (!activeRef.value) {\n return\n }\n\n // Scroll to the active option\n document?.getElementById(getOptionId(activeRef.value))?.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n })\n}\n\nfunction addNew() {\n emit('add')\n query.value = ''\n}\n\n// Manual autofocus for the input\nconst input = ref<HTMLInputElement | null>(null)\n\n// This must be a setTimeout to ensure there is no scroll jump. nextTick does not work here.\nonMounted(() => setTimeout(() => input.value?.focus(), 0))\n</script>\n<template>\n <div class=\"relative flex\">\n <ScalarIconMagnifyingGlass\n class=\"pointer-events-none absolute left-2.5 top-1/2 -translate-y-1/2 text-c-3 size-4\" />\n <input\n ref=\"input\"\n v-model=\"query\"\n :aria-activedescendant=\"activeRef ? getOptionId(activeRef) : undefined\"\n aria-autocomplete=\"list\"\n :aria-controls=\"id\"\n class=\"min-w-0 flex-1 rounded border-0 py-2.5 pl-8 pr-3 leading-none text-c-1 -outline-offset-1\"\n data-1p-ignore\n :placeholder\n role=\"combobox\"\n tabindex=\"0\"\n type=\"text\"\n @keydown.down.prevent=\"moveActive(1)\"\n @keydown.enter.prevent=\"activeRef && toggleSelected(activeRef)\"\n @keydown.up.prevent=\"moveActive(-1)\" />\n </div>\n <ul\n v-show=\"filtered.length || slots.add\"\n :id=\"id\"\n :aria-multiselectable=\"multiselect\"\n class=\"border-t p-0.75 custom-scroll overscroll-contain flex-1 min-h-0\"\n role=\"listbox\"\n tabindex=\"-1\">\n <ComboboxOptionGroup\n v-for=\"(group, i) in groups\"\n :id=\"`${id}-group-${i}`\"\n :key=\"i\"\n :hidden=\"\n // Only show the group label if there are some results\n !group.options.some((o) => filtered.some((f) => f.id === o.id)) ||\n // And it has a label\n !group.label\n \">\n <template #label>\n <slot\n v-if=\"$slots.group\"\n :group\n name=\"group\" />\n <template v-else>\n {{ group.label }}\n </template>\n </template>\n <template\n v-for=\"option in filtered\"\n :key=\"option.id\">\n <ComboboxOption\n v-if=\"group.options.some((o) => o.id === option.id)\"\n :id=\"getOptionId(option)\"\n v-slot=\"{ active, selected }\"\n :active=\"activeRef?.id === option.id\"\n :selected=\"model.some((o) => o.id === option.id)\"\n @click=\"toggleSelected(option)\"\n @mousedown.prevent\n @mouseenter=\"activeRef = option\">\n <slot\n v-if=\"$slots.option\"\n :active\n name=\"option\"\n :option\n :selected />\n <template v-else>\n <ScalarListboxCheckbox\n :multiselect\n :selected=\"model.some((o) => o.id === option.id)\" />\n <span class=\"inline-block min-w-0 flex-1 truncate text-c-1\">\n {{ option.label }}\n </span>\n </template>\n </ComboboxOption>\n </template>\n </ComboboxOptionGroup>\n <ComboboxOption\n v-if=\"slots.add\"\n :id=\"getOptionId(addOption)\"\n v-slot=\"{ active }\"\n :active=\"activeRef?.id === addOption.id\"\n @click=\"addNew\"\n @mousedown.prevent\n @mouseenter=\"activeRef = addOption\">\n <ScalarIconPlus class=\"size-4 p-px\" />\n <slot\n :active\n name=\"add\" />\n </ComboboxOption>\n </ul>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwDA,MAAM,OAAO;EAEb,MAAM,QAAQ,SAAgB,SAAA,YAAsB;EAEpD,MAAM,QAAQ,SAAA;;EAKd,MAAM,KAAK,yBAAyB,MAAM;;EAG1C,MAAM,YAAoB;GAAE,IAAI,GAAG,MAAM,EAAE;GAAO,OAAO;EAAmB;;EAG5E,SAAS,YAAY,QAAgB;GACnC,OAAO,GAAG,GAAG,GAAG,OAAO;EACzB;;EAGA,MAAM,UAAU,eACd,SAAS,QAAA,OAAe,IACpB,QAAA,QAAgB,SAAS,UAAU,MAAM,OAAO,IAChD,QAAA,OACN;;EAGA,MAAM,SAAS,eAEX,SAAS,QAAA,OAAe,IACpB,QAAA,UAKA,CAAC;GAAE,OAAO;GAAI,SAAS,QAAA;EAAgB,CAAM,CACrD;EAEA,MAAM,QAAQ,IAAY,EAAE;EAC5B,MAAM,YAAY,IAAwB,MAAM,QAAQ,MAAM,QAAQ,MAAM,EAAE;EAG9E,gBAAgB;GAEd,MAAM,QAAQ;GAGd,UAAU,QAAQ,MAAM,QAAQ,MAAM,QAAQ,MAAM;GAIpD,IADiB,MAAM,MAAM,IAE3B,iBAAiB;IACf,MAAM,QAAQ,MAAM,MAAM;IAC1B,IAAI,CAAC,OACH;IAGF,UACI,eAAe,YAAY,KAAK,CAAC,CAAA,EACjC,eAAe,EAAE,OAAO,UAAU,CAAC;GACzC,GAAG,EAAE;EAET,CAAC;EAGD,YACQ,MAAM,aACL,UAAU,QAAQ,QAAQ,MAAM,EACzC;;EAGA,MAAM,WAAW,eACf,QAAA,SAAS,MAAM,OAAO,QAAQ,OAAO,OAAO,KAAK,CACnD;;EAGA,MAAM,UAAU,eACd,MAAM,MAAM,CAAC,GAAG,SAAS,OAAO,SAAS,IAAI,SAAS,KACxD;EAEA,SAAS,eAAe,QAA4B;GAClD,IAAI,CAAC,QACH;GAGF,IAAI,OAAO,OAAO,UAAU,IAAI;IAC9B,OAAO;IACP;GACF;GAEA,IAAI,QAAA,aAEF,IAAI,MAAM,MAAM,MAAM,MAAM,EAAE,OAAO,OAAO,EAAE,GAC5C,MAAM,QAAQ,MAAM,MAAM,QAAQ,MAAM,EAAE,OAAO,OAAO,EAAE;QAI1D,MAAM,QAAQ,CACZ,GAAG,MAAM,OACT,QAAQ,MAAM,MAAM,MAAM,EAAE,OAAO,OAAO,EAAE,CAC9C;QAIF,MAAM,QAAQ,CAAC,QAAQ,MAAM,MAAM,MAAM,EAAE,OAAO,OAAO,EAAE,CAAE;EAEjE;EAEA,SAAS,WAAW,KAAa;GAC/B,MAAM,OAAO,QAAQ;GAQrB,MAAM,UALY,KAAK,WACpB,WAAW,OAAO,OAAO,UAAU,OAAO,EAI7B,IAAY;GAE5B,IAAI,UAAU,KAAK,UAAU,KAAK,SAAS,GACzC;GAGF,UAAU,QAAQ,KAAK;GAEvB,IAAI,CAAC,UAAU,OACb;GAIF,UAAU,eAAe,YAAY,UAAU,KAAK,CAAC,CAAC,EAAE,eAAe;IACrE,UAAU;IACV,OAAO;GACT,CAAC;EACH;EAEA,SAAS,SAAS;GAChB,KAAK,KAAK;GACV,MAAM,QAAQ;EAChB;EAGA,MAAM,QAAQ,IAA6B,IAAI;EAG/C,gBAAgB,iBAAiB,MAAM,OAAO,MAAM,GAAG,CAAC,CAAC;;2DAGvD,mBAkBM,OAlBN,YAkBM,CAjBJ,YAC2F,MAAA,yBAAA,GAAA,EAAzF,OAAM,iFAAgF,CAAA,GAAA,eACxF,mBAcyC,SAAA;aAbnC;IAAJ,KAAI;uEACU,QAAA;IACb,yBAAuB,UAAA,QAAY,YAAY,UAAA,KAAS,IAAI,KAAA;IAC7D,qBAAkB;IACjB,iBAAe;IAChB,OAAM;IACN,kBAAA;IACC,aAAA,QAAA;IACD,MAAK;IACL,UAAS;IACT,MAAK;IACJ,WAAO;kEAAe,WAAU,CAAA,GAAA,CAAA,SAAA,CAAA,GAAA,CAAA,MAAA,CAAA;kEACT,UAAA,SAAa,eAAe,UAAA,KAAS,GAAA,CAAA,SAAA,CAAA,GAAA,CAAA,OAAA,CAAA;kEACxC,WAAU,EAAA,GAAA,CAAA,SAAA,CAAA,GAAA,CAAA,IAAA,CAAA;;2CAZtB,MAAA,KAAK,CAAA,CAAA,CAAA,CAAA,GAAA,eAclB,mBAoEK,MAAA;IAlEE;IACJ,wBAAsB,QAAA;IACvB,OAAM;IACN,MAAK;IACL,UAAS;yBACT,mBA+CsB,UAAA,MAAA,WA9CC,OAAA,QAAb,OAAO,MAAC;wBADlB,YA+CsB,mCAAA;KA7CnB,IAAE,GAAK,GAAE,SAAU;KACnB,KAAK;KACL,QAAA,CAAiF,MAAM,QAAQ,MAAM,MAAM,SAAA,MAAS,MAAM,MAAM,EAAE,OAAO,EAAE,EAAE,CAAA,KAAA,CAA6C,MAAM;;KAMtL,OAAK,cAIG,CAFTA,KAAAA,OAAO,QADf,WAGiB,KAAA,QAAA,SAAA,EADd,MAAK,GAAA,KAAA,GAAA,KAAA,GAAA,CAAA,KAAA,UAAA,GAER,mBAEW,UAAA,EAAA,KAAA,EAAA,GAAA,CAAA,gBAAA,gBADN,MAAM,KAAK,GAAA,CAAA,CAAA,GAAA,EAAA,EAAA,CAAA;4BAIU,EAAA,UAAA,IAAA,GAD5B,mBA2BW,UAAA,MAAA,WA1BQ,SAAA,QAAV,WAAM;8DACP,OAAO,GAAA,GAAA,CAEL,MAAM,QAAQ,MAAM,MAAM,EAAE,OAAO,OAAO,EAAE,KAAA,UAAA,GADpD,YAuBiB,8BAAA;;OArBd,IAAI,YAAY,MAAM;OAEtB,QAAQ,UAAA,OAAW,OAAO,OAAO;OACjC,UAAU,MAAA,MAAM,MAAM,MAAM,EAAE,OAAO,OAAO,EAAE;OAC9C,UAAK,WAAE,eAAe,MAAM;OAC5B,aAAS,OAAA,OAAA,OAAA,KAAA,oBAAV,CAAA,GAAkB,CAAA,SAAA,CAAA;OACjB,eAAU,WAAE,UAAA,QAAY;;yBAMX,EAXJ,QAAQ,eAAQ,CAOlBA,KAAAA,OAAO,SADf,WAKc,KAAA,QAAA,UAAA;QAHX;QAEA;QACA;6CACH,mBAOW,UAAA,EAAA,KAAA,EAAA,GAAA,CANT,YAEsD,MAAA,6BAAA,GAAA;QADnD,aAAA,QAAA;QACA,UAAU,MAAA,MAAM,MAAM,MAAM,EAAE,OAAO,OAAO,EAAE;iDACjD,mBAEO,QAFP,YAEO,gBADF,OAAO,KAAK,GAAA,CAAA,CAAA,GAAA,EAAA,EAAA,CAAA;;;;;;;;;;;;cAOjB,MAAM,OAAA,UAAA,GADd,YAYiB,8BAAA;;IAVd,IAAI,YAAY,SAAS;IAEzB,QAAQ,UAAA,OAAW,OAAO,UAAU;IACpC,SAAO;IACP,aAAS,OAAA,OAAA,OAAA,KAAA,oBAAV,CAAA,GAAkB,CAAA,SAAA,CAAA;IACjB,cAAU,OAAA,OAAA,OAAA,MAAA,WAAE,UAAA,QAAY;;sBACa,EAL5B,aAAM,CAKhB,YAAsC,MAAA,cAAA,GAAA,EAAtB,OAAM,cAAa,CAAA,GACnC,WAEe,KAAA,QAAA,OAAA,EADZ,OAAM,CAAA,CAAA,CAAA;;sFAhEH,SAAA,MAAS,UAAU,MAAM,GAAG,CAAA,CAAA,CAAA,GAAA,EAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"ScalarComboboxPopover.vue.d.ts","sourceRoot":"","sources":["../../../src/components/ScalarCombobox/ScalarComboboxPopover.vue"],"names":[],"mappings":"AAsFA,OAAO,EAGL,KAAK,qBAAqB,EAC3B,MAAM,mBAAmB,CAAA;AAC1B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAG1D;;;;;;;;;;;GAWG;wBACkB,OAAO,YAAY;AAAxC,wBAAyC;AAGzC,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mRAqKd,CAAC;AACL,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAChC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KACV,CAAA;CACD,CAAC"}
1
+ {"version":3,"file":"ScalarComboboxPopover.vue.d.ts","sourceRoot":"","sources":["../../../src/components/ScalarCombobox/ScalarComboboxPopover.vue"],"names":[],"mappings":"AAsFA,OAAO,EAGL,KAAK,qBAAqB,EAC3B,MAAM,mBAAmB,CAAA;AAC1B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAG1D;;;;;;;;;;;GAWG;wBACkB,OAAO,YAAY;AAAxC,wBAAyC;AAGzC,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mRAsKd,CAAC;AACL,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAChC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KACV,CAAA;CACD,CAAC"}
@@ -3,7 +3,7 @@ import ScalarFloatingBackdrop_default from "../ScalarFloating/ScalarFloatingBack
3
3
  import { useBindCx } from "@scalar/use-hooks/useBindCx";
4
4
  import { createBlock, createSlots, createVNode, defineComponent, guardReactiveProps, mergeProps, normalizeProps, openBlock, ref, renderSlot, unref, withCtx } from "vue";
5
5
  import { Popover, PopoverButton, PopoverPanel } from "@headlessui/vue";
6
- var ScalarComboboxPopover_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
6
+ var ScalarComboboxPopover_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
7
7
  inheritAttrs: false,
8
8
  __name: "ScalarComboboxPopover",
9
9
  props: {
@@ -1 +1 @@
1
- {"version":3,"file":"ScalarComboboxPopover.vue.script.js","names":["$props"],"sources":["../../../src/components/ScalarCombobox/ScalarComboboxPopover.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar Combobox Popover component\n *\n * Wraps combobox content in a floating popover panel.\n * Handles open/close behavior and keyboard interactions.\n *\n * @example\n * <ScalarComboboxPopover>\n * <button>Toggle</button>\n * <template #popover=\"{ close }\">Content</template>\n * </ScalarComboboxPopover>\n */\nexport default {}\n</script>\n\n<script setup lang=\"ts\">\nimport { Popover, PopoverButton, PopoverPanel } from '@headlessui/vue'\nimport { useBindCx } from '@scalar/use-hooks/useBindCx'\nimport { ref } from 'vue'\n\nimport {\n ScalarFloating,\n ScalarFloatingBackdrop,\n type ScalarFloatingOptions,\n} from '../ScalarFloating'\nimport type { ScalarPopoverSlots } from '../ScalarPopover'\n\ndefineProps<ScalarFloatingOptions>()\n\ndefineSlots<ScalarPopoverSlots>()\n\ndefineOptions({ inheritAttrs: false })\nconst { cx } = useBindCx()\n\n/** Expose the popover button so we can close the popup */\nconst popoverButtonRef = ref<typeof PopoverButton | null>(null)\n\n/** Open the popover of the up or down arrows are pressed */\nconst handleKeydown = (e: KeyboardEvent) => {\n if (!['ArrowUp', 'ArrowDown'].includes(e.key)) {\n return\n }\n e.preventDefault()\n e.target?.dispatchEvent(new KeyboardEvent('keydown', { key: 'Enter' }))\n}\n\ndefineExpose({ popoverButtonRef })\n</script>\n<template>\n <Popover\n v-slot=\"{ open }\"\n as=\"template\">\n <ScalarFloating v-bind=\"$props\">\n <PopoverButton\n ref=\"popoverButtonRef\"\n as=\"template\"\n @keydown=\"handleKeydown\">\n <slot :open />\n </PopoverButton>\n <template\n v-if=\"open\"\n #floating=\"{ width }\">\n <PopoverPanel\n v-slot=\"{ close }\"\n :style=\"{ width }\"\n v-bind=\"\n cx('relative flex flex-col max-h-[inherit] w-40 rounded text-sm')\n \">\n <slot\n :close\n name=\"popover\"\n :open />\n <ScalarFloatingBackdrop />\n </PopoverPanel>\n </template>\n </ScalarFloating>\n </Popover>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;EAiCA,MAAM,EAAE,OAAO,WAAU;;EAGzB,MAAM,mBAAmB,IAAiC,KAAI;;EAG9D,MAAM,iBAAiB,MAAqB;AAC1C,OAAI,CAAC,CAAC,WAAW,YAAY,CAAC,SAAS,EAAE,IAAI,CAC3C;AAEF,KAAE,gBAAe;AACjB,KAAE,QAAQ,cAAc,IAAI,cAAc,WAAW,EAAE,KAAK,SAAS,CAAC,CAAA;;AAGxE,WAAa,EAAE,kBAAkB,CAAA;;uBAG/B,YA2BU,MAAA,QAAA,EAAA,EAzBR,IAAG,YAAU,EAAA;sBAwBI,EAzBP,WAAI,CAEd,YAuBiB,MAAA,uBAAA,EAAA,eAAA,mBAvBOA,KAAAA,OAAM,CAAA,EAAA,YAAA;4BAMZ,CALhB,YAKgB,MAAA,cAAA,EAAA;eAJV;MAAJ,KAAI;MACJ,IAAG;MACF,WAAS;;6BACI,CAAd,WAAc,KAAA,QAAA,WAAA,EAAP,MAAI,CAAA,CAAA,CAAA;;;;QAGL,OAAA;WACL;kBAYc,EAZF,YAAK,CAClB,YAWe,MAAA,aAAA,EAXf,WAWe,EATZ,OAAK,EAAI,OAAK,EAAA,EACM,MAAA,GAAE,CAAA,8DAAA,CAAA,EAAA;wBAMb,EARA,YAAK,CAKf,WAGU,KAAA,QAAA,WAAA;OAFP;OAEA;UACH,YAA0B,MAAA,+BAAA,CAAA,CAAA,CAAA"}
1
+ {"version":3,"file":"ScalarComboboxPopover.vue.script.js","names":["$props"],"sources":["../../../src/components/ScalarCombobox/ScalarComboboxPopover.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar Combobox Popover component\n *\n * Wraps combobox content in a floating popover panel.\n * Handles open/close behavior and keyboard interactions.\n *\n * @example\n * <ScalarComboboxPopover>\n * <button>Toggle</button>\n * <template #popover=\"{ close }\">Content</template>\n * </ScalarComboboxPopover>\n */\nexport default {}\n</script>\n\n<script setup lang=\"ts\">\nimport { Popover, PopoverButton, PopoverPanel } from '@headlessui/vue'\nimport { useBindCx } from '@scalar/use-hooks/useBindCx'\nimport { ref } from 'vue'\n\nimport {\n ScalarFloating,\n ScalarFloatingBackdrop,\n type ScalarFloatingOptions,\n} from '../ScalarFloating'\nimport type { ScalarPopoverSlots } from '../ScalarPopover'\n\ndefineProps<ScalarFloatingOptions>()\n\ndefineSlots<ScalarPopoverSlots>()\n\ndefineOptions({ inheritAttrs: false })\nconst { cx } = useBindCx()\n\n/** Expose the popover button so we can close the popup */\nconst popoverButtonRef = ref<typeof PopoverButton | null>(null)\n\n/** Open the popover of the up or down arrows are pressed */\nconst handleKeydown = (e: KeyboardEvent) => {\n if (!['ArrowUp', 'ArrowDown'].includes(e.key)) {\n return\n }\n e.preventDefault()\n e.target?.dispatchEvent(new KeyboardEvent('keydown', { key: 'Enter' }))\n}\n\ndefineExpose({ popoverButtonRef })\n</script>\n<template>\n <Popover\n v-slot=\"{ open }\"\n as=\"template\">\n <ScalarFloating v-bind=\"$props\">\n <PopoverButton\n ref=\"popoverButtonRef\"\n as=\"template\"\n @keydown=\"handleKeydown\">\n <slot :open />\n </PopoverButton>\n <template\n v-if=\"open\"\n #floating=\"{ width }\">\n <PopoverPanel\n v-slot=\"{ close }\"\n :style=\"{ width }\"\n v-bind=\"\n cx('relative flex flex-col max-h-[inherit] w-40 rounded text-sm')\n \">\n <slot\n :close\n name=\"popover\"\n :open />\n <ScalarFloatingBackdrop />\n </PopoverPanel>\n </template>\n </ScalarFloating>\n </Popover>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;EAiCA,MAAM,EAAE,OAAO,UAAU;;EAGzB,MAAM,mBAAmB,IAAiC,IAAI;;EAG9D,MAAM,iBAAiB,MAAqB;GAC1C,IAAI,CAAC,CAAC,WAAW,WAAW,CAAC,CAAC,SAAS,EAAE,GAAG,GAC1C;GAEF,EAAE,eAAe;GACjB,EAAE,QAAQ,cAAc,IAAI,cAAc,WAAW,EAAE,KAAK,QAAQ,CAAC,CAAC;EACxE;EAEA,SAAa,EAAE,iBAAiB,CAAC;;uBAG/B,YA2BU,MAAA,OAAA,GAAA,EAzBR,IAAG,WAAU,GAAA;sBAwBI,EAzBP,WAAI,CAEd,YAuBiB,MAAA,sBAAA,GAAA,eAAA,mBAvBOA,KAAAA,MAAM,CAAA,GAAA,YAAA;4BAMZ,CALhB,YAKgB,MAAA,aAAA,GAAA;eAJV;MAAJ,KAAI;MACJ,IAAG;MACF,WAAS;;6BACI,CAAd,WAAc,KAAA,QAAA,WAAA,EAAP,KAAI,CAAA,CAAA,CAAA;;;;QAGL,OAAA;WACL;kBAYc,EAZF,YAAK,CAClB,YAWe,MAAA,YAAA,GAXf,WAWe,EATZ,OAAK,EAAI,MAAK,EAAA,GACM,MAAA,EAAA,CAAE,CAAA,6DAAA,CAAA,GAAA;wBAMb,EARA,YAAK,CAKf,WAGU,KAAA,QAAA,WAAA;OAFP;OAEA;UACH,YAA0B,MAAA,8BAAA,CAAA,CAAA,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"filter-by-option-label.js","names":[],"sources":["../../../src/components/ScalarCombobox/filter-by-option-label.ts"],"sourcesContent":["import type { FilterFunction } from '@/components/ScalarCombobox/types'\nimport type { Option } from '@/components/ScalarListbox/types'\n\nexport const filterByOptionLabel = (<O extends Option>(query: string, options: O[]): O[] => {\n return query === ''\n ? options\n : options.filter((option) => {\n return option.label.toLowerCase().includes(query.toLowerCase())\n })\n}) satisfies FilterFunction\n"],"mappings":";AAGA,IAAa,wBAA0C,OAAe,YAAsB;AAC1F,QAAO,UAAU,KACb,UACA,QAAQ,QAAQ,WAAW;AACzB,SAAO,OAAO,MAAM,aAAa,CAAC,SAAS,MAAM,aAAa,CAAC;GAC/D"}
1
+ {"version":3,"file":"filter-by-option-label.js","names":[],"sources":["../../../src/components/ScalarCombobox/filter-by-option-label.ts"],"sourcesContent":["import type { FilterFunction } from '@/components/ScalarCombobox/types'\nimport type { Option } from '@/components/ScalarListbox/types'\n\nexport const filterByOptionLabel = (<O extends Option>(query: string, options: O[]): O[] => {\n return query === ''\n ? options\n : options.filter((option) => {\n return option.label.toLowerCase().includes(query.toLowerCase())\n })\n}) satisfies FilterFunction\n"],"mappings":";AAGA,IAAa,wBAA0C,OAAe,YAAsB;CAC1F,OAAO,UAAU,KACb,UACA,QAAQ,QAAQ,WAAW;EACzB,OAAO,OAAO,MAAM,YAAY,CAAC,CAAC,SAAS,MAAM,YAAY,CAAC;CAChE,CAAC;AACP"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":[],"sources":["../../../src/components/ScalarCombobox/types.ts"],"sourcesContent":["export type Option = {\n id: string\n label: string\n}\n\nexport type OptionGroup<O extends Option = Option> = {\n label: string\n options: O[]\n}\n\nexport type OptionsOrGroups<O extends Option = Option, G extends OptionGroup<O> = OptionGroup<O>> = O[] | G[]\n\n/**\n * Filters which options appear while searching. The combobox passes the\n * current query, a flat list of every option (including those inside groups),\n * and the group objects when the list is grouped (otherwise an empty array).\n *\n * @example Match option labels, case-insensitive (similar to the default combobox filter):\n * ```ts\n * const filterByLabel = ((query, options) =>\n * query === ''\n * ? options\n * : options.filter((o) => o.label.toLowerCase().includes(query.toLowerCase()))\n * ) satisfies FilterFunction\n * ```\n */\nexport type FilterFunction<O extends Option = Option, G extends OptionGroup<O> = OptionGroup<O>> = (\n query: string,\n /* All of the (flattened) options, if there are groups this will be all of the options from all of the groups */\n options: O[],\n /* If there are no groups this array will be empty, if there are groups this will be all of the groups including their options */\n groups: G[],\n) => O[]\n\n/** Type guard to check if an option is a group */\nfunction isGroup(option: Option | OptionGroup | undefined): option is OptionGroup {\n return (option as OptionGroup | undefined)?.options !== undefined\n}\n\n/** Type guard to check if an array of options is an array of groups */\nexport function isGroups(options: Option[] | OptionGroup[]): options is OptionGroup[] {\n if (!options[0]) {\n return false // No options to test, so we assume it's not a group\n }\n return isGroup(options[0])\n}\n\n/** Available events emitted by the combobox */\nexport type ComboboxEmits = {\n /** Emitted when the \"Add a new option\" button is clicked */\n add: []\n}\n\n/** Available slots for the combobox */\nexport type ComboboxSlots<O extends Option = Option, G extends OptionGroup<O> = OptionGroup<O>> = {\n /** The reference element / trigger for the combobox */\n default(props: { open: boolean }): unknown\n /** A template to override the option label */\n option?(props: { option: O; active: boolean; selected: boolean }): unknown\n /** A template to override the group label */\n group?(props: { group: G }): unknown\n /** Creates an \"Add a new option\" button after the options list*/\n add?(props: { active: boolean }): unknown\n}\n"],"mappings":";;AAmCA,SAAS,QAAQ,QAAiE;AAChF,QAAQ,QAAoC,YAAY,KAAA;;;AAI1D,SAAgB,SAAS,SAA6D;AACpF,KAAI,CAAC,QAAQ,GACX,QAAO;AAET,QAAO,QAAQ,QAAQ,GAAG"}
1
+ {"version":3,"file":"types.js","names":[],"sources":["../../../src/components/ScalarCombobox/types.ts"],"sourcesContent":["export type Option = {\n id: string\n label: string\n}\n\nexport type OptionGroup<O extends Option = Option> = {\n label: string\n options: O[]\n}\n\nexport type OptionsOrGroups<O extends Option = Option, G extends OptionGroup<O> = OptionGroup<O>> = O[] | G[]\n\n/**\n * Filters which options appear while searching. The combobox passes the\n * current query, a flat list of every option (including those inside groups),\n * and the group objects when the list is grouped (otherwise an empty array).\n *\n * @example Match option labels, case-insensitive (similar to the default combobox filter):\n * ```ts\n * const filterByLabel = ((query, options) =>\n * query === ''\n * ? options\n * : options.filter((o) => o.label.toLowerCase().includes(query.toLowerCase()))\n * ) satisfies FilterFunction\n * ```\n */\nexport type FilterFunction<O extends Option = Option, G extends OptionGroup<O> = OptionGroup<O>> = (\n query: string,\n /* All of the (flattened) options, if there are groups this will be all of the options from all of the groups */\n options: O[],\n /* If there are no groups this array will be empty, if there are groups this will be all of the groups including their options */\n groups: G[],\n) => O[]\n\n/** Type guard to check if an option is a group */\nfunction isGroup(option: Option | OptionGroup | undefined): option is OptionGroup {\n return (option as OptionGroup | undefined)?.options !== undefined\n}\n\n/** Type guard to check if an array of options is an array of groups */\nexport function isGroups(options: Option[] | OptionGroup[]): options is OptionGroup[] {\n if (!options[0]) {\n return false // No options to test, so we assume it's not a group\n }\n return isGroup(options[0])\n}\n\n/** Available events emitted by the combobox */\nexport type ComboboxEmits = {\n /** Emitted when the \"Add a new option\" button is clicked */\n add: []\n}\n\n/** Available slots for the combobox */\nexport type ComboboxSlots<O extends Option = Option, G extends OptionGroup<O> = OptionGroup<O>> = {\n /** The reference element / trigger for the combobox */\n default(props: { open: boolean }): unknown\n /** A template to override the option label */\n option?(props: { option: O; active: boolean; selected: boolean }): unknown\n /** A template to override the group label */\n group?(props: { group: G }): unknown\n /** Creates an \"Add a new option\" button after the options list*/\n add?(props: { active: boolean }): unknown\n}\n"],"mappings":";;AAmCA,SAAS,QAAQ,QAAiE;CAChF,OAAQ,QAAoC,YAAY,KAAA;AAC1D;;AAGA,SAAgB,SAAS,SAA6D;CACpF,IAAI,CAAC,QAAQ,IACX,OAAO;CAET,OAAO,QAAQ,QAAQ,EAAE;AAC3B"}
@@ -1 +1 @@
1
- {"version":3,"file":"ScalarCopy.vue.d.ts","sourceRoot":"","sources":["../../../src/components/ScalarCopy/ScalarCopy.vue"],"names":[],"mappings":"AAyEA,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAG/D;;;;;;;;;;GAUG;wBACkB,OAAO,YAAY;AAAxC,wBAAyC;AAGzC,QAAA,MAAM,YAAY;aA+BP,OAAO;;;;aAAP,OAAO;;;oGA0Fd,CAAC;AACL,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAChC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KACV,CAAA;CACD,CAAC"}
1
+ {"version":3,"file":"ScalarCopy.vue.d.ts","sourceRoot":"","sources":["../../../src/components/ScalarCopy/ScalarCopy.vue"],"names":[],"mappings":"AAyEA,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAG/D;;;;;;;;;;GAUG;wBACkB,OAAO,YAAY;AAAxC,wBAAyC;AAGzC,QAAA,MAAM,YAAY;aA+BP,OAAO;;;;aAAP,OAAO;;;oGA2Fd,CAAC;AACL,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAChC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KACV,CAAA;CACD,CAAC"}
@@ -1,9 +1,9 @@
1
1
  import ScalarCopyButton_default from "./ScalarCopyButton.vue.js";
2
2
  import { createBlock, createSlots, defineComponent, mergeModels, onMounted, openBlock, renderSlot, unref, useModel, watch, withCtx } from "vue";
3
3
  import { useClipboard } from "@vueuse/core";
4
- var ScalarCopy_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
4
+ var ScalarCopy_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
5
5
  __name: "ScalarCopy",
6
- props: /* @__PURE__ */ mergeModels({
6
+ props: /*@__PURE__*/ mergeModels({
7
7
  content: { default: "" },
8
8
  placement: {},
9
9
  showLabel: { type: Boolean },
@@ -1 +1 @@
1
- {"version":3,"file":"ScalarCopy.vue.script.js","names":["$slots"],"sources":["../../../src/components/ScalarCopy/ScalarCopy.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar Copy component\n *\n * Provides a copy button and copies content to the clipboard.\n *\n * @example\n * <ScalarCopy>\n * <template #copy>Button label</template>\n * <template #copied>Copied label</template>\n * </ScalarCopy>\n */\nexport default {}\n</script>\n<script setup lang=\"ts\">\nimport { useClipboard } from '@vueuse/core'\nimport { onMounted, watch } from 'vue'\n\nimport ScalarCopyButton from './ScalarCopyButton.vue'\nimport type { ScalarCopyProps, ScalarCopySlots } from './types'\n\nconst {\n content = '',\n duration = 1500,\n immediate,\n} = defineProps<ScalarCopyProps>()\n\ndefineSlots<ScalarCopySlots>()\n\nconst copied = defineModel<boolean>('copied', { default: false })\n\nonMounted(() => {\n if (immediate) copy(content)\n})\n\nconst { copy, copied: clipboardCopied } = useClipboard({\n legacy: true,\n copiedDuring: duration,\n})\n\n/** Watch the clipboard copied state and emit it to the consuming component */\nwatch(clipboardCopied, (v) => (copied.value = v))\n</script>\n<template>\n <ScalarCopyButton\n :copied=\"copied || clipboardCopied\"\n :placement\n :showLabel\n @click=\"copy(content)\">\n <template\n v-if=\"$slots.copy\"\n #copy>\n <slot name=\"copy\" />\n </template>\n <template\n v-if=\"$slots.copied\"\n #copied>\n <slot name=\"copied\" />\n </template>\n <template\n v-if=\"$slots.backdrop\"\n #backdrop>\n <slot name=\"backdrop\" />\n </template>\n </ScalarCopyButton>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;EA6BA,MAAM,SAAS,SAAoB,SAAC,SAA4B;AAEhE,kBAAgB;AACd,OAAI,QAAA,UAAW,MAAK,QAAA,QAAO;IAC5B;EAED,MAAM,EAAE,MAAM,QAAQ,oBAAoB,aAAa;GACrD,QAAQ;GACR,cAAc,QAAA;GACf,CAAA;;AAGD,QAAM,kBAAkB,MAAO,OAAO,QAAQ,EAAE;;uBAG9C,YAoBmB,0BAAA;IAnBhB,QAAQ,OAAA,SAAU,MAAA,gBAAe;IACjC,WAAA,QAAA;IACA,WAAA,QAAA;IACA,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,MAAA,KAAI,CAAC,QAAA,QAAO;;IAEZA,KAAAA,OAAO,OAAA;WACZ;uBACmB,CAApB,WAAoB,KAAA,QAAA,OAAA,CAAA,CAAA;;;IAGdA,KAAAA,OAAO,SAAA;WACZ;uBACqB,CAAtB,WAAsB,KAAA,QAAA,SAAA,CAAA,CAAA;;;IAGhBA,KAAAA,OAAO,WAAA;WACZ;uBACuB,CAAxB,WAAwB,KAAA,QAAA,WAAA,CAAA,CAAA"}
1
+ {"version":3,"file":"ScalarCopy.vue.script.js","names":["$slots"],"sources":["../../../src/components/ScalarCopy/ScalarCopy.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar Copy component\n *\n * Provides a copy button and copies content to the clipboard.\n *\n * @example\n * <ScalarCopy>\n * <template #copy>Button label</template>\n * <template #copied>Copied label</template>\n * </ScalarCopy>\n */\nexport default {}\n</script>\n<script setup lang=\"ts\">\nimport { useClipboard } from '@vueuse/core'\nimport { onMounted, watch } from 'vue'\n\nimport ScalarCopyButton from './ScalarCopyButton.vue'\nimport type { ScalarCopyProps, ScalarCopySlots } from './types'\n\nconst {\n content = '',\n duration = 1500,\n immediate,\n} = defineProps<ScalarCopyProps>()\n\ndefineSlots<ScalarCopySlots>()\n\nconst copied = defineModel<boolean>('copied', { default: false })\n\nonMounted(() => {\n if (immediate) copy(content)\n})\n\nconst { copy, copied: clipboardCopied } = useClipboard({\n legacy: true,\n copiedDuring: duration,\n})\n\n/** Watch the clipboard copied state and emit it to the consuming component */\nwatch(clipboardCopied, (v) => (copied.value = v))\n</script>\n<template>\n <ScalarCopyButton\n :copied=\"copied || clipboardCopied\"\n :placement\n :showLabel\n @click=\"copy(content)\">\n <template\n v-if=\"$slots.copy\"\n #copy>\n <slot name=\"copy\" />\n </template>\n <template\n v-if=\"$slots.copied\"\n #copied>\n <slot name=\"copied\" />\n </template>\n <template\n v-if=\"$slots.backdrop\"\n #backdrop>\n <slot name=\"backdrop\" />\n </template>\n </ScalarCopyButton>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;EA6BA,MAAM,SAAS,SAAoB,SAAC,QAA4B;EAEhE,gBAAgB;GACd,IAAI,QAAA,WAAW,KAAK,QAAA,OAAO;EAC7B,CAAC;EAED,MAAM,EAAE,MAAM,QAAQ,oBAAoB,aAAa;GACrD,QAAQ;GACR,cAAc,QAAA;EAChB,CAAC;;EAGD,MAAM,kBAAkB,MAAO,OAAO,QAAQ,CAAE;;uBAG9C,YAoBmB,0BAAA;IAnBhB,QAAQ,OAAA,SAAU,MAAA,eAAA;IAClB,WAAA,QAAA;IACA,WAAA,QAAA;IACA,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,MAAA,IAAA,CAAI,CAAC,QAAA,OAAO;;IAEZA,KAAAA,OAAO,OAAA;WACZ;uBACmB,CAApB,WAAoB,KAAA,QAAA,MAAA,CAAA,CAAA;;;IAGdA,KAAAA,OAAO,SAAA;WACZ;uBACqB,CAAtB,WAAsB,KAAA,QAAA,QAAA,CAAA,CAAA;;;IAGhBA,KAAAA,OAAO,WAAA;WACZ;uBACuB,CAAxB,WAAwB,KAAA,QAAA,UAAA,CAAA,CAAA"}
@@ -1,6 +1,6 @@
1
1
  import { useBindCx } from "@scalar/use-hooks/useBindCx";
2
2
  import { createElementBlock, defineComponent, guardReactiveProps, normalizeProps, openBlock, unref } from "vue";
3
- var ScalarCopyBackdrop_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
3
+ var ScalarCopyBackdrop_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
4
4
  inheritAttrs: false,
5
5
  __name: "ScalarCopyBackdrop",
6
6
  setup(__props) {
@@ -1 +1 @@
1
- {"version":3,"file":"ScalarCopyBackdrop.vue.script.js","names":[],"sources":["../../../src/components/ScalarCopy/ScalarCopyBackdrop.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar Copy Backdrop component\n *\n * A backdrop for the copy button label, this component can be\n * used to override the default backdrop with a custom one.\n *\n * @example\n * <ScalarCopy>\n * <template #backdrop>\n * <ScalarCopyBackdrop class=\"bg-b-2\" />\n * </template>\n * </ScalarCopy>\n */\nexport default {}\n</script>\n<script setup lang=\"ts\">\nimport { useBindCx } from '@scalar/use-hooks/useBindCx'\n\ndefineOptions({ inheritAttrs: false })\nconst { cx } = useBindCx()\n</script>\n<template>\n <div v-bind=\"cx('absolute inset-y-0.5 -z-2 left-0 right-0 bg-b-1 rounded')\" />\n</template>\n"],"mappings":";;;;;;EAoBA,MAAM,EAAE,OAAO,WAAU;;uBAGvB,mBAA8E,OAAA,eAAA,mBAAjE,MAAA,GAAE,CAAA,0DAAA,CAAA,CAAA,EAAA,MAAA,GAAA"}
1
+ {"version":3,"file":"ScalarCopyBackdrop.vue.script.js","names":[],"sources":["../../../src/components/ScalarCopy/ScalarCopyBackdrop.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Scalar Copy Backdrop component\n *\n * A backdrop for the copy button label, this component can be\n * used to override the default backdrop with a custom one.\n *\n * @example\n * <ScalarCopy>\n * <template #backdrop>\n * <ScalarCopyBackdrop class=\"bg-b-2\" />\n * </template>\n * </ScalarCopy>\n */\nexport default {}\n</script>\n<script setup lang=\"ts\">\nimport { useBindCx } from '@scalar/use-hooks/useBindCx'\n\ndefineOptions({ inheritAttrs: false })\nconst { cx } = useBindCx()\n</script>\n<template>\n <div v-bind=\"cx('absolute inset-y-0.5 -z-2 left-0 right-0 bg-b-1 rounded')\" />\n</template>\n"],"mappings":";;;;;;EAoBA,MAAM,EAAE,OAAO,UAAU;;uBAGvB,mBAA8E,OAAA,eAAA,mBAAjE,MAAA,EAAA,CAAE,CAAA,yDAAA,CAAA,CAAA,GAAA,MAAA,EAAA"}
@@ -20,10 +20,10 @@ var _hoisted_4 = {
20
20
  key: 1,
21
21
  class: "sr-only"
22
22
  };
23
- var ScalarCopyButton_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
23
+ var ScalarCopyButton_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
24
24
  inheritAttrs: false,
25
25
  __name: "ScalarCopyButton",
26
- props: /* @__PURE__ */ mergeModels({
26
+ props: /*@__PURE__*/ mergeModels({
27
27
  showLabel: { type: Boolean },
28
28
  placement: { default: "right" }
29
29
  }, {