From 57db10f408e776be47ec10ca7880d4ac8ccb74ec Mon Sep 17 00:00:00 2001 From: Rizumu Ayaka Date: Sat, 23 Aug 2025 12:49:13 +0800 Subject: [PATCH] feat: v3 style of node body (#5169) * feat: v3 style of node body * Update src/renderer/extensions/vueNodes/components/LGraphNode.vue * fix: review's issues * fix: review's issue --- CLAUDE.md | 3 + package.json | 2 + src/assets/css/style.css | 57 ++++++- .../graph/vueWidgets/WidgetInputText.vue | 10 +- .../graph/vueWidgets/WidgetMultiSelect.vue | 10 +- .../graph/vueWidgets/WidgetSlider.vue | 17 +-- .../graph/vueWidgets/WidgetToggleSwitch.vue | 8 +- .../graph/vueWidgets/WidgetTreeSelect.vue | 10 +- .../vueNodes/components/InputSlot.vue | 7 +- .../vueNodes/components/LGraphNode.vue | 142 +++++++++++------- .../vueNodes/components/MultiSlotPoint.vue | 12 ++ .../vueNodes/components/NodeHeader.vue | 40 +---- .../vueNodes/components/OutputSlot.vue | 7 +- .../widgets/components/WidgetInputText.vue | 11 +- .../widgets/components/WidgetMultiSelect.vue | 11 +- .../widgets/components/WidgetSelect.vue | 18 +-- .../widgets/components/WidgetSelectButton.vue | 11 +- .../widgets/components/WidgetSlider.vue | 21 ++- .../widgets/components/WidgetToggleSwitch.vue | 9 +- .../widgets/components/WidgetTreeSelect.vue | 11 +- .../components/layout/WidgetLayoutField.vue | 28 ++++ src/utils/tailwindUtil.ts | 6 + tailwind.config.js | 1 + 23 files changed, 269 insertions(+), 183 deletions(-) create mode 100644 src/renderer/extensions/vueNodes/components/MultiSlotPoint.vue create mode 100644 src/renderer/extensions/vueNodes/widgets/components/layout/WidgetLayoutField.vue create mode 100644 src/utils/tailwindUtil.ts diff --git a/CLAUDE.md b/CLAUDE.md index 0aee6cc32..8501579e1 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -89,3 +89,6 @@ When referencing Comfy-Org repos: - NEVER use `--no-verify` flag when committing - NEVER delete or disable tests to make them pass - NEVER circumvent quality checks +- NEVER use `dark:` prefix - always use `dark-theme:` for dark mode styles, for example: `dark-theme:text-white dark-theme:bg-black` +- NEVER use `:class="[]"` to merge class names - always use `import { cn } from '@/utils/tailwindUtil'`, for example: `
` + diff --git a/package.json b/package.json index c802f17f6..455a8871e 100644 --- a/package.json +++ b/package.json @@ -130,6 +130,7 @@ "algoliasearch": "^5.21.0", "axios": "^1.8.2", "chart.js": "^4.5.0", + "clsx": "^2.1.1", "dompurify": "^3.2.5", "dotenv": "^16.4.5", "es-toolkit": "^1.39.9", @@ -146,6 +147,7 @@ "primeicons": "^7.0.0", "primevue": "^4.2.5", "semver": "^7.7.2", + "tailwind-merge": "^3.3.1", "three": "^0.170.0", "tiptap-markdown": "^0.8.10", "vue": "^3.5.13", diff --git a/src/assets/css/style.css b/src/assets/css/style.css index ef0b222ee..449c3c722 100644 --- a/src/assets/css/style.css +++ b/src/assets/css/style.css @@ -1,6 +1,61 @@ @layer primevue, tailwind-utilities; @layer tailwind-utilities { + /* Set default values to prevent some styles from not working properly. */ + *, ::before, ::after { + --tw-border-spacing-x: 0; + --tw-border-spacing-y: 0; + --tw-translate-x: 0; + --tw-translate-y: 0; + --tw-rotate: 0; + --tw-skew-x: 0; + --tw-skew-y: 0; + --tw-scale-x: 1; + --tw-scale-y: 1; + --tw-pan-x: ; + --tw-pan-y: ; + --tw-pinch-zoom: ; + --tw-scroll-snap-strictness: proximity; + --tw-gradient-from-position: ; + --tw-gradient-via-position: ; + --tw-gradient-to-position: ; + --tw-ordinal: ; + --tw-slashed-zero: ; + --tw-numeric-figure: ; + --tw-numeric-spacing: ; + --tw-numeric-fraction: ; + --tw-ring-inset: ; + --tw-ring-offset-width: 0px; + --tw-ring-offset-color: #fff; + --tw-ring-color: rgb(66 153 225 / 0.5); + --tw-ring-offset-shadow: 0 0 #0000; + --tw-ring-shadow: 0 0 #0000; + --tw-shadow: 0 0 #0000; + --tw-shadow-colored: 0 0 #0000; + --tw-blur: ; + --tw-brightness: ; + --tw-contrast: ; + --tw-grayscale: ; + --tw-hue-rotate: ; + --tw-invert: ; + --tw-saturate: ; + --tw-sepia: ; + --tw-drop-shadow: ; + --tw-backdrop-blur: ; + --tw-backdrop-brightness: ; + --tw-backdrop-contrast: ; + --tw-backdrop-grayscale: ; + --tw-backdrop-hue-rotate: ; + --tw-backdrop-invert: ; + --tw-backdrop-opacity: ; + --tw-backdrop-saturate: ; + --tw-backdrop-sepia: ; + --tw-contain-size: ; + --tw-contain-layout: ; + --tw-contain-paint: ; + --tw-contain-style: ; + } + @tailwind components; @tailwind utilities; } @@ -28,7 +83,7 @@ --content-fg: #000; --content-hover-bg: #adadad; --content-hover-fg: #000; - + /* Code styling colors for help menu*/ --code-text-color: rgba(0, 122, 255, 1); --code-bg-color: rgba(96, 165, 250, 0.2); diff --git a/src/components/graph/vueWidgets/WidgetInputText.vue b/src/components/graph/vueWidgets/WidgetInputText.vue index 8cb41dfa9..924ce9ee3 100644 --- a/src/components/graph/vueWidgets/WidgetInputText.vue +++ b/src/components/graph/vueWidgets/WidgetInputText.vue @@ -1,17 +1,14 @@ + + diff --git a/src/renderer/extensions/vueNodes/components/NodeHeader.vue b/src/renderer/extensions/vueNodes/components/NodeHeader.vue index 0a9e15fb1..aefc2b724 100644 --- a/src/renderer/extensions/vueNodes/components/NodeHeader.vue +++ b/src/renderer/extensions/vueNodes/components/NodeHeader.vue @@ -1,16 +1,12 @@ + + diff --git a/src/utils/tailwindUtil.ts b/src/utils/tailwindUtil.ts new file mode 100644 index 000000000..bec3707ca --- /dev/null +++ b/src/utils/tailwindUtil.ts @@ -0,0 +1,6 @@ +import clsx, { type ClassArray } from 'clsx' +import { twMerge } from 'tailwind-merge' + +export function cn(...inputs: ClassArray) { + return twMerge(clsx(inputs)) +} diff --git a/tailwind.config.js b/tailwind.config.js index 9c809eaa8..109586b26 100644 --- a/tailwind.config.js +++ b/tailwind.config.js @@ -72,6 +72,7 @@ export default { 60: '15rem', 64: '16rem', 72: '18rem', + 75: '18.75rem', 80: '20rem', 84: '22rem', 90: '24rem',