@comfyorg/design-system 1.1.0 → 1.3.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (509) hide show
  1. package/README.md +113 -10
  2. package/dist/accordion/PropertiesAccordionItem.vue.d.ts +34 -0
  3. package/dist/accordion/PropertiesAccordionItem.vue.js +62 -0
  4. package/dist/badge/Badge.vue.d.ts +49 -0
  5. package/dist/badge/Badge.vue.js +1 -0
  6. package/dist/badge/CreditBadge.vue.d.ts +6 -0
  7. package/dist/badge/CreditBadge.vue.js +21 -0
  8. package/dist/badge/badge.variants.d.ts +12 -0
  9. package/dist/button/Button.vue.d.ts +31 -0
  10. package/dist/button/Button.vue.js +1 -0
  11. package/dist/button-group/ButtonGroup.vue.d.ts +18 -0
  12. package/dist/button-group/ButtonGroup.vue.js +35 -0
  13. package/dist/button-group/IconGroup.vue.d.ts +16 -0
  14. package/dist/button-group/IconGroup.vue.js +13 -0
  15. package/dist/card/Card.vue.d.ts +19 -0
  16. package/dist/card/Card.vue.js +1 -0
  17. package/dist/card/CardFooter.vue.d.ts +17 -0
  18. package/dist/card/CardFooter.vue.js +1 -0
  19. package/dist/card/CardHeader.vue.d.ts +17 -0
  20. package/dist/card/CardHeader.vue.js +1 -0
  21. package/dist/card/CoachmarkCard.vue.d.ts +24 -0
  22. package/dist/card/CoachmarkCard.vue.js +55 -0
  23. package/dist/card/card.variants.d.ts +11 -0
  24. package/dist/chart/Chart.vue.d.ts +12 -0
  25. package/dist/chart/Chart.vue.js +177 -0
  26. package/dist/chart/__tests__/chartTestUtils.d.ts +3 -0
  27. package/dist/chart/useChart.d.ts +4 -0
  28. package/dist/checkbox/Checkbox.vue.d.ts +25 -0
  29. package/dist/checkbox/Checkbox.vue.js +47 -0
  30. package/dist/chip/Tag.vue.d.ts +61 -0
  31. package/dist/chip/Tag.vue.js +71 -0
  32. package/dist/chip/TagRemoveButton.vue.d.ts +18 -0
  33. package/dist/chip/TagRemoveButton.vue.js +1 -0
  34. package/dist/color-picker/ColorPicker.vue.d.ts +23 -0
  35. package/dist/color-picker/ColorPicker.vue.js +139 -0
  36. package/dist/color-picker/ColorPickerPanel.vue.d.ts +27 -0
  37. package/dist/color-picker/ColorPickerPanel.vue.js +1 -0
  38. package/dist/color-picker/ColorPickerSaturationValue.vue.d.ts +17 -0
  39. package/dist/color-picker/ColorPickerSaturationValue.vue.js +1 -0
  40. package/dist/color-picker/ColorPickerSlider.vue.d.ts +17 -0
  41. package/dist/color-picker/ColorPickerSlider.vue.js +1 -0
  42. package/dist/color-picker/types.d.ts +22 -0
  43. package/dist/color-picker/types.js +0 -0
  44. package/dist/color-picker/useColorPicker.d.ts +33 -0
  45. package/dist/common/CanvasBanner.vue.d.ts +23 -0
  46. package/dist/common/CanvasBanner.vue.js +21 -0
  47. package/dist/common/ContentDivider.vue.d.ts +7 -0
  48. package/dist/common/ContentDivider.vue.js +20 -0
  49. package/dist/common/CustomFormValue.vue.d.ts +6 -0
  50. package/dist/common/CustomFormValue.vue.js +26 -0
  51. package/dist/common/DotSpinner.vue.d.ts +7 -0
  52. package/dist/common/DotSpinner.vue.js +32 -0
  53. package/dist/common/EditableText.vue.d.ts +16 -0
  54. package/dist/common/EditableText.vue.js +71 -0
  55. package/dist/common/HighlightedText.vue.d.ts +8 -0
  56. package/dist/common/HighlightedText.vue.js +49 -0
  57. package/dist/common/LoadingOverlay.vue.d.ts +18 -0
  58. package/dist/common/LoadingOverlay.vue.js +39 -0
  59. package/dist/common/MarkdownText.vue.d.ts +6 -0
  60. package/dist/common/MarkdownText.vue.js +91 -0
  61. package/dist/common/MarqueeLine.vue.d.ts +13 -0
  62. package/dist/common/MarqueeLine.vue.js +11 -0
  63. package/dist/common/NoResultsPlaceholder.vue.d.ts +28 -0
  64. package/dist/common/NoResultsPlaceholder.vue.js +49 -0
  65. package/dist/common/NotificationPopup.vue.d.ts +28 -0
  66. package/dist/common/NotificationPopup.vue.js +63 -0
  67. package/dist/common/OverlayIcon.vue.d.ts +13 -0
  68. package/dist/common/OverlayIcon.vue.js +1 -0
  69. package/dist/common/SanitizedHtml.vue.d.ts +8 -0
  70. package/dist/common/SanitizedHtml.vue.js +58 -0
  71. package/dist/common/TextDivider.vue.d.ts +8 -0
  72. package/dist/common/TextDivider.vue.js +34 -0
  73. package/dist/common/TextTicker.vue.d.ts +17 -0
  74. package/dist/common/TextTicker.vue.js +51 -0
  75. package/dist/common/TextTickerMultiLine.vue.d.ts +6 -0
  76. package/dist/common/TextTickerMultiLine.vue.js +51 -0
  77. package/dist/common/UserAvatar.vue.d.ts +9 -0
  78. package/dist/common/UserAvatar.vue.js +45 -0
  79. package/dist/common/VerticalDivider.vue.d.ts +3 -0
  80. package/dist/common/VerticalDivider.vue.js +14 -0
  81. package/dist/common/VideoCompareSlider.vue.d.ts +24 -0
  82. package/dist/common/VideoCompareSlider.vue.js +139 -0
  83. package/dist/common/ViewportWidgetShell.vue.d.ts +27 -0
  84. package/dist/common/ViewportWidgetShell.vue.js +56 -0
  85. package/dist/common/VirtualGrid.vue.d.ts +38 -0
  86. package/dist/common/VirtualGrid.vue.js +105 -0
  87. package/dist/common/highlightQuery.d.ts +6 -0
  88. package/dist/common/textTickerUtils.d.ts +1 -0
  89. package/dist/components.css +44 -0
  90. package/dist/composables/useAttrsClass.d.ts +12 -0
  91. package/dist/composables/useAttrsClass.js +17 -0
  92. package/dist/composables/usePopoverSizing.d.ts +12 -0
  93. package/dist/composables/usePopoverSizing.js +17 -0
  94. package/dist/confirm/ConfirmBody.vue.d.ts +8 -0
  95. package/dist/confirm/ConfirmBody.vue.js +25 -0
  96. package/dist/confirm/ConfirmFooter.vue.d.ts +18 -0
  97. package/dist/confirm/ConfirmFooter.vue.js +53 -0
  98. package/dist/confirm/ConfirmHeader.vue.d.ts +7 -0
  99. package/dist/confirm/ConfirmHeader.vue.js +25 -0
  100. package/dist/content-card/CardBottom.vue.d.ts +16 -0
  101. package/dist/content-card/CardBottom.vue.js +17 -0
  102. package/dist/content-card/CardContainer.vue.d.ts +26 -0
  103. package/dist/content-card/CardContainer.vue.js +59 -0
  104. package/dist/content-card/CardTop.vue.d.ts +36 -0
  105. package/dist/content-card/CardTop.vue.js +70 -0
  106. package/dist/dialog/Dialog.vue.d.ts +21 -0
  107. package/dist/dialog/Dialog.vue.js +23 -0
  108. package/dist/dialog/DialogClose.vue.d.ts +13 -0
  109. package/dist/dialog/DialogClose.vue.js +1 -0
  110. package/dist/dialog/DialogContent.vue.d.ts +36 -0
  111. package/dist/dialog/DialogContent.vue.js +1 -0
  112. package/dist/dialog/DialogDescription.vue.d.ts +18 -0
  113. package/dist/dialog/DialogDescription.vue.js +31 -0
  114. package/dist/dialog/DialogFooter.vue.d.ts +17 -0
  115. package/dist/dialog/DialogFooter.vue.js +22 -0
  116. package/dist/dialog/DialogHeader.vue.d.ts +17 -0
  117. package/dist/dialog/DialogHeader.vue.js +22 -0
  118. package/dist/dialog/DialogMaximize.vue.d.ts +10 -0
  119. package/dist/dialog/DialogMaximize.vue.js +25 -0
  120. package/dist/dialog/DialogOverlay.vue.d.ts +8 -0
  121. package/dist/dialog/DialogOverlay.vue.js +1 -0
  122. package/dist/dialog/DialogPanel.vue.d.ts +18 -0
  123. package/dist/dialog/DialogPanel.vue.js +53 -0
  124. package/dist/dialog/DialogPortal.vue.d.ts +14 -0
  125. package/dist/dialog/DialogPortal.vue.js +1 -0
  126. package/dist/dialog/DialogTitle.vue.d.ts +18 -0
  127. package/dist/dialog/DialogTitle.vue.js +1 -0
  128. package/dist/dialog/Dialogue.vue.d.ts +22 -0
  129. package/dist/dialog/Dialogue.vue.js +56 -0
  130. package/dist/dialog/dialog.variants.d.ts +16 -0
  131. package/dist/dialog/dialog.variants.js +38 -0
  132. package/dist/dialog/types.d.ts +6 -0
  133. package/dist/dialog/types.js +0 -0
  134. package/dist/field/Field.vue.d.ts +19 -0
  135. package/dist/field/Field.vue.js +39 -0
  136. package/dist/field/FieldDescription.vue.d.ts +17 -0
  137. package/dist/field/FieldDescription.vue.js +22 -0
  138. package/dist/field/FieldError.vue.d.ts +21 -0
  139. package/dist/field/FieldError.vue.js +37 -0
  140. package/dist/field/FieldGroup.vue.d.ts +17 -0
  141. package/dist/field/FieldGroup.vue.js +22 -0
  142. package/dist/field/FieldLabel.vue.d.ts +17 -0
  143. package/dist/field/FieldLabel.vue.js +26 -0
  144. package/dist/field/FieldSwitch.vue.d.ts +16 -0
  145. package/dist/field/FieldSwitch.vue.js +43 -0
  146. package/dist/field/LayoutField.vue.d.ts +18 -0
  147. package/dist/field/LayoutField.vue.js +1 -0
  148. package/dist/field/ModelInfoField.vue.d.ts +18 -0
  149. package/dist/field/ModelInfoField.vue.js +16 -0
  150. package/dist/field/field.variants.d.ts +11 -0
  151. package/dist/hover-card/HoverCard.vue.d.ts +18 -0
  152. package/dist/hover-card/HoverCard.vue.js +24 -0
  153. package/dist/hover-card/HoverCardContent.vue.d.ts +18 -0
  154. package/dist/hover-card/HoverCardContent.vue.js +66 -0
  155. package/dist/hover-card/HoverCardTrigger.vue.d.ts +14 -0
  156. package/dist/hover-card/HoverCardTrigger.vue.js +21 -0
  157. package/dist/icon/ComfyLogo.vue.d.ts +9 -0
  158. package/dist/icon/ComfyLogo.vue.js +31 -0
  159. package/dist/icon/PuzzleIcon.vue.d.ts +8 -0
  160. package/dist/icon/PuzzleIcon.vue.js +38 -0
  161. package/dist/icon/TinyChevronIcon.vue.d.ts +6 -0
  162. package/dist/icon/TinyChevronIcon.vue.js +29 -0
  163. package/dist/icon/VerifiedIcon.vue.d.ts +8 -0
  164. package/dist/icon/VerifiedIcon.vue.js +30 -0
  165. package/dist/input/Input.vue.d.ts +21 -0
  166. package/dist/input/Input.vue.js +1 -0
  167. package/dist/input/PasswordInput.vue.d.ts +18 -0
  168. package/dist/input/PasswordInput.vue.js +66 -0
  169. package/dist/input-group/InputGroup.vue.d.ts +17 -0
  170. package/dist/input-group/InputGroup.vue.js +1 -0
  171. package/dist/input-group/InputGroupAddon.vue.d.ts +19 -0
  172. package/dist/input-group/InputGroupAddon.vue.js +1 -0
  173. package/dist/input-group/InputGroupButton.vue.d.ts +21 -0
  174. package/dist/input-group/InputGroupButton.vue.js +1 -0
  175. package/dist/input-group/InputGroupInput.vue.d.ts +15 -0
  176. package/dist/input-group/InputGroupInput.vue.js +1 -0
  177. package/dist/input-group/inputGroup.variants.d.ts +21 -0
  178. package/dist/input-group/inputGroup.variants.js +21 -0
  179. package/dist/knob/Knob.vue.d.ts +19 -0
  180. package/dist/knob/Knob.vue.js +122 -0
  181. package/dist/label/Label.vue.d.ts +18 -0
  182. package/dist/label/Label.vue.js +1 -0
  183. package/dist/layout/BaseModalLayout.vue.d.ts +67 -0
  184. package/dist/layout/BaseModalLayout.vue.js +198 -0
  185. package/dist/media/AudioPreview.vue.d.ts +6 -0
  186. package/dist/media/AudioPreview.vue.js +26 -0
  187. package/dist/media/ImageLightbox.vue.d.ts +17 -0
  188. package/dist/media/ImageLightbox.vue.js +76 -0
  189. package/dist/media/MediaTitle.vue.d.ts +6 -0
  190. package/dist/media/MediaTitle.vue.js +17 -0
  191. package/dist/media/Video.vue.d.ts +28 -0
  192. package/dist/media/Video.vue.js +100 -0
  193. package/dist/media/VideoPlayOverlay.vue.d.ts +8 -0
  194. package/dist/media/VideoPlayOverlay.vue.js +26 -0
  195. package/dist/media/VideoPreview.vue.d.ts +7 -0
  196. package/dist/media/VideoPreview.vue.js +30 -0
  197. package/dist/media/ZoomPane.vue.d.ts +17 -0
  198. package/dist/media/ZoomPane.vue.js +60 -0
  199. package/dist/menu/ContextMenu.vue.d.ts +31 -0
  200. package/dist/menu/ContextMenu.vue.js +50 -0
  201. package/dist/menu/ContextMenuContent.vue.d.ts +32 -0
  202. package/dist/menu/ContextMenuContent.vue.js +1 -0
  203. package/dist/menu/Menu.vue.d.ts +41 -0
  204. package/dist/menu/Menu.vue.js +77 -0
  205. package/dist/menu/MenuAction.vue.d.ts +26 -0
  206. package/dist/menu/MenuAction.vue.js +1 -0
  207. package/dist/menu/MenuContent.vue.d.ts +35 -0
  208. package/dist/menu/MenuContent.vue.js +1 -0
  209. package/dist/menu/MenuItem.vue.d.ts +22 -0
  210. package/dist/menu/MenuItem.vue.js +33 -0
  211. package/dist/menu/MenuItemContent.vue.d.ts +8 -0
  212. package/dist/menu/MenuItemContent.vue.js +1 -0
  213. package/dist/menu/MenuItems.vue.d.ts +32 -0
  214. package/dist/menu/MenuItems.vue.js +1 -0
  215. package/dist/menu/MenuRadioGroup.vue.d.ts +26 -0
  216. package/dist/menu/MenuRadioGroup.vue.js +1 -0
  217. package/dist/menu/MenuRadioItem.vue.d.ts +22 -0
  218. package/dist/menu/MenuRadioItem.vue.js +1 -0
  219. package/dist/menu/MenuSeparator.vue.d.ts +8 -0
  220. package/dist/menu/MenuSeparator.vue.js +1 -0
  221. package/dist/menu/MenuSub.vue.d.ts +20 -0
  222. package/dist/menu/MenuSub.vue.js +1 -0
  223. package/dist/menu/MenuSubContent.vue.d.ts +36 -0
  224. package/dist/menu/MenuSubContent.vue.js +1 -0
  225. package/dist/menu/MenuSubTrigger.vue.d.ts +18 -0
  226. package/dist/menu/MenuSubTrigger.vue.js +1 -0
  227. package/dist/menu/MenuSubmenu.vue.d.ts +21 -0
  228. package/dist/menu/MenuSubmenu.vue.js +1 -0
  229. package/dist/menu/menuAnchor.d.ts +4 -0
  230. package/dist/menu/menuAnchor.js +14 -0
  231. package/dist/menu/menuStyles.d.ts +4 -0
  232. package/dist/menu/menuStyles.js +6 -0
  233. package/dist/menu/mouseDownUtil.d.ts +3 -0
  234. package/dist/menu/types.d.ts +69 -0
  235. package/dist/menu/types.js +0 -0
  236. package/dist/menu/usePointMenu.d.ts +19 -0
  237. package/dist/menu/usePointMenu.js +55 -0
  238. package/dist/message/Message.vue.d.ts +50 -0
  239. package/dist/message/Message.vue.js +73 -0
  240. package/dist/message/message.variants.d.ts +11 -0
  241. package/dist/message/message.variants.js +14 -0
  242. package/dist/multi-select/MultiSelect.vue.d.ts +170 -0
  243. package/dist/multi-select/MultiSelect.vue.js +135 -0
  244. package/dist/multi-select/MultiSelectContent.vue.d.ts +32 -0
  245. package/dist/multi-select/MultiSelectContent.vue.js +1 -0
  246. package/dist/multi-select/MultiSelectTrigger.vue.d.ts +24 -0
  247. package/dist/multi-select/MultiSelectTrigger.vue.js +1 -0
  248. package/dist/multi-select/types.d.ts +35 -0
  249. package/dist/multi-select/types.js +0 -0
  250. package/dist/navigation/LeftSidePanel.vue.d.ts +12 -0
  251. package/dist/navigation/LeftSidePanel.vue.js +82 -0
  252. package/dist/navigation/NavIcon.vue.d.ts +7 -0
  253. package/dist/navigation/NavIcon.vue.js +1 -0
  254. package/dist/navigation/NavItem.vue.d.ts +21 -0
  255. package/dist/navigation/NavItem.vue.js +1 -0
  256. package/dist/navigation/NavTitle.vue.d.ts +12 -0
  257. package/dist/navigation/NavTitle.vue.js +1 -0
  258. package/dist/navigation/SidebarTopArea.vue.d.ts +15 -0
  259. package/dist/navigation/SidebarTopArea.vue.js +15 -0
  260. package/dist/navigation/types.d.ts +13 -0
  261. package/dist/navigation/types.js +0 -0
  262. package/dist/number-field/NumberField.vue.d.ts +26 -0
  263. package/dist/number-field/NumberField.vue.js +73 -0
  264. package/dist/number-field/NumberFieldDecrement.vue.d.ts +18 -0
  265. package/dist/number-field/NumberFieldDecrement.vue.js +33 -0
  266. package/dist/number-field/NumberFieldIncrement.vue.d.ts +18 -0
  267. package/dist/number-field/NumberFieldIncrement.vue.js +33 -0
  268. package/dist/number-field/NumberFieldInput.vue.d.ts +7 -0
  269. package/dist/number-field/NumberFieldInput.vue.js +23 -0
  270. package/dist/number-field/PropertyNumberField.vue.d.ts +14 -0
  271. package/dist/number-field/PropertyNumberField.vue.js +54 -0
  272. package/dist/pagination/Pagination.vue.d.ts +22 -0
  273. package/dist/pagination/Pagination.vue.js +138 -0
  274. package/dist/popover/PopoverContent.vue.d.ts +33 -0
  275. package/dist/popover/PopoverContent.vue.js +1 -0
  276. package/dist/popover/usePopoverViewportDismiss.d.ts +2 -0
  277. package/dist/popover/usePopoverViewportDismiss.js +12 -0
  278. package/dist/radio-group/RadioGroup.vue.d.ts +22 -0
  279. package/dist/radio-group/RadioGroup.vue.js +43 -0
  280. package/dist/radio-group/RadioGroupItem.vue.d.ts +22 -0
  281. package/dist/radio-group/RadioGroupItem.vue.js +40 -0
  282. package/dist/search-input/AsyncSearchInput.vue.d.ts +27 -0
  283. package/dist/search-input/AsyncSearchInput.vue.js +102 -0
  284. package/dist/search-input/SearchAutocomplete.vue.d.ts +53 -0
  285. package/dist/search-input/SearchAutocomplete.vue.js +232 -0
  286. package/dist/search-input/SearchInput.vue.d.ts +46 -0
  287. package/dist/search-input/SearchInput.vue.js +125 -0
  288. package/dist/search-input/searchInput.variants.d.ts +45 -0
  289. package/dist/select/DropdownControl.vue.d.ts +16 -0
  290. package/dist/select/DropdownControl.vue.js +46 -0
  291. package/dist/select/Select.vue.d.ts +21 -0
  292. package/dist/select/Select.vue.js +1 -0
  293. package/dist/select/SelectContent.vue.d.ts +29 -0
  294. package/dist/select/SelectContent.vue.js +1 -0
  295. package/dist/select/SelectItem.vue.d.ts +22 -0
  296. package/dist/select/SelectItem.vue.js +1 -0
  297. package/dist/select/SelectScrollDownButton.vue.d.ts +18 -0
  298. package/dist/select/SelectScrollDownButton.vue.js +1 -0
  299. package/dist/select/SelectScrollUpButton.vue.d.ts +18 -0
  300. package/dist/select/SelectScrollUpButton.vue.js +1 -0
  301. package/dist/select/SelectTrigger.vue.d.ts +22 -0
  302. package/dist/select/SelectTrigger.vue.js +1 -0
  303. package/dist/select/SelectValue.vue.d.ts +14 -0
  304. package/dist/select/SelectValue.vue.js +1 -0
  305. package/dist/select/types.d.ts +4 -0
  306. package/dist/select/types.js +0 -0
  307. package/dist/select/useSelectSearch.d.ts +3 -0
  308. package/dist/select/useSelectSearch.js +14 -0
  309. package/dist/shared/Badge-DFHO3AFi.js +90 -0
  310. package/dist/shared/Button-Dj_H5v3V.js +138 -0
  311. package/dist/shared/Card-BrvqUM49.js +32 -0
  312. package/dist/shared/CardFooter-BV_I0pM-.js +19 -0
  313. package/dist/shared/CardHeader-CMutruBx.js +19 -0
  314. package/dist/shared/ColorPickerPanel-DQGHuvxk.js +239 -0
  315. package/dist/shared/ColorPickerSaturationValue-B5VDiMcl.js +64 -0
  316. package/dist/shared/ColorPickerSlider--mnQyzWD.js +305 -0
  317. package/dist/shared/ContextMenuContent-RNyBBJOX.js +62 -0
  318. package/dist/shared/DialogClose-CrtPRSNX.js +22 -0
  319. package/dist/shared/DialogContent-v2s55FXs.js +71 -0
  320. package/dist/shared/DialogOverlay-C9qv0zme.js +33 -0
  321. package/dist/shared/DialogPortal-DtCpLgtO.js +36 -0
  322. package/dist/shared/DialogTitle-Chomvpgq.js +41 -0
  323. package/dist/shared/Input-DOeNoniw.js +36 -0
  324. package/dist/shared/InputGroup-BYt6BWpk.js +23 -0
  325. package/dist/shared/InputGroupAddon-B1cn7czs.js +36 -0
  326. package/dist/shared/InputGroupButton-tw5AYOoR.js +39 -0
  327. package/dist/shared/InputGroupInput-C_kkIxvY.js +30 -0
  328. package/dist/shared/Label-kwhWNR2P.js +34 -0
  329. package/dist/shared/LayoutField-C8KCaVF0.js +34 -0
  330. package/dist/shared/MenuAction-0z8BSoX9.js +121 -0
  331. package/dist/shared/MenuContent--tKCqaIO.js +78 -0
  332. package/dist/shared/MenuItemContent-Be658c7e.js +67 -0
  333. package/dist/shared/MenuItems-BZTlERd6.js +67 -0
  334. package/dist/shared/MenuRadioGroup-B28YS1p1.js +63 -0
  335. package/dist/shared/MenuRadioItem-D8DFu-KU.js +34 -0
  336. package/dist/shared/MenuSeparator-DrAiObmE.js +26 -0
  337. package/dist/shared/MenuSub-DSizq_fV.js +21 -0
  338. package/dist/shared/MenuSubContent-ghzkX4hX.js +67 -0
  339. package/dist/shared/MenuSubTrigger-BGRIm_Bf.js +33 -0
  340. package/dist/shared/MenuSubmenu-CjPf8DXl.js +41 -0
  341. package/dist/shared/MultiSelectContent-9xyBQKz3.js +160 -0
  342. package/dist/shared/MultiSelectTrigger-DNySkpH9.js +50 -0
  343. package/dist/shared/NavIcon-FTJH75HH.js +12 -0
  344. package/dist/shared/NavItem-sQJ-77Zw.js +77 -0
  345. package/dist/shared/NavTitle-BM22yfCR.js +40 -0
  346. package/dist/shared/OverlayIcon-C-din824.js +43 -0
  347. package/dist/shared/PopoverContent-DNqL6t-O.js +89 -0
  348. package/dist/shared/SearchableSingleSelect-DQauLQWW.js +182 -0
  349. package/dist/shared/Select-DtVgv7Po.js +31 -0
  350. package/dist/shared/SelectContent-Ba1mCDWM.js +89 -0
  351. package/dist/shared/SelectItem-DaOr3TFS.js +55 -0
  352. package/dist/shared/SelectScrollDownButton-DYmxtida.js +28 -0
  353. package/dist/shared/SelectScrollUpButton-DiyvSb9O.js +28 -0
  354. package/dist/shared/SelectTrigger-BBicbVsI.js +45 -0
  355. package/dist/shared/SelectValue-BjaQc-WU.js +21 -0
  356. package/dist/shared/Switch-qavkHWMz.js +61 -0
  357. package/dist/shared/TableHead-DpsXVMzk.js +22 -0
  358. package/dist/shared/TagRemoveButton-D919R-To.js +36 -0
  359. package/dist/shared/TextTooltip-BNlZI515.js +27 -0
  360. package/dist/shared/Tooltip-4rCebVao.js +32 -0
  361. package/dist/shared/TooltipContent-0GR7hBNu.js +89 -0
  362. package/dist/shared/TooltipTrigger-64EIE5f2.js +63 -0
  363. package/dist/shared/TransitionCollapse-VfBzyj5a.js +108 -0
  364. package/dist/shared/_plugin-vue_export-helper-DjkACiAr.js +7 -0
  365. package/dist/shared/searchInput.variants-BdYHNjce.js +46 -0
  366. package/dist/shared/select.variants-cRXaATWS.js +39 -0
  367. package/dist/shared/src-DTwuqov4.js +11 -0
  368. package/dist/shared/tabKeys-CP6c3wTY.js +3 -0
  369. package/dist/shared/tabs.variants-Cgk7bRhG.js +22 -0
  370. package/dist/shared/tag.variants-BEXRRbPc.js +33 -0
  371. package/dist/shared/tagsInputContext-C-X1-iNf.js +4 -0
  372. package/dist/shared/toggleGroup.variants-BuwGELw0.js +38 -0
  373. package/dist/shared/tooltipContext-arEyjGQC.js +3 -0
  374. package/dist/single-select/SearchableSingleSelect.vue.d.ts +39 -0
  375. package/dist/single-select/SearchableSingleSelect.vue.js +1 -0
  376. package/dist/single-select/SingleSelect.vue.d.ts +38 -0
  377. package/dist/single-select/SingleSelect.vue.js +185 -0
  378. package/dist/single-select/types.d.ts +25 -0
  379. package/dist/single-select/types.js +0 -0
  380. package/dist/skeleton/Skeleton.vue.d.ts +7 -0
  381. package/dist/skeleton/Skeleton.vue.js +22 -0
  382. package/dist/slider/GradientSlider.vue.d.ts +20 -0
  383. package/dist/slider/GradientSlider.vue.js +100 -0
  384. package/dist/slider/Slider.vue.d.ts +16 -0
  385. package/dist/slider/Slider.vue.js +86 -0
  386. package/dist/slider/gradients.d.ts +6 -0
  387. package/dist/spinner/Spinner.vue.d.ts +7 -0
  388. package/dist/spinner/Spinner.vue.js +39 -0
  389. package/dist/splitter/SplitterGroup.vue.d.ts +23 -0
  390. package/dist/splitter/SplitterGroup.vue.js +38 -0
  391. package/dist/splitter/SplitterPanel.vue.d.ts +26 -0
  392. package/dist/splitter/SplitterPanel.vue.js +43 -0
  393. package/dist/splitter/SplitterResizeHandle.vue.d.ts +22 -0
  394. package/dist/splitter/SplitterResizeHandle.vue.js +35 -0
  395. package/dist/switch/Switch.vue.d.ts +17 -0
  396. package/dist/switch/Switch.vue.js +1 -0
  397. package/dist/tab/Tab.vue.d.ts +24 -0
  398. package/dist/tab/Tab.vue.js +73 -0
  399. package/dist/tab/TabList.vue.d.ts +26 -0
  400. package/dist/tab/TabList.vue.js +29 -0
  401. package/dist/tab/TabPanel.vue.d.ts +23 -0
  402. package/dist/tab/TabPanel.vue.js +26 -0
  403. package/dist/tab/tab.variants.d.ts +9 -0
  404. package/dist/tab/tabKeys.d.ts +7 -0
  405. package/dist/table/Table.vue.d.ts +17 -0
  406. package/dist/table/Table.vue.js +21 -0
  407. package/dist/table/TableBody.vue.d.ts +17 -0
  408. package/dist/table/TableBody.vue.js +19 -0
  409. package/dist/table/TableCell.vue.d.ts +17 -0
  410. package/dist/table/TableCell.vue.js +19 -0
  411. package/dist/table/TableHead.vue.d.ts +17 -0
  412. package/dist/table/TableHead.vue.js +1 -0
  413. package/dist/table/TableHeader.vue.d.ts +17 -0
  414. package/dist/table/TableHeader.vue.js +19 -0
  415. package/dist/table/TableRow.vue.d.ts +17 -0
  416. package/dist/table/TableRow.vue.js +19 -0
  417. package/dist/table/TableSortHead.vue.d.ts +26 -0
  418. package/dist/table/TableSortHead.vue.js +45 -0
  419. package/dist/table/tableUtils.d.ts +3 -0
  420. package/dist/table/tableUtils.js +18 -0
  421. package/dist/tabs/Tabs.vue.d.ts +22 -0
  422. package/dist/tabs/Tabs.vue.js +41 -0
  423. package/dist/tabs/TabsContent.vue.d.ts +18 -0
  424. package/dist/tabs/TabsContent.vue.js +35 -0
  425. package/dist/tabs/TabsList.vue.d.ts +20 -0
  426. package/dist/tabs/TabsList.vue.js +36 -0
  427. package/dist/tabs/TabsTrigger.vue.d.ts +20 -0
  428. package/dist/tabs/TabsTrigger.vue.js +37 -0
  429. package/dist/tabs/tabs.variants.d.ts +21 -0
  430. package/dist/tags-input/TagsInput.vue.d.ts +32 -0
  431. package/dist/tags-input/TagsInput.vue.js +96 -0
  432. package/dist/tags-input/TagsInputInput.vue.d.ts +9 -0
  433. package/dist/tags-input/TagsInputInput.vue.js +54 -0
  434. package/dist/tags-input/TagsInputItem.vue.d.ts +18 -0
  435. package/dist/tags-input/TagsInputItem.vue.js +32 -0
  436. package/dist/tags-input/TagsInputItemDelete.vue.d.ts +18 -0
  437. package/dist/tags-input/TagsInputItemDelete.vue.js +33 -0
  438. package/dist/tags-input/TagsInputItemText.vue.d.ts +8 -0
  439. package/dist/tags-input/TagsInputItemText.vue.js +26 -0
  440. package/dist/tags-input/tagsInputContext.d.ts +4 -0
  441. package/dist/textarea/Textarea.vue.d.ts +17 -0
  442. package/dist/textarea/Textarea.vue.js +31 -0
  443. package/dist/toast/ToastClose.vue.d.ts +8 -0
  444. package/dist/toast/ToastClose.vue.js +40 -0
  445. package/dist/toast/ToastDescription.vue.d.ts +18 -0
  446. package/dist/toast/ToastDescription.vue.js +29 -0
  447. package/dist/toast/ToastDock.vue.d.ts +13 -0
  448. package/dist/toast/ToastDock.vue.js +27 -0
  449. package/dist/toast/ToastPanel.vue.d.ts +30 -0
  450. package/dist/toast/ToastPanel.vue.js +45 -0
  451. package/dist/toast/ToastRoot.vue.d.ts +100 -0
  452. package/dist/toast/ToastRoot.vue.js +53 -0
  453. package/dist/toast/ToastTitle.vue.d.ts +18 -0
  454. package/dist/toast/ToastTitle.vue.js +29 -0
  455. package/dist/toast/ToastViewport.vue.d.ts +9 -0
  456. package/dist/toast/ToastViewport.vue.js +31 -0
  457. package/dist/toggle-group/ToggleGroup.vue.d.ts +25 -0
  458. package/dist/toggle-group/ToggleGroup.vue.js +59 -0
  459. package/dist/toggle-group/ToggleGroupItem.vue.d.ts +21 -0
  460. package/dist/toggle-group/ToggleGroupItem.vue.js +43 -0
  461. package/dist/toggle-group/toggleGroup.variants.d.ts +24 -0
  462. package/dist/tooltip/TextTooltip.vue.d.ts +20 -0
  463. package/dist/tooltip/TextTooltip.vue.js +1 -0
  464. package/dist/tooltip/Tooltip.vue.d.ts +23 -0
  465. package/dist/tooltip/Tooltip.vue.js +1 -0
  466. package/dist/tooltip/TooltipContent.vue.d.ts +24 -0
  467. package/dist/tooltip/TooltipContent.vue.js +1 -0
  468. package/dist/tooltip/TooltipProvider.vue.d.ts +15 -0
  469. package/dist/tooltip/TooltipProvider.vue.js +37 -0
  470. package/dist/tooltip/TooltipTrigger.vue.d.ts +14 -0
  471. package/dist/tooltip/TooltipTrigger.vue.js +1 -0
  472. package/dist/tooltip/tooltipConfig.d.ts +5 -0
  473. package/dist/tooltip/tooltipConfig.js +7 -0
  474. package/dist/tooltip/tooltipContext.d.ts +2 -0
  475. package/dist/transition/TransitionCollapse.vue.d.ts +21 -0
  476. package/dist/transition/TransitionCollapse.vue.js +1 -0
  477. package/dist/tree/Tree.vue.d.ts +32 -0
  478. package/dist/tree/Tree.vue.js +53 -0
  479. package/dist/tree/TreeItem.vue.d.ts +29 -0
  480. package/dist/tree/TreeItem.vue.js +80 -0
  481. package/dist/tree/treeStyles.d.ts +4 -0
  482. package/dist/tree/treeStyles.js +6 -0
  483. package/dist-types/button.variants.d.ts +16 -0
  484. package/dist-types/select.variants.d.ts +24 -0
  485. package/dist-types/tag.variants.d.ts +21 -0
  486. package/dist-types/workspaceAvatar.d.ts +5 -0
  487. package/package.json +186 -8
  488. package/src/button.variants.ts +84 -0
  489. package/src/css/_deprecated-aliases.css +12 -0
  490. package/src/css/_legacy-palette.css +33 -0
  491. package/src/css/_legacy-ui.css +418 -0
  492. package/src/css/_markdown.css +227 -0
  493. package/src/css/_mask-editor.css +179 -0
  494. package/src/css/_palette.css +40 -4
  495. package/src/css/base.css +0 -6
  496. package/src/css/component-support.css +69 -0
  497. package/src/css/iconSizing.test.ts +80 -0
  498. package/src/css/iconifyDynamicPlugin.ts +15 -6
  499. package/src/css/icons.test.ts +17 -0
  500. package/src/css/lucideStrokePlugin.js +5 -6
  501. package/src/css/published.css +3 -0
  502. package/src/css/style.css +5 -1909
  503. package/src/css/theme.css +243 -0
  504. package/src/css/themes/void.css +102 -0
  505. package/src/icons/README.md +61 -97
  506. package/src/icons/astroid-filled.svg +3 -0
  507. package/src/icons/claude.svg +1 -1
  508. package/src/select.variants.ts +53 -0
  509. package/src/tag.variants.ts +38 -0
@@ -0,0 +1,243 @@
1
+ @layer theme, base, components, utilities;
2
+
3
+ @import './fonts.css';
4
+ @import './component-support.css';
5
+ @import './_deprecated-aliases.css';
6
+ @import './_legacy-palette.css';
7
+ @import 'tailwindcss/theme' layer(theme);
8
+ @import 'tailwindcss/utilities' layer(utilities);
9
+
10
+ @layer base {
11
+ *,
12
+ ::before,
13
+ ::after {
14
+ box-sizing: border-box;
15
+ border-color: var(--border);
16
+ }
17
+
18
+ button,
19
+ input,
20
+ select,
21
+ optgroup,
22
+ textarea,
23
+ ::file-selector-button {
24
+ font: inherit;
25
+ font-feature-settings: inherit;
26
+ font-variation-settings: inherit;
27
+ letter-spacing: inherit;
28
+ color: inherit;
29
+ }
30
+ }
31
+
32
+ /* Safelist dynamic comfy icons for node library folders */
33
+ @source inline("icon-[comfy--{ai-model,anthropic,bfl,bria,bytedance,claude,comfy-cloud,comfy-logo,credits,elevenlabs,extensions-blocks,file-output,gemini,grok,hitpaw,ideogram,image-ai-edit,kling,ltxv,luma,magnific,mask,meshy,minimax,moonvalley-marey,node,openai,pin,pixverse,play,recraft,reve,rodin,runway,sora,stability-ai,template,tencent,topaz,tripo,veo,vidu,wan,wavespeed,workflow,quiver}]");
34
+
35
+ /* Badge icon names are built at runtime, so the scanner cannot find them. */
36
+ @source inline("icon-mask-[comfy--{3d-decomp,ai-model,anthropic,batch-images-node,bfl,bria,brightness-contrast,bytedance,canny,canny-to-image,canny-to-video,channels,chromatic-aberration,claude,comfy-c,comfy-logo,credits,depth-to-image,depth-to-video,dial,elevenlabs,extensions-blocks,file-output,frames-to-video,gemini,get-video-components,glow,grain,grok,hitpaw,ideogram,image-ai-edit,image-batch,image-blur,image-canny,image-captioning,image-collage,image-compare,image-depth,image-edit,image-inpaint,image-invert,image-outpaint,image-outpainting,image-remove-background,image-rotate,image-select-object-segmentation,image-shader,image-sharpen,image-to-3d,image-to-image,image-to-layers,image-to-video,image-upscale,image-vectorize,kling,load-3d,load-audio,load-video,lora-loader,ltxv,luma,magnific,mask,meshy,minimax,moonvalley-marey,node,open-ai-chat-node,openai,pin,pixverse,play,pose-to-image,pose-to-video,quiver,recraft,reve,rodin,runway,save-3d,save-audio,save-video,send,sora,stability-ai,template,tencent,text-prompt-enhance,text-to-3d,text-to-audio,text-to-image,text-to-video,topaz,tripo,veo,video-captioning,video-edit,video-enhance,video-extract-frame,video-inpaint,video-interpolation,video-select-object-segmentation,video-slice,video-split-screen,video-trim,video-upscale,vidu,voice-clone,wan,wavespeed,workflow}]");
37
+
38
+ @theme {
39
+ --shadow-2xs: 0 1px 1px var(--shadow-color);
40
+ --shadow-xs: 0 1px 2px var(--shadow-color);
41
+ --shadow-sm: 0 1px 4px var(--shadow-color);
42
+ --shadow-md: 1px 1px 8px 0 var(--shadow-color);
43
+ --shadow-lg: 0 2px 16px 0 var(--shadow-color);
44
+ --shadow-xl: 0 8px 24px var(--shadow-color);
45
+ --shadow-2xl: 0 24px 80px var(--shadow-color);
46
+ --drop-shadow-xs: 0 1px 1px var(--shadow-color);
47
+ --drop-shadow-sm: 1px 1px 4px var(--shadow-color);
48
+ --drop-shadow-md: 1px 1px 8px var(--shadow-color);
49
+ --drop-shadow-lg: 0 9px 7px var(--shadow-color);
50
+ --shadow-inset-highlight: inset 0 1px 0 0 rgb(from white r g b / 0.1);
51
+
52
+ --color-bypass: #6a246a;
53
+ --color-success: var(--color-jade-600);
54
+ }
55
+
56
+ :root {
57
+ color-scheme: dark;
58
+
59
+ --background: var(--color-charcoal-800);
60
+ --foreground: var(--color-white);
61
+ --card: var(--color-charcoal-600);
62
+ --node-foreground: var(--color-smoke-700);
63
+ --node-header: var(--color-charcoal-700);
64
+ --node-border: var(--color-charcoal-100);
65
+ --primary: var(--color-azure-600);
66
+ --secondary: var(--color-charcoal-600);
67
+ --muted: var(--color-charcoal-300);
68
+ --muted-foreground: var(--color-smoke-800);
69
+ --accent: var(--color-charcoal-400);
70
+ --destructive: var(--color-coral-700);
71
+ --border: var(--color-charcoal-200);
72
+ --ring: var(--muted-foreground);
73
+ --popover: var(--background);
74
+ --input: var(--accent);
75
+ --node: var(--card);
76
+
77
+ --default-transition-duration: 0.1s;
78
+ --comfy-topbar-height: 2.5rem;
79
+ --workflow-tabs-height: 2.375rem;
80
+ --comfy-textarea-font-size: 10px;
81
+
82
+ --warning: var(--color-gold-600);
83
+ --shadow-color: rgb(0 0 0 / 0.4);
84
+ }
85
+
86
+ @theme inline {
87
+ --color-background: var(--background);
88
+ --color-foreground: var(--foreground);
89
+ --color-card: var(--card);
90
+ --color-node: var(--node);
91
+ --color-node-foreground: var(--node-foreground);
92
+ --color-node-header: var(--node-header);
93
+ --color-node-border: var(--node-border);
94
+ --color-popover: var(--popover);
95
+ --color-primary: var(--primary);
96
+ --color-secondary: var(--secondary);
97
+ --color-muted: var(--muted);
98
+ --color-muted-foreground: var(--muted-foreground);
99
+ --color-accent: var(--accent);
100
+ --color-destructive: var(--destructive);
101
+ --color-border: var(--border);
102
+ --color-input: var(--input);
103
+ --color-ring: var(--ring);
104
+
105
+ /* Semantic tokens */
106
+ --color-warning: var(--warning);
107
+ }
108
+
109
+ @utility floating-panel {
110
+ border-radius: var(--radius-xl);
111
+ padding: --spacing(1);
112
+ background-color: var(--background);
113
+ box-shadow: var(--shadow-inset-highlight), theme(boxShadow.lg);
114
+ }
115
+
116
+ /* Everthing below here to be cleaned up over time. */
117
+
118
+ :root[data-palette-switching] * {
119
+ transition: none;
120
+ }
121
+
122
+ body {
123
+ width: 100vw;
124
+ height: 100vh;
125
+ margin: 0;
126
+ overflow: hidden;
127
+ min-height: -webkit-fill-available;
128
+ max-height: -webkit-fill-available;
129
+ min-width: -webkit-fill-available;
130
+ max-width: -webkit-fill-available;
131
+ font-family: Inter, Arial, sans-serif;
132
+ background-color: var(--background);
133
+ color: var(--foreground);
134
+ }
135
+
136
+ .comfy-multiline-input {
137
+ background-color: var(--input);
138
+ color: var(--foreground);
139
+ overflow: hidden;
140
+ overflow-y: auto;
141
+ padding: 2px;
142
+ resize: none;
143
+ border: none;
144
+ box-sizing: border-box;
145
+ font-family: var(--font-mono);
146
+ font-size: var(--comfy-textarea-font-size);
147
+ }
148
+
149
+ @import './_markdown.css';
150
+
151
+ @import './_legacy-ui.css';
152
+
153
+ audio.comfy-audio.empty-audio-widget {
154
+ display: none;
155
+ }
156
+
157
+ #vue-app {
158
+ position: absolute;
159
+ top: 0;
160
+ left: 0;
161
+ width: 100%;
162
+ height: 100%;
163
+ }
164
+
165
+ /* [Desktop] Electron window specific styles */
166
+ .app-drag {
167
+ app-region: drag;
168
+ }
169
+
170
+ .no-drag {
171
+ app-region: no-drag;
172
+ }
173
+
174
+ .window-actions-spacer {
175
+ width: calc(100vw - env(titlebar-area-width, 100vw));
176
+ }
177
+ /* End of [Desktop] Electron window specific styles */
178
+
179
+ .lg-node {
180
+ /* Disable text selection on all nodes */
181
+ user-select: none;
182
+ }
183
+
184
+ .lg-node .lg-slot {
185
+ transition:
186
+ opacity 0.1s ease,
187
+ font-size 0.1s ease;
188
+ }
189
+
190
+ @import './_mask-editor.css';
191
+
192
+ /* ===================== Skeleton Shimmer ===================== */
193
+ .skeleton-shimmer {
194
+ background:
195
+ linear-gradient(135deg, rgb(188 188 188 / 0.5) 0%, rgb(0 0 0 / 0.5) 100%) 0
196
+ 0 / 200% 200%,
197
+ #000;
198
+ animation: skeleton-shimmer 2s ease-in-out infinite;
199
+ }
200
+
201
+ @keyframes skeleton-shimmer {
202
+ 0%,
203
+ 100% {
204
+ background-position: 100% 100%;
205
+ }
206
+ 50% {
207
+ background-position: 0 0;
208
+ }
209
+ }
210
+
211
+ @utility scroll-shadows-* {
212
+ overflow: auto;
213
+
214
+ background:
215
+ /* Shadow Cover TOP */
216
+ linear-gradient(--value(--color-*) 30%, transparent) center top,
217
+ /* Shadow Cover BOTTOM */
218
+ linear-gradient(transparent, --value(--color-*) 70%) center bottom,
219
+ /* Shadow TOP */
220
+ radial-gradient(
221
+ farthest-side at 50% 0,
222
+ color-mix(in oklab, --value(--color-*), #777777 35%),
223
+ 60%,
224
+ transparent
225
+ )
226
+ center top,
227
+ /* Shadow BOTTOM */
228
+ radial-gradient(
229
+ farthest-side at 50% 100%,
230
+ color-mix(in oklab, --value(--color-*), #777777 35%),
231
+ 60%,
232
+ transparent
233
+ )
234
+ center bottom;
235
+
236
+ background-repeat: no-repeat;
237
+ background-size:
238
+ 300% 40px,
239
+ 300% 40px,
240
+ 300% 14px,
241
+ 300% 14px;
242
+ background-attachment: local, local, scroll, scroll;
243
+ }
@@ -0,0 +1,102 @@
1
+ @import '../component-support.css';
2
+
3
+ @source '../../../dist';
4
+
5
+ @theme static {
6
+ --font-inter: 'Inter', system-ui, sans-serif;
7
+ --font-sans: 'Inter', system-ui, sans-serif;
8
+ --font-display: 'PP Formula', 'Inter', system-ui, sans-serif;
9
+
10
+ --color-background: oklch(0.19 0.003 285);
11
+ --color-foreground: oklch(0.955 0.002 285);
12
+ --color-card: oklch(0.23 0.008 285);
13
+ --color-popover: oklch(0.23 0.008 285);
14
+ --color-primary: #0b8ce9;
15
+ --color-secondary: oklch(1 0 0 / 0.06);
16
+ --color-muted: oklch(1 0 0 / 0.06);
17
+ --color-muted-foreground: oklch(0.76 0.006 285);
18
+ --color-accent: oklch(1 0 0 / 0.1);
19
+ --color-input: oklch(1 0 0 / 0.06);
20
+ --color-border: oklch(1 0 0 / 0.08);
21
+ --color-ring: oklch(1 0 0 / 0.45);
22
+ --color-destructive: oklch(0.62 0.19 25);
23
+ --color-warning: oklch(0.82 0.14 85);
24
+ --color-success: oklch(0.78 0.15 155);
25
+
26
+ --color-content-background: oklch(0.14 0.005 285);
27
+ --color-card-hover: oklch(0.265 0.009 285);
28
+ --color-subtle-foreground: oklch(0.6 0.008 285);
29
+ --color-border-strong: oklch(1 0 0 / 0.14);
30
+ --color-media-overlay: oklch(0 0 0 / 0.55);
31
+
32
+ --text-ui: 13px;
33
+ --text-ui--line-height: 20px;
34
+ --text-heading: 16px;
35
+ --text-heading--line-height: 24px;
36
+ --text-title: 22px;
37
+ --text-title--line-height: 28px;
38
+ --text-display: 34px;
39
+ --text-display--line-height: 40px;
40
+
41
+ --radius-panel: 16px;
42
+ --radius-card: 12px;
43
+ --radius-control: 8px;
44
+ --radius-min: 4px;
45
+
46
+ --shadow-elev:
47
+ inset 0 1px 0 oklch(1 0 0 / 0.07), 0 1px 2px oklch(0 0 0 / 0.35),
48
+ 0 6px 18px oklch(0 0 0 / 0.28);
49
+ --shadow-elev-hover:
50
+ inset 0 1px 0 oklch(1 0 0 / 0.09), 0 2px 4px oklch(0 0 0 / 0.35),
51
+ 0 10px 26px oklch(0 0 0 / 0.34);
52
+ --shadow-popover:
53
+ inset 0 1px 0 oklch(1 0 0 / 0.07), 0 12px 32px oklch(0 0 0 / 0.45);
54
+ --shadow-highlight: inset 0 1px 0 oklch(1 0 0 / 0.06);
55
+
56
+ --ease-out-expo: cubic-bezier(0.16, 1, 0.3, 1);
57
+ --animate-pop-in: pop-in 160ms var(--ease-out-expo);
58
+ --animate-fade-in: fade-in 160ms ease-out;
59
+ --animate-status-pulse: status-pulse 2s ease-out infinite;
60
+ --animate-shimmer: shimmer 1.6s ease-in-out infinite;
61
+
62
+ @keyframes pop-in {
63
+ from {
64
+ opacity: 0;
65
+ transform: translateY(4px) scale(0.98);
66
+ }
67
+ }
68
+ @keyframes fade-in {
69
+ from {
70
+ opacity: 0;
71
+ }
72
+ }
73
+ @keyframes status-pulse {
74
+ 0% {
75
+ box-shadow: 0 0 0 0 color-mix(in oklch, currentColor 55%, transparent);
76
+ }
77
+ 70%,
78
+ 100% {
79
+ box-shadow: 0 0 0 5px transparent;
80
+ }
81
+ }
82
+ @keyframes shimmer {
83
+ from {
84
+ background-position: 150% 0;
85
+ }
86
+ to {
87
+ background-position: -50% 0;
88
+ }
89
+ }
90
+ }
91
+
92
+ :root {
93
+ --muted: var(--color-muted);
94
+ }
95
+
96
+ @layer base {
97
+ *,
98
+ ::before,
99
+ ::after {
100
+ border-color: var(--color-border);
101
+ }
102
+ }
@@ -1,66 +1,38 @@
1
1
  # ComfyUI Icons Guide
2
2
 
3
- ComfyUI supports three types of icons that can be used throughout the interface. All icons are automatically imported - no manual imports needed!
3
+ ComfyUI supports two types of icons: Lucide icons and custom icons. All icons are automatically imported - no manual imports needed!
4
4
 
5
5
  ## Quick Start - Code Examples
6
6
 
7
- ### 1. PrimeIcons
7
+ Lucide is the only third-party icon set. Don't add icons from other sets such as Heroicons, Tabler, or Carbon. PrimeIcons and Material Design Icons (`mdi`) are being phased out; don't add new uses, in first-party code or extensions. See [PrimeIcons (deprecated)](#primeicons-deprecated).
8
8
 
9
- ```vue
10
- <template>
11
- <!-- Basic usage -->
12
- <i class="pi pi-plus" />
13
- <i class="pi pi-cog" />
14
- <i class="pi pi-check text-green-500" />
15
-
16
- <!-- In PrimeVue components -->
17
- <button icon="pi pi-save" label="Save" />
18
- <button icon="pi pi-times" severity="danger" />
19
- </template>
20
- ```
21
-
22
- [Browse all PrimeIcons →](https://primevue.org/icons/#list)
23
-
24
- ### 2. Iconify Icons (Recommended)
9
+ ### 1. Lucide Icons
25
10
 
26
11
  ```vue
27
12
  <template>
28
- <!-- Primary icon set: Lucide -->
29
13
  <i class="icon-[lucide--download]" />
30
14
  <i class="icon-[lucide--settings]" />
31
- <i class="icon-[lucide--workflow]" class="text-2xl" />
32
-
33
- <!-- Other popular icon sets -->
34
- <i-mdi:folder-open />
35
- <!-- Material Design Icons -->
36
- <i-heroicons:document-text />
37
- <!-- Heroicons -->
38
- <i-tabler:brand-github />
39
- <!-- Tabler Icons -->
40
- <i-carbon:cloud-upload />
41
- <!-- Carbon Icons -->
15
+ <i class="icon-[lucide--workflow] size-6" />
42
16
 
43
17
  <!-- With styling -->
44
- <i class="icon-[lucide--save]" class="w-6 h-6 text-blue-500" />
18
+ <i class="icon-[lucide--save] size-6 text-blue-500" />
45
19
  </template>
46
20
  ```
47
21
 
48
- [Browse 200,000+ icons →](https://icon-sets.iconify.design/)
22
+ [Browse Lucide icons →](https://lucide.dev/icons/)
49
23
 
50
- ### 3. Custom Icons
24
+ ### 2. Custom Icons
51
25
 
52
26
  ```vue
53
27
  <template>
54
28
  <!-- Your custom SVG icons from packages/design-system/src/icons/ -->
55
29
  <i-comfy:workflow />
56
30
  <i-comfy:node-tree />
57
- <i-comfy:my-custom-icon class="text-xl" />
31
+ <i-comfy:my-custom-icon class="size-5" />
58
32
 
59
- <!-- In PrimeVue button -->
60
- <Button severity="secondary">
61
- <template #icon>
62
- <i-comfy:workflow />
63
- </template>
33
+ <!-- In a design-system Button -->
34
+ <Button variant="secondary">
35
+ <i-comfy:workflow />
64
36
  </Button>
65
37
  </template>
66
38
  ```
@@ -71,14 +43,8 @@ ComfyUI supports three types of icons that can be used throughout the interface.
71
43
 
72
44
  ```vue
73
45
  <template>
74
- <!-- PrimeIcon in button (simple) -->
75
- <Button icon="pi pi-check" label="Confirm" />
76
-
77
- <!-- Iconify/Custom in button (template) -->
78
46
  <Button>
79
- <template #icon>
80
- <i class="icon-[lucide--save]" />
81
- </template>
47
+ <i class="icon-[lucide--save]" />
82
48
  Save File
83
49
  </Button>
84
50
  </template>
@@ -98,32 +64,27 @@ ComfyUI supports three types of icons that can be used throughout the interface.
98
64
 
99
65
  ### With Tooltips
100
66
 
67
+ Put the icon in a `Button` and give the button the tooltip, so keyboard users
68
+ can reach it. See `packages/design-system/src/components/tooltip/README.md` for other triggers.
69
+
101
70
  ```vue
102
71
  <template>
103
- <i
104
- class="icon-[lucide--info]"
105
- v-tooltip="'Click for more information'"
106
- class="cursor-pointer"
107
- />
72
+ <Button
73
+ variant="muted-textonly"
74
+ size="icon"
75
+ :tooltip="$t('g.learnMore')"
76
+ :aria-label="$t('g.learnMore')"
77
+ >
78
+ <i class="icon-[lucide--info]" />
79
+ </Button>
108
80
  </template>
109
81
  ```
110
82
 
111
- ## Using Iconify Icons
112
-
113
- ### Finding Icons
114
-
115
- 1. Visit [Iconify Icon Sets](https://icon-sets.iconify.design/)
116
- 2. Search or browse collections
117
- 3. Click on any icon to get its name
118
- 4. Use with `i-[collection]:[icon-name]` format
119
-
120
- ### Popular Collections
83
+ ## Finding Lucide Icons
121
84
 
122
- - **Lucide** (`i-lucide:`) - Our primary icon set, clean and consistent
123
- - **Material Design Icons** (`i-mdi:`) - Comprehensive Material Design icons
124
- - **Heroicons** (`i-heroicons:`) - Beautiful hand-crafted SVG icons
125
- - **Tabler** (`i-tabler:`) - 3000+ free SVG icons
126
- - **Carbon** (`i-carbon:`) - IBM's design system icons
85
+ 1. Search [Lucide Icons](https://lucide.dev/icons/)
86
+ 2. Copy the icon's name, such as `folder-open`
87
+ 3. Use it as `icon-[lucide--folder-open]`
127
88
 
128
89
  ## Adding Custom Icons
129
90
 
@@ -201,23 +162,20 @@ claude.svg fill="#d97757" -> image (brand color preserved)
201
162
 
202
163
  ### Size & Styling
203
164
 
165
+ `icon-[...]`, `icon-img-[...]`, and `icon-mask-[...]` default to `size-4` (16px). Font size has no effect on them, so don't size them with `text-*`. Override the size with `size-*` on the `<i>` itself:
166
+
204
167
  ```vue
205
168
  <template>
206
- <!-- Size with Tailwind classes -->
207
- <i class="icon-[lucide--plus]" class="w-4 h-4" />
208
- <!-- 16px -->
209
- <i class="icon-[lucide--plus]" class="w-6 h-6" />
210
- <!-- 24px (default) -->
211
- <i class="icon-[lucide--plus]" class="w-8 h-8" />
212
- <!-- 32px -->
213
-
214
- <!-- Or text size -->
215
- <i class="icon-[lucide--plus]" class="text-sm" />
216
- <i class="icon-[lucide--plus]" class="text-2xl" />
169
+ <i class="icon-[lucide--plus]" />
170
+ <!-- 16px (default) -->
171
+ <i class="icon-[lucide--plus] size-3" />
172
+ <!-- 12px -->
173
+ <i class="icon-[lucide--plus] size-6" />
174
+ <!-- 24px -->
217
175
 
218
176
  <!-- Colors -->
219
- <i class="icon-[lucide--check]" class="text-green-500" />
220
- <i class="icon-[lucide--x]" class="text-red-500" />
177
+ <i class="icon-[lucide--check] text-green-500" />
178
+ <i class="icon-[lucide--x] text-red-500" />
221
179
  </template>
222
180
  ```
223
181
 
@@ -244,17 +202,31 @@ Always use `currentColor` in SVGs for automatic theme adaptation:
244
202
  ```vue
245
203
  <template>
246
204
  <!-- Before -->
247
- <Button icon="pi pi-download" />
205
+ <Button size="icon">
206
+ <i class="pi pi-download" />
207
+ </Button>
248
208
 
249
209
  <!-- After -->
250
- <Button>
251
- <template #icon>
252
- <i class="icon-[lucide--download]" />
253
- </template>
210
+ <Button size="icon">
211
+ <i class="icon-[lucide--download]" />
254
212
  </Button>
255
213
  </template>
256
214
  ```
257
215
 
216
+ A `pi` glyph sized with a `text-*` class becomes an explicit `size-*` class. Pick the size by eye rather than converting the font size, because Lucide glyphs fill their viewBox differently from PrimeIcons:
217
+
218
+ ```vue
219
+ <template>
220
+ <!-- Before -->
221
+ <i class="pi pi-folder text-lg" />
222
+
223
+ <!-- After -->
224
+ <i class="icon-[lucide--folder] size-5" />
225
+ </template>
226
+ ```
227
+
228
+ Use `scale-*` only when a wrapper hardcodes the icon's size, such as `SidebarIcon`, which sets `size-5` on the `<i>` it renders from an icon class string.
229
+
258
230
  ### From Inline SVG to Custom Icon
259
231
 
260
232
  ```vue
@@ -269,6 +241,10 @@ Always use `currentColor` in SVGs for automatic theme adaptation:
269
241
  </template>
270
242
  ```
271
243
 
244
+ ## PrimeIcons (deprecated)
245
+
246
+ `primeicons` is still imported in `src/main.ts` only so existing extensions that render `pi pi-*` classes keep working while it is phased out. Don't use PrimeIcons in new code, including extensions.
247
+
272
248
  ## Technical Details
273
249
 
274
250
  ### Auto-Import System
@@ -280,7 +256,7 @@ Icons are automatically imported using `unplugin-icons` - no manual imports need
280
256
  The icon system has two layers:
281
257
 
282
258
  1. **Tailwind CSS Plugin** (`@iconify/tailwind4`):
283
- - Configured via `@plugin` directive in `packages/design-system/src/css/style.css`
259
+ - Configured via `@plugin` directive in `packages/design-system/src/css/theme.css`
284
260
  - Uses `from-folder(comfy, ...)` to load SVGs from `packages/design-system/src/icons/`
285
261
  - Auto-cleans and optimizes SVGs at build time
286
262
 
@@ -345,19 +321,7 @@ Icons are fully typed. If TypeScript doesn't recognize a new custom icon:
345
321
  4. **Theme support**: Always use `currentColor` for adaptable icons
346
322
  5. **Test both themes**: Verify icons look good in light and dark modes
347
323
 
348
- ## Adding Icon Collections
349
-
350
- To add an entire icon set from npm:
351
-
352
- 1. Install the icon package
353
- 2. Configure in `vite.config.mts`
354
- 3. Use with the appropriate prefix
355
-
356
- See the [unplugin-icons documentation](https://github.com/unplugin/unplugin-icons) for details.
357
-
358
324
  ## Resources
359
325
 
360
- - [PrimeIcons List](https://primevue.org/icons/#list)
361
- - [Iconify Icon Browser](https://icon-sets.iconify.design/)
362
326
  - [Lucide Icons](https://lucide.dev/icons/)
363
327
  - [unplugin-icons docs](https://github.com/unplugin/unplugin-icons)
@@ -0,0 +1,3 @@
1
+ <svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M12.983 21.186a1 1 0 0 1-1.966 0a10 10 0 0 0-8.203-8.203a1 1 0 0 1 0-1.966a10 10 0 0 0 8.203-8.203a1 1 0 0 1 1.966 0a10 10 0 0 0 8.203 8.203a1 1 0 0 1 0 1.966a10 10 0 0 0-8.203 8.203Z" fill="currentColor"/>
3
+ </svg>
@@ -1 +1 @@
1
- <svg height="1em" style="flex:none;line-height:1" viewBox="0 0 24 24" width="1em" xmlns="http://www.w3.org/2000/svg"><title>Claude</title><path d="M4.709 15.955l4.72-2.647.08-.23-.08-.128H9.2l-.79-.048-2.698-.073-2.339-.097-2.266-.122-.571-.121L0 11.784l.055-.352.48-.321.686.06 1.52.103 2.278.158 1.652.097 2.449.255h.389l.055-.157-.134-.098-.103-.097-2.358-1.596-2.552-1.688-1.336-.972-.724-.491-.364-.462-.158-1.008.656-.722.881.06.225.061.893.686 1.908 1.476 2.491 1.833.365.304.145-.103.019-.073-.164-.274-1.355-2.446-1.446-2.49-.644-1.032-.17-.619a2.97 2.97 0 01-.104-.729L6.283.134 6.696 0l.996.134.42.364.62 1.414 1.002 2.229 1.555 3.03.456.898.243.832.091.255h.158V9.01l.128-1.706.237-2.095.23-2.695.08-.76.376-.91.747-.492.584.28.48.685-.067.444-.286 1.851-.559 2.903-.364 1.942h.212l.243-.242.985-1.306 1.652-2.064.73-.82.85-.904.547-.431h1.033l.76 1.129-.34 1.166-1.064 1.347-.881 1.142-1.264 1.7-.79 1.36.073.11.188-.02 2.856-.606 1.543-.28 1.841-.315.833.388.091.395-.328.807-1.969.486-2.309.462-3.439.813-.042.03.049.061 1.549.146.662.036h1.622l3.02.225.79.522.474.638-.079.485-1.215.62-1.64-.389-3.829-.91-1.312-.329h-.182v.11l1.093 1.068 2.006 1.81 2.509 2.33.127.578-.322.455-.34-.049-2.205-1.657-.851-.747-1.926-1.62h-.128v.17l.444.649 2.345 3.521.122 1.08-.17.353-.608.213-.668-.122-1.374-1.925-1.415-2.167-1.143-1.943-.14.08-.674 7.254-.316.37-.729.28-.607-.461-.322-.747.322-1.476.389-1.924.315-1.53.286-1.9.17-.632-.012-.042-.14.018-1.434 1.967-2.18 2.945-1.726 1.845-.414.164-.717-.37.067-.662.401-.589 2.388-3.036 1.44-1.882.93-1.086-.006-.158h-.055L4.132 18.56l-1.13.146-.487-.456.061-.746.231-.243 1.908-1.312-.006.006z" fill="#D97757" fill-rule="nonzero"></path></svg>
1
+ <svg height="1em" style="line-height:1" viewBox="0 0 24 24" width="1em" xmlns="http://www.w3.org/2000/svg"><title>Claude</title><path d="M4.709 15.955l4.72-2.647.08-.23-.08-.128H9.2l-.79-.048-2.698-.073-2.339-.097-2.266-.122-.571-.121L0 11.784l.055-.352.48-.321.686.06 1.52.103 2.278.158 1.652.097 2.449.255h.389l.055-.157-.134-.098-.103-.097-2.358-1.596-2.552-1.688-1.336-.972-.724-.491-.364-.462-.158-1.008.656-.722.881.06.225.061.893.686 1.908 1.476 2.491 1.833.365.304.145-.103.019-.073-.164-.274-1.355-2.446-1.446-2.49-.644-1.032-.17-.619a2.97 2.97 0 01-.104-.729L6.283.134 6.696 0l.996.134.42.364.62 1.414 1.002 2.229 1.555 3.03.456.898.243.832.091.255h.158V9.01l.128-1.706.237-2.095.23-2.695.08-.76.376-.91.747-.492.584.28.48.685-.067.444-.286 1.851-.559 2.903-.364 1.942h.212l.243-.242.985-1.306 1.652-2.064.73-.82.85-.904.547-.431h1.033l.76 1.129-.34 1.166-1.064 1.347-.881 1.142-1.264 1.7-.79 1.36.073.11.188-.02 2.856-.606 1.543-.28 1.841-.315.833.388.091.395-.328.807-1.969.486-2.309.462-3.439.813-.042.03.049.061 1.549.146.662.036h1.622l3.02.225.79.522.474.638-.079.485-1.215.62-1.64-.389-3.829-.91-1.312-.329h-.182v.11l1.093 1.068 2.006 1.81 2.509 2.33.127.578-.322.455-.34-.049-2.205-1.657-.851-.747-1.926-1.62h-.128v.17l.444.649 2.345 3.521.122 1.08-.17.353-.608.213-.668-.122-1.374-1.925-1.415-2.167-1.143-1.943-.14.08-.674 7.254-.316.37-.729.28-.607-.461-.322-.747.322-1.476.389-1.924.315-1.53.286-1.9.17-.632-.012-.042-.14.018-1.434 1.967-2.18 2.945-1.726 1.845-.414.164-.717-.37.067-.662.401-.589 2.388-3.036 1.44-1.882.93-1.086-.006-.158h-.055L4.132 18.56l-1.13.146-.487-.456.061-.746.231-.243 1.908-1.312-.006.006z" fill="#D97757" fill-rule="nonzero"></path></svg>
@@ -0,0 +1,53 @@
1
+ import { cva } from 'cva'
2
+
3
+ export const selectTriggerVariants = cva({
4
+ base: 'relative inline-flex cursor-pointer items-center rounded-lg border-[2.5px] border-solid bg-secondary text-foreground transition-all duration-200 ease-in-out outline-none select-none hover:bg-accent disabled:cursor-default disabled:opacity-30 disabled:hover:bg-secondary',
5
+ variants: {
6
+ size: {
7
+ md: 'h-8',
8
+ lg: 'h-10'
9
+ },
10
+ border: {
11
+ none: 'border-transparent focus-visible:border-border data-[state=open]:border-border',
12
+ active: 'border-foreground',
13
+ invalid: 'border-destructive'
14
+ }
15
+ },
16
+ defaultVariants: {
17
+ size: 'lg',
18
+ border: 'none'
19
+ }
20
+ })
21
+
22
+ export const selectItemVariants = cva({
23
+ base: 'flex cursor-pointer items-center px-2 outline-none hover:bg-accent',
24
+ variants: {
25
+ layout: {
26
+ multi:
27
+ 'h-10 shrink-0 gap-2 rounded-lg data-highlighted:bg-muted data-highlighted:hover:bg-muted',
28
+ single:
29
+ 'relative w-full justify-between gap-3 rounded-sm py-3 text-sm select-none focus:bg-accent data-[state=checked]:bg-muted data-[state=checked]:hover:bg-muted'
30
+ }
31
+ },
32
+ defaultVariants: {
33
+ layout: 'multi'
34
+ }
35
+ })
36
+
37
+ export const selectContentClass =
38
+ 'z-overlay overflow-hidden rounded-lg p-2 bg-background text-foreground border border-solid shadow-md data-[state=closed]:animate-out data-[state=open]:animate-in data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2'
39
+
40
+ export const selectDropdownClass =
41
+ 'flex shrink-0 cursor-pointer items-center justify-center pl-3 [&_i]:size-5'
42
+
43
+ export const selectEmptyMessageClass = 'px-3 pb-4 text-sm text-muted-foreground'
44
+
45
+ export const selectCountBadgeClass =
46
+ 'flex size-3.5 items-center justify-center rounded-full bg-foreground text-[9px] font-semibold text-background'
47
+
48
+ export function stopEscapeToDocument(event: KeyboardEvent) {
49
+ if (event.key === 'Escape') {
50
+ event.stopPropagation()
51
+ event.stopImmediatePropagation()
52
+ }
53
+ }