@comfyorg/design-system 1.2.0 → 1.3.0-alpha.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 (300) hide show
  1. package/README.md +33 -3
  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.js +1 -2
  5. package/dist/badge/CreditBadge.vue.d.ts +0 -1
  6. package/dist/badge/CreditBadge.vue.js +10 -24
  7. package/dist/badge/badge.variants.d.ts +1 -1
  8. package/dist/button/Button.vue.js +1 -2
  9. package/dist/button-group/ButtonGroup.vue.js +2 -4
  10. package/dist/button-group/IconGroup.vue.js +2 -4
  11. package/dist/card/Card.vue.js +1 -2
  12. package/dist/card/CardFooter.vue.js +1 -2
  13. package/dist/card/CardHeader.vue.js +1 -2
  14. package/dist/card/CoachmarkCard.vue.js +2 -4
  15. package/dist/chart/Chart.vue.js +4 -7
  16. package/dist/chart/__tests__/chartTestUtils.d.ts +3 -0
  17. package/dist/checkbox/Checkbox.vue.js +2 -4
  18. package/dist/chip/Tag.vue.d.ts +61 -0
  19. package/dist/chip/Tag.vue.js +71 -0
  20. package/dist/chip/TagRemoveButton.vue.js +1 -2
  21. package/dist/color-picker/ColorPicker.vue.d.ts +23 -0
  22. package/dist/color-picker/ColorPicker.vue.js +139 -0
  23. package/dist/color-picker/ColorPickerPanel.vue.d.ts +27 -0
  24. package/dist/color-picker/ColorPickerPanel.vue.js +1 -0
  25. package/dist/color-picker/ColorPickerSaturationValue.vue.d.ts +17 -0
  26. package/dist/color-picker/ColorPickerSaturationValue.vue.js +1 -0
  27. package/dist/color-picker/ColorPickerSlider.vue.d.ts +17 -0
  28. package/dist/color-picker/ColorPickerSlider.vue.js +1 -0
  29. package/dist/color-picker/types.d.ts +22 -0
  30. package/dist/color-picker/types.js +0 -0
  31. package/dist/color-picker/useColorPicker.d.ts +33 -0
  32. package/dist/common/CanvasBanner.vue.js +3 -5
  33. package/dist/common/ContentDivider.vue.js +2 -4
  34. package/dist/common/CustomFormValue.vue.js +1 -3
  35. package/dist/common/DotSpinner.vue.js +3 -5
  36. package/dist/common/EditableText.vue.js +3 -5
  37. package/dist/common/HighlightedText.vue.d.ts +8 -0
  38. package/dist/common/HighlightedText.vue.js +50 -0
  39. package/dist/common/LoadingOverlay.vue.js +3 -5
  40. package/dist/common/MarkdownText.vue.js +2 -4
  41. package/dist/common/MarqueeLine.vue.js +2 -3
  42. package/dist/common/NoResultsPlaceholder.vue.d.ts +28 -0
  43. package/dist/common/NoResultsPlaceholder.vue.js +49 -0
  44. package/dist/common/NotificationPopup.vue.d.ts +28 -0
  45. package/dist/common/NotificationPopup.vue.js +63 -0
  46. package/dist/common/OverlayIcon.vue.js +1 -2
  47. package/dist/common/SanitizedHtml.vue.js +2 -4
  48. package/dist/common/TextDivider.vue.js +3 -5
  49. package/dist/common/TextTicker.vue.js +2 -4
  50. package/dist/common/TextTickerMultiLine.vue.js +3 -6
  51. package/dist/common/UserAvatar.vue.d.ts +9 -0
  52. package/dist/common/UserAvatar.vue.js +45 -0
  53. package/dist/common/VerticalDivider.vue.js +2 -3
  54. package/dist/common/VideoCompareSlider.vue.js +3 -5
  55. package/dist/common/ViewportWidgetShell.vue.js +3 -5
  56. package/dist/common/VirtualGrid.vue.js +1 -3
  57. package/dist/common/highlightQuery.d.ts +6 -0
  58. package/dist/composables/useAttrsClass.js +1 -2
  59. package/dist/composables/usePopoverSizing.js +1 -2
  60. package/dist/confirm/ConfirmBody.vue.js +3 -5
  61. package/dist/confirm/ConfirmFooter.vue.d.ts +18 -0
  62. package/dist/confirm/ConfirmFooter.vue.js +53 -0
  63. package/dist/confirm/ConfirmHeader.vue.js +2 -4
  64. package/dist/content-card/CardBottom.vue.js +2 -4
  65. package/dist/content-card/CardContainer.vue.js +3 -5
  66. package/dist/content-card/CardTop.vue.js +2 -4
  67. package/dist/dialog/Dialog.vue.js +1 -3
  68. package/dist/dialog/DialogClose.vue.js +1 -24
  69. package/dist/dialog/DialogContent.vue.js +1 -73
  70. package/dist/dialog/DialogDescription.vue.js +2 -4
  71. package/dist/dialog/DialogFooter.vue.js +2 -4
  72. package/dist/dialog/DialogHeader.vue.js +2 -4
  73. package/dist/dialog/DialogMaximize.vue.js +2 -4
  74. package/dist/dialog/DialogOverlay.vue.js +1 -35
  75. package/dist/dialog/DialogPanel.vue.js +7 -9
  76. package/dist/dialog/DialogPortal.vue.js +1 -38
  77. package/dist/dialog/DialogTitle.vue.js +1 -2
  78. package/dist/dialog/Dialogue.vue.d.ts +22 -0
  79. package/dist/dialog/Dialogue.vue.js +56 -0
  80. package/dist/dialog/dialog.variants.js +4 -5
  81. package/dist/field/Field.vue.js +4 -7
  82. package/dist/field/FieldDescription.vue.js +2 -4
  83. package/dist/field/FieldError.vue.js +3 -5
  84. package/dist/field/FieldGroup.vue.js +2 -4
  85. package/dist/field/FieldLabel.vue.js +3 -5
  86. package/dist/field/FieldSwitch.vue.d.ts +16 -0
  87. package/dist/field/FieldSwitch.vue.js +43 -0
  88. package/dist/field/LayoutField.vue.d.ts +18 -0
  89. package/dist/field/LayoutField.vue.js +1 -0
  90. package/dist/field/ModelInfoField.vue.js +2 -4
  91. package/dist/hover-card/HoverCard.vue.js +1 -3
  92. package/dist/hover-card/HoverCardContent.vue.js +2 -4
  93. package/dist/hover-card/HoverCardTrigger.vue.js +1 -3
  94. package/dist/icon/ComfyLogo.vue.js +2 -4
  95. package/dist/icon/PuzzleIcon.vue.js +2 -4
  96. package/dist/icon/TinyChevronIcon.vue.js +1 -3
  97. package/dist/icon/VerifiedIcon.vue.js +2 -4
  98. package/dist/input/Input.vue.js +1 -2
  99. package/dist/input/PasswordInput.vue.js +5 -7
  100. package/dist/input-group/InputGroup.vue.js +1 -2
  101. package/dist/input-group/InputGroupAddon.vue.js +1 -2
  102. package/dist/input-group/InputGroupButton.vue.js +1 -2
  103. package/dist/input-group/InputGroupInput.vue.js +1 -2
  104. package/dist/input-group/inputGroup.variants.js +1 -2
  105. package/dist/knob/Knob.vue.js +3 -5
  106. package/dist/label/Label.vue.js +1 -2
  107. package/dist/layout/BaseModalLayout.vue.d.ts +67 -0
  108. package/dist/layout/BaseModalLayout.vue.js +198 -0
  109. package/dist/media/AudioPreview.vue.js +2 -4
  110. package/dist/media/ImageLightbox.vue.d.ts +17 -0
  111. package/dist/media/ImageLightbox.vue.js +76 -0
  112. package/dist/media/MediaTitle.vue.js +2 -4
  113. package/dist/media/Video.vue.d.ts +28 -0
  114. package/dist/media/Video.vue.js +100 -0
  115. package/dist/media/VideoPlayOverlay.vue.js +3 -5
  116. package/dist/media/VideoPreview.vue.js +2 -4
  117. package/dist/media/ZoomPane.vue.js +1 -3
  118. package/dist/menu/ContextMenu.vue.js +3 -5
  119. package/dist/menu/ContextMenuContent.vue.js +1 -2
  120. package/dist/menu/Menu.vue.js +3 -5
  121. package/dist/menu/MenuAction.vue.js +1 -2
  122. package/dist/menu/MenuContent.vue.js +1 -2
  123. package/dist/menu/MenuItem.vue.js +2 -4
  124. package/dist/menu/MenuItemContent.vue.js +1 -2
  125. package/dist/menu/MenuItems.vue.js +1 -2
  126. package/dist/menu/MenuRadioGroup.vue.js +1 -2
  127. package/dist/menu/MenuRadioItem.vue.js +1 -2
  128. package/dist/menu/MenuSeparator.vue.js +1 -2
  129. package/dist/menu/MenuSub.vue.js +1 -2
  130. package/dist/menu/MenuSubContent.vue.js +1 -2
  131. package/dist/menu/MenuSubTrigger.vue.js +1 -2
  132. package/dist/menu/MenuSubmenu.vue.js +1 -2
  133. package/dist/menu/menuAnchor.js +1 -2
  134. package/dist/menu/menuStyles.js +1 -2
  135. package/dist/menu/usePointMenu.js +1 -2
  136. package/dist/message/Message.vue.js +4 -6
  137. package/dist/message/message.variants.js +1 -2
  138. package/dist/multi-select/MultiSelect.vue.js +3 -5
  139. package/dist/multi-select/MultiSelectContent.vue.js +1 -2
  140. package/dist/multi-select/MultiSelectTrigger.vue.js +1 -2
  141. package/dist/navigation/LeftSidePanel.vue.d.ts +12 -0
  142. package/dist/navigation/LeftSidePanel.vue.js +82 -0
  143. package/dist/navigation/NavIcon.vue.d.ts +7 -0
  144. package/dist/navigation/NavIcon.vue.js +1 -0
  145. package/dist/navigation/NavItem.vue.d.ts +21 -0
  146. package/dist/navigation/NavItem.vue.js +1 -0
  147. package/dist/navigation/NavTitle.vue.js +1 -42
  148. package/dist/navigation/SidebarTopArea.vue.js +2 -3
  149. package/dist/navigation/types.d.ts +13 -0
  150. package/dist/navigation/types.js +0 -0
  151. package/dist/number-field/NumberField.vue.js +2 -4
  152. package/dist/number-field/NumberFieldDecrement.vue.js +2 -4
  153. package/dist/number-field/NumberFieldIncrement.vue.js +2 -4
  154. package/dist/number-field/NumberFieldInput.vue.js +2 -4
  155. package/dist/number-field/PropertyNumberField.vue.js +3 -5
  156. package/dist/pagination/Pagination.vue.js +8 -10
  157. package/dist/popover/PopoverContent.vue.js +1 -91
  158. package/dist/popover/usePopoverViewportDismiss.js +1 -2
  159. package/dist/radio-group/RadioGroup.vue.js +2 -4
  160. package/dist/radio-group/RadioGroupItem.vue.js +2 -4
  161. package/dist/search-input/AsyncSearchInput.vue.js +3 -5
  162. package/dist/search-input/SearchAutocomplete.vue.js +4 -6
  163. package/dist/search-input/SearchInput.vue.js +4 -6
  164. package/dist/select/DropdownControl.vue.js +2 -4
  165. package/dist/select/Select.vue.js +1 -2
  166. package/dist/select/SelectContent.vue.js +1 -2
  167. package/dist/select/SelectItem.vue.d.ts +4 -0
  168. package/dist/select/SelectItem.vue.js +1 -2
  169. package/dist/select/SelectScrollDownButton.vue.js +1 -2
  170. package/dist/select/SelectScrollUpButton.vue.js +1 -2
  171. package/dist/select/SelectTrigger.vue.js +1 -2
  172. package/dist/select/SelectValue.vue.js +1 -2
  173. package/dist/select/useSelectSearch.js +1 -2
  174. package/dist/shared/{Badge-D3uWa3yk.js → Badge-DFHO3AFi.js} +4 -6
  175. package/dist/shared/{Button-CilmsOkY.js → Button-Dj_H5v3V.js} +5 -8
  176. package/dist/shared/{Card-l7baUdn0.js → Card-BrvqUM49.js} +3 -5
  177. package/dist/shared/{CardFooter-BM6EmVi7.js → CardFooter-BV_I0pM-.js} +2 -4
  178. package/dist/shared/{CardHeader-B5To28Jp.js → CardHeader-CMutruBx.js} +2 -4
  179. package/dist/shared/ColorPickerPanel-DQGHuvxk.js +239 -0
  180. package/dist/shared/ColorPickerSaturationValue-B5VDiMcl.js +64 -0
  181. package/dist/shared/ColorPickerSlider--mnQyzWD.js +305 -0
  182. package/dist/shared/{ContextMenuContent-CNQHJQ81.js → ContextMenuContent-RNyBBJOX.js} +2 -4
  183. package/dist/shared/DialogClose-CrtPRSNX.js +22 -0
  184. package/dist/shared/DialogContent-v2s55FXs.js +71 -0
  185. package/dist/shared/DialogOverlay-C9qv0zme.js +33 -0
  186. package/dist/shared/DialogPortal-DtCpLgtO.js +36 -0
  187. package/dist/shared/{DialogTitle-CfkkTGuU.js → DialogTitle-Chomvpgq.js} +2 -4
  188. package/dist/shared/{Input-39RLwDr2.js → Input-DOeNoniw.js} +2 -4
  189. package/dist/shared/{InputGroup-kjQKkhyB.js → InputGroup-BYt6BWpk.js} +2 -4
  190. package/dist/shared/{InputGroupAddon-DLDRT0CQ.js → InputGroupAddon-B1cn7czs.js} +3 -5
  191. package/dist/shared/{InputGroupButton-BoEp2apg.js → InputGroupButton-tw5AYOoR.js} +3 -5
  192. package/dist/shared/{InputGroupInput-E2MlEVUU.js → InputGroupInput-C_kkIxvY.js} +3 -5
  193. package/dist/shared/{Label-Cx_lFofI.js → Label-kwhWNR2P.js} +2 -4
  194. package/dist/shared/LayoutField-C8KCaVF0.js +34 -0
  195. package/dist/shared/{MenuAction-BdghJ23k.js → MenuAction-0z8BSoX9.js} +5 -8
  196. package/dist/shared/{MenuContent-ChqlM3xA.js → MenuContent--tKCqaIO.js} +2 -4
  197. package/dist/shared/{MenuItemContent--dPNoBmU.js → MenuItemContent-Be658c7e.js} +6 -8
  198. package/dist/shared/{MenuItems-BJKetPV-.js → MenuItems-BZTlERd6.js} +5 -7
  199. package/dist/shared/{MenuRadioGroup-Bpjt9sHI.js → MenuRadioGroup-B28YS1p1.js} +4 -6
  200. package/dist/shared/{MenuRadioItem-h7hh_RGU.js → MenuRadioItem-D8DFu-KU.js} +2 -4
  201. package/dist/shared/{MenuSeparator-Dm6CkPqB.js → MenuSeparator-DrAiObmE.js} +2 -4
  202. package/dist/shared/{MenuSub-Dbnj2w-X.js → MenuSub-DSizq_fV.js} +1 -3
  203. package/dist/shared/{MenuSubContent-M-g3fllh.js → MenuSubContent-ghzkX4hX.js} +2 -4
  204. package/dist/shared/{MenuSubTrigger-D6-3s2NL.js → MenuSubTrigger-BGRIm_Bf.js} +2 -4
  205. package/dist/shared/{MenuSubmenu-QHWMyfKF.js → MenuSubmenu-CjPf8DXl.js} +5 -7
  206. package/dist/shared/{MultiSelectContent-c1D5avjh.js → MultiSelectContent-9xyBQKz3.js} +5 -7
  207. package/dist/shared/{MultiSelectTrigger-lmuXqETa.js → MultiSelectTrigger-DNySkpH9.js} +4 -6
  208. package/dist/shared/NavIcon-FTJH75HH.js +12 -0
  209. package/dist/shared/NavItem-sQJ-77Zw.js +77 -0
  210. package/dist/shared/NavTitle-BM22yfCR.js +40 -0
  211. package/dist/shared/{OverlayIcon-DntJI-mm.js → OverlayIcon-C-din824.js} +3 -5
  212. package/dist/shared/PopoverContent-DNqL6t-O.js +89 -0
  213. package/dist/shared/{SearchableSingleSelect-Dnti1kqJ.js → SearchableSingleSelect-DQauLQWW.js} +4 -6
  214. package/dist/shared/{Select-CP3OZjtL.js → Select-DtVgv7Po.js} +1 -3
  215. package/dist/shared/{SelectContent-C8aNlcFf.js → SelectContent-Ba1mCDWM.js} +4 -6
  216. package/dist/shared/{SelectItem-tU4CIa5J.js → SelectItem-DaOr3TFS.js} +23 -10
  217. package/dist/shared/{SelectScrollDownButton-Dvig5MVc.js → SelectScrollDownButton-DYmxtida.js} +2 -4
  218. package/dist/shared/{SelectScrollUpButton-lv-npT6v.js → SelectScrollUpButton-DiyvSb9O.js} +2 -4
  219. package/dist/shared/{SelectTrigger-CCDiZW91.js → SelectTrigger-BBicbVsI.js} +2 -4
  220. package/dist/shared/{SelectValue-DFZFSiQp.js → SelectValue-BjaQc-WU.js} +1 -3
  221. package/dist/shared/{Switch-DsCzHpDU.js → Switch-qavkHWMz.js} +3 -5
  222. package/dist/shared/{TableHead-OxGist4m.js → TableHead-DpsXVMzk.js} +2 -4
  223. package/dist/shared/{TagRemoveButton-BiCdscIC.js → TagRemoveButton-D919R-To.js} +4 -6
  224. package/dist/shared/{TextTooltip-ClHQl84h.js → TextTooltip-BNlZI515.js} +4 -6
  225. package/dist/shared/{Tooltip-DbXyHv20.js → Tooltip-4rCebVao.js} +2 -4
  226. package/dist/shared/{TooltipContent-Bju-U7gc.js → TooltipContent-0GR7hBNu.js} +3 -5
  227. package/dist/shared/{TooltipTrigger-CVwISmWo.js → TooltipTrigger-64EIE5f2.js} +2 -4
  228. package/dist/shared/TransitionCollapse-VfBzyj5a.js +108 -0
  229. package/dist/shared/{_plugin-vue_export-helper-BOaGB7Aw.js → _plugin-vue_export-helper-DjkACiAr.js} +1 -2
  230. package/dist/shared/{searchInput.variants-NOge_52E.js → searchInput.variants-BdYHNjce.js} +1 -2
  231. package/dist/shared/{select.variants-BPn5Z7N1.js → select.variants-cRXaATWS.js} +1 -2
  232. package/dist/shared/{src-CnJ6AzLP.js → src-DTwuqov4.js} +1 -2
  233. package/dist/shared/{tabKeys-BISOrxWu.js → tabKeys-CP6c3wTY.js} +1 -2
  234. package/dist/shared/{tabs.variants-XUREdHry.js → tabs.variants-Cgk7bRhG.js} +1 -2
  235. package/dist/shared/{tag.variants-CCqCn8Jc.js → tag.variants-BEXRRbPc.js} +1 -2
  236. package/dist/shared/{tagsInputContext-QXu7RrG5.js → tagsInputContext-C-X1-iNf.js} +1 -2
  237. package/dist/shared/{toggleGroup.variants-CvjZDHMw.js → toggleGroup.variants-BuwGELw0.js} +1 -2
  238. package/dist/shared/{tooltipContext-BL5JtM0i.js → tooltipContext-arEyjGQC.js} +1 -2
  239. package/dist/single-select/SearchableSingleSelect.vue.js +1 -2
  240. package/dist/single-select/SingleSelect.vue.js +5 -7
  241. package/dist/skeleton/Skeleton.vue.js +2 -4
  242. package/dist/slider/GradientSlider.vue.d.ts +20 -0
  243. package/dist/slider/GradientSlider.vue.js +100 -0
  244. package/dist/slider/Slider.vue.js +2 -4
  245. package/dist/slider/gradients.d.ts +6 -0
  246. package/dist/spinner/Spinner.vue.js +2 -4
  247. package/dist/splitter/SplitterGroup.vue.js +2 -4
  248. package/dist/splitter/SplitterPanel.vue.js +2 -4
  249. package/dist/splitter/SplitterResizeHandle.vue.js +3 -5
  250. package/dist/switch/Switch.vue.js +1 -2
  251. package/dist/tab/Tab.vue.js +5 -8
  252. package/dist/tab/TabList.vue.js +3 -5
  253. package/dist/tab/TabPanel.vue.js +3 -5
  254. package/dist/table/Table.vue.js +3 -5
  255. package/dist/table/TableBody.vue.js +2 -4
  256. package/dist/table/TableCell.vue.js +2 -4
  257. package/dist/table/TableHead.vue.js +1 -2
  258. package/dist/table/TableHeader.vue.js +2 -4
  259. package/dist/table/TableRow.vue.js +2 -4
  260. package/dist/table/TableSortHead.vue.js +3 -5
  261. package/dist/table/tableUtils.js +1 -2
  262. package/dist/tabs/Tabs.vue.js +2 -4
  263. package/dist/tabs/TabsContent.vue.js +2 -4
  264. package/dist/tabs/TabsList.vue.js +3 -5
  265. package/dist/tabs/TabsTrigger.vue.js +3 -5
  266. package/dist/tags-input/TagsInput.vue.js +4 -6
  267. package/dist/tags-input/TagsInputInput.vue.js +3 -5
  268. package/dist/tags-input/TagsInputItem.vue.js +3 -5
  269. package/dist/tags-input/TagsInputItemDelete.vue.js +2 -4
  270. package/dist/tags-input/TagsInputItemText.vue.js +2 -4
  271. package/dist/textarea/Textarea.vue.js +2 -4
  272. package/dist/toast/ToastClose.vue.js +3 -5
  273. package/dist/toast/ToastDescription.vue.js +2 -4
  274. package/dist/toast/ToastDock.vue.js +2 -4
  275. package/dist/toast/ToastPanel.vue.js +3 -5
  276. package/dist/toast/ToastRoot.vue.js +3 -5
  277. package/dist/toast/ToastTitle.vue.js +2 -4
  278. package/dist/toast/ToastViewport.vue.js +2 -4
  279. package/dist/toggle-group/ToggleGroup.vue.js +3 -5
  280. package/dist/toggle-group/ToggleGroupItem.vue.js +3 -5
  281. package/dist/tooltip/TextTooltip.vue.js +1 -2
  282. package/dist/tooltip/Tooltip.vue.js +1 -2
  283. package/dist/tooltip/TooltipContent.vue.js +1 -2
  284. package/dist/tooltip/TooltipProvider.vue.js +1 -3
  285. package/dist/tooltip/TooltipTrigger.vue.js +1 -2
  286. package/dist/tooltip/tooltipConfig.js +1 -2
  287. package/dist/transition/TransitionCollapse.vue.js +1 -110
  288. package/dist/tree/Tree.vue.d.ts +1 -1
  289. package/dist/tree/Tree.vue.js +2 -4
  290. package/dist/tree/TreeItem.vue.js +4 -6
  291. package/dist/tree/treeStyles.js +1 -2
  292. package/package.json +40 -20
  293. package/src/css/_baseline.css +143 -0
  294. package/src/css/_mask-editor.css +0 -1
  295. package/src/css/baseline.css +3 -0
  296. package/src/css/iconSizing.test.ts +1 -1
  297. package/src/css/published.css +3 -0
  298. package/src/css/style.css +2 -316
  299. package/src/css/theme.css +175 -0
  300. package/src/icons/README.md +41 -84
@@ -0,0 +1,175 @@
1
+ @layer theme, base, components, utilities;
2
+
3
+ @import './fonts.css';
4
+ @import './_baseline.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
+ /* Safelist dynamic comfy icons for node library folders */
11
+ @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}]");
12
+
13
+ /* Badge icon names are built at runtime, so the scanner cannot find them. */
14
+ @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}]");
15
+
16
+ @theme {
17
+ --shadow-inset-highlight: inset 0 1px 0 0 rgb(from white r g b / 0.1);
18
+
19
+ --color-bypass: #6a246a;
20
+ }
21
+
22
+ :root {
23
+ --node-foreground: var(--color-smoke-700);
24
+ --node-header: var(--color-charcoal-700);
25
+ --node-border: var(--color-charcoal-100);
26
+ --node: var(--card);
27
+
28
+ --default-transition-duration: 0.1s;
29
+ --comfy-topbar-height: 2.5rem;
30
+ --workflow-tabs-height: 2.375rem;
31
+ --comfy-textarea-font-size: 10px;
32
+ }
33
+
34
+ @theme inline {
35
+ --color-node: var(--node);
36
+ --color-node-foreground: var(--node-foreground);
37
+ --color-node-header: var(--node-header);
38
+ --color-node-border: var(--node-border);
39
+ }
40
+
41
+ @utility floating-panel {
42
+ border-radius: var(--radius-xl);
43
+ padding: --spacing(1);
44
+ background-color: var(--background);
45
+ box-shadow: var(--shadow-inset-highlight), theme(boxShadow.lg);
46
+ }
47
+
48
+ /* Everthing below here to be cleaned up over time. */
49
+
50
+ :root[data-palette-switching] * {
51
+ transition: none;
52
+ }
53
+
54
+ body {
55
+ width: 100vw;
56
+ height: 100vh;
57
+ margin: 0;
58
+ overflow: hidden;
59
+ min-height: -webkit-fill-available;
60
+ max-height: -webkit-fill-available;
61
+ min-width: -webkit-fill-available;
62
+ max-width: -webkit-fill-available;
63
+ font-family: Inter, Arial, sans-serif;
64
+ background-color: var(--background);
65
+ color: var(--foreground);
66
+ }
67
+
68
+ .comfy-multiline-input {
69
+ background-color: var(--input);
70
+ color: var(--foreground);
71
+ overflow: hidden;
72
+ overflow-y: auto;
73
+ padding: 2px;
74
+ resize: none;
75
+ border: none;
76
+ box-sizing: border-box;
77
+ font-family: var(--font-mono);
78
+ font-size: var(--comfy-textarea-font-size);
79
+ }
80
+
81
+ @import './_markdown.css';
82
+
83
+ @import './_legacy-ui.css';
84
+
85
+ audio.comfy-audio.empty-audio-widget {
86
+ display: none;
87
+ }
88
+
89
+ #vue-app {
90
+ position: absolute;
91
+ top: 0;
92
+ left: 0;
93
+ width: 100%;
94
+ height: 100%;
95
+ }
96
+
97
+ /* [Desktop] Electron window specific styles */
98
+ .app-drag {
99
+ app-region: drag;
100
+ }
101
+
102
+ .no-drag {
103
+ app-region: no-drag;
104
+ }
105
+
106
+ .window-actions-spacer {
107
+ width: calc(100vw - env(titlebar-area-width, 100vw));
108
+ }
109
+ /* End of [Desktop] Electron window specific styles */
110
+
111
+ .lg-node {
112
+ /* Disable text selection on all nodes */
113
+ user-select: none;
114
+ }
115
+
116
+ .lg-node .lg-slot {
117
+ transition:
118
+ opacity 0.1s ease,
119
+ font-size 0.1s ease;
120
+ }
121
+
122
+ @import './_mask-editor.css';
123
+
124
+ /* ===================== Skeleton Shimmer ===================== */
125
+ .skeleton-shimmer {
126
+ background:
127
+ linear-gradient(135deg, rgb(188 188 188 / 0.5) 0%, rgb(0 0 0 / 0.5) 100%) 0
128
+ 0 / 200% 200%,
129
+ #000;
130
+ animation: skeleton-shimmer 2s ease-in-out infinite;
131
+ }
132
+
133
+ @keyframes skeleton-shimmer {
134
+ 0%,
135
+ 100% {
136
+ background-position: 100% 100%;
137
+ }
138
+ 50% {
139
+ background-position: 0 0;
140
+ }
141
+ }
142
+
143
+ @utility scroll-shadows-* {
144
+ overflow: auto;
145
+
146
+ background:
147
+ /* Shadow Cover TOP */
148
+ linear-gradient(--value(--color-*) 30%, transparent) center top,
149
+ /* Shadow Cover BOTTOM */
150
+ linear-gradient(transparent, --value(--color-*) 70%) center bottom,
151
+ /* Shadow TOP */
152
+ radial-gradient(
153
+ farthest-side at 50% 0,
154
+ color-mix(in oklab, --value(--color-*), #777777 35%),
155
+ 60%,
156
+ transparent
157
+ )
158
+ center top,
159
+ /* Shadow BOTTOM */
160
+ radial-gradient(
161
+ farthest-side at 50% 100%,
162
+ color-mix(in oklab, --value(--color-*), #777777 35%),
163
+ 60%,
164
+ transparent
165
+ )
166
+ center bottom;
167
+
168
+ background-repeat: no-repeat;
169
+ background-size:
170
+ 300% 40px,
171
+ 300% 40px,
172
+ 300% 14px,
173
+ 300% 14px;
174
+ background-attachment: local, local, scroll, scroll;
175
+ }
@@ -1,62 +1,34 @@
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 a design-system Button -->
17
- <Button>
18
- <i class="pi pi-save" />
19
- Save
20
- </Button>
21
- </template>
22
- ```
23
-
24
- [Browse all PrimeIcons →](https://github.com/primefaces/primeicons)
25
-
26
- ### 2. Iconify Icons (Recommended)
9
+ ### 1. Lucide Icons
27
10
 
28
11
  ```vue
29
12
  <template>
30
- <!-- Primary icon set: Lucide -->
31
13
  <i class="icon-[lucide--download]" />
32
14
  <i class="icon-[lucide--settings]" />
33
- <i class="icon-[lucide--workflow]" class="text-2xl" />
34
-
35
- <!-- Other popular icon sets -->
36
- <i-mdi:folder-open />
37
- <!-- Material Design Icons -->
38
- <i-heroicons:document-text />
39
- <!-- Heroicons -->
40
- <i-tabler:brand-github />
41
- <!-- Tabler Icons -->
42
- <i-carbon:cloud-upload />
43
- <!-- Carbon Icons -->
15
+ <i class="icon-[lucide--workflow] size-6" />
44
16
 
45
17
  <!-- With styling -->
46
- <i class="icon-[lucide--save]" class="w-6 h-6 text-blue-500" />
18
+ <i class="icon-[lucide--save] size-6 text-blue-500" />
47
19
  </template>
48
20
  ```
49
21
 
50
- [Browse 200,000+ icons →](https://icon-sets.iconify.design/)
22
+ [Browse Lucide icons →](https://lucide.dev/icons/)
51
23
 
52
- ### 3. Custom Icons
24
+ ### 2. Custom Icons
53
25
 
54
26
  ```vue
55
27
  <template>
56
28
  <!-- Your custom SVG icons from packages/design-system/src/icons/ -->
57
29
  <i-comfy:workflow />
58
30
  <i-comfy:node-tree />
59
- <i-comfy:my-custom-icon class="text-xl" />
31
+ <i-comfy:my-custom-icon class="size-5" />
60
32
 
61
33
  <!-- In a design-system Button -->
62
34
  <Button variant="secondary">
@@ -71,13 +43,6 @@ 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 -->
75
- <Button>
76
- <i class="pi pi-check" />
77
- Confirm
78
- </Button>
79
-
80
- <!-- Iconify/Custom in button -->
81
46
  <Button>
82
47
  <i class="icon-[lucide--save]" />
83
48
  Save File
@@ -115,22 +80,11 @@ can reach it. See `packages/design-system/src/components/tooltip/README.md` for
115
80
  </template>
116
81
  ```
117
82
 
118
- ## Using Iconify Icons
83
+ ## Finding Lucide Icons
119
84
 
120
- ### Finding Icons
121
-
122
- 1. Visit [Iconify Icon Sets](https://icon-sets.iconify.design/)
123
- 2. Search or browse collections
124
- 3. Click on any icon to get its name
125
- 4. Use with `i-[collection]:[icon-name]` format
126
-
127
- ### Popular Collections
128
-
129
- - **Lucide** (`i-lucide:`) - Our primary icon set, clean and consistent
130
- - **Material Design Icons** (`i-mdi:`) - Comprehensive Material Design icons
131
- - **Heroicons** (`i-heroicons:`) - Beautiful hand-crafted SVG icons
132
- - **Tabler** (`i-tabler:`) - 3000+ free SVG icons
133
- - **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]`
134
88
 
135
89
  ## Adding Custom Icons
136
90
 
@@ -208,23 +162,20 @@ claude.svg fill="#d97757" -> image (brand color preserved)
208
162
 
209
163
  ### Size & Styling
210
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
+
211
167
  ```vue
212
168
  <template>
213
- <!-- Size with Tailwind classes -->
214
- <i class="icon-[lucide--plus]" class="w-4 h-4" />
215
- <!-- 16px -->
216
- <i class="icon-[lucide--plus]" class="w-6 h-6" />
217
- <!-- 24px (default) -->
218
- <i class="icon-[lucide--plus]" class="w-8 h-8" />
219
- <!-- 32px -->
220
-
221
- <!-- Or text size -->
222
- <i class="icon-[lucide--plus]" class="text-sm" />
223
- <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 -->
224
175
 
225
176
  <!-- Colors -->
226
- <i class="icon-[lucide--check]" class="text-green-500" />
227
- <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" />
228
179
  </template>
229
180
  ```
230
181
 
@@ -262,6 +213,20 @@ Always use `currentColor` in SVGs for automatic theme adaptation:
262
213
  </template>
263
214
  ```
264
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
+
265
230
  ### From Inline SVG to Custom Icon
266
231
 
267
232
  ```vue
@@ -276,6 +241,10 @@ Always use `currentColor` in SVGs for automatic theme adaptation:
276
241
  </template>
277
242
  ```
278
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
+
279
248
  ## Technical Details
280
249
 
281
250
  ### Auto-Import System
@@ -287,7 +256,7 @@ Icons are automatically imported using `unplugin-icons` - no manual imports need
287
256
  The icon system has two layers:
288
257
 
289
258
  1. **Tailwind CSS Plugin** (`@iconify/tailwind4`):
290
- - 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`
291
260
  - Uses `from-folder(comfy, ...)` to load SVGs from `packages/design-system/src/icons/`
292
261
  - Auto-cleans and optimizes SVGs at build time
293
262
 
@@ -352,19 +321,7 @@ Icons are fully typed. If TypeScript doesn't recognize a new custom icon:
352
321
  4. **Theme support**: Always use `currentColor` for adaptable icons
353
322
  5. **Test both themes**: Verify icons look good in light and dark modes
354
323
 
355
- ## Adding Icon Collections
356
-
357
- To add an entire icon set from npm:
358
-
359
- 1. Install the icon package
360
- 2. Configure in `vite.config.mts`
361
- 3. Use with the appropriate prefix
362
-
363
- See the [unplugin-icons documentation](https://github.com/unplugin/unplugin-icons) for details.
364
-
365
324
  ## Resources
366
325
 
367
- - [PrimeIcons List](https://github.com/primefaces/primeicons)
368
- - [Iconify Icon Browser](https://icon-sets.iconify.design/)
369
326
  - [Lucide Icons](https://lucide.dev/icons/)
370
327
  - [unplugin-icons docs](https://github.com/unplugin/unplugin-icons)