diff --git a/src/main/frontend/app/app.css b/src/main/frontend/app/app.css index 3f141b35..b1ead59e 100644 --- a/src/main/frontend/app/app.css +++ b/src/main/frontend/app/app.css @@ -39,20 +39,6 @@ --color-warning: var(--color-brand); --color-success: #247d12; - /* Node styling */ - --type-pipe: #68d250; - --type-listener: #d250bf; - --type-receiver: #d250bf; - --type-sender: #30ccaf; - --type-validator: #3079cc; - --type-wrapper: #4a30cc; - --type-job: #fd7200; - --type-exit: #e84e4e; - --type-errormessageformatter: #ff2424; - --type-param: #1389ff; - --type-other: #fdc300; - --type-sticky-note: #facc15; - --sticky-color-yellow: #fef08a; --sticky-color-blue: #bfdbfe; --sticky-color-green: #bbf7d0; @@ -67,18 +53,6 @@ --group-color-amber: #fcd34d; --group-color-cyan: #67e8f9; - /* Palette Styling */ - --palette-pipes: #68d250; - --palette-listeners: #d250bf; - --palette-senders: #30ccaf; - --palette-validators: #3079cc; - --palette-batch: #fdc300; - --palette-scheduling: #fd7200; - --palette-errormessageformatters: #ff2424; - --palette-other: #fdc300; - --palette-parameters: #1389ff; - --palette-monitoring: #00ff84; - --palette-transactionalstorages: #fdc300; } [data-theme='dark'] { @@ -96,20 +70,6 @@ --color-warning: var(--color-brand); --color-success: #247d12; - /* Node styling */ - --type-pipe: #136502; - --type-listener: #853279; - --type-receiver: #7e3072; - --type-sender: #1c7c6a; - --type-validator: #3079cc; - --type-wrapper: #4a30cc; - --type-job: #9a4602; - --type-exit: #882e2e; - --type-errormessageformatter: #7b1313; - --type-param: #0d4a87; - --type-other: #9c7800; - --type-sticky-note: #986804; - --sticky-color-yellow: #854d0e; --sticky-color-blue: #1e3a8a; --sticky-color-green: #14532d; @@ -124,17 +84,6 @@ --group-color-amber: #b45309; --group-color-cyan: #0e7490; - --palette-pipes: #136502; - --palette-listeners: #853279; - --palette-senders: #1c7c6a; - --palette-validators: #3079cc; - --palette-batch: #9c7800; - --palette-scheduling: #9a4602; - --palette-errormessageformatters: #7b1313; - --palette-other: #9c7800; - --palette-parameters: #0d4a87; - --palette-monitoring: #01924c; - --palette-transactionalstorages: #9c7800; } } diff --git a/src/main/frontend/app/routes/datamapper/root.tsx b/src/main/frontend/app/routes/datamapper/root.tsx index 32f4bb9b..7ddca481 100644 --- a/src/main/frontend/app/routes/datamapper/root.tsx +++ b/src/main/frontend/app/routes/datamapper/root.tsx @@ -1,4 +1,6 @@ import { useEffect, useReducer, useState } from 'react' +import { useTheme } from '~/hooks/use-theme' +import { getPaletteColor } from '~/utils/flow-utils' import PropertyList from './property-list' import { showErrorToast, showSuccessToast } from '~/components/toast' import { @@ -15,8 +17,10 @@ import { SAVING_THROTTLE } from '~/utils/datamapper_utils/constant' export default function Root() { const routes = ['Initialize', 'Properties', 'Mappings'] + const theme = useTheme() const project = useProjectStore.getState().project + const pipesColor = getPaletteColor('Pipes', theme) const [mappingListConfig, dispatchMappingListConfig] = useReducer( mappingListConfigReducer, @@ -87,7 +91,12 @@ export default function Root() {
{/* Header */} -
+
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 }: