+
Mapping (mappingName)
diff --git a/src/main/frontend/app/routes/studio/canvas/nodetypes/child-node.tsx b/src/main/frontend/app/routes/studio/canvas/nodetypes/child-node.tsx
index c9a6905e..1b5f7eef 100644
--- a/src/main/frontend/app/routes/studio/canvas/nodetypes/child-node.tsx
+++ b/src/main/frontend/app/routes/studio/canvas/nodetypes/child-node.tsx
@@ -6,6 +6,8 @@ import useNodeContextStore from '~/stores/node-context-store'
import { useNodeContextMenu } from '../node-context-menu-context'
import { canAcceptChildStatic, type FrankElement } from './node-utilities'
import { useFFDoc } from '@frankframework/doc-library-react'
+import { useTheme } from '~/hooks/use-theme'
+import { getCategoryColor } from '~/utils/flow-utils'
export interface ChildNode {
id: string
@@ -53,6 +55,8 @@ export function ChildNodeComponent({
const [canDropDraggedElement, setCanDropDraggedElement] = useState(false)
const [dragForbidden, setDragForbidden] = useState(false)
const { elements, filters, ffDoc } = useFFDoc()
+ const theme = useTheme()
+ const categoryColor = getCategoryColor(child.subtype, filters, theme)
const frankElement = useMemo(() => {
if (!elements) return null
@@ -186,10 +190,10 @@ export function ChildNodeComponent({
background: gradientEnabled
? `radial-gradient(
ellipse farthest-corner at 20% 20%,
- var(--type-${child.type?.toLowerCase()}) 0%,
+ ${categoryColor} 0%,
var(--color-background) 100%
)`
- : `var(--type-${child.type?.toLowerCase()})`,
+ : categoryColor,
}}
>
{child.subtype}
diff --git a/src/main/frontend/app/routes/studio/canvas/nodetypes/exit-node.tsx b/src/main/frontend/app/routes/studio/canvas/nodetypes/exit-node.tsx
index 330c76a7..7dd9c70c 100644
--- a/src/main/frontend/app/routes/studio/canvas/nodetypes/exit-node.tsx
+++ b/src/main/frontend/app/routes/studio/canvas/nodetypes/exit-node.tsx
@@ -2,6 +2,7 @@ import { Handle, type Node, type NodeProps, NodeResizeControl, Position } from '
import { ResizeIcon } from '~/routes/studio/canvas/nodetypes/frank-node'
import { FlowConfig } from '~/routes/studio/canvas/flow.config'
import { useSettingsStore } from '~/stores/settings-store'
+import { useTheme } from '~/hooks/use-theme'
export type ExitNode = Node<{
subtype: string
@@ -14,6 +15,8 @@ export default function ExitNodeComponent(properties: NodeProps
) {
const minNodeWidth = FlowConfig.EXIT_DEFAULT_WIDTH
const minNodeHeight = FlowConfig.EXIT_DEFAULT_HEIGHT
const gradientEnabled = useSettingsStore((state) => state.studio.gradient)
+ const theme = useTheme()
+ const exitColor = `hsl(0 90% ${theme === 'dark' ? 62 : 45}%)`
return (
<>
@@ -44,10 +47,10 @@ export default function ExitNodeComponent(properties: NodeProps) {
background: gradientEnabled
? `radial-gradient(
ellipse farthest-corner at 20% 20%,
- var(--type-exit) 0%,
+ ${exitColor} 0%,
var(--color-background) 100%
)`
- : `var(--type-exit)`,
+ : exitColor,
}}
>
{properties.data.subtype}
diff --git a/src/main/frontend/app/routes/studio/canvas/nodetypes/frank-node.tsx b/src/main/frontend/app/routes/studio/canvas/nodetypes/frank-node.tsx
index 3402c09e..e7b0853f 100644
--- a/src/main/frontend/app/routes/studio/canvas/nodetypes/frank-node.tsx
+++ b/src/main/frontend/app/routes/studio/canvas/nodetypes/frank-node.tsx
@@ -27,6 +27,8 @@ import { DeprecatedPopover } from './components/deprecated-popover'
import { showWarningToast } from '~/components/toast'
import { useHandleTypes } from '~/hooks/use-handle-types'
import AddSubcomponentModal from '~/components/flow/add-subcomponent-modal'
+import { useTheme } from '~/hooks/use-theme'
+import { getCategoryColor } from '~/utils/flow-utils'
import { fetchFrankConfigXsd } from '~/services/xsd-service'
import {
type Requirement,
@@ -52,14 +54,14 @@ export type FrankNodeType = Node<{
export default function FrankNode(properties: NodeProps) {
const minNodeWidth = FlowConfig.NODE_DEFAULT_WIDTH
const minNodeHeight = FlowConfig.NODE_MIN_HEIGHT
- const type = properties.data.type.toLowerCase()
- const colorVariable = `--type-${type}`
const handleSpacing = 20
+ const theme = useTheme()
+ const { elements, filters, ffDoc } = useFFDoc()
+ const nodeColor = getCategoryColor(properties.data.subtype, filters, theme)
const containerReference = useRef(null)
const [dragOver, setDragOver] = useState(false)
const [canDropDraggedElement, setCanDropDraggedElement] = useState(false)
const showNodeContextMenu = useNodeContextMenu()
- const { elements, filters, ffDoc } = useFFDoc()
const {
setNodeId,
setIsNewNode,
@@ -405,17 +407,17 @@ export default function FrankNode(properties: NodeProps) {
style={{
minWidth: `${minNodeWidth}px`,
minHeight: `${minNodeHeight}px`,
- ...(properties.selected && { borderColor: `var(${colorVariable})` }),
+ ...(properties.selected && { borderColor: `${nodeColor}` }),
}}
>
-
+
{abbr}
@@ -477,7 +479,7 @@ export default function FrankNode(properties: NodeProps) {
className={`bg-background border-border relative flex w-full flex-col items-center overflow-x-visible rounded-md border ${isManuallyResized ? 'h-full overflow-y-hidden' : 'overflow-y-visible'}`}
style={{
minWidth: `${minNodeWidth}px`,
- ...(properties.selected && { borderColor: `var(${colorVariable})` }),
+ ...(properties.selected && { borderColor: `${nodeColor}` }),
}}
ref={containerReference}
onDragOver={handleDragOver}
@@ -490,10 +492,10 @@ export default function FrankNode(properties: NodeProps) {
background: gradientEnabled
? `radial-gradient(
ellipse farthest-corner at 20% 20%,
- var(${colorVariable}) 0%,
+ ${nodeColor} 0%,
var(--color-background) 100%
)`
- : `var(${colorVariable})`,
+ : `${nodeColor}`,
}}
>
{properties.data.subtype}
diff --git a/src/main/frontend/app/routes/studio/context/sorted-elements.tsx b/src/main/frontend/app/routes/studio/context/sorted-elements.tsx
index debd2a48..3956b6c8 100644
--- a/src/main/frontend/app/routes/studio/context/sorted-elements.tsx
+++ b/src/main/frontend/app/routes/studio/context/sorted-elements.tsx
@@ -4,7 +4,8 @@ import ArrowRightIcon from 'icons/solar/Alt Arrow Right.svg?react'
import { useSettingsStore } from '~/stores/settings-store'
import useNodeContextStore from '~/stores/node-context-store'
import type { ElementDetails } from '@frankframework/doc-library-core'
-import { getElementTypeFromName } from '../node-translator-module'
+import { useTheme } from '~/hooks/use-theme'
+import { getPaletteColor } from '~/utils/flow-utils'
import DangerIcon from '../../../../icons/solar/Danger Triangle.svg?react'
import { DeprecatedListPopover, type DeprecatedInfo } from './deprecated-list-popover'
import ElementHoverCard from './element-hover-card'
@@ -22,6 +23,8 @@ const CLOSE_DELAY = 200
export default function SortedElements({ type, items, onDragStart, searchTerm }: Readonly) {
const paletteExpandedByDefault = useSettingsStore((state) => state.studio.paletteExpandedByDefault)
+ const theme = useTheme()
+ const categoryColor = getPaletteColor(type, theme)
const [isExpanded, setIsExpanded] = useState(paletteExpandedByDefault)
const { draggedName, setDraggedName, dropSuccessful, setDropSuccessful } = useNodeContextStore((state) => state)
const [hoveredRect, setHoveredRect] = useState(null)
@@ -77,7 +80,7 @@ export default function SortedElements({ type, items, onDragStart, searchTerm }: