@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.
- package/README.md +33 -3
- package/dist/accordion/PropertiesAccordionItem.vue.d.ts +34 -0
- package/dist/accordion/PropertiesAccordionItem.vue.js +62 -0
- package/dist/badge/Badge.vue.js +1 -2
- package/dist/badge/CreditBadge.vue.d.ts +0 -1
- package/dist/badge/CreditBadge.vue.js +10 -24
- package/dist/badge/badge.variants.d.ts +1 -1
- package/dist/button/Button.vue.js +1 -2
- package/dist/button-group/ButtonGroup.vue.js +2 -4
- package/dist/button-group/IconGroup.vue.js +2 -4
- package/dist/card/Card.vue.js +1 -2
- package/dist/card/CardFooter.vue.js +1 -2
- package/dist/card/CardHeader.vue.js +1 -2
- package/dist/card/CoachmarkCard.vue.js +2 -4
- package/dist/chart/Chart.vue.js +4 -7
- package/dist/chart/__tests__/chartTestUtils.d.ts +3 -0
- package/dist/checkbox/Checkbox.vue.js +2 -4
- package/dist/chip/Tag.vue.d.ts +61 -0
- package/dist/chip/Tag.vue.js +71 -0
- package/dist/chip/TagRemoveButton.vue.js +1 -2
- package/dist/color-picker/ColorPicker.vue.d.ts +23 -0
- package/dist/color-picker/ColorPicker.vue.js +139 -0
- package/dist/color-picker/ColorPickerPanel.vue.d.ts +27 -0
- package/dist/color-picker/ColorPickerPanel.vue.js +1 -0
- package/dist/color-picker/ColorPickerSaturationValue.vue.d.ts +17 -0
- package/dist/color-picker/ColorPickerSaturationValue.vue.js +1 -0
- package/dist/color-picker/ColorPickerSlider.vue.d.ts +17 -0
- package/dist/color-picker/ColorPickerSlider.vue.js +1 -0
- package/dist/color-picker/types.d.ts +22 -0
- package/dist/color-picker/types.js +0 -0
- package/dist/color-picker/useColorPicker.d.ts +33 -0
- package/dist/common/CanvasBanner.vue.js +3 -5
- package/dist/common/ContentDivider.vue.js +2 -4
- package/dist/common/CustomFormValue.vue.js +1 -3
- package/dist/common/DotSpinner.vue.js +3 -5
- package/dist/common/EditableText.vue.js +3 -5
- package/dist/common/HighlightedText.vue.d.ts +8 -0
- package/dist/common/HighlightedText.vue.js +50 -0
- package/dist/common/LoadingOverlay.vue.js +3 -5
- package/dist/common/MarkdownText.vue.js +2 -4
- package/dist/common/MarqueeLine.vue.js +2 -3
- package/dist/common/NoResultsPlaceholder.vue.d.ts +28 -0
- package/dist/common/NoResultsPlaceholder.vue.js +49 -0
- package/dist/common/NotificationPopup.vue.d.ts +28 -0
- package/dist/common/NotificationPopup.vue.js +63 -0
- package/dist/common/OverlayIcon.vue.js +1 -2
- package/dist/common/SanitizedHtml.vue.js +2 -4
- package/dist/common/TextDivider.vue.js +3 -5
- package/dist/common/TextTicker.vue.js +2 -4
- package/dist/common/TextTickerMultiLine.vue.js +3 -6
- package/dist/common/UserAvatar.vue.d.ts +9 -0
- package/dist/common/UserAvatar.vue.js +45 -0
- package/dist/common/VerticalDivider.vue.js +2 -3
- package/dist/common/VideoCompareSlider.vue.js +3 -5
- package/dist/common/ViewportWidgetShell.vue.js +3 -5
- package/dist/common/VirtualGrid.vue.js +1 -3
- package/dist/common/highlightQuery.d.ts +6 -0
- package/dist/composables/useAttrsClass.js +1 -2
- package/dist/composables/usePopoverSizing.js +1 -2
- package/dist/confirm/ConfirmBody.vue.js +3 -5
- package/dist/confirm/ConfirmFooter.vue.d.ts +18 -0
- package/dist/confirm/ConfirmFooter.vue.js +53 -0
- package/dist/confirm/ConfirmHeader.vue.js +2 -4
- package/dist/content-card/CardBottom.vue.js +2 -4
- package/dist/content-card/CardContainer.vue.js +3 -5
- package/dist/content-card/CardTop.vue.js +2 -4
- package/dist/dialog/Dialog.vue.js +1 -3
- package/dist/dialog/DialogClose.vue.js +1 -24
- package/dist/dialog/DialogContent.vue.js +1 -73
- package/dist/dialog/DialogDescription.vue.js +2 -4
- package/dist/dialog/DialogFooter.vue.js +2 -4
- package/dist/dialog/DialogHeader.vue.js +2 -4
- package/dist/dialog/DialogMaximize.vue.js +2 -4
- package/dist/dialog/DialogOverlay.vue.js +1 -35
- package/dist/dialog/DialogPanel.vue.js +7 -9
- package/dist/dialog/DialogPortal.vue.js +1 -38
- package/dist/dialog/DialogTitle.vue.js +1 -2
- package/dist/dialog/Dialogue.vue.d.ts +22 -0
- package/dist/dialog/Dialogue.vue.js +56 -0
- package/dist/dialog/dialog.variants.js +4 -5
- package/dist/field/Field.vue.js +4 -7
- package/dist/field/FieldDescription.vue.js +2 -4
- package/dist/field/FieldError.vue.js +3 -5
- package/dist/field/FieldGroup.vue.js +2 -4
- package/dist/field/FieldLabel.vue.js +3 -5
- package/dist/field/FieldSwitch.vue.d.ts +16 -0
- package/dist/field/FieldSwitch.vue.js +43 -0
- package/dist/field/LayoutField.vue.d.ts +18 -0
- package/dist/field/LayoutField.vue.js +1 -0
- package/dist/field/ModelInfoField.vue.js +2 -4
- package/dist/hover-card/HoverCard.vue.js +1 -3
- package/dist/hover-card/HoverCardContent.vue.js +2 -4
- package/dist/hover-card/HoverCardTrigger.vue.js +1 -3
- package/dist/icon/ComfyLogo.vue.js +2 -4
- package/dist/icon/PuzzleIcon.vue.js +2 -4
- package/dist/icon/TinyChevronIcon.vue.js +1 -3
- package/dist/icon/VerifiedIcon.vue.js +2 -4
- package/dist/input/Input.vue.js +1 -2
- package/dist/input/PasswordInput.vue.js +5 -7
- package/dist/input-group/InputGroup.vue.js +1 -2
- package/dist/input-group/InputGroupAddon.vue.js +1 -2
- package/dist/input-group/InputGroupButton.vue.js +1 -2
- package/dist/input-group/InputGroupInput.vue.js +1 -2
- package/dist/input-group/inputGroup.variants.js +1 -2
- package/dist/knob/Knob.vue.js +3 -5
- package/dist/label/Label.vue.js +1 -2
- package/dist/layout/BaseModalLayout.vue.d.ts +67 -0
- package/dist/layout/BaseModalLayout.vue.js +198 -0
- package/dist/media/AudioPreview.vue.js +2 -4
- package/dist/media/ImageLightbox.vue.d.ts +17 -0
- package/dist/media/ImageLightbox.vue.js +76 -0
- package/dist/media/MediaTitle.vue.js +2 -4
- package/dist/media/Video.vue.d.ts +28 -0
- package/dist/media/Video.vue.js +100 -0
- package/dist/media/VideoPlayOverlay.vue.js +3 -5
- package/dist/media/VideoPreview.vue.js +2 -4
- package/dist/media/ZoomPane.vue.js +1 -3
- package/dist/menu/ContextMenu.vue.js +3 -5
- package/dist/menu/ContextMenuContent.vue.js +1 -2
- package/dist/menu/Menu.vue.js +3 -5
- package/dist/menu/MenuAction.vue.js +1 -2
- package/dist/menu/MenuContent.vue.js +1 -2
- package/dist/menu/MenuItem.vue.js +2 -4
- package/dist/menu/MenuItemContent.vue.js +1 -2
- package/dist/menu/MenuItems.vue.js +1 -2
- package/dist/menu/MenuRadioGroup.vue.js +1 -2
- package/dist/menu/MenuRadioItem.vue.js +1 -2
- package/dist/menu/MenuSeparator.vue.js +1 -2
- package/dist/menu/MenuSub.vue.js +1 -2
- package/dist/menu/MenuSubContent.vue.js +1 -2
- package/dist/menu/MenuSubTrigger.vue.js +1 -2
- package/dist/menu/MenuSubmenu.vue.js +1 -2
- package/dist/menu/menuAnchor.js +1 -2
- package/dist/menu/menuStyles.js +1 -2
- package/dist/menu/usePointMenu.js +1 -2
- package/dist/message/Message.vue.js +4 -6
- package/dist/message/message.variants.js +1 -2
- package/dist/multi-select/MultiSelect.vue.js +3 -5
- package/dist/multi-select/MultiSelectContent.vue.js +1 -2
- package/dist/multi-select/MultiSelectTrigger.vue.js +1 -2
- package/dist/navigation/LeftSidePanel.vue.d.ts +12 -0
- package/dist/navigation/LeftSidePanel.vue.js +82 -0
- package/dist/navigation/NavIcon.vue.d.ts +7 -0
- package/dist/navigation/NavIcon.vue.js +1 -0
- package/dist/navigation/NavItem.vue.d.ts +21 -0
- package/dist/navigation/NavItem.vue.js +1 -0
- package/dist/navigation/NavTitle.vue.js +1 -42
- package/dist/navigation/SidebarTopArea.vue.js +2 -3
- package/dist/navigation/types.d.ts +13 -0
- package/dist/navigation/types.js +0 -0
- package/dist/number-field/NumberField.vue.js +2 -4
- package/dist/number-field/NumberFieldDecrement.vue.js +2 -4
- package/dist/number-field/NumberFieldIncrement.vue.js +2 -4
- package/dist/number-field/NumberFieldInput.vue.js +2 -4
- package/dist/number-field/PropertyNumberField.vue.js +3 -5
- package/dist/pagination/Pagination.vue.js +8 -10
- package/dist/popover/PopoverContent.vue.js +1 -91
- package/dist/popover/usePopoverViewportDismiss.js +1 -2
- package/dist/radio-group/RadioGroup.vue.js +2 -4
- package/dist/radio-group/RadioGroupItem.vue.js +2 -4
- package/dist/search-input/AsyncSearchInput.vue.js +3 -5
- package/dist/search-input/SearchAutocomplete.vue.js +4 -6
- package/dist/search-input/SearchInput.vue.js +4 -6
- package/dist/select/DropdownControl.vue.js +2 -4
- package/dist/select/Select.vue.js +1 -2
- package/dist/select/SelectContent.vue.js +1 -2
- package/dist/select/SelectItem.vue.d.ts +4 -0
- package/dist/select/SelectItem.vue.js +1 -2
- package/dist/select/SelectScrollDownButton.vue.js +1 -2
- package/dist/select/SelectScrollUpButton.vue.js +1 -2
- package/dist/select/SelectTrigger.vue.js +1 -2
- package/dist/select/SelectValue.vue.js +1 -2
- package/dist/select/useSelectSearch.js +1 -2
- package/dist/shared/{Badge-D3uWa3yk.js → Badge-DFHO3AFi.js} +4 -6
- package/dist/shared/{Button-CilmsOkY.js → Button-Dj_H5v3V.js} +5 -8
- package/dist/shared/{Card-l7baUdn0.js → Card-BrvqUM49.js} +3 -5
- package/dist/shared/{CardFooter-BM6EmVi7.js → CardFooter-BV_I0pM-.js} +2 -4
- package/dist/shared/{CardHeader-B5To28Jp.js → CardHeader-CMutruBx.js} +2 -4
- package/dist/shared/ColorPickerPanel-DQGHuvxk.js +239 -0
- package/dist/shared/ColorPickerSaturationValue-B5VDiMcl.js +64 -0
- package/dist/shared/ColorPickerSlider--mnQyzWD.js +305 -0
- package/dist/shared/{ContextMenuContent-CNQHJQ81.js → ContextMenuContent-RNyBBJOX.js} +2 -4
- package/dist/shared/DialogClose-CrtPRSNX.js +22 -0
- package/dist/shared/DialogContent-v2s55FXs.js +71 -0
- package/dist/shared/DialogOverlay-C9qv0zme.js +33 -0
- package/dist/shared/DialogPortal-DtCpLgtO.js +36 -0
- package/dist/shared/{DialogTitle-CfkkTGuU.js → DialogTitle-Chomvpgq.js} +2 -4
- package/dist/shared/{Input-39RLwDr2.js → Input-DOeNoniw.js} +2 -4
- package/dist/shared/{InputGroup-kjQKkhyB.js → InputGroup-BYt6BWpk.js} +2 -4
- package/dist/shared/{InputGroupAddon-DLDRT0CQ.js → InputGroupAddon-B1cn7czs.js} +3 -5
- package/dist/shared/{InputGroupButton-BoEp2apg.js → InputGroupButton-tw5AYOoR.js} +3 -5
- package/dist/shared/{InputGroupInput-E2MlEVUU.js → InputGroupInput-C_kkIxvY.js} +3 -5
- package/dist/shared/{Label-Cx_lFofI.js → Label-kwhWNR2P.js} +2 -4
- package/dist/shared/LayoutField-C8KCaVF0.js +34 -0
- package/dist/shared/{MenuAction-BdghJ23k.js → MenuAction-0z8BSoX9.js} +5 -8
- package/dist/shared/{MenuContent-ChqlM3xA.js → MenuContent--tKCqaIO.js} +2 -4
- package/dist/shared/{MenuItemContent--dPNoBmU.js → MenuItemContent-Be658c7e.js} +6 -8
- package/dist/shared/{MenuItems-BJKetPV-.js → MenuItems-BZTlERd6.js} +5 -7
- package/dist/shared/{MenuRadioGroup-Bpjt9sHI.js → MenuRadioGroup-B28YS1p1.js} +4 -6
- package/dist/shared/{MenuRadioItem-h7hh_RGU.js → MenuRadioItem-D8DFu-KU.js} +2 -4
- package/dist/shared/{MenuSeparator-Dm6CkPqB.js → MenuSeparator-DrAiObmE.js} +2 -4
- package/dist/shared/{MenuSub-Dbnj2w-X.js → MenuSub-DSizq_fV.js} +1 -3
- package/dist/shared/{MenuSubContent-M-g3fllh.js → MenuSubContent-ghzkX4hX.js} +2 -4
- package/dist/shared/{MenuSubTrigger-D6-3s2NL.js → MenuSubTrigger-BGRIm_Bf.js} +2 -4
- package/dist/shared/{MenuSubmenu-QHWMyfKF.js → MenuSubmenu-CjPf8DXl.js} +5 -7
- package/dist/shared/{MultiSelectContent-c1D5avjh.js → MultiSelectContent-9xyBQKz3.js} +5 -7
- package/dist/shared/{MultiSelectTrigger-lmuXqETa.js → MultiSelectTrigger-DNySkpH9.js} +4 -6
- package/dist/shared/NavIcon-FTJH75HH.js +12 -0
- package/dist/shared/NavItem-sQJ-77Zw.js +77 -0
- package/dist/shared/NavTitle-BM22yfCR.js +40 -0
- package/dist/shared/{OverlayIcon-DntJI-mm.js → OverlayIcon-C-din824.js} +3 -5
- package/dist/shared/PopoverContent-DNqL6t-O.js +89 -0
- package/dist/shared/{SearchableSingleSelect-Dnti1kqJ.js → SearchableSingleSelect-DQauLQWW.js} +4 -6
- package/dist/shared/{Select-CP3OZjtL.js → Select-DtVgv7Po.js} +1 -3
- package/dist/shared/{SelectContent-C8aNlcFf.js → SelectContent-Ba1mCDWM.js} +4 -6
- package/dist/shared/{SelectItem-tU4CIa5J.js → SelectItem-DaOr3TFS.js} +23 -10
- package/dist/shared/{SelectScrollDownButton-Dvig5MVc.js → SelectScrollDownButton-DYmxtida.js} +2 -4
- package/dist/shared/{SelectScrollUpButton-lv-npT6v.js → SelectScrollUpButton-DiyvSb9O.js} +2 -4
- package/dist/shared/{SelectTrigger-CCDiZW91.js → SelectTrigger-BBicbVsI.js} +2 -4
- package/dist/shared/{SelectValue-DFZFSiQp.js → SelectValue-BjaQc-WU.js} +1 -3
- package/dist/shared/{Switch-DsCzHpDU.js → Switch-qavkHWMz.js} +3 -5
- package/dist/shared/{TableHead-OxGist4m.js → TableHead-DpsXVMzk.js} +2 -4
- package/dist/shared/{TagRemoveButton-BiCdscIC.js → TagRemoveButton-D919R-To.js} +4 -6
- package/dist/shared/{TextTooltip-ClHQl84h.js → TextTooltip-BNlZI515.js} +4 -6
- package/dist/shared/{Tooltip-DbXyHv20.js → Tooltip-4rCebVao.js} +2 -4
- package/dist/shared/{TooltipContent-Bju-U7gc.js → TooltipContent-0GR7hBNu.js} +3 -5
- package/dist/shared/{TooltipTrigger-CVwISmWo.js → TooltipTrigger-64EIE5f2.js} +2 -4
- package/dist/shared/TransitionCollapse-VfBzyj5a.js +108 -0
- package/dist/shared/{_plugin-vue_export-helper-BOaGB7Aw.js → _plugin-vue_export-helper-DjkACiAr.js} +1 -2
- package/dist/shared/{searchInput.variants-NOge_52E.js → searchInput.variants-BdYHNjce.js} +1 -2
- package/dist/shared/{select.variants-BPn5Z7N1.js → select.variants-cRXaATWS.js} +1 -2
- package/dist/shared/{src-CnJ6AzLP.js → src-DTwuqov4.js} +1 -2
- package/dist/shared/{tabKeys-BISOrxWu.js → tabKeys-CP6c3wTY.js} +1 -2
- package/dist/shared/{tabs.variants-XUREdHry.js → tabs.variants-Cgk7bRhG.js} +1 -2
- package/dist/shared/{tag.variants-CCqCn8Jc.js → tag.variants-BEXRRbPc.js} +1 -2
- package/dist/shared/{tagsInputContext-QXu7RrG5.js → tagsInputContext-C-X1-iNf.js} +1 -2
- package/dist/shared/{toggleGroup.variants-CvjZDHMw.js → toggleGroup.variants-BuwGELw0.js} +1 -2
- package/dist/shared/{tooltipContext-BL5JtM0i.js → tooltipContext-arEyjGQC.js} +1 -2
- package/dist/single-select/SearchableSingleSelect.vue.js +1 -2
- package/dist/single-select/SingleSelect.vue.js +5 -7
- package/dist/skeleton/Skeleton.vue.js +2 -4
- package/dist/slider/GradientSlider.vue.d.ts +20 -0
- package/dist/slider/GradientSlider.vue.js +100 -0
- package/dist/slider/Slider.vue.js +2 -4
- package/dist/slider/gradients.d.ts +6 -0
- package/dist/spinner/Spinner.vue.js +2 -4
- package/dist/splitter/SplitterGroup.vue.js +2 -4
- package/dist/splitter/SplitterPanel.vue.js +2 -4
- package/dist/splitter/SplitterResizeHandle.vue.js +3 -5
- package/dist/switch/Switch.vue.js +1 -2
- package/dist/tab/Tab.vue.js +5 -8
- package/dist/tab/TabList.vue.js +3 -5
- package/dist/tab/TabPanel.vue.js +3 -5
- package/dist/table/Table.vue.js +3 -5
- package/dist/table/TableBody.vue.js +2 -4
- package/dist/table/TableCell.vue.js +2 -4
- package/dist/table/TableHead.vue.js +1 -2
- package/dist/table/TableHeader.vue.js +2 -4
- package/dist/table/TableRow.vue.js +2 -4
- package/dist/table/TableSortHead.vue.js +3 -5
- package/dist/table/tableUtils.js +1 -2
- package/dist/tabs/Tabs.vue.js +2 -4
- package/dist/tabs/TabsContent.vue.js +2 -4
- package/dist/tabs/TabsList.vue.js +3 -5
- package/dist/tabs/TabsTrigger.vue.js +3 -5
- package/dist/tags-input/TagsInput.vue.js +4 -6
- package/dist/tags-input/TagsInputInput.vue.js +3 -5
- package/dist/tags-input/TagsInputItem.vue.js +3 -5
- package/dist/tags-input/TagsInputItemDelete.vue.js +2 -4
- package/dist/tags-input/TagsInputItemText.vue.js +2 -4
- package/dist/textarea/Textarea.vue.js +2 -4
- package/dist/toast/ToastClose.vue.js +3 -5
- package/dist/toast/ToastDescription.vue.js +2 -4
- package/dist/toast/ToastDock.vue.js +2 -4
- package/dist/toast/ToastPanel.vue.js +3 -5
- package/dist/toast/ToastRoot.vue.js +3 -5
- package/dist/toast/ToastTitle.vue.js +2 -4
- package/dist/toast/ToastViewport.vue.js +2 -4
- package/dist/toggle-group/ToggleGroup.vue.js +3 -5
- package/dist/toggle-group/ToggleGroupItem.vue.js +3 -5
- package/dist/tooltip/TextTooltip.vue.js +1 -2
- package/dist/tooltip/Tooltip.vue.js +1 -2
- package/dist/tooltip/TooltipContent.vue.js +1 -2
- package/dist/tooltip/TooltipProvider.vue.js +1 -3
- package/dist/tooltip/TooltipTrigger.vue.js +1 -2
- package/dist/tooltip/tooltipConfig.js +1 -2
- package/dist/transition/TransitionCollapse.vue.js +1 -110
- package/dist/tree/Tree.vue.d.ts +1 -1
- package/dist/tree/Tree.vue.js +2 -4
- package/dist/tree/TreeItem.vue.js +4 -6
- package/dist/tree/treeStyles.js +1 -2
- package/package.json +40 -20
- package/src/css/_baseline.css +143 -0
- package/src/css/_mask-editor.css +0 -1
- package/src/css/baseline.css +3 -0
- package/src/css/iconSizing.test.ts +1 -1
- package/src/css/published.css +3 -0
- package/src/css/style.css +2 -316
- package/src/css/theme.css +175 -0
- 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
|
+
}
|
package/src/icons/README.md
CHANGED
|
@@ -1,62 +1,34 @@
|
|
|
1
1
|
# ComfyUI Icons Guide
|
|
2
2
|
|
|
3
|
-
ComfyUI supports
|
|
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
|
-
|
|
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
|
-
|
|
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]
|
|
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]
|
|
18
|
+
<i class="icon-[lucide--save] size-6 text-blue-500" />
|
|
47
19
|
</template>
|
|
48
20
|
```
|
|
49
21
|
|
|
50
|
-
[Browse
|
|
22
|
+
[Browse Lucide icons →](https://lucide.dev/icons/)
|
|
51
23
|
|
|
52
|
-
###
|
|
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="
|
|
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
|
-
##
|
|
83
|
+
## Finding Lucide Icons
|
|
119
84
|
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
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
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
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]
|
|
227
|
-
<i class="icon-[lucide--x]
|
|
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/
|
|
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)
|