From d30f25562aa3ed30f98a26fc521a45c68189fb51 Mon Sep 17 00:00:00 2001 From: Lasserich Date: Thu, 28 Aug 2025 14:19:58 +0200 Subject: [PATCH 01/37] feat: try formatting --- .../HintsCardsRow/HintsCardsRow.module.css | 102 ++++++++++++++++ .../HintsCardsRow/HintsCardsRow.tsx | 110 +++++++++++------- src/utils/hintsCardsRowCalculations.ts | 2 +- 3 files changed, 171 insertions(+), 43 deletions(-) diff --git a/src/components/HintsCardsRow/HintsCardsRow.module.css b/src/components/HintsCardsRow/HintsCardsRow.module.css index 9fc831c9..27c7ce11 100644 --- a/src/components/HintsCardsRow/HintsCardsRow.module.css +++ b/src/components/HintsCardsRow/HintsCardsRow.module.css @@ -2,6 +2,108 @@ position: relative; } +.bentoContainer { + display: grid; + grid-template-columns: 1fr 0.5fr; + grid-template-rows: 1fr 0.5fr; + gap: 12px; + width: 100%; + max-width: 1280px; + margin: 0 auto; + height: 400px; + z-index: 2; + position: relative; +} + +.mainCard { + grid-column: 1; + grid-row: 1; +} + +.topRightCard { + flex: 1; +} + +.middleRightCard { + flex: 1; +} + +.rightColumn { + grid-column: 2; + grid-row: 1; + display: flex; + flex-direction: column; + gap: 12px; +} + +.bottomRow { + grid-column: 1 / 3; + grid-row: 2; + display: flex; + gap: 12px; +} + +.bottomLeftCard { + flex: 1; +} + +.bottomRightCard { + flex: 1; +} + +/* Responsive adjustments */ +@media (max-width: 1024px) { + .bentoContainer { + grid-template-columns: 1fr 1fr; + grid-template-rows: 1fr 0.5fr; + height: 450px; + } + + .mainCard { + grid-column: 1 / 3; + grid-row: 1; + } + + .rightColumn { + grid-column: 1 / 3; + grid-row: 1; + flex-direction: row; + } + + .bottomRow { + grid-column: 1 / 3; + grid-row: 2; + } +} + +@media (max-width: 768px) { + .bentoContainer { + grid-template-columns: 1fr; + grid-template-rows: repeat(3, 1fr); + height: 500px; + } + + .mainCard, + .rightColumn, + .bottomRow { + grid-column: 1; + } + + .mainCard { + grid-row: 1; + } + + .rightColumn { + grid-row: 2; + flex-direction: column; + } + + .bottomRow { + grid-row: 3; + flex-direction: column; + } +} + .disabledOverlay { position: absolute; top: 0; diff --git a/src/components/HintsCardsRow/HintsCardsRow.tsx b/src/components/HintsCardsRow/HintsCardsRow.tsx index de68d23c..e44cccd8 100644 --- a/src/components/HintsCardsRow/HintsCardsRow.tsx +++ b/src/components/HintsCardsRow/HintsCardsRow.tsx @@ -1,6 +1,6 @@ -import { FlexBox, FlexBoxDirection } from '@ui5/webcomponents-react'; import { GenericHintCard } from './GenericHintCard/GenericHintCard'; import { useCrossplaneHintConfig, useGitOpsHintConfig, useVaultHintConfig } from './GenericHintCard/genericHintConfigs'; +import styles from './HintsCardsRow.module.css'; import { ControlPlaneType } from '../../lib/api/types/crate/controlPlanes'; import { ManagedResourcesRequest, ManagedResourcesResponse } from '../../lib/api/types/crossplane/listManagedResources'; @@ -46,47 +46,73 @@ const HintsCardsRow: React.FC = ({ mcp }) => { const vaultConfig = useVaultHintConfig(); return ( - - - - - +
+ {/* Box 1: Main card - big box on top-left */} +
+ +
+ + {/* Right column: flexbox container for right side cards */} +
+ {/* Box 2: Top right card */} +
+ +
+ + {/* Box 3: Middle right card (underneath box 2) */} +
+ +
+
+ + {/* Bottom row: flexbox container for bottom cards */} +
+ {/* Box 4: Bottom left card (underneath box 1) */} +
+ +
+ + {/* Box 5: Bottom right card (underneath box 3) */} +
+ +
+
+
); }; diff --git a/src/utils/hintsCardsRowCalculations.ts b/src/utils/hintsCardsRowCalculations.ts index 2e9f9a89..a2c6eb3f 100644 --- a/src/utils/hintsCardsRowCalculations.ts +++ b/src/utils/hintsCardsRowCalculations.ts @@ -217,7 +217,7 @@ export const calculateVaultSegments: GenericHintSegmentCalculator = ( } const hasResources = allItems.length > 0; - const label = hasResources ? `100${t('Hints.VaultHint.progressAvailable')}` : t('Hints.VaultHint.noResources'); + const label = hasResources ? t('Hints.VaultHint.progressAvailable') : t('Hints.VaultHint.noResources'); const color = hasResources ? HINT_COLORS.healthy : HINT_COLORS.inactive; return { From f7678d646e4283cd5fd48b1f2a4c038767712635 Mon Sep 17 00:00:00 2001 From: Lasserich Date: Thu, 28 Aug 2025 15:29:58 +0200 Subject: [PATCH 02/37] feat: demo bento layout --- public/velero.png | Bin 0 -> 168147 bytes src/components/Graphs/Graph.module.css | 2 +- .../GenericHintCard/GenericHintCard.tsx | 6 +- .../GenericHintCard/genericHintConfigs.ts | 14 +++ .../HintsCardsRow/HintsCardsRow.module.css | 2 +- .../HintsCardsRow/HintsCardsRow.tsx | 42 ++++----- src/spaces/mcp/pages/McpPage.tsx | 81 +----------------- src/types/types.ts | 1 + 8 files changed, 45 insertions(+), 103 deletions(-) create mode 100644 public/velero.png diff --git a/public/velero.png b/public/velero.png new file mode 100644 index 0000000000000000000000000000000000000000..0174f3949ef7cdd50b91a407fa0537d2f1291579 GIT binary patch literal 168147 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

)ZApW-_iff#=HcdXW4i;ZcMc^K^$ zCoZO$_2d3zn^b&(T*+!2N&Pav z&vQb6HP`o=^H~UZRHWA87d_mHd(Ch(wu5Wa~rRLl;n!z%2- z(^}PYK`z(lEhx6u^Eh;n)bFi8;4k*ci@m@H7AC)eXs~RF;P6-x1`7oLtHk_~YzLH# zMAEWsKLc!3f^=YW>UHF(XcreJO0o))aELK-%_bJQ6gC}{G7?ah9hor!H34Nq+7E2X z5wREy+eG=7dqoRQs0)n2n^pRXz_>ux<4|VnrT;>sL0lW~12^8k@ZR33=s~M9`y|cB zhZY;q0r&!Qxb&lRwQjKZ$z|%@&uaE`x+Dqg__|ig<-9)GD|LJAsHq9Kzmyc1MVyuu!dG+&*uxm^-c&)%#4gbu_?f0h! z${Nqti{=`y+u-1wx6j{<(xI8}i=eeQ1BY&7+d)c6fzuM6&cEfPN1%?aEdxONK(W1# z|EsUP@Z*rXUZ?LtY3ijS@3}EYtl-InX%t_*TZA9!Oh`m@7C?WM!f&G$Gn-2DJ!5nCx15LNP&AF#g;C}H4zV3D%;f(CK8a9qD$IfG?f7 {);-Fxtt25=ja-7GjfttHUUtc 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%0Dea&Xw=a!U6MHGMDp~ zIq*>q%vw)gIB9r~Oa8FeHv9cx|4Fk>-)r*G2aMeON85By-qEXV@e9cX?<@=!zK@`3 z0TMhvNzvF<((tFb1W9`jS^#69z zzH8i&7aseV@Jc*lt1-_IVn(% z8@&&XXaJ!r}fKiqB7p~sHh^7M)Qy5Bl5k$Ju%vv7%I76D-k&1oLKXW<)5 zsm@E{*W2b-tUAas`Qn*hml zHPSWR;CMKph!{qp&><;2h6+J30%1QD1)l4CI>36Ctfo~ zI+f;_cGj1EdtX4Ki7b&{NjcI ze&+d|*QvSXu#tnmclItj9rC9Wb{+Y*{YFo}V7v9t-mh16G#OHNya^% zv*@foD&$ef=aA)nDzJ%f0(-92hK8n3|S%5A7*;UNp4++}mdko&BFfcHHX1Jx7f` zZR+s74%ue?Q>Lw7dF6=e@Xiff!(%-==Dt|j^xnLlQCqQw&ZN@jkmOdDM+0kk?ogVQ zM<`^QVM96?I-69&p)w`Vzi$k5dyHFNjtBYBkY@u#p$s$>3MNn)-f?b~5@9>*TBc5| zn{5SbQ`@elv#4Y~Ki?SBrZg(8)nN;1XWQ&UUGoR%m0MICV6x4dSIaBgu2pg0nDx3{ zH+Eo;%Z{Et@{I59vGdXA?>%Yiod@qU^{UxhAEdlGY<>Us>2>n&(q3ojrEzk!McZa@1K9x1Mz7 z_`y?89=qlKlLz(s*>>x9|KsL8QhyzkF8*^JlX<#lvE}*N?BZ8y+7`TCpKpAvTfXUa zMP0t>jrv@}>-D+D*X!~PZ`2ai#kTjVitX=z8Y&BI?|&Mq^6l@{<{RJ8y0p$1rMBMC z_UhR-X?TsayxgnU@}G4~`%{C`;iE%(B=6p~Uynac-k{enP98h-kTb^)nRWK0ttOo_ zZP=)DciDQ>owJ6FzjoTDdtEVk@R28ORCn0{eS>?;XBW$ATRFa_aG>l!))YyU>G*#+ zFtN9E%;}we```^~9y@ACpSw=lYOOzBI&Q<`kDfO8-~;vV3sgL)W_b;0@~jv0I = ({ isLoading, error, config, + height = '200px', }) => { const { t } = useTranslation(); const [hovered, setHovered] = useState(false); @@ -65,7 +66,10 @@ export const GenericHintCard: React.FC = ({ {!enabled &&

}
-
+
{ calculateVaultSegments(allItems, isLoading, error, enabled, t), }; }; + +export const useVeleroHintConfig = (): GenericHintConfig => { + const { t } = useTranslation(); + + return { + title: "Velero", + subtitle: "Backups Status", + iconSrc: '/velero.png', + iconAlt: 'Velero', + iconStyle: { borderRadius: '0' }, // Vault icon should not be rounded + calculateSegments: (allItems, isLoading, error, enabled) => + calculateVaultSegments(allItems, isLoading, error, enabled, t), + }; +}; diff --git a/src/components/HintsCardsRow/HintsCardsRow.module.css b/src/components/HintsCardsRow/HintsCardsRow.module.css index 27c7ce11..a93638fe 100644 --- a/src/components/HintsCardsRow/HintsCardsRow.module.css +++ b/src/components/HintsCardsRow/HintsCardsRow.module.css @@ -10,7 +10,7 @@ width: 100%; max-width: 1280px; margin: 0 auto; - height: 400px; + height: 450px; z-index: 2; position: relative; } diff --git a/src/components/HintsCardsRow/HintsCardsRow.tsx b/src/components/HintsCardsRow/HintsCardsRow.tsx index e44cccd8..798b271b 100644 --- a/src/components/HintsCardsRow/HintsCardsRow.tsx +++ b/src/components/HintsCardsRow/HintsCardsRow.tsx @@ -1,5 +1,5 @@ import { GenericHintCard } from './GenericHintCard/GenericHintCard'; -import { useCrossplaneHintConfig, useGitOpsHintConfig, useVaultHintConfig } from './GenericHintCard/genericHintConfigs'; +import { useCrossplaneHintConfig, useGitOpsHintConfig, useVaultHintConfig, useVeleroHintConfig } from './GenericHintCard/genericHintConfigs'; import styles from './HintsCardsRow.module.css'; import { ControlPlaneType } from '../../lib/api/types/crate/controlPlanes'; @@ -8,6 +8,7 @@ import { resourcesInterval } from '../../lib/shared/constants'; import { useApiResource } from '../../lib/api/useApiResource'; import { ManagedResourceItem } from '../../lib/shared/types'; import React, { useMemo } from 'react'; +import Graph from '../Graphs/Graph'; interface HintsProps { mcp: ControlPlaneType; @@ -44,44 +45,43 @@ const HintsCardsRow: React.FC = ({ mcp }) => { const crossplaneConfig = useCrossplaneHintConfig(); const gitOpsConfig = useGitOpsHintConfig(); const vaultConfig = useVaultHintConfig(); + const veleroConfig = useVeleroHintConfig(); return (
{/* Box 1: Main card - big box on top-left */}
- +
{/* Right column: flexbox container for right side cards */}
{/* Box 2: Top right card */} -
+
+ {/* Box 3: Middle right card (underneath box 2) */} -
+
@@ -91,24 +91,26 @@ const HintsCardsRow: React.FC = ({ mcp }) => { {/* Box 4: Bottom left card (underneath box 1) */}
{/* Box 5: Bottom right card (underneath box 3) */}
diff --git a/src/spaces/mcp/pages/McpPage.tsx b/src/spaces/mcp/pages/McpPage.tsx index 64870281..1473ade7 100644 --- a/src/spaces/mcp/pages/McpPage.tsx +++ b/src/spaces/mcp/pages/McpPage.tsx @@ -101,86 +101,7 @@ export default function McpPage() { > - - - - - {t('McpPage.componentsTitle')}} - noAnimation - > - - - - - {t('McpPage.crossplaneTitle')}} - noAnimation - > -
- -
-
- -
-
- -
-
-
- - {t('McpPage.landscapersTitle')}} - noAnimation - > - - - - - {t('McpPage.gitOpsTitle')}} - noAnimation - > - - - + diff --git a/src/types/types.ts b/src/types/types.ts index 342e89aa..29373f69 100644 --- a/src/types/types.ts +++ b/src/types/types.ts @@ -50,4 +50,5 @@ export interface GenericHintProps { isLoading?: boolean; error?: APIError; config: GenericHintConfig; + height?: string | number; } From dbe7eb2d5f250f31e5d86e25c27a61c508bc3060 Mon Sep 17 00:00:00 2001 From: Johannes Ott Date: Mon, 8 Sep 2025 10:22:31 +0200 Subject: [PATCH 03/37] add white color background to graph --- src/components/Graphs/Graph.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/Graphs/Graph.tsx b/src/components/Graphs/Graph.tsx index f4974b54..36272252 100644 --- a/src/components/Graphs/Graph.tsx +++ b/src/components/Graphs/Graph.tsx @@ -1,5 +1,5 @@ import React, { useState, useCallback, useMemo } from 'react'; -import { ReactFlow, Background, Controls, MarkerType, Node, Panel } from '@xyflow/react'; +import { ReactFlow, Background, Controls, MarkerType, Node, Panel, BackgroundVariant } from '@xyflow/react'; import type { NodeProps } from '@xyflow/react'; import { RadioButton, FlexBox, FlexBoxAlignItems } from '@ui5/webcomponents-react'; import styles from './Graph.module.css'; @@ -97,8 +97,8 @@ const Graph: React.FC = () => { zoomOnScroll={true} panOnDrag={true} > + -
From 94661aa0ff9b9682fd390d427382d46bfad06cc2 Mon Sep 17 00:00:00 2001 From: Lasserich Date: Tue, 9 Sep 2025 11:41:35 +0200 Subject: [PATCH 04/37] fix: first bento layout --- public/locales/en.json | 6 +- src/components/BentoGrid/BentoGrid.module.css | 122 ++++++++++++++++ src/components/BentoGrid/BentoGrid.tsx | 33 +++++ .../ComponentCard/ComponentCard.module.css | 75 ++++++++++ .../BentoGrid/ComponentCard/ComponentCard.tsx | 91 ++++++++++++ .../BentoGrid/ComponentCard/index.ts | 2 + .../BentoGrid/GraphCard/GraphCard.module.css | 29 ++++ .../BentoGrid/GraphCard/GraphCard.tsx | 32 +++++ src/components/BentoGrid/GraphCard/index.ts | 2 + src/components/BentoGrid/index.ts | 6 + .../HintsCardsRow/HintsCardsRow.module.css | 114 +-------------- .../HintsCardsRow/HintsCardsRow.tsx | 131 +++++++++--------- 12 files changed, 466 insertions(+), 177 deletions(-) create mode 100644 src/components/BentoGrid/BentoGrid.module.css create mode 100644 src/components/BentoGrid/BentoGrid.tsx create mode 100644 src/components/BentoGrid/ComponentCard/ComponentCard.module.css create mode 100644 src/components/BentoGrid/ComponentCard/ComponentCard.tsx create mode 100644 src/components/BentoGrid/ComponentCard/index.ts create mode 100644 src/components/BentoGrid/GraphCard/GraphCard.module.css create mode 100644 src/components/BentoGrid/GraphCard/GraphCard.tsx create mode 100644 src/components/BentoGrid/GraphCard/index.ts create mode 100644 src/components/BentoGrid/index.ts diff --git a/public/locales/en.json b/public/locales/en.json index ccea36bc..08c6cacc 100644 --- a/public/locales/en.json +++ b/public/locales/en.json @@ -379,7 +379,7 @@ "title": "Crossplane", "subtitle": "Managed Resources Readiness", "activeStatus": "Active v", - "progressAvailable": "% Available", + "progressAvailable": "Available", "noResources": "No Resources", "inactive": "Inactive", "activate": "Activate", @@ -395,7 +395,7 @@ "title": "Flux", "subtitle": "GitOps Progress", "activeStatus": "Active v", - "progressAvailable": "% Available", + "progressAvailable": "Available", "noResources": "No Resources", "inactive": "Inactive", "activate": "Activate", @@ -410,7 +410,7 @@ "title": "Vault", "subtitle": "Rotating Secrets Progress", "activeStatus": "Active v", - "progressAvailable": "% Available", + "progressAvailable": "Available", "noResources": "No Resources", "inactive": "Coming soon...", "activate": "Activate" diff --git a/src/components/BentoGrid/BentoGrid.module.css b/src/components/BentoGrid/BentoGrid.module.css new file mode 100644 index 00000000..92082277 --- /dev/null +++ b/src/components/BentoGrid/BentoGrid.module.css @@ -0,0 +1,122 @@ +/* Bento Grid Layout - 12 columns x 6 rows */ +.bentoGrid { + display: grid; + grid-template-columns: repeat(12, 1fr); + grid-template-rows: repeat(6, 1fr); + gap: 12px; + width: 100%; + height: 600px; /* Fixed height for the entire grid */ + position: relative; +} + +/* Base card styling */ +.bentoCard { + border-radius: 12px; + overflow: hidden; + background: var(--sapTile_Background); + border: 1px solid var(--sapTile_BorderColor); + box-shadow: var(--sapContent_Shadow1); + transition: all 0.3s ease; + display: flex; + flex-direction: column; + position: relative; +} + +.bentoCard:hover { + box-shadow: var(--sapContent_Shadow2); + transform: translateY(-2px); +} + +/* Specific card sizes and positioning for the layout */ + +/* Extra Large: Graph (left side, rows 1-4, columns 1-9) */ +.card-extra-large { + grid-column: 1 / 10; /* 9 columns */ + grid-row: 1 / 5; /* 4 rows */ +} + +/* Large: Crossplane (left side, rows 5-6, columns 1-9) */ +.card-large { + grid-column: 1 / 10; /* 9 columns */ + grid-row: 5 / 7; /* 2 rows */ +} + +/* Medium: GitOps cards (right side, top two, rows 1-2 and 3-4, columns 10-12) */ +.card-medium:nth-of-type(3) { + grid-column: 10 / 13; /* 3 columns */ + grid-row: 1 / 3; /* 2 rows */ +} + +.card-medium:nth-of-type(4) { + grid-column: 10 / 13; /* 3 columns */ + grid-row: 3 / 5; /* 2 rows */ +} + +/* Small: Bottom right cards (rows 5-6, split columns 10-12) */ +.card-small:nth-of-type(5) { + grid-column: 10 / 11.5; /* 1.5 columns */ + grid-row: 5 / 7; /* 2 rows */ +} + +.card-small:nth-of-type(6) { + grid-column: 11.5 / 13; /* 1.5 columns */ + grid-row: 5 / 7; /* 2 rows */ +} + +/* Fallback positioning for cards in case the layout breaks */ +.card-small { + grid-column: span 2; + grid-row: span 2; +} + +.card-medium { + grid-column: span 3; + grid-row: span 2; +} + +/* Dark theme support */ +@media (prefers-color-scheme: dark) { + .bentoCard { + background: var(--sapTile_Background); + border-color: var(--sapTile_BorderColor); + } +} + +/* Responsive behavior - simplified as requested */ +@media (max-width: 768px) { + .bentoGrid { + grid-template-columns: repeat(6, 1fr); + grid-template-rows: repeat(10, 1fr); + height: 1000px; + } + + .card-extra-large { + grid-column: 1 / 7; + grid-row: 1 / 5; + } + + .card-large { + grid-column: 1 / 7; + grid-row: 5 / 7; + } + + .card-medium:nth-of-type(3) { + grid-column: 1 / 7; + grid-row: 7 / 9; + } + + .card-medium:nth-of-type(4) { + grid-column: 1 / 7; + grid-row: 9 / 11; + } + + .card-small:nth-of-type(5) { + grid-column: 1 / 4; + grid-row: 11 / 13; + } + + .card-small:nth-of-type(6) { + grid-column: 4 / 7; + grid-row: 11 / 13; + } +} diff --git a/src/components/BentoGrid/BentoGrid.tsx b/src/components/BentoGrid/BentoGrid.tsx new file mode 100644 index 00000000..ff088337 --- /dev/null +++ b/src/components/BentoGrid/BentoGrid.tsx @@ -0,0 +1,33 @@ +import React from 'react'; +import styles from './BentoGrid.module.css'; + +export type CardSize = 'small' | 'medium' | 'large' | 'extra-large'; + +export interface BentoCardProps { + size: CardSize; + children: React.ReactNode; + className?: string; +} + +export interface BentoGridProps { + children: React.ReactNode; + className?: string; +} + +export const BentoCard: React.FC = ({ size, children, className = '' }) => { + const cardClass = `${styles.bentoCard} ${styles[`card-${size}`]} ${className}`; + + return ( +
+ {children} +
+ ); +}; + +export const BentoGrid: React.FC = ({ children, className = '' }) => { + return ( +
+ {children} +
+ ); +}; diff --git a/src/components/BentoGrid/ComponentCard/ComponentCard.module.css b/src/components/BentoGrid/ComponentCard/ComponentCard.module.css new file mode 100644 index 00000000..f4151f41 --- /dev/null +++ b/src/components/BentoGrid/ComponentCard/ComponentCard.module.css @@ -0,0 +1,75 @@ +.container { + height: 100%; + width: 100%; + display: flex; + flex-direction: column; +} + +.card { + height: 100%; + width: 100%; + display: flex; + flex-direction: column; + background: var(--sapTile_Background); + border: 1px solid var(--sapTile_BorderColor); + border-radius: 12px; + overflow: hidden; + position: relative; +} + +.avatar { + width: 24px; + height: 24px; + object-fit: contain; +} + +.contentContainer { + flex: 1; + display: flex; + flex-direction: column; + padding: 16px; + overflow: hidden; +} + +.progressBarContainer { + flex: 1; + display: flex; + flex-direction: column; + justify-content: center; + min-height: 60px; +} + +.progressBar { + width: 100%; +} + +.disabled { + position: relative; + opacity: 0.6; +} + +.disabledOverlay { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + background: rgba(255, 255, 255, 0.6); + backdrop-filter: grayscale(0.9) blur(0.5px); + border-radius: inherit; + z-index: 1; + pointer-events: none; +} + +/* Dark mode support */ +@media (prefers-color-scheme: dark) { + .disabledOverlay { + background: rgba(0, 0, 0, 0.4); + } +} + +/* UI5 theme variables for dark themes */ +[data-ui5-theme-root*="dark"] .disabledOverlay, +[data-ui5-theme*="dark"] .disabledOverlay { + background: rgba(0, 0, 0, 0.4); +} diff --git a/src/components/BentoGrid/ComponentCard/ComponentCard.tsx b/src/components/BentoGrid/ComponentCard/ComponentCard.tsx new file mode 100644 index 00000000..28b68f27 --- /dev/null +++ b/src/components/BentoGrid/ComponentCard/ComponentCard.tsx @@ -0,0 +1,91 @@ +import React, { useState } from 'react'; +import { Card, CardHeader } from '@ui5/webcomponents-react'; +import { useTranslation } from 'react-i18next'; +import cx from 'clsx'; +import { MultiPercentageBar } from '../../HintsCardsRow/MultiPercentageBar/MultiPercentageBar'; +import { HoverContent } from '../../HintsCardsRow/CardHoverContent/CardHoverContent'; +import styles from './ComponentCard.module.css'; +import { GenericHintProps } from '../../../types/types'; + +export const ComponentCard: React.FC = ({ + enabled = false, + version, + allItems = [], + isLoading, + error, + config, +}) => { + const { t } = useTranslation(); + const [hovered, setHovered] = useState(false); + + // Calculate segments and state using the provided calculator + const hintState = config.calculateSegments(allItems, isLoading || false, error, enabled, t); + + // Handle click navigation if scroll target is provided + const handleClick = + enabled && config.scrollTarget + ? () => { + const el = document.querySelector(config.scrollTarget!); + if (el) { + el.scrollIntoView({ behavior: 'smooth', block: 'start' }); + } + } + : undefined; + + return ( +
+ + } + titleText={config.title} + subtitleText={config.subtitle} + interactive={enabled} + /> + } + className={cx(styles.card, { + [styles.disabled]: !enabled, + })} + onClick={handleClick} + onMouseEnter={enabled ? () => setHovered(true) : undefined} + onMouseLeave={enabled ? () => setHovered(false) : undefined} + > + {/* Disabled overlay */} + {!enabled &&
} + +
+
+ +
+
+ + {(() => { + const shouldShowHoverContent = enabled && hovered && config.calculateHoverData; + if (!shouldShowHoverContent) return null; + + const hoverData = config.calculateHoverData!(allItems, enabled, t); + const hasValidHoverData = !!hoverData; + + return hasValidHoverData ? : null; + })()} + +
+ ); +}; diff --git a/src/components/BentoGrid/ComponentCard/index.ts b/src/components/BentoGrid/ComponentCard/index.ts new file mode 100644 index 00000000..156bd4a8 --- /dev/null +++ b/src/components/BentoGrid/ComponentCard/index.ts @@ -0,0 +1,2 @@ +export { ComponentCard } from './ComponentCard'; +export type { GenericHintProps as ComponentCardProps } from '../../../types/types'; diff --git a/src/components/BentoGrid/GraphCard/GraphCard.module.css b/src/components/BentoGrid/GraphCard/GraphCard.module.css new file mode 100644 index 00000000..a7031a1c --- /dev/null +++ b/src/components/BentoGrid/GraphCard/GraphCard.module.css @@ -0,0 +1,29 @@ +.container { + height: 100%; + width: 100%; + display: flex; + flex-direction: column; +} + +.card { + height: 100%; + width: 100%; + display: flex; + flex-direction: column; + background: var(--sapTile_Background); + border: 1px solid var(--sapTile_BorderColor); + border-radius: 12px; + overflow: hidden; +} + +.graphContainer { + flex: 1; + height: 100%; + overflow: hidden; + padding: 8px; +} + +/* Ensure the Graph component fills the container */ +.graphContainer > div { + height: 100% !important; +} diff --git a/src/components/BentoGrid/GraphCard/GraphCard.tsx b/src/components/BentoGrid/GraphCard/GraphCard.tsx new file mode 100644 index 00000000..5d9697bf --- /dev/null +++ b/src/components/BentoGrid/GraphCard/GraphCard.tsx @@ -0,0 +1,32 @@ +import React from 'react'; +import { Card, CardHeader } from '@ui5/webcomponents-react'; +import Graph from '../../Graphs/Graph'; +import styles from './GraphCard.module.css'; + +export interface GraphCardProps { + title?: string; + className?: string; +} + +export const GraphCard: React.FC = ({ + title = "Resource Graph", + className = '' +}) => { + return ( +
+ + } + className={styles.card} + > +
+ +
+
+
+ ); +}; diff --git a/src/components/BentoGrid/GraphCard/index.ts b/src/components/BentoGrid/GraphCard/index.ts new file mode 100644 index 00000000..4ee686ce --- /dev/null +++ b/src/components/BentoGrid/GraphCard/index.ts @@ -0,0 +1,2 @@ +export { GraphCard } from './GraphCard'; +export type { GraphCardProps } from './GraphCard'; diff --git a/src/components/BentoGrid/index.ts b/src/components/BentoGrid/index.ts new file mode 100644 index 00000000..e21d379b --- /dev/null +++ b/src/components/BentoGrid/index.ts @@ -0,0 +1,6 @@ +export { BentoGrid, BentoCard } from './BentoGrid'; +export type { BentoGridProps, BentoCardProps, CardSize } from './BentoGrid'; +export { ComponentCard } from './ComponentCard'; +export type { ComponentCardProps } from './ComponentCard'; +export { GraphCard } from './GraphCard'; +export type { GraphCardProps } from './GraphCard'; diff --git a/src/components/HintsCardsRow/HintsCardsRow.module.css b/src/components/HintsCardsRow/HintsCardsRow.module.css index a93638fe..cef9e0f1 100644 --- a/src/components/HintsCardsRow/HintsCardsRow.module.css +++ b/src/components/HintsCardsRow/HintsCardsRow.module.css @@ -1,107 +1,15 @@ -.disabled { - position: relative; -} - +/* Bento Container - now just houses the BentoGrid */ .bentoContainer { - display: grid; - grid-template-columns: 1fr 0.5fr; - grid-template-rows: 1fr 0.5fr; - gap: 12px; width: 100%; max-width: 1280px; margin: 0 auto; - height: 450px; - z-index: 2; - position: relative; -} - -.mainCard { - grid-column: 1; - grid-row: 1; -} - -.topRightCard { - flex: 1; -} - -.middleRightCard { - flex: 1; -} - -.rightColumn { - grid-column: 2; - grid-row: 1; - display: flex; - flex-direction: column; - gap: 12px; -} - -.bottomRow { - grid-column: 1 / 3; - grid-row: 2; - display: flex; - gap: 12px; -} - -.bottomLeftCard { - flex: 1; -} - -.bottomRightCard { - flex: 1; -} - -/* Responsive adjustments */ -@media (max-width: 1024px) { - .bentoContainer { - grid-template-columns: 1fr 1fr; - grid-template-rows: 1fr 0.5fr; - height: 450px; - } - - .mainCard { - grid-column: 1 / 3; - grid-row: 1; - } - - .rightColumn { - grid-column: 1 / 3; - grid-row: 1; - flex-direction: row; - } - - .bottomRow { - grid-column: 1 / 3; - grid-row: 2; - } + padding: 20px; } -@media (max-width: 768px) { - .bentoContainer { - grid-template-columns: 1fr; - grid-template-rows: repeat(3, 1fr); - height: 500px; - } - - .mainCard, - .rightColumn, - .bottomRow { - grid-column: 1; - } - - .mainCard { - grid-row: 1; - } - - .rightColumn { - grid-row: 2; - flex-direction: column; - } - - .bottomRow { - grid-row: 3; - flex-direction: column; - } +/* Legacy styles kept for backward compatibility with cards */ +.disabled { + position: relative; + opacity: 0.6; } .disabledOverlay { @@ -122,17 +30,9 @@ .disabledOverlay { background: rgba(0, 0, 0, 0.4); } - - .chartBackground { - background-color: #2a2a2a; - } - - .chartLabel { - color: #ffffff; - } } -/* Also check for UI5 theme variables for dark themes */ +/* UI5 theme variables for dark themes */ [data-ui5-theme-root*="dark"] .disabledOverlay, [data-ui5-theme*="dark"] .disabledOverlay { background: rgba(0, 0, 0, 0.4); diff --git a/src/components/HintsCardsRow/HintsCardsRow.tsx b/src/components/HintsCardsRow/HintsCardsRow.tsx index 798b271b..fdac4b5f 100644 --- a/src/components/HintsCardsRow/HintsCardsRow.tsx +++ b/src/components/HintsCardsRow/HintsCardsRow.tsx @@ -1,5 +1,6 @@ -import { GenericHintCard } from './GenericHintCard/GenericHintCard'; +import { ComponentCard } from '../BentoGrid/ComponentCard/ComponentCard'; import { useCrossplaneHintConfig, useGitOpsHintConfig, useVaultHintConfig, useVeleroHintConfig } from './GenericHintCard/genericHintConfigs'; +import { BentoGrid, BentoCard, GraphCard } from '../BentoGrid'; import styles from './HintsCardsRow.module.css'; import { ControlPlaneType } from '../../lib/api/types/crate/controlPlanes'; @@ -8,7 +9,6 @@ import { resourcesInterval } from '../../lib/shared/constants'; import { useApiResource } from '../../lib/api/useApiResource'; import { ManagedResourceItem } from '../../lib/shared/types'; import React, { useMemo } from 'react'; -import Graph from '../Graphs/Graph'; interface HintsProps { mcp: ControlPlaneType; @@ -48,73 +48,70 @@ const HintsCardsRow: React.FC = ({ mcp }) => { const veleroConfig = useVeleroHintConfig(); return ( -
- {/* Box 1: Main card - big box on top-left */} -
- -
- - {/* Right column: flexbox container for right side cards */} -
- {/* Box 2: Top right card */} -
- + {/* Left side: Graph in extra-large (top) */} + + + - /> -
- - - {/* Box 3: Middle right card (underneath box 2) */} -
- + + - /> -
-
- - {/* Bottom row: flexbox container for bottom cards */} -
- {/* Box 4: Bottom left card (underneath box 1) */} -
- -
- - {/* Box 5: Bottom right card (underneath box 3) */} -
- -
-
-
+ {/* Right side: Two medium components (GitOps copies) */} + + + + + + + + + {/* Right side: Two small components (Velero config and Vault) */} + + + + + + + + ); }; From 039ae2735cf1ea1ec0cf2939418bcbf43d4ba7b5 Mon Sep 17 00:00:00 2001 From: Lasserich Date: Tue, 9 Sep 2025 11:48:32 +0200 Subject: [PATCH 05/37] fix: layout --- src/components/BentoGrid/BentoGrid.module.css | 40 +++---------------- src/components/BentoGrid/BentoGrid.tsx | 16 +++++++- .../BentoGrid/GraphCard/GraphCard.module.css | 30 ++++++++++++-- .../BentoGrid/GraphCard/GraphCard.tsx | 4 +- .../HintsCardsRow/HintsCardsRow.tsx | 18 +++++---- 5 files changed, 59 insertions(+), 49 deletions(-) diff --git a/src/components/BentoGrid/BentoGrid.module.css b/src/components/BentoGrid/BentoGrid.module.css index 92082277..fc25fa02 100644 --- a/src/components/BentoGrid/BentoGrid.module.css +++ b/src/components/BentoGrid/BentoGrid.module.css @@ -27,41 +27,11 @@ transform: translateY(-2px); } -/* Specific card sizes and positioning for the layout */ - -/* Extra Large: Graph (left side, rows 1-4, columns 1-9) */ -.card-extra-large { - grid-column: 1 / 10; /* 9 columns */ - grid-row: 1 / 5; /* 4 rows */ -} - -/* Large: Crossplane (left side, rows 5-6, columns 1-9) */ -.card-large { - grid-column: 1 / 10; /* 9 columns */ - grid-row: 5 / 7; /* 2 rows */ -} - -/* Medium: GitOps cards (right side, top two, rows 1-2 and 3-4, columns 10-12) */ -.card-medium:nth-of-type(3) { - grid-column: 10 / 13; /* 3 columns */ - grid-row: 1 / 3; /* 2 rows */ -} - -.card-medium:nth-of-type(4) { - grid-column: 10 / 13; /* 3 columns */ - grid-row: 3 / 5; /* 2 rows */ -} - -/* Small: Bottom right cards (rows 5-6, split columns 10-12) */ -.card-small:nth-of-type(5) { - grid-column: 10 / 11.5; /* 1.5 columns */ - grid-row: 5 / 7; /* 2 rows */ -} - -.card-small:nth-of-type(6) { - grid-column: 11.5 / 13; /* 1.5 columns */ - grid-row: 5 / 7; /* 2 rows */ -} +/* Card sizes are now explicitly positioned via gridColumn/gridRow props */ +/* Layout: + - Left: Extra large graph (8 cols x 4 rows) + Large crossplane (8 cols x 2 rows) + - Right: Two medium GitOps (4 cols x 2 rows each) + Two small underneath (2 cols x 2 rows each) +*/ /* Fallback positioning for cards in case the layout breaks */ .card-small { diff --git a/src/components/BentoGrid/BentoGrid.tsx b/src/components/BentoGrid/BentoGrid.tsx index ff088337..a3d38260 100644 --- a/src/components/BentoGrid/BentoGrid.tsx +++ b/src/components/BentoGrid/BentoGrid.tsx @@ -7,6 +7,8 @@ export interface BentoCardProps { size: CardSize; children: React.ReactNode; className?: string; + gridColumn?: string; + gridRow?: string; } export interface BentoGridProps { @@ -14,11 +16,21 @@ export interface BentoGridProps { className?: string; } -export const BentoCard: React.FC = ({ size, children, className = '' }) => { +export const BentoCard: React.FC = ({ + size, + children, + className = '', + gridColumn, + gridRow +}) => { const cardClass = `${styles.bentoCard} ${styles[`card-${size}`]} ${className}`; + const style: React.CSSProperties = {}; + if (gridColumn) style.gridColumn = gridColumn; + if (gridRow) style.gridRow = gridRow; + return ( -
+
{children}
); diff --git a/src/components/BentoGrid/GraphCard/GraphCard.module.css b/src/components/BentoGrid/GraphCard/GraphCard.module.css index a7031a1c..2688758a 100644 --- a/src/components/BentoGrid/GraphCard/GraphCard.module.css +++ b/src/components/BentoGrid/GraphCard/GraphCard.module.css @@ -19,11 +19,35 @@ .graphContainer { flex: 1; height: 100%; + width: 100%; overflow: hidden; - padding: 8px; + position: relative; + min-height: 300px; /* Ensure minimum height for graph */ +} + +.graphWrapper { + height: 100%; + width: 100%; +} + +/* Target the Graph component's main container and override its fixed height */ +.graphWrapper :global(.graphContainer) { + height: 100% !important; + border: none !important; + border-radius: 0 !important; + background: transparent !important; +} + +/* Ensure ReactFlow fills the container */ +.graphWrapper :global(.react-flow) { + height: 100% !important; } -/* Ensure the Graph component fills the container */ -.graphContainer > div { +/* Ensure the Graph component and ReactFlow container fill the space */ +.graphContainer > div, +.graphContainer > div > div, +.graphWrapper > div, +.graphWrapper > div > div { height: 100% !important; + width: 100% !important; } diff --git a/src/components/BentoGrid/GraphCard/GraphCard.tsx b/src/components/BentoGrid/GraphCard/GraphCard.tsx index 5d9697bf..3021aa53 100644 --- a/src/components/BentoGrid/GraphCard/GraphCard.tsx +++ b/src/components/BentoGrid/GraphCard/GraphCard.tsx @@ -24,7 +24,9 @@ export const GraphCard: React.FC = ({ className={styles.card} >
- +
+ +
diff --git a/src/components/HintsCardsRow/HintsCardsRow.tsx b/src/components/HintsCardsRow/HintsCardsRow.tsx index fdac4b5f..7988b116 100644 --- a/src/components/HintsCardsRow/HintsCardsRow.tsx +++ b/src/components/HintsCardsRow/HintsCardsRow.tsx @@ -50,12 +50,12 @@ const HintsCardsRow: React.FC = ({ mcp }) => { return ( {/* Left side: Graph in extra-large (top) */} - + {/* Left side: Crossplane component in large (bottom) */} - + = ({ mcp }) => { /> - {/* Right side: Two medium components (GitOps copies) */} - + {/* Right side: First medium component (GitOps) */} + = ({ mcp }) => { /> - + {/* Right side: Second medium component (GitOps copy) */} + = ({ mcp }) => { /> - {/* Right side: Two small components (Velero config and Vault) */} - + {/* Right side: First small component (Velero config) */} + = ({ mcp }) => { /> - + {/* Right side: Second small component (Vault) */} + Date: Tue, 9 Sep 2025 11:53:45 +0200 Subject: [PATCH 06/37] fix: show graph --- .../BentoGrid/GraphCard/GraphCard.module.css | 37 +++---------------- .../BentoGrid/GraphCard/GraphCard.tsx | 20 ++-------- 2 files changed, 8 insertions(+), 49 deletions(-) diff --git a/src/components/BentoGrid/GraphCard/GraphCard.module.css b/src/components/BentoGrid/GraphCard/GraphCard.module.css index 2688758a..76d0f11e 100644 --- a/src/components/BentoGrid/GraphCard/GraphCard.module.css +++ b/src/components/BentoGrid/GraphCard/GraphCard.module.css @@ -3,51 +3,24 @@ width: 100%; display: flex; flex-direction: column; -} - -.card { - height: 100%; - width: 100%; - display: flex; - flex-direction: column; background: var(--sapTile_Background); border: 1px solid var(--sapTile_BorderColor); border-radius: 12px; overflow: hidden; } -.graphContainer { - flex: 1; +.simpleWrapper { height: 100%; width: 100%; - overflow: hidden; + flex: 1; position: relative; - min-height: 300px; /* Ensure minimum height for graph */ + z-index: 10; } -.graphWrapper { - height: 100%; - width: 100%; -} - -/* Target the Graph component's main container and override its fixed height */ -.graphWrapper :global(.graphContainer) { +/* Override the Graph component's fixed height globally within this wrapper */ +.simpleWrapper > div { height: 100% !important; border: none !important; border-radius: 0 !important; background: transparent !important; } - -/* Ensure ReactFlow fills the container */ -.graphWrapper :global(.react-flow) { - height: 100% !important; -} - -/* Ensure the Graph component and ReactFlow container fill the space */ -.graphContainer > div, -.graphContainer > div > div, -.graphWrapper > div, -.graphWrapper > div > div { - height: 100% !important; - width: 100% !important; -} diff --git a/src/components/BentoGrid/GraphCard/GraphCard.tsx b/src/components/BentoGrid/GraphCard/GraphCard.tsx index 3021aa53..32f85b77 100644 --- a/src/components/BentoGrid/GraphCard/GraphCard.tsx +++ b/src/components/BentoGrid/GraphCard/GraphCard.tsx @@ -1,5 +1,4 @@ import React from 'react'; -import { Card, CardHeader } from '@ui5/webcomponents-react'; import Graph from '../../Graphs/Graph'; import styles from './GraphCard.module.css'; @@ -9,26 +8,13 @@ export interface GraphCardProps { } export const GraphCard: React.FC = ({ - title = "Resource Graph", className = '' }) => { return (
- - } - className={styles.card} - > -
-
- -
-
-
+
+ +
); }; From aecdc74e0f6968b0f93692a6b4ec95e35fe1149f Mon Sep 17 00:00:00 2001 From: Lasserich Date: Tue, 9 Sep 2025 13:59:40 +0200 Subject: [PATCH 07/37] feat: style graph --- src/components/Graphs/Graph.module.css | 77 ++++++++++++++- src/components/Graphs/Graph.tsx | 98 +++++++++++-------- src/components/Graphs/Legend.module.css | 17 +++- src/components/Graphs/Legend.tsx | 7 +- src/components/Graphs/useGraph.ts | 20 +++- .../GenericHintCard/genericHintConfigs.ts | 4 +- .../MultiPercentageBar.module.css | 2 +- 7 files changed, 172 insertions(+), 53 deletions(-) diff --git a/src/components/Graphs/Graph.module.css b/src/components/Graphs/Graph.module.css index 1d5eaa48..fd508927 100644 --- a/src/components/Graphs/Graph.module.css +++ b/src/components/Graphs/Graph.module.css @@ -1,17 +1,53 @@ .graphContainer { display: flex; + flex-direction: column; height: 500px; border: 1px solid var(--sapList_BorderColor, #ddd); border-radius: 16px; overflow: hidden; - background-color: var(--sapBackgroundColor, #fafafa); + background-color: #ffffff; font-family: var(--sapFontFamily); + position: relative; } .graphColumn { flex: 1; display: flex; flex-direction: column; + background-color: #ffffff; +} + +.bottomLegendContainer { + position: absolute; + bottom: 1rem; + right: 1rem; + display: flex; + align-items: center; + gap: 1rem; + z-index: 10; +} + +.topRightContainer { + position: absolute; + top: 1rem; + right: 1rem; + z-index: 10; +} + +.filterIcon { + display: flex; + align-items: center; + cursor: pointer; + padding: 4px; + border-radius: 4px; + transition: background-color 0.2s ease; + background-color: rgba(255, 255, 255, 0.9); + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); + margin-left: 0.5rem; +} + +.filterIcon:hover { + background-color: var(--sapButton_Hover_Background, #f0f0f0); } .graphHeader { @@ -71,4 +107,43 @@ :global([data-theme='dark'] .react-flow__controls-button:hover) { background: rgba(255, 255, 255, 0.08); +} + +/* Animated edge styles */ +:global(.react-flow__edge-path) { + stroke-dasharray: 5 5; + animation: flowAnimation 3s linear infinite; + stroke: #888; + opacity: 0.8; +} + +:global(.react-flow__edge.react-flow__edge-step .react-flow__edge-path) { + stroke-dasharray: 8 4; + animation: flowAnimation 2s linear infinite; + stroke: #888; + opacity: 0.8; +} + +@keyframes flowAnimation { + 0% { + stroke-dashoffset: 0; + opacity: 0.6; + } + 50% { + opacity: 1; + } + 100% { + stroke-dashoffset: 12; + opacity: 0.6; + } +} + +/* Blocky edge styling */ +:global(.react-flow__edge.react-flow__edge-step) { + stroke-width: 2px; +} + +/* Custom background for bright white */ +:global(.react-flow__background) { + background-color: #ffffff !important; } \ No newline at end of file diff --git a/src/components/Graphs/Graph.tsx b/src/components/Graphs/Graph.tsx index 36272252..0dd4c677 100644 --- a/src/components/Graphs/Graph.tsx +++ b/src/components/Graphs/Graph.tsx @@ -1,7 +1,7 @@ import React, { useState, useCallback, useMemo } from 'react'; -import { ReactFlow, Background, Controls, MarkerType, Node, Panel, BackgroundVariant } from '@xyflow/react'; +import { ReactFlow, Background, Controls, Node, BackgroundVariant } from '@xyflow/react'; import type { NodeProps } from '@xyflow/react'; -import { RadioButton, FlexBox, FlexBoxAlignItems } from '@ui5/webcomponents-react'; +import { Button, Popover } from '@ui5/webcomponents-react'; import styles from './Graph.module.css'; import '@xyflow/react/dist/style.css'; import { NodeData, ColorBy } from './types'; @@ -15,7 +15,6 @@ import { useTranslation } from 'react-i18next'; import { useGraph } from './useGraph'; import { ManagedResourceItem } from '../../lib/shared/types'; import { useTheme } from '../../hooks/useTheme'; - const nodeTypes = { custom: (props: NodeProps>) => ( { const { t } = useTranslation(); const { isDarkTheme } = useTheme(); - const [colorBy, setColorBy] = useState('provider'); + const [colorBy, setColorBy] = useState('source'); const [yamlDialogOpen, setYamlDialogOpen] = useState(false); const [yamlResource, setYamlResource] = useState(null); + const [filterPopoverOpen, setFilterPopoverOpen] = useState(false); const handleYamlClick = useCallback((item: ManagedResourceItem) => { setYamlResource(item); @@ -83,11 +83,9 @@ const Graph: React.FC = () => { nodes={nodes} edges={edges} nodeTypes={nodeTypes} - defaultEdgeOptions={{ - style: { stroke: '#888', strokeWidth: 1.5 }, - markerEnd: { type: MarkerType.ArrowClosed }, - }} - fitView + defaultViewport={{ x: 40, y: 40, zoom: 0.8 }} + minZoom={0.3} + maxZoom={3.0} proOptions={{ hideAttribution: true, }} @@ -97,39 +95,59 @@ const Graph: React.FC = () => { zoomOnScroll={true} panOnDrag={true} > - + - - -
-
- {t('Graphs.colorizedTitle')} - setColorBy('provider')} - /> - setColorBy('source')} - /> - setColorBy('flux')} - /> -
-
-
-
- - - + + {/* Legend and filter in bottom-right */} +
+ + setFilterPopoverOpen(false)} + placement="Top" + > +
+ + + +
+
+
+
+
= ({ legendItems }) => { +export const Legend: React.FC = ({ legendItems, horizontal = false }) => { return ( -
+
{legendItems.map(({ name, color }) => ( -
+
{name}
diff --git a/src/components/Graphs/useGraph.ts b/src/components/Graphs/useGraph.ts index 92e72db6..ab598f8c 100644 --- a/src/components/Graphs/useGraph.ts +++ b/src/components/Graphs/useGraph.ts @@ -2,7 +2,7 @@ import { useMemo, useEffect, useState } from 'react'; import { useApiResource, useProvidersConfigResource } from '../../lib/api/useApiResource'; import { ManagedResourcesRequest } from '../../lib/api/types/crossplane/listManagedResources'; import { resourcesInterval } from '../../lib/shared/constants'; -import { Node, Edge, Position, MarkerType } from '@xyflow/react'; +import { Node, Edge, Position } from '@xyflow/react'; import dagre from 'dagre'; import { NodeData, ColorBy } from './types'; import { extractRefs, generateColorMap, getStatusCondition, resolveProviderType } from './graphUtils'; @@ -24,14 +24,20 @@ function buildGraph( treeData.forEach((n) => { const colorKey: string = colorBy === 'source' ? n.providerType : colorBy === 'flux' ? (n.fluxName ?? 'default') : n.providerConfigName; + + // Use provider/filter color for background tinting + const borderColor = colorMap[colorKey] || '#ccc'; + // Convert the border color to a very light tint for background + const backgroundColor = `${borderColor}08`; // Add 08 for ~3% opacity + const node: Node = { id: n.id, type: 'custom', data: { ...n }, style: { - border: `2px solid ${colorMap[colorKey] || '#ccc'}`, + border: `2px solid ${borderColor}`, borderRadius: 8, - backgroundColor: 'var(--sapTile_Background, #fff)', + backgroundColor, width: nodeWidth, height: nodeHeight, }, @@ -53,7 +59,9 @@ function buildGraph( id: `e-${n.parentId}-${n.id}`, source: n.parentId, target: n.id, - markerEnd: { type: MarkerType.ArrowClosed }, + type: 'step', + style: { strokeWidth: 2, stroke: '#888' }, + animated: true, }); } n.extraRefs?.forEach((refId) => { @@ -63,7 +71,9 @@ function buildGraph( id: `e-${refId}-${n.id}`, source: refId, target: n.id, - markerEnd: { type: MarkerType.ArrowClosed }, + type: 'step', + style: { strokeWidth: 2, stroke: '#888' }, + animated: true, }); } }); diff --git a/src/components/HintsCardsRow/GenericHintCard/genericHintConfigs.ts b/src/components/HintsCardsRow/GenericHintCard/genericHintConfigs.ts index e32c82d5..6ecb8265 100644 --- a/src/components/HintsCardsRow/GenericHintCard/genericHintConfigs.ts +++ b/src/components/HintsCardsRow/GenericHintCard/genericHintConfigs.ts @@ -19,7 +19,7 @@ export const useCrossplaneHintConfig = (): GenericHintConfig => { scrollTarget: '.crossplane-table-element', calculateSegments: (allItems, isLoading, error, enabled) => calculateCrossplaneSegments(allItems, isLoading, error, enabled, t), - calculateHoverData: (allItems, enabled) => calculateCrossplaneHoverDataGeneric(allItems, enabled, t), + // calculateHoverData: (allItems, enabled) => calculateCrossplaneHoverDataGeneric(allItems, enabled, t), }; }; @@ -34,7 +34,7 @@ export const useGitOpsHintConfig = (): GenericHintConfig => { scrollTarget: '.cp-page-section-gitops', calculateSegments: (allItems, isLoading, error, enabled) => calculateGitOpsSegments(allItems, isLoading, error, enabled, t), - calculateHoverData: (allItems, enabled) => calculateGitOpsHoverDataGeneric(allItems, enabled, t), + // calculateHoverData: (allItems, enabled) => calculateGitOpsHoverDataGeneric(allItems, enabled, t), }; }; diff --git a/src/components/HintsCardsRow/MultiPercentageBar/MultiPercentageBar.module.css b/src/components/HintsCardsRow/MultiPercentageBar/MultiPercentageBar.module.css index 153b8ca7..ad5e378e 100644 --- a/src/components/HintsCardsRow/MultiPercentageBar/MultiPercentageBar.module.css +++ b/src/components/HintsCardsRow/MultiPercentageBar/MultiPercentageBar.module.css @@ -3,7 +3,7 @@ --animation-duration: 600ms; --bar-width: 80%; --bar-max-width: 400px; - --bar-height: 8px; + --bar-height: 16px; --gap: 2px; --border-radius: 6px; --label-font-size: 0.875rem; From deb8cca10877ac3ac3e20c3509ea7663809553b4 Mon Sep 17 00:00:00 2001 From: Lasserich Date: Wed, 10 Sep 2025 14:43:12 +0200 Subject: [PATCH 08/37] feat: some restructuring --- src/components/BentoGrid/BentoGrid.module.css | 2 +- .../ComponentCard/ComponentCard.module.css | 70 ++--- .../BentoGrid/ComponentCard/ComponentCard.tsx | 18 +- .../ComponentCard/componentConfigs.ts} | 3 +- .../BentoGrid/ComponentCard/index.ts | 2 - .../CardHoverContent.module.css | 0 .../CardHoverContent.tsx | 0 .../hoverCalculations.ts | 0 .../LegendSection/LegendSection.module.css | 0 .../LegendSection/LegendSection.tsx | 0 .../MultiPercentageBar.module.css | 0 .../MultiPercentageBar.spec.tsx | 0 .../MultiPercentageBar/MultiPercentageBar.tsx | 0 src/components/BentoGrid/index.ts | 3 +- .../GenericHintCard.module.css | 47 ---- .../GenericHintCard/GenericHintCard.tsx | 96 ------- .../HintsCardsRow/HintsCardsRow.module.css | 68 ----- .../HintsCardsRow/HintsCardsRow.tsx | 120 -------- src/spaces/mcp/pages/McpPage.tsx | 133 +++++++-- src/types/types.ts | 11 +- src/utils/hintsCardsRowCalculations.ts | 265 +++++++++--------- 21 files changed, 276 insertions(+), 562 deletions(-) rename src/components/{HintsCardsRow/GenericHintCard/genericHintConfigs.ts => BentoGrid/ComponentCard/componentConfigs.ts} (96%) delete mode 100644 src/components/BentoGrid/ComponentCard/index.ts rename src/components/{HintsCardsRow/CardHoverContent => BentoGrid/ComponentCardHoverContent}/CardHoverContent.module.css (100%) rename src/components/{HintsCardsRow/CardHoverContent => BentoGrid/ComponentCardHoverContent}/CardHoverContent.tsx (100%) rename src/components/{HintsCardsRow/CardHoverContent => BentoGrid/ComponentCardHoverContent}/hoverCalculations.ts (100%) rename src/components/{HintsCardsRow => BentoGrid}/LegendSection/LegendSection.module.css (100%) rename src/components/{HintsCardsRow => BentoGrid}/LegendSection/LegendSection.tsx (100%) rename src/components/{HintsCardsRow => BentoGrid}/MultiPercentageBar/MultiPercentageBar.module.css (100%) rename src/components/{HintsCardsRow => BentoGrid}/MultiPercentageBar/MultiPercentageBar.spec.tsx (100%) rename src/components/{HintsCardsRow => BentoGrid}/MultiPercentageBar/MultiPercentageBar.tsx (100%) delete mode 100644 src/components/HintsCardsRow/GenericHintCard/GenericHintCard.module.css delete mode 100644 src/components/HintsCardsRow/GenericHintCard/GenericHintCard.tsx delete mode 100644 src/components/HintsCardsRow/HintsCardsRow.module.css delete mode 100644 src/components/HintsCardsRow/HintsCardsRow.tsx diff --git a/src/components/BentoGrid/BentoGrid.module.css b/src/components/BentoGrid/BentoGrid.module.css index fc25fa02..87ea5d05 100644 --- a/src/components/BentoGrid/BentoGrid.module.css +++ b/src/components/BentoGrid/BentoGrid.module.css @@ -3,7 +3,7 @@ display: grid; grid-template-columns: repeat(12, 1fr); grid-template-rows: repeat(6, 1fr); - gap: 12px; + gap: 24px; width: 100%; height: 600px; /* Fixed height for the entire grid */ position: relative; diff --git a/src/components/BentoGrid/ComponentCard/ComponentCard.module.css b/src/components/BentoGrid/ComponentCard/ComponentCard.module.css index f4151f41..2625616c 100644 --- a/src/components/BentoGrid/ComponentCard/ComponentCard.module.css +++ b/src/components/BentoGrid/ComponentCard/ComponentCard.module.css @@ -1,75 +1,47 @@ .container { - height: 100%; - width: 100%; - display: flex; - flex-direction: column; -} - -.card { - height: 100%; - width: 100%; - display: flex; - flex-direction: column; - background: var(--sapTile_Background); - border: 1px solid var(--sapTile_BorderColor); - border-radius: 12px; - overflow: hidden; position: relative; + width: 100%; } .avatar { - width: 24px; - height: 24px; - object-fit: contain; + width: 50px; + height: 50px; + border-radius: 50%; + background: transparent; + object-fit: cover; } .contentContainer { - flex: 1; display: flex; flex-direction: column; - padding: 16px; - overflow: hidden; + align-items: center; + padding: 0.5rem 0; } .progressBarContainer { - flex: 1; display: flex; - flex-direction: column; - justify-content: center; - min-height: 60px; + gap: 8px; + width: 100%; + max-width: 500px; + padding: 0 0.5rem; } .progressBar { width: 100%; } -.disabled { - position: relative; - opacity: 0.6; -} - -.disabledOverlay { +.activateButton { position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - background: rgba(255, 255, 255, 0.6); - backdrop-filter: grayscale(0.9) blur(0.5px); - border-radius: inherit; - z-index: 1; - pointer-events: none; + top: 16px; + right: 16px; + z-index: 2; + pointer-events: auto; } -/* Dark mode support */ -@media (prefers-color-scheme: dark) { - .disabledOverlay { - background: rgba(0, 0, 0, 0.4); - } +.activateButtonClickable { + cursor: pointer; } -/* UI5 theme variables for dark themes */ -[data-ui5-theme-root*="dark"] .disabledOverlay, -[data-ui5-theme*="dark"] .disabledOverlay { - background: rgba(0, 0, 0, 0.4); +.activateButtonDefault { + cursor: default; } diff --git a/src/components/BentoGrid/ComponentCard/ComponentCard.tsx b/src/components/BentoGrid/ComponentCard/ComponentCard.tsx index 28b68f27..f4c20082 100644 --- a/src/components/BentoGrid/ComponentCard/ComponentCard.tsx +++ b/src/components/BentoGrid/ComponentCard/ComponentCard.tsx @@ -1,9 +1,8 @@ -import React, { useState } from 'react'; +import React from 'react'; import { Card, CardHeader } from '@ui5/webcomponents-react'; import { useTranslation } from 'react-i18next'; import cx from 'clsx'; -import { MultiPercentageBar } from '../../HintsCardsRow/MultiPercentageBar/MultiPercentageBar'; -import { HoverContent } from '../../HintsCardsRow/CardHoverContent/CardHoverContent'; +import { MultiPercentageBar } from '../MultiPercentageBar/MultiPercentageBar'; import styles from './ComponentCard.module.css'; import { GenericHintProps } from '../../../types/types'; @@ -16,7 +15,6 @@ export const ComponentCard: React.FC = ({ config, }) => { const { t } = useTranslation(); - const [hovered, setHovered] = useState(false); // Calculate segments and state using the provided calculator const hintState = config.calculateSegments(allItems, isLoading || false, error, enabled, t); @@ -57,8 +55,6 @@ export const ComponentCard: React.FC = ({ [styles.disabled]: !enabled, })} onClick={handleClick} - onMouseEnter={enabled ? () => setHovered(true) : undefined} - onMouseLeave={enabled ? () => setHovered(false) : undefined} > {/* Disabled overlay */} {!enabled &&
} @@ -75,16 +71,6 @@ export const ComponentCard: React.FC = ({ />
- - {(() => { - const shouldShowHoverContent = enabled && hovered && config.calculateHoverData; - if (!shouldShowHoverContent) return null; - - const hoverData = config.calculateHoverData!(allItems, enabled, t); - const hasValidHoverData = !!hoverData; - - return hasValidHoverData ? : null; - })()}
); diff --git a/src/components/HintsCardsRow/GenericHintCard/genericHintConfigs.ts b/src/components/BentoGrid/ComponentCard/componentConfigs.ts similarity index 96% rename from src/components/HintsCardsRow/GenericHintCard/genericHintConfigs.ts rename to src/components/BentoGrid/ComponentCard/componentConfigs.ts index 6ecb8265..38027028 100644 --- a/src/components/HintsCardsRow/GenericHintCard/genericHintConfigs.ts +++ b/src/components/BentoGrid/ComponentCard/componentConfigs.ts @@ -4,8 +4,7 @@ import { calculateCrossplaneSegments, calculateGitOpsSegments, calculateVaultSegments, - calculateCrossplaneHoverDataGeneric, - calculateGitOpsHoverDataGeneric, + } from '../../../utils/hintsCardsRowCalculations'; export const useCrossplaneHintConfig = (): GenericHintConfig => { diff --git a/src/components/BentoGrid/ComponentCard/index.ts b/src/components/BentoGrid/ComponentCard/index.ts deleted file mode 100644 index 156bd4a8..00000000 --- a/src/components/BentoGrid/ComponentCard/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export { ComponentCard } from './ComponentCard'; -export type { GenericHintProps as ComponentCardProps } from '../../../types/types'; diff --git a/src/components/HintsCardsRow/CardHoverContent/CardHoverContent.module.css b/src/components/BentoGrid/ComponentCardHoverContent/CardHoverContent.module.css similarity index 100% rename from src/components/HintsCardsRow/CardHoverContent/CardHoverContent.module.css rename to src/components/BentoGrid/ComponentCardHoverContent/CardHoverContent.module.css diff --git a/src/components/HintsCardsRow/CardHoverContent/CardHoverContent.tsx b/src/components/BentoGrid/ComponentCardHoverContent/CardHoverContent.tsx similarity index 100% rename from src/components/HintsCardsRow/CardHoverContent/CardHoverContent.tsx rename to src/components/BentoGrid/ComponentCardHoverContent/CardHoverContent.tsx diff --git a/src/components/HintsCardsRow/CardHoverContent/hoverCalculations.ts b/src/components/BentoGrid/ComponentCardHoverContent/hoverCalculations.ts similarity index 100% rename from src/components/HintsCardsRow/CardHoverContent/hoverCalculations.ts rename to src/components/BentoGrid/ComponentCardHoverContent/hoverCalculations.ts diff --git a/src/components/HintsCardsRow/LegendSection/LegendSection.module.css b/src/components/BentoGrid/LegendSection/LegendSection.module.css similarity index 100% rename from src/components/HintsCardsRow/LegendSection/LegendSection.module.css rename to src/components/BentoGrid/LegendSection/LegendSection.module.css diff --git a/src/components/HintsCardsRow/LegendSection/LegendSection.tsx b/src/components/BentoGrid/LegendSection/LegendSection.tsx similarity index 100% rename from src/components/HintsCardsRow/LegendSection/LegendSection.tsx rename to src/components/BentoGrid/LegendSection/LegendSection.tsx diff --git a/src/components/HintsCardsRow/MultiPercentageBar/MultiPercentageBar.module.css b/src/components/BentoGrid/MultiPercentageBar/MultiPercentageBar.module.css similarity index 100% rename from src/components/HintsCardsRow/MultiPercentageBar/MultiPercentageBar.module.css rename to src/components/BentoGrid/MultiPercentageBar/MultiPercentageBar.module.css diff --git a/src/components/HintsCardsRow/MultiPercentageBar/MultiPercentageBar.spec.tsx b/src/components/BentoGrid/MultiPercentageBar/MultiPercentageBar.spec.tsx similarity index 100% rename from src/components/HintsCardsRow/MultiPercentageBar/MultiPercentageBar.spec.tsx rename to src/components/BentoGrid/MultiPercentageBar/MultiPercentageBar.spec.tsx diff --git a/src/components/HintsCardsRow/MultiPercentageBar/MultiPercentageBar.tsx b/src/components/BentoGrid/MultiPercentageBar/MultiPercentageBar.tsx similarity index 100% rename from src/components/HintsCardsRow/MultiPercentageBar/MultiPercentageBar.tsx rename to src/components/BentoGrid/MultiPercentageBar/MultiPercentageBar.tsx diff --git a/src/components/BentoGrid/index.ts b/src/components/BentoGrid/index.ts index e21d379b..1aa1b89d 100644 --- a/src/components/BentoGrid/index.ts +++ b/src/components/BentoGrid/index.ts @@ -1,6 +1,5 @@ export { BentoGrid, BentoCard } from './BentoGrid'; export type { BentoGridProps, BentoCardProps, CardSize } from './BentoGrid'; -export { ComponentCard } from './ComponentCard'; -export type { ComponentCardProps } from './ComponentCard'; +export { ComponentCard } from './ComponentCard/ComponentCard'; export { GraphCard } from './GraphCard'; export type { GraphCardProps } from './GraphCard'; diff --git a/src/components/HintsCardsRow/GenericHintCard/GenericHintCard.module.css b/src/components/HintsCardsRow/GenericHintCard/GenericHintCard.module.css deleted file mode 100644 index 2625616c..00000000 --- a/src/components/HintsCardsRow/GenericHintCard/GenericHintCard.module.css +++ /dev/null @@ -1,47 +0,0 @@ -.container { - position: relative; - width: 100%; -} - -.avatar { - width: 50px; - height: 50px; - border-radius: 50%; - background: transparent; - object-fit: cover; -} - -.contentContainer { - display: flex; - flex-direction: column; - align-items: center; - padding: 0.5rem 0; -} - -.progressBarContainer { - display: flex; - gap: 8px; - width: 100%; - max-width: 500px; - padding: 0 0.5rem; -} - -.progressBar { - width: 100%; -} - -.activateButton { - position: absolute; - top: 16px; - right: 16px; - z-index: 2; - pointer-events: auto; -} - -.activateButtonClickable { - cursor: pointer; -} - -.activateButtonDefault { - cursor: default; -} diff --git a/src/components/HintsCardsRow/GenericHintCard/GenericHintCard.tsx b/src/components/HintsCardsRow/GenericHintCard/GenericHintCard.tsx deleted file mode 100644 index 86a32991..00000000 --- a/src/components/HintsCardsRow/GenericHintCard/GenericHintCard.tsx +++ /dev/null @@ -1,96 +0,0 @@ -import React, { useState } from 'react'; -import { Card, CardHeader } from '@ui5/webcomponents-react'; -import { useTranslation } from 'react-i18next'; -import cx from 'clsx'; -import { MultiPercentageBar } from '../MultiPercentageBar/MultiPercentageBar'; -import { styles } from '../HintsCardsRow'; -import { HoverContent } from '../CardHoverContent/CardHoverContent'; -import styles2 from './GenericHintCard.module.css'; -import { GenericHintProps } from '../../../types/types'; - -export const GenericHintCard: React.FC = ({ - enabled = false, - version, - allItems = [], - isLoading, - error, - config, - height = '200px', -}) => { - const { t } = useTranslation(); - const [hovered, setHovered] = useState(false); - - // Calculate segments and state using the provided calculator - const hintState = config.calculateSegments(allItems, isLoading || false, error, enabled, t); - - // Handle click navigation if scroll target is provided - const handleClick = - enabled && config.scrollTarget - ? () => { - const el = document.querySelector(config.scrollTarget!); - if (el) { - el.scrollIntoView({ behavior: 'smooth', block: 'start' }); - } - } - : undefined; - - return ( -
- - } - titleText={config.title} - subtitleText={config.subtitle} - interactive={enabled} - /> - } - className={cx({ - [styles['disabled']]: !enabled, - })} - onClick={handleClick} - onMouseEnter={enabled ? () => setHovered(true) : undefined} - onMouseLeave={enabled ? () => setHovered(false) : undefined} - > - {/* Disabled overlay */} - {!enabled &&
} - -
-
- -
-
- - {(() => { - const shouldShowHoverContent = enabled && hovered && config.calculateHoverData; - if (!shouldShowHoverContent) return null; - - const hoverData = config.calculateHoverData!(allItems, enabled, t); - const hasValidHoverData = !!hoverData; - - return hasValidHoverData ? : null; - })()} - -
- ); -}; diff --git a/src/components/HintsCardsRow/HintsCardsRow.module.css b/src/components/HintsCardsRow/HintsCardsRow.module.css deleted file mode 100644 index cef9e0f1..00000000 --- a/src/components/HintsCardsRow/HintsCardsRow.module.css +++ /dev/null @@ -1,68 +0,0 @@ -/* Bento Container - now just houses the BentoGrid */ -.bentoContainer { - width: 100%; - max-width: 1280px; - margin: 0 auto; - padding: 20px; -} - -/* Legacy styles kept for backward compatibility with cards */ -.disabled { - position: relative; - opacity: 0.6; -} - -.disabledOverlay { - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - background: rgba(255, 255, 255, 0.6); - backdrop-filter: grayscale(0.9) blur(0.5px); - border-radius: inherit; - z-index: 1; - pointer-events: none; -} - -/* Dark mode support */ -@media (prefers-color-scheme: dark) { - .disabledOverlay { - background: rgba(0, 0, 0, 0.4); - } -} - -/* UI5 theme variables for dark themes */ -[data-ui5-theme-root*="dark"] .disabledOverlay, -[data-ui5-theme*="dark"] .disabledOverlay { - background: rgba(0, 0, 0, 0.4); -} - -/* Hover Content Animation */ -.hoverContent { - overflow: hidden; - transition: all 0.3s ease-in-out; - animation: expandIn 0.3s ease-in-out; -} - -@keyframes expandIn { - from { - max-height: 0; - opacity: 0; - transform: scaleY(0); - transform-origin: top; - } - to { - max-height: 500px; - opacity: 1; - transform: scaleY(1); - transform-origin: top; - } -} - -.hoverContentLoading { - display: flex; - justify-content: center; - align-items: center; - height: 300px; -} \ No newline at end of file diff --git a/src/components/HintsCardsRow/HintsCardsRow.tsx b/src/components/HintsCardsRow/HintsCardsRow.tsx deleted file mode 100644 index 7988b116..00000000 --- a/src/components/HintsCardsRow/HintsCardsRow.tsx +++ /dev/null @@ -1,120 +0,0 @@ -import { ComponentCard } from '../BentoGrid/ComponentCard/ComponentCard'; -import { useCrossplaneHintConfig, useGitOpsHintConfig, useVaultHintConfig, useVeleroHintConfig } from './GenericHintCard/genericHintConfigs'; -import { BentoGrid, BentoCard, GraphCard } from '../BentoGrid'; -import styles from './HintsCardsRow.module.css'; - -import { ControlPlaneType } from '../../lib/api/types/crate/controlPlanes'; -import { ManagedResourcesRequest, ManagedResourcesResponse } from '../../lib/api/types/crossplane/listManagedResources'; -import { resourcesInterval } from '../../lib/shared/constants'; -import { useApiResource } from '../../lib/api/useApiResource'; -import { ManagedResourceItem } from '../../lib/shared/types'; -import React, { useMemo } from 'react'; - -interface HintsProps { - mcp: ControlPlaneType; -} - -// Export styles for use by hint components -export { default as styles } from './HintsCardsRow.module.css'; - -// Utility function to flatten managed resources -export const flattenManagedResources = (managedResources: ManagedResourcesResponse): ManagedResourceItem[] => { - if (!managedResources || !Array.isArray(managedResources)) return []; - - return managedResources - .filter((managedResource) => managedResource?.items) - .flatMap((managedResource) => managedResource.items || []); -}; - -const HintsCardsRow: React.FC = ({ mcp }) => { - const { - data: managedResources, - isLoading: managedResourcesLoading, - error: managedResourcesError, - } = useApiResource(ManagedResourcesRequest, { - refreshInterval: resourcesInterval, - }); - - // Flatten all managed resources once and pass to components - const allItems = useMemo( - () => flattenManagedResources(managedResources ?? ([] as unknown as ManagedResourcesResponse)), - [managedResources], - ); - - // Get hint configurations - const crossplaneConfig = useCrossplaneHintConfig(); - const gitOpsConfig = useGitOpsHintConfig(); - const vaultConfig = useVaultHintConfig(); - const veleroConfig = useVeleroHintConfig(); - - return ( - - {/* Left side: Graph in extra-large (top) */} - - - - - {/* Left side: Crossplane component in large (bottom) */} - - - - - {/* Right side: First medium component (GitOps) */} - - - - - {/* Right side: Second medium component (GitOps copy) */} - - - - - {/* Right side: First small component (Velero config) */} - - - - - {/* Right side: Second small component (Vault) */} - - - - - ); -}; - -export default HintsCardsRow; diff --git a/src/spaces/mcp/pages/McpPage.tsx b/src/spaces/mcp/pages/McpPage.tsx index 72bb97e2..9ecf48e3 100644 --- a/src/spaces/mcp/pages/McpPage.tsx +++ b/src/spaces/mcp/pages/McpPage.tsx @@ -1,7 +1,6 @@ -import { BusyIndicator, ObjectPage, ObjectPageSection, ObjectPageTitle, Panel, Title } from '@ui5/webcomponents-react'; +import { BusyIndicator, ObjectPage, ObjectPageSection, ObjectPageTitle } from '@ui5/webcomponents-react'; import { useParams } from 'react-router-dom'; import CopyKubeconfigButton from '../../../components/ControlPlanes/CopyKubeconfigButton.tsx'; -import styles from './McpPage.module.css'; import '@ui5/webcomponents-fiori/dist/illustrations/SimpleBalloon'; import '@ui5/webcomponents-fiori/dist/illustrations/SimpleError'; // thorws error sometimes if not imported @@ -9,24 +8,31 @@ import '@ui5/webcomponents-fiori/dist/illustrations/BeforeSearch'; import IllustratedError from '../../../components/Shared/IllustratedError.tsx'; import { BreadCrumbFeedbackHeader } from '../../../components/Core/IntelligentBreadcrumbs.tsx'; -import FluxList from '../../../components/ControlPlane/FluxList.tsx'; import { ControlPlane as ControlPlaneResource } from '../../../lib/api/types/crate/controlPlanes.ts'; import { useTranslation } from 'react-i18next'; import { McpContextProvider, WithinManagedControlPlane } from '../../../lib/shared/McpContext.tsx'; -import { ManagedResources } from '../../../components/ControlPlane/ManagedResources.tsx'; -import { ProvidersConfig } from '../../../components/ControlPlane/ProvidersConfig.tsx'; -import { Providers } from '../../../components/ControlPlane/Providers.tsx'; -import ComponentList from '../../../components/ControlPlane/ComponentList.tsx'; import MCPHealthPopoverButton from '../../../components/ControlPlane/MCPHealthPopoverButton.tsx'; import { useApiResource } from '../../../lib/api/useApiResource.ts'; import { YamlViewButtonWithLoader } from '../../../components/Yaml/YamlViewButtonWithLoader.tsx'; -import { Landscapers } from '../../../components/ControlPlane/Landscapers.tsx'; import { AuthProviderMcp } from '../auth/AuthContextMcp.tsx'; import { isNotFoundError } from '../../../lib/api/error.ts'; import { NotFoundBanner } from '../../../components/Ui/NotFoundBanner/NotFoundBanner.tsx'; -import Graph from '../../../components/Graphs/Graph.tsx'; -import HintsCardsRow from '../../../components/HintsCardsRow/HintsCardsRow.tsx'; +import { BentoGrid, BentoCard, GraphCard, ComponentCard } from '../../../components/BentoGrid'; +import { useCrossplaneHintConfig, useGitOpsHintConfig, useVaultHintConfig, useVeleroHintConfig } from '../../../components/BentoGrid/ComponentCard/componentConfigs.ts'; +import { ManagedResourcesRequest, ManagedResourcesResponse } from '../../../lib/api/types/crossplane/listManagedResources'; +import { resourcesInterval } from '../../../lib/shared/constants'; +import { ManagedResourceItem } from '../../../lib/shared/types'; +import { useMemo } from 'react'; + +// Utility function to flatten managed resources +const flattenManagedResources = (managedResources: ManagedResourcesResponse): ManagedResourceItem[] => { + if (!managedResources || !Array.isArray(managedResources)) return []; + + return managedResources + .filter((managedResource) => managedResource?.items) + .flatMap((managedResource) => managedResource.items || []); +}; export default function McpPage() { const { projectName, workspaceName, controlPlaneName } = useParams(); @@ -60,7 +66,40 @@ export default function McpPage() { > - + + + + ); +} + +function McpPageContent({ mcp, controlPlaneName }: { mcp: any; controlPlaneName: string }) { + const { t } = useTranslation(); + const { projectName, workspaceName } = useParams(); + + // Add managed resources API call within the MCP context + const { + data: managedResources, + isLoading: managedResourcesLoading, + error: managedResourcesError, + } = useApiResource(ManagedResourcesRequest, { + refreshInterval: resourcesInterval, + }); + + // Flatten all managed resources once and pass to components + const allItems = useMemo( + () => flattenManagedResources(managedResources ?? ([] as unknown as ManagedResourcesResponse)), + [managedResources], + ); + + // Get hint configurations + const crossplaneConfig = useCrossplaneHintConfig(); + const gitOpsConfig = useGitOpsHintConfig(); + const vaultConfig = useVaultHintConfig(); + const veleroConfig = useVeleroHintConfig(); + + return ( + @@ -99,12 +138,74 @@ export default function McpPage() { titleText={t('McpPage.overviewTitle')} hideTitleText > - + + {/* Left side: Graph in extra-large (top) */} + + + + + {/* Left side: Crossplane component in large (bottom) */} + + + + + {/* Right side: First medium component (GitOps) */} + + + + + {/* Right side: Second medium component (GitOps copy) */} + + + + + {/* Right side: First small component (Velero config) */} + + + + + {/* Right side: Second small component (Vault) */} + + + + - - - ); } diff --git a/src/types/types.ts b/src/types/types.ts index 29373f69..fe02fe54 100644 --- a/src/types/types.ts +++ b/src/types/types.ts @@ -1,8 +1,7 @@ import { ReactNode } from 'react'; import { APIError } from '../lib/api/error'; import { ManagedResourceItem } from '../lib/shared/types'; -import { PercentageSegment } from '../components/HintsCardsRow/MultiPercentageBar/MultiPercentageBar'; -import { HoverContentProps } from '../components/HintsCardsRow/CardHoverContent/CardHoverContent'; +import { PercentageSegment } from '../components/BentoGrid/MultiPercentageBar/MultiPercentageBar'; export interface GenericHintSegmentCalculator { ( @@ -14,13 +13,6 @@ export interface GenericHintSegmentCalculator { ): GenericHintState; } -export interface HoverDataCalculator { - ( - allItems: ManagedResourceItem[], - enabled: boolean, - t: (key: string) => string, - ): Omit | null; -} export interface GenericHintState { segments: PercentageSegment[]; @@ -38,7 +30,6 @@ export interface GenericHintConfig { iconStyle?: React.CSSProperties; scrollTarget?: string; calculateSegments: GenericHintSegmentCalculator; - calculateHoverData?: HoverDataCalculator; renderHoverContent?: (allItems: ManagedResourceItem[], enabled: boolean) => ReactNode; } diff --git a/src/utils/hintsCardsRowCalculations.ts b/src/utils/hintsCardsRowCalculations.ts index a2c6eb3f..0e6113e7 100644 --- a/src/utils/hintsCardsRowCalculations.ts +++ b/src/utils/hintsCardsRowCalculations.ts @@ -1,8 +1,7 @@ import { ManagedResourceItem, Condition } from '../lib/shared/types'; import { APIError } from '../lib/api/error'; -import { GenericHintSegmentCalculator, GenericHintState, HoverDataCalculator } from '../types/types'; +import { GenericHintSegmentCalculator, GenericHintState } from '../types/types'; -import { HoverContentProps } from '../components/HintsCardsRow/CardHoverContent/CardHoverContent'; /** * Common colors used across all hints @@ -316,134 +315,134 @@ export const calculateCrossplaneHoverData = (allItems: ManagedResourceItem[]): C }; }; -/** - * Calculate hover data for Crossplane using the generic HoverContent structure - * Shows healthy resources (the positive segment) - */ -export const calculateCrossplaneHoverDataGeneric: HoverDataCalculator = ( - allItems: ManagedResourceItem[], - enabled: boolean, - t: (key: string) => string, -): Omit | null => { - if (!enabled || allItems.length === 0) { - return null; - } - - const { resourceTypeStats, overallStats } = calculateCrossplaneHoverData(allItems); - - // Get the segments from the bar chart calculation to ensure color consistency - const segmentData = calculateCrossplaneSegments(allItems, false, undefined, enabled, t); - - const legendItems = segmentData.segments.map((segment) => ({ - label: segment.label, - count: - segment.label === t('common.healthy') - ? overallStats.healthy - : segment.label === t('common.creating') - ? overallStats.creating - : overallStats.unhealthy, - color: segment.color, - })); - - // Focus on healthy percentage in radar chart (the positive aspect) - const radarDataset = resourceTypeStats.map((stats) => ({ - type: stats.type, - healthy: stats.healthyPercentage, - })); - - // Use the color of the healthy segment (first segment in the bar chart) - const healthyColor = segmentData.segments.find((s) => s.label === t('common.healthy'))?.color || HINT_COLORS.healthy; - - return { - totalCount: overallStats.total, - totalLabel: t('Hints.CrossplaneHint.hoverContent.totalResources'), - legendItems, - radarDataset, - radarDimensions: [{ accessor: 'type' }], - radarMeasures: [ - { - accessor: 'healthy', - color: healthyColor, - hideDataLabel: true, - label: t('Hints.CrossplaneHint.hoverContent.healthy') + ' (%)', - }, - ], - }; -}; - -/** - * Calculate hover data for GitOps showing resource type management coverage - * Shows managed resources (the positive segment) - */ -export const calculateGitOpsHoverDataGeneric: HoverDataCalculator = ( - allItems: ManagedResourceItem[], - enabled: boolean, - t: (key: string) => string, -): Omit | null => { - if (!enabled || allItems.length === 0) { - return null; - } - - // Group by resource type and calculate flux management coverage - const typeStats: Record = {}; - let totalManaged = 0; - - allItems.forEach((item: ManagedResourceItem) => { - const type = item.kind || 'Unknown'; - - if (!typeStats[type]) { - typeStats[type] = { total: 0, managed: 0 }; - } - - typeStats[type].total++; - - // Check if the resource is managed by Flux - if ( - item?.metadata?.labels && - Object.prototype.hasOwnProperty.call(item.metadata.labels, 'kustomize.toolkit.fluxcd.io/name') - ) { - typeStats[type].managed++; - totalManaged++; - } - }); - - const totalUnmanaged = allItems.length - totalManaged; - - // Get the segments from the bar chart calculation to ensure color consistency - const segmentData = calculateGitOpsSegments(allItems, false, undefined, enabled, t); - - const legendItems = segmentData.segments.map((segment) => ({ - label: segment.label, - count: segment.label === t('common.progress') ? totalManaged : totalUnmanaged, - color: segment.color, - })); - - // Focus on managed percentage in radar chart (the positive aspect) - const radarDataset = Object.keys(typeStats).map((type) => { - const stats = typeStats[type]; - const managedPercentage = Math.round((stats.managed / stats.total) * 100); - return { - type, - managed: managedPercentage, - }; - }); - - // Use the color of the progress/managed segment (first segment in the bar chart) - const managedColor = segmentData.segments.find((s) => s.label === t('common.progress'))?.color || HINT_COLORS.managed; - - return { - totalCount: allItems.length, - totalLabel: t('Hints.GitOpsHint.hoverContent.totalResources'), - legendItems, - radarDataset, - radarDimensions: [{ accessor: 'type' }], - radarMeasures: [ - { - accessor: 'managed', - color: managedColor, - hideDataLabel: true, - label: t('Hints.GitOpsHint.hoverContent.managed') + ' (%)', - }, - ], - }; -}; +// /** +// * Calculate hover data for Crossplane using the generic HoverContent structure +// * Shows healthy resources (the positive segment) +// */ +// export const calculateCrossplaneHoverDataGeneric: HoverDataCalculator = ( +// allItems: ManagedResourceItem[], +// enabled: boolean, +// t: (key: string) => string, +// ): Omit | null => { +// if (!enabled || allItems.length === 0) { +// return null; +// } + +// const { resourceTypeStats, overallStats } = calculateCrossplaneHoverData(allItems); + +// // Get the segments from the bar chart calculation to ensure color consistency +// const segmentData = calculateCrossplaneSegments(allItems, false, undefined, enabled, t); + +// const legendItems = segmentData.segments.map((segment) => ({ +// label: segment.label, +// count: +// segment.label === t('common.healthy') +// ? overallStats.healthy +// : segment.label === t('common.creating') +// ? overallStats.creating +// : overallStats.unhealthy, +// color: segment.color, +// })); + +// // Focus on healthy percentage in radar chart (the positive aspect) +// const radarDataset = resourceTypeStats.map((stats) => ({ +// type: stats.type, +// healthy: stats.healthyPercentage, +// })); + +// // Use the color of the healthy segment (first segment in the bar chart) +// const healthyColor = segmentData.segments.find((s) => s.label === t('common.healthy'))?.color || HINT_COLORS.healthy; + +// return { +// totalCount: overallStats.total, +// totalLabel: t('Hints.CrossplaneHint.hoverContent.totalResources'), +// legendItems, +// radarDataset, +// radarDimensions: [{ accessor: 'type' }], +// radarMeasures: [ +// { +// accessor: 'healthy', +// color: healthyColor, +// hideDataLabel: true, +// label: t('Hints.CrossplaneHint.hoverContent.healthy') + ' (%)', +// }, +// ], +// }; +// }; + +// /** +// * Calculate hover data for GitOps showing resource type management coverage +// * Shows managed resources (the positive segment) +// */ +// export const calculateGitOpsHoverDataGeneric: HoverDataCalculator = ( +// allItems: ManagedResourceItem[], +// enabled: boolean, +// t: (key: string) => string, +// ): Omit | null => { +// if (!enabled || allItems.length === 0) { +// return null; +// } + +// // Group by resource type and calculate flux management coverage +// const typeStats: Record = {}; +// let totalManaged = 0; + +// allItems.forEach((item: ManagedResourceItem) => { +// const type = item.kind || 'Unknown'; + +// if (!typeStats[type]) { +// typeStats[type] = { total: 0, managed: 0 }; +// } + +// typeStats[type].total++; + +// // Check if the resource is managed by Flux +// if ( +// item?.metadata?.labels && +// Object.prototype.hasOwnProperty.call(item.metadata.labels, 'kustomize.toolkit.fluxcd.io/name') +// ) { +// typeStats[type].managed++; +// totalManaged++; +// } +// }); + +// const totalUnmanaged = allItems.length - totalManaged; + +// // Get the segments from the bar chart calculation to ensure color consistency +// const segmentData = calculateGitOpsSegments(allItems, false, undefined, enabled, t); + +// const legendItems = segmentData.segments.map((segment) => ({ +// label: segment.label, +// count: segment.label === t('common.progress') ? totalManaged : totalUnmanaged, +// color: segment.color, +// })); + +// // Focus on managed percentage in radar chart (the positive aspect) +// const radarDataset = Object.keys(typeStats).map((type) => { +// const stats = typeStats[type]; +// const managedPercentage = Math.round((stats.managed / stats.total) * 100); +// return { +// type, +// managed: managedPercentage, +// }; +// }); + +// // Use the color of the progress/managed segment (first segment in the bar chart) +// const managedColor = segmentData.segments.find((s) => s.label === t('common.progress'))?.color || HINT_COLORS.managed; + +// return { +// totalCount: allItems.length, +// totalLabel: t('Hints.GitOpsHint.hoverContent.totalResources'), +// legendItems, +// radarDataset, +// radarDimensions: [{ accessor: 'type' }], +// radarMeasures: [ +// { +// accessor: 'managed', +// color: managedColor, +// hideDataLabel: true, +// label: t('Hints.GitOpsHint.hoverContent.managed') + ' (%)', +// }, +// ], +// }; +// }; From acc9f79b3d39e94cf3e5523bd390c59368c334f3 Mon Sep 17 00:00:00 2001 From: Lasserich Date: Wed, 10 Sep 2025 14:49:20 +0200 Subject: [PATCH 09/37] feat: maxWidth --- src/spaces/mcp/pages/McpPage.tsx | 213 ++++++++++++++++--------------- 1 file changed, 107 insertions(+), 106 deletions(-) diff --git a/src/spaces/mcp/pages/McpPage.tsx b/src/spaces/mcp/pages/McpPage.tsx index 9ecf48e3..8b3e66b8 100644 --- a/src/spaces/mcp/pages/McpPage.tsx +++ b/src/spaces/mcp/pages/McpPage.tsx @@ -100,112 +100,113 @@ function McpPageContent({ mcp, controlPlaneName }: { mcp: any; controlPlaneName: return ( } - //TODO: actionBar should use Toolbar and ToolbarButton for consistent design - actionsBar={ -
- - - -
- } - /> - } - > - } + //TODO: actionBar should use Toolbar and ToolbarButton for consistent design + actionsBar={ +
- - {/* Left side: Graph in extra-large (top) */} - - - - - {/* Left side: Crossplane component in large (bottom) */} - - - - - {/* Right side: First medium component (GitOps) */} - - - - - {/* Right side: Second medium component (GitOps copy) */} - - - - - {/* Right side: First small component (Velero config) */} - - - - - {/* Right side: Second small component (Vault) */} - - - - - - - + + + +
+ } + /> + } + > + +
+ + {/* Left side: Graph in extra-large (top) */} + + + + + {/* Left side: Crossplane component in large (bottom) */} + + + + + {/* Right side: First medium component (GitOps) */} + + + + + {/* Right side: Second medium component (GitOps copy) */} + + + + + {/* Right side: First small component (Velero config) */} + + + + + {/* Right side: Second small component (Vault) */} + + + + +
+
+
); } From edc4c7de6b174805964c220cce007f156d98b6ce Mon Sep 17 00:00:00 2001 From: Lasserich Date: Wed, 10 Sep 2025 14:52:05 +0200 Subject: [PATCH 10/37] feat: components fill Bento --- .../ComponentCard/ComponentCard.module.css | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/src/components/BentoGrid/ComponentCard/ComponentCard.module.css b/src/components/BentoGrid/ComponentCard/ComponentCard.module.css index 2625616c..a8154b0f 100644 --- a/src/components/BentoGrid/ComponentCard/ComponentCard.module.css +++ b/src/components/BentoGrid/ComponentCard/ComponentCard.module.css @@ -1,6 +1,30 @@ .container { position: relative; width: 100%; + height: 100%; + display: flex; + flex-direction: column; +} + +.card { + height: 100%; + display: flex; + flex-direction: column; +} + +.disabled { + opacity: 0.6; +} + +.disabledOverlay { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + background: rgba(0, 0, 0, 0.1); + z-index: 1; + pointer-events: none; } .avatar { @@ -15,7 +39,9 @@ display: flex; flex-direction: column; align-items: center; + justify-content: center; padding: 0.5rem 0; + flex: 1; } .progressBarContainer { From f6f3080ba64732e7d0da6275a0107d3701c9cbf1 Mon Sep 17 00:00:00 2001 From: Lasserich Date: Wed, 10 Sep 2025 15:18:15 +0200 Subject: [PATCH 11/37] fix: zindex & shadow --- src/components/Graphs/Legend.module.css | 4 +- src/spaces/mcp/pages/McpPage.module.css | 8 + src/spaces/mcp/pages/McpPage.tsx | 226 +++++++++++++++++------- 3 files changed, 170 insertions(+), 68 deletions(-) diff --git a/src/components/Graphs/Legend.module.css b/src/components/Graphs/Legend.module.css index 9648b886..8e85ac18 100644 --- a/src/components/Graphs/Legend.module.css +++ b/src/components/Graphs/Legend.module.css @@ -8,7 +8,7 @@ background-color: rgba(255, 255, 255, 0.95); padding: 0.75rem; border-radius: 8px; - box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05); border: 1px solid var(--sapList_BorderColor, #ddd); backdrop-filter: blur(4px); } @@ -22,7 +22,7 @@ border-radius: 8px; background-color: var(--sapTile_Background, #fff); margin: 1rem; - box-shadow: 0 2px 6px rgba(0, 0, 0, 0.15); + box-shadow: 0 2px 6px rgba(0, 0, 0, 0.05); overflow: auto; align-self: flex-start; color: var(--sapTextColor, #222); diff --git a/src/spaces/mcp/pages/McpPage.module.css b/src/spaces/mcp/pages/McpPage.module.css index 4d46900a..793bcb79 100644 --- a/src/spaces/mcp/pages/McpPage.module.css +++ b/src/spaces/mcp/pages/McpPage.module.css @@ -3,3 +3,11 @@ margin: 0.1em auto -8px auto; width: 100%; } + +:global(.graph-card) { + z-index: 1 !important; +} + +:global(.graph-card:hover) { + z-index: 1 !important; +} diff --git a/src/spaces/mcp/pages/McpPage.tsx b/src/spaces/mcp/pages/McpPage.tsx index 8b3e66b8..b93f7a87 100644 --- a/src/spaces/mcp/pages/McpPage.tsx +++ b/src/spaces/mcp/pages/McpPage.tsx @@ -1,6 +1,7 @@ -import { BusyIndicator, ObjectPage, ObjectPageSection, ObjectPageTitle } from '@ui5/webcomponents-react'; +import { BusyIndicator, ObjectPage, ObjectPageSection, ObjectPageTitle, Panel, Title } from '@ui5/webcomponents-react'; import { useParams } from 'react-router-dom'; import CopyKubeconfigButton from '../../../components/ControlPlanes/CopyKubeconfigButton.tsx'; +import styles from './McpPage.module.css'; import '@ui5/webcomponents-fiori/dist/illustrations/SimpleBalloon'; import '@ui5/webcomponents-fiori/dist/illustrations/SimpleError'; // thorws error sometimes if not imported @@ -24,6 +25,10 @@ import { ManagedResourcesRequest, ManagedResourcesResponse } from '../../../lib/ import { resourcesInterval } from '../../../lib/shared/constants'; import { ManagedResourceItem } from '../../../lib/shared/types'; import { useMemo } from 'react'; +import { ManagedResources } from '../../../components/ControlPlane/ManagedResources.tsx'; +import { Providers } from '../../../components/ControlPlane/Providers.tsx'; +import { ProvidersConfig } from '../../../components/ControlPlane/ProvidersConfig.tsx'; +import FluxList from '../../../components/ControlPlane/FluxList.tsx'; // Utility function to flatten managed resources const flattenManagedResources = (managedResources: ManagedResourcesResponse): ManagedResourceItem[] => { @@ -98,6 +103,21 @@ function McpPageContent({ mcp, controlPlaneName }: { mcp: any; controlPlaneName: const vaultConfig = useVaultHintConfig(); const veleroConfig = useVeleroHintConfig(); + // Handle component card clicks + const handleCrossplaneClick = () => { + const el = document.querySelector('#crossplane'); + if (el) { + el.scrollIntoView({ behavior: 'smooth', block: 'start' }); + } + }; + + const handleFluxClick = () => { + const el = document.querySelector('#gitops'); + if (el) { + el.scrollIntoView({ behavior: 'smooth', block: 'start' }); + } + }; + return ( -
+
{/* Left side: Graph in extra-large (top) */} - - - - - {/* Left side: Crossplane component in large (bottom) */} - - - - - {/* Right side: First medium component (GitOps) */} - - - - - {/* Right side: Second medium component (GitOps copy) */} - - - - - {/* Right side: First small component (Velero config) */} - - - - - {/* Right side: Second small component (Vault) */} - - - - + + + + + {/* Left side: Crossplane component in large (bottom) */} + +
+ +
+
+ + {/* Right side: First medium component (GitOps) */} + +
+ +
+
+ + {/* Right side: Second medium component (GitOps copy) */} + +
+ +
+
+ + {/* Right side: First small component (Velero config) */} + + + + + {/* Right side: Second small component (Vault) */} + + + +
+ + + {t('McpPage.crossplaneTitle')}} + noAnimation + > +
+ +
+
+ +
+
+ +
+
+
+ + + {t('McpPage.gitOpsTitle')}} + noAnimation + > + + + ); } From 3b5bcf04c95e3d68dc5b469259b81e1dc1391a30 Mon Sep 17 00:00:00 2001 From: Lasserich Date: Wed, 10 Sep 2025 15:35:40 +0200 Subject: [PATCH 12/37] feat: add expand button --- .../BentoGrid/GraphCard/GraphCard.module.css | 2 +- src/spaces/mcp/pages/McpPage.module.css | 8 - src/spaces/mcp/pages/McpPage.tsx | 165 +++++++++++++++--- 3 files changed, 140 insertions(+), 35 deletions(-) diff --git a/src/components/BentoGrid/GraphCard/GraphCard.module.css b/src/components/BentoGrid/GraphCard/GraphCard.module.css index 76d0f11e..a7224f04 100644 --- a/src/components/BentoGrid/GraphCard/GraphCard.module.css +++ b/src/components/BentoGrid/GraphCard/GraphCard.module.css @@ -14,7 +14,7 @@ width: 100%; flex: 1; position: relative; - z-index: 10; + z-index: 1; } /* Override the Graph component's fixed height globally within this wrapper */ diff --git a/src/spaces/mcp/pages/McpPage.module.css b/src/spaces/mcp/pages/McpPage.module.css index 793bcb79..4d46900a 100644 --- a/src/spaces/mcp/pages/McpPage.module.css +++ b/src/spaces/mcp/pages/McpPage.module.css @@ -3,11 +3,3 @@ margin: 0.1em auto -8px auto; width: 100%; } - -:global(.graph-card) { - z-index: 1 !important; -} - -:global(.graph-card:hover) { - z-index: 1 !important; -} diff --git a/src/spaces/mcp/pages/McpPage.tsx b/src/spaces/mcp/pages/McpPage.tsx index b93f7a87..720a2c48 100644 --- a/src/spaces/mcp/pages/McpPage.tsx +++ b/src/spaces/mcp/pages/McpPage.tsx @@ -1,4 +1,4 @@ -import { BusyIndicator, ObjectPage, ObjectPageSection, ObjectPageTitle, Panel, Title } from '@ui5/webcomponents-react'; +import { BusyIndicator, ObjectPage, ObjectPageSection, ObjectPageTitle, Panel, Title, Button } from '@ui5/webcomponents-react'; import { useParams } from 'react-router-dom'; import CopyKubeconfigButton from '../../../components/ControlPlanes/CopyKubeconfigButton.tsx'; import styles from './McpPage.module.css'; @@ -118,6 +118,21 @@ function McpPageContent({ mcp, controlPlaneName }: { mcp: any; controlPlaneName: } }; + // For now, small cards will also scroll to their respective sections + const handleKyvernoClick = () => { + const el = document.querySelector('#crossplane'); + if (el) { + el.scrollIntoView({ behavior: 'smooth', block: 'start' }); + } + }; + + const handleVaultClick = () => { + const el = document.querySelector('#crossplane'); + if (el) { + el.scrollIntoView({ behavior: 'smooth', block: 'start' }); + } + }; + return ( {/* Left side: Graph in extra-large (top) */} - + @@ -177,7 +187,8 @@ function McpPageContent({ mcp, controlPlaneName }: { mcp: any; controlPlaneName: style={{ cursor: 'pointer', height: '100%', - width: '100%' + width: '100%', + position: 'relative' }} > +
@@ -198,7 +225,8 @@ function McpPageContent({ mcp, controlPlaneName }: { mcp: any; controlPlaneName: style={{ cursor: 'pointer', height: '100%', - width: '100%' + width: '100%', + position: 'relative' }} > +
@@ -219,7 +263,8 @@ function McpPageContent({ mcp, controlPlaneName }: { mcp: any; controlPlaneName: style={{ cursor: 'pointer', height: '100%', - width: '100%' + width: '100%', + position: 'relative' }} > +
{/* Right side: First small component (Velero config) */} - +
+ +
{/* Right side: Second small component (Vault) */} - +
+ +
From 646da2bf2c785207af482bd3dcaf058c2a28aa32 Mon Sep 17 00:00:00 2001 From: Lasserich Date: Wed, 10 Sep 2025 15:41:41 +0200 Subject: [PATCH 13/37] fix: move button --- .../ComponentCard/ComponentCard.module.css | 22 ++ .../BentoGrid/ComponentCard/ComponentCard.tsx | 33 +-- src/spaces/mcp/pages/McpPage.tsx | 222 ++++-------------- 3 files changed, 92 insertions(+), 185 deletions(-) diff --git a/src/components/BentoGrid/ComponentCard/ComponentCard.module.css b/src/components/BentoGrid/ComponentCard/ComponentCard.module.css index a8154b0f..bbf1a642 100644 --- a/src/components/BentoGrid/ComponentCard/ComponentCard.module.css +++ b/src/components/BentoGrid/ComponentCard/ComponentCard.module.css @@ -16,6 +16,10 @@ opacity: 0.6; } +.clickable { + cursor: pointer; +} + .disabledOverlay { position: absolute; top: 0; @@ -71,3 +75,21 @@ .activateButtonDefault { cursor: default; } + +.expandButton { + position: absolute; + bottom: 8px; + right: 8px; + min-width: 32px; + height: 32px; + z-index: 10; +} + +.expandButtonSmall { + position: absolute; + bottom: 8px; + right: 8px; + min-width: 24px; + height: 24px; + z-index: 10; +} diff --git a/src/components/BentoGrid/ComponentCard/ComponentCard.tsx b/src/components/BentoGrid/ComponentCard/ComponentCard.tsx index f4c20082..d16663d4 100644 --- a/src/components/BentoGrid/ComponentCard/ComponentCard.tsx +++ b/src/components/BentoGrid/ComponentCard/ComponentCard.tsx @@ -1,35 +1,26 @@ import React from 'react'; -import { Card, CardHeader } from '@ui5/webcomponents-react'; +import { Card, CardHeader, Button } from '@ui5/webcomponents-react'; import { useTranslation } from 'react-i18next'; import cx from 'clsx'; import { MultiPercentageBar } from '../MultiPercentageBar/MultiPercentageBar'; import styles from './ComponentCard.module.css'; import { GenericHintProps } from '../../../types/types'; -export const ComponentCard: React.FC = ({ +export const ComponentCard: React.FC void; size?: 'small' | 'medium' | 'large' | 'extra-large' }> = ({ enabled = false, version, allItems = [], isLoading, error, config, + onClick, + size = 'medium', }) => { const { t } = useTranslation(); // Calculate segments and state using the provided calculator const hintState = config.calculateSegments(allItems, isLoading || false, error, enabled, t); - // Handle click navigation if scroll target is provided - const handleClick = - enabled && config.scrollTarget - ? () => { - const el = document.querySelector(config.scrollTarget!); - if (el) { - el.scrollIntoView({ behavior: 'smooth', block: 'start' }); - } - } - : undefined; - return (
= ({ } className={cx(styles.card, { [styles.disabled]: !enabled, + [styles.clickable]: !!onClick, })} - onClick={handleClick} + onClick={onClick} > {/* Disabled overlay */} {!enabled &&
} + {/* Expand button */} + {onClick && ( +
+ {/* Right side: First medium component (GitOps) */} -
- -
+
{/* Right side: Second medium component (GitOps copy) */} -
- -
+
{/* Right side: First small component (Velero config) */} -
- -
+
{/* Right side: Second small component (Vault) */} -
- -
+
From 67a781ceff6a272e30c182993dd40c9ac5c61667 Mon Sep 17 00:00:00 2001 From: Lasserich Date: Thu, 11 Sep 2025 08:41:57 +0200 Subject: [PATCH 14/37] feat: fix sizing --- src/spaces/mcp/pages/McpPage.module.css | 36 +++ src/spaces/mcp/pages/McpPage.tsx | 334 +++++++++++++++--------- 2 files changed, 248 insertions(+), 122 deletions(-) diff --git a/src/spaces/mcp/pages/McpPage.module.css b/src/spaces/mcp/pages/McpPage.module.css index 4d46900a..db102c72 100644 --- a/src/spaces/mcp/pages/McpPage.module.css +++ b/src/spaces/mcp/pages/McpPage.module.css @@ -3,3 +3,39 @@ margin: 0.1em auto -8px auto; width: 100%; } + +/* Dynamic expansion animations for bento grid */ +.expandedGrid { + transition: all 0.5s cubic-bezier(0.4, 0, 0.2, 1); + /* Keep the original 600px height and 6-row structure */ +} + +.expandedCard { + transition: all 0.5s cubic-bezier(0.4, 0, 0.2, 1); + transform: scale(1.02); + box-shadow: var(--sapContent_Shadow3) !important; + border: 2px solid var(--sapButton_Selected_BorderColor) !important; +} + +.hidingCard { + opacity: 0; + transform: scale(0.95) translateX(20px); + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); + pointer-events: none; +} + +/* Smooth grid column transitions */ +.expandedGrid .bentoCard { + transition: grid-column 0.5s cubic-bezier(0.4, 0, 0.2, 1); +} + +@keyframes slideInUp { + from { + opacity: 0; + transform: translateY(20px); + } + to { + opacity: 1; + transform: translateY(0); + } +} diff --git a/src/spaces/mcp/pages/McpPage.tsx b/src/spaces/mcp/pages/McpPage.tsx index 8ae3aac1..4c643a17 100644 --- a/src/spaces/mcp/pages/McpPage.tsx +++ b/src/spaces/mcp/pages/McpPage.tsx @@ -1,4 +1,4 @@ -import { BusyIndicator, ObjectPage, ObjectPageSection, ObjectPageTitle, Panel, Title } from '@ui5/webcomponents-react'; +import { BusyIndicator, ObjectPage, ObjectPageSection, ObjectPageTitle, Button } from '@ui5/webcomponents-react'; import { useParams } from 'react-router-dom'; import CopyKubeconfigButton from '../../../components/ControlPlanes/CopyKubeconfigButton.tsx'; import styles from './McpPage.module.css'; @@ -24,7 +24,7 @@ import { useCrossplaneHintConfig, useGitOpsHintConfig, useVaultHintConfig, useVe import { ManagedResourcesRequest, ManagedResourcesResponse } from '../../../lib/api/types/crossplane/listManagedResources'; import { resourcesInterval } from '../../../lib/shared/constants'; import { ManagedResourceItem } from '../../../lib/shared/types'; -import { useMemo } from 'react'; +import { useMemo, useState } from 'react'; import { ManagedResources } from '../../../components/ControlPlane/ManagedResources.tsx'; import { Providers } from '../../../components/ControlPlane/Providers.tsx'; import { ProvidersConfig } from '../../../components/ControlPlane/ProvidersConfig.tsx'; @@ -81,6 +81,8 @@ export default function McpPage() { function McpPageContent({ mcp, controlPlaneName }: { mcp: any; controlPlaneName: string }) { const { t } = useTranslation(); const { projectName, workspaceName } = useParams(); + const [expandedCard, setExpandedCard] = useState(null); + const [isExpanding, setIsExpanding] = useState(false); // Add managed resources API call within the MCP context const { @@ -104,20 +106,41 @@ function McpPageContent({ mcp, controlPlaneName }: { mcp: any; controlPlaneName: const veleroConfig = useVeleroHintConfig(); // Handle component card clicks - const handleCrossplaneClick = () => { - const el = document.querySelector('#crossplane'); - if (el) { - el.scrollIntoView({ behavior: 'smooth', block: 'start' }); - } + const handleCrossplaneExpand = () => { + setIsExpanding(true); + setTimeout(() => { + setExpandedCard('crossplane'); + setIsExpanding(false); + }, 50); }; - const handleFluxClick = () => { - const el = document.querySelector('#gitops'); - if (el) { - el.scrollIntoView({ behavior: 'smooth', block: 'start' }); - } + const handleGitOpsExpand = () => { + setIsExpanding(true); + setTimeout(() => { + setExpandedCard('gitops'); + setIsExpanding(false); + }, 50); + }; + + const handleCollapseExpanded = () => { + setIsExpanding(true); + setTimeout(() => { + setExpandedCard(null); + setIsExpanding(false); + }, 300); }; + // Remove separate page logic - we'll do dynamic expansion within the grid + // if (expandedCard) { + // return ( + // + // ); + // } + // For now, small cards will also scroll to their respective sections const handleKyvernoClick = () => { const el = document.querySelector('#crossplane'); @@ -174,126 +197,193 @@ function McpPageContent({ mcp, controlPlaneName }: { mcp: any; controlPlaneName: hideTitleText >
- - {/* Left side: Graph in extra-large (top) */} - + + {/* Left side: Graph in extra-large (top) - expands to full width when any component is expanded */} + - {/* Left side: Crossplane component in large (bottom) */} - - - + {/* Crossplane component - shows in default view or when expanded */} + {(!expandedCard || expandedCard === 'crossplane') && ( + +
+ + {expandedCard === 'crossplane' && ( +
+
+ )} - {/* Right side: First medium component (GitOps) */} - - - + {/* GitOps component - shows when expanded */} + {expandedCard === 'gitops' && ( + +
+ +
+
+ )} - {/* Right side: Second medium component (GitOps copy) */} - - - + {/* Right side cards - hide when any component is expanded */} + {!expandedCard && ( + <> + {/* Right side: First medium component (GitOps) */} + + + - {/* Right side: First small component (Velero config) */} - - - + {/* Right side: Second medium component (GitOps copy) */} + + + - {/* Right side: Second small component (Vault) */} - - - + {/* Right side: First small component (Velero config) */} + + + + + {/* Right side: Second small component (Vault) */} + + + + + )}
+ + {/* Tables section - outside the BentoGrid to maintain the 600px layout */} + {expandedCard === 'crossplane' && ( +
+
+ +
+
+ +
+
+ +
+
+ )} + + {expandedCard === 'gitops' && ( +
+ +
+ )}
- - - {t('McpPage.crossplaneTitle')}} - noAnimation - > -
- -
-
- -
-
- -
-
-
- - - {t('McpPage.gitOpsTitle')}} - noAnimation - > - - - ); } From f5cee536047c497c02beae082119e0c1f2c85c29 Mon Sep 17 00:00:00 2001 From: Lasserich Date: Thu, 11 Sep 2025 13:28:33 +0200 Subject: [PATCH 15/37] feat: show flux graph --- .../BentoGrid/GraphCard/GraphCard.tsx | 7 ++-- src/components/Graphs/Graph.tsx | 15 +++++++-- src/spaces/mcp/pages/McpPage.tsx | 33 +++---------------- 3 files changed, 21 insertions(+), 34 deletions(-) diff --git a/src/components/BentoGrid/GraphCard/GraphCard.tsx b/src/components/BentoGrid/GraphCard/GraphCard.tsx index 32f85b77..b38a5aea 100644 --- a/src/components/BentoGrid/GraphCard/GraphCard.tsx +++ b/src/components/BentoGrid/GraphCard/GraphCard.tsx @@ -1,19 +1,22 @@ import React from 'react'; import Graph from '../../Graphs/Graph'; import styles from './GraphCard.module.css'; +import { ColorBy } from '../../Graphs/types'; export interface GraphCardProps { title?: string; className?: string; + colorBy?: ColorBy; } export const GraphCard: React.FC = ({ - className = '' + className = '', + colorBy = 'source' }) => { return (
- +
); diff --git a/src/components/Graphs/Graph.tsx b/src/components/Graphs/Graph.tsx index 0dd4c677..764e973a 100644 --- a/src/components/Graphs/Graph.tsx +++ b/src/components/Graphs/Graph.tsx @@ -1,4 +1,4 @@ -import React, { useState, useCallback, useMemo } from 'react'; +import React, { useState, useCallback, useMemo, useEffect } from 'react'; import { ReactFlow, Background, Controls, Node, BackgroundVariant } from '@xyflow/react'; import type { NodeProps } from '@xyflow/react'; import { Button, Popover } from '@ui5/webcomponents-react'; @@ -28,14 +28,23 @@ const nodeTypes = { ), }; -const Graph: React.FC = () => { +interface GraphProps { + colorBy?: ColorBy; +} + +const Graph: React.FC = ({ colorBy: initialColorBy = 'source' }) => { const { t } = useTranslation(); const { isDarkTheme } = useTheme(); - const [colorBy, setColorBy] = useState('source'); + const [colorBy, setColorBy] = useState(initialColorBy); const [yamlDialogOpen, setYamlDialogOpen] = useState(false); const [yamlResource, setYamlResource] = useState(null); const [filterPopoverOpen, setFilterPopoverOpen] = useState(false); + // Update colorBy when prop changes + useEffect(() => { + setColorBy(initialColorBy); + }, [initialColorBy]); + const handleYamlClick = useCallback((item: ManagedResourceItem) => { setYamlResource(item); setYamlDialogOpen(true); diff --git a/src/spaces/mcp/pages/McpPage.tsx b/src/spaces/mcp/pages/McpPage.tsx index 4c643a17..47d1cc7d 100644 --- a/src/spaces/mcp/pages/McpPage.tsx +++ b/src/spaces/mcp/pages/McpPage.tsx @@ -130,32 +130,6 @@ function McpPageContent({ mcp, controlPlaneName }: { mcp: any; controlPlaneName: }, 300); }; - // Remove separate page logic - we'll do dynamic expansion within the grid - // if (expandedCard) { - // return ( - // - // ); - // } - - // For now, small cards will also scroll to their respective sections - const handleKyvernoClick = () => { - const el = document.querySelector('#crossplane'); - if (el) { - el.scrollIntoView({ behavior: 'smooth', block: 'start' }); - } - }; - - const handleVaultClick = () => { - const el = document.querySelector('#crossplane'); - if (el) { - el.scrollIntoView({ behavior: 'smooth', block: 'start' }); - } - }; - return ( - + {/* Crossplane component - shows in default view or when expanded */} @@ -335,7 +312,6 @@ function McpPageContent({ mcp, controlPlaneName }: { mcp: any; controlPlaneName: isLoading={managedResourcesLoading} error={managedResourcesError} config={veleroConfig} - onClick={handleKyvernoClick} size="small" /> @@ -354,7 +330,6 @@ function McpPageContent({ mcp, controlPlaneName }: { mcp: any; controlPlaneName: isLoading={managedResourcesLoading} error={managedResourcesError} config={vaultConfig} - onClick={handleVaultClick} size="small" /> From 4bc3bec28f4c96bd408fb23e363a284d2d100c53 Mon Sep 17 00:00:00 2001 From: Lasserich Date: Thu, 11 Sep 2025 14:09:13 +0200 Subject: [PATCH 16/37] fix: panning --- src/spaces/mcp/pages/McpPage.module.css | 43 +++++++++++++++++++++++-- src/spaces/mcp/pages/McpPage.tsx | 36 ++++++++++----------- 2 files changed, 58 insertions(+), 21 deletions(-) diff --git a/src/spaces/mcp/pages/McpPage.module.css b/src/spaces/mcp/pages/McpPage.module.css index db102c72..b982c9ad 100644 --- a/src/spaces/mcp/pages/McpPage.module.css +++ b/src/spaces/mcp/pages/McpPage.module.css @@ -12,9 +12,46 @@ .expandedCard { transition: all 0.5s cubic-bezier(0.4, 0, 0.2, 1); - transform: scale(1.02); - box-shadow: var(--sapContent_Shadow3) !important; - border: 2px solid var(--sapButton_Selected_BorderColor) !important; + /* Reduced highlighting for component cards */ + border: 1px solid var(--sapObjectHeader_BorderColor) !important; +} + +.expandedCard:hover { + transform: none !important; /* Remove hover transform */ + box-shadow: var(--sapContent_Shadow1) !important; /* Keep normal shadow */ +} + +/* Non-interactive expanded card - no hover effects */ +.expandedCardNonInteractive { + transition: all 0.5s cubic-bezier(0.4, 0, 0.2, 1); + pointer-events: none; /* Disable all interaction */ +} + +.expandedCardNonInteractive:hover { + transform: none !important; /* Override base card hover transform */ + box-shadow: var(--sapContent_Shadow1) !important; /* Keep normal shadow */ +} + +/* Disabled/non-interactive card - no hover effects */ +.disabledCard { + pointer-events: none; /* Disable all interaction */ + opacity: 0.6; /* Visual indication that it's disabled */ +} + +.disabledCard:hover { + transform: none !important; /* Override base card hover transform */ + box-shadow: var(--sapContent_Shadow1) !important; /* Keep normal shadow */ +} + +/* Non-interactive card (like graph) - no hover effects but allows internal interaction */ +.nonInteractiveCard { + /* Allow internal interaction but disable card-level hover effects */ + cursor: default; +} + +.nonInteractiveCard:hover { + transform: none !important; /* Override base card hover transform */ + box-shadow: var(--sapContent_Shadow1) !important; /* Keep normal shadow */ } .hidingCard { diff --git a/src/spaces/mcp/pages/McpPage.tsx b/src/spaces/mcp/pages/McpPage.tsx index 47d1cc7d..3dfaab2e 100644 --- a/src/spaces/mcp/pages/McpPage.tsx +++ b/src/spaces/mcp/pages/McpPage.tsx @@ -172,25 +172,12 @@ function McpPageContent({ mcp, controlPlaneName }: { mcp: any; controlPlaneName: >
- {/* Left side: Graph in extra-large (top) - expands to full width when any component is expanded */} - - - - - {/* Crossplane component - shows in default view or when expanded */} + {/* Left side: Crossplane component in large (top) - expands to full width when expanded */} {(!expandedCard || expandedCard === 'crossplane') && (
@@ -227,7 +214,7 @@ function McpPageContent({ mcp, controlPlaneName }: { mcp: any; controlPlaneName:
@@ -257,6 +244,19 @@ function McpPageContent({ mcp, controlPlaneName }: { mcp: any; controlPlaneName: )} + {/* Left side: Graph in extra-large (bottom) - expands to full width when any component is expanded */} + + + + {/* Right side cards - hide when any component is expanded */} {!expandedCard && ( <> @@ -303,7 +303,7 @@ function McpPageContent({ mcp, controlPlaneName }: { mcp: any; controlPlaneName: size="small" gridColumn="9 / 11" gridRow="5 / 7" - className={isExpanding ? styles.hidingCard : ''} + className={isExpanding ? styles.hidingCard : styles.disabledCard} > Date: Thu, 11 Sep 2025 18:59:25 +0200 Subject: [PATCH 17/37] feat: add kyverno and eso --- public/eso.png | Bin 0 -> 9074 bytes public/kyverno.svg | 4515 +++++++++++++++++ public/locales/en.json | 10 +- public/vault.png | Bin 25455 -> 0 bytes public/velero.png | Bin 168147 -> 0 bytes .../ComponentCard/componentConfigs.ts | 23 +- src/spaces/mcp/pages/McpPage.tsx | 6 +- src/utils/hintsCardsRowCalculations.ts | 6 +- 8 files changed, 4538 insertions(+), 22 deletions(-) create mode 100644 public/eso.png create mode 100644 public/kyverno.svg delete mode 100644 public/vault.png delete mode 100644 public/velero.png diff --git a/public/eso.png b/public/eso.png new file mode 100644 index 0000000000000000000000000000000000000000..7e9dc54db0aa3bb07aeb1cf855da946e04d47879 GIT binary patch literal 9074 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 JYa~Iz{|AyHGhP4y literal 0 HcmV?d00001 diff --git a/public/kyverno.svg b/public/kyverno.svg new file mode 100644 index 00000000..4f12a782 --- /dev/null +++ b/public/kyverno.svg @@ -0,0 +1,4515 @@ + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/public/locales/en.json b/public/locales/en.json index e2805484..ad427abd 100644 --- a/public/locales/en.json +++ b/public/locales/en.json @@ -387,7 +387,7 @@ "Hints": { "CrossplaneHint": { "title": "Crossplane", - "subtitle": "Managed Resources Readiness", + "subtitle": "Manage your cloud landscape in code", "activeStatus": "Active v", "progressAvailable": "Available", "noResources": "No Resources", @@ -403,7 +403,7 @@ }, "GitOpsHint": { "title": "Flux", - "subtitle": "GitOps Progress", + "subtitle": "Persist desired state in code repsitories", "activeStatus": "Active v", "progressAvailable": "Available", "noResources": "No Resources", @@ -416,9 +416,9 @@ "unmanaged": "Unmanaged" } }, - "VaultHint": { - "title": "Vault", - "subtitle": "Rotating Secrets Progress", + "ESOHint": { + "title": "ESO", + "subtitle": "Secure secrets with rotation", "activeStatus": "Active v", "progressAvailable": "Available", "noResources": "No Resources", diff --git a/public/vault.png b/public/vault.png deleted file mode 100644 index 6a3bdae467a85330898ce776e1a3ecdfcfc7bcd4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25455 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 diff --git a/public/velero.png b/public/velero.png deleted file mode 100644 index 0174f3949ef7cdd50b91a407fa0537d2f1291579..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 168147 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

)ZApW-_iff#=HcdXW4i;ZcMc^K^$ zCoZO$_2d3zn^b&(T*+!2N&Pav z&vQb6HP`o=^H~UZRHWA87d_mHd(Ch(wu5Wa~rRLl;n!z%2- z(^}PYK`z(lEhx6u^Eh;n)bFi8;4k*ci@m@H7AC)eXs~RF;P6-x1`7oLtHk_~YzLH# zMAEWsKLc!3f^=YW>UHF(XcreJO0o))aELK-%_bJQ6gC}{G7?ah9hor!H34Nq+7E2X z5wREy+eG=7dqoRQs0)n2n^pRXz_>ux<4|VnrT;>sL0lW~12^8k@ZR33=s~M9`y|cB zhZY;q0r&!Qxb&lRwQjKZ$z|%@&uaE`x+Dqg__|ig<-9)GD|LJAsHq9Kzmyc1MVyuu!dG+&*uxm^-c&)%#4gbu_?f0h! z${Nqti{=`y+u-1wx6j{<(xI8}i=eeQ1BY&7+d)c6fzuM6&cEfPN1%?aEdxONK(W1# z|EsUP@Z*rXUZ?LtY3ijS@3}EYtl-InX%t_*TZA9!Oh`m@7C?WM!f&G$Gn-2DJ!5nCx15LNP&AF#g;C}H4zV3D%;f(CK8a9qD$IfG?f7 {);-Fxtt25=ja-7GjfttHUUtc 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%0Dea&Xw=a!U6MHGMDp~ zIq*>q%vw)gIB9r~Oa8FeHv9cx|4Fk>-)r*G2aMeON85By-qEXV@e9cX?<@=!zK@`3 z0TMhvNzvF<((tFb1W9`jS^#69z zzH8i&7aseV@Jc*lt1-_IVn(% z8@&&XXaJ!r}fKiqB7p~sHh^7M)Qy5Bl5k$Ju%vv7%I76D-k&1oLKXW<)5 zsm@E{*W2b-tUAas`Qn*hml zHPSWR;CMKph!{qp&><;2h6+J30%1QD1)l4CI>36Ctfo~ zI+f;_cGj1EdtX4Ki7b&{NjcI ze&+d|*QvSXu#tnmclItj9rC9Wb{+Y*{YFo}V7v9t-mh16G#OHNya^% zv*@foD&$ef=aA)nDzJ%f0(-92hK8n3|S%5A7*;UNp4++}mdko&BFfcHHX1Jx7f` zZR+s74%ue?Q>Lw7dF6=e@Xiff!(%-==Dt|j^xnLlQCqQw&ZN@jkmOdDM+0kk?ogVQ zM<`^QVM96?I-69&p)w`Vzi$k5dyHFNjtBYBkY@u#p$s$>3MNn)-f?b~5@9>*TBc5| zn{5SbQ`@elv#4Y~Ki?SBrZg(8)nN;1XWQ&UUGoR%m0MICV6x4dSIaBgu2pg0nDx3{ zH+Eo;%Z{Et@{I59vGdXA?>%Yiod@qU^{UxhAEdlGY<>Us>2>n&(q3ojrEzk!McZa@1K9x1Mz7 z_`y?89=qlKlLz(s*>>x9|KsL8QhyzkF8*^JlX<#lvE}*N?BZ8y+7`TCpKpAvTfXUa zMP0t>jrv@}>-D+D*X!~PZ`2ai#kTjVitX=z8Y&BI?|&Mq^6l@{<{RJ8y0p$1rMBMC z_UhR-X?TsayxgnU@}G4~`%{C`;iE%(B=6p~Uynac-k{enP98h-kTb^)nRWK0ttOo_ zZP=)DciDQ>owJ6FzjoTDdtEVk@R28ORCn0{eS>?;XBW$ATRFa_aG>l!))YyU>G*#+ zFtN9E%;}we```^~9y@ACpSw=lYOOzBI&Q<`kDfO8-~;vV3sgL)W_b;0@~jv0I { }; }; -export const useVaultHintConfig = (): GenericHintConfig => { +export const useESOHintConfig = (): GenericHintConfig => { const { t } = useTranslation(); return { - title: t('Hints.VaultHint.title'), - subtitle: t('Hints.VaultHint.subtitle'), - iconSrc: '/vault.png', - iconAlt: 'Vault', - iconStyle: { borderRadius: '0' }, // Vault icon should not be rounded + title: t('Hints.ESOHint.title'), + subtitle: t('Hints.ESOHint.subtitle'), + iconSrc: '/eso.png', + iconAlt: 'ESO', + // Not sure yet whether this looks better fully round or with rounded edges... + // iconStyle: { borderRadius: '8px' }, // ESO icon with rounded corners calculateSegments: (allItems, isLoading, error, enabled) => calculateVaultSegments(allItems, isLoading, error, enabled, t), }; }; -export const useVeleroHintConfig = (): GenericHintConfig => { +export const useKyvernoHintConfig = (): GenericHintConfig => { const { t } = useTranslation(); return { - title: "Velero", - subtitle: "Backups Status", - iconSrc: '/velero.png', - iconAlt: 'Velero', + title: "Kyverno", + subtitle: "Enfore policies", + iconSrc: '/kyverno.svg', + iconAlt: 'Kyverno', iconStyle: { borderRadius: '0' }, // Vault icon should not be rounded calculateSegments: (allItems, isLoading, error, enabled) => calculateVaultSegments(allItems, isLoading, error, enabled, t), diff --git a/src/spaces/mcp/pages/McpPage.tsx b/src/spaces/mcp/pages/McpPage.tsx index 3dfaab2e..ee729975 100644 --- a/src/spaces/mcp/pages/McpPage.tsx +++ b/src/spaces/mcp/pages/McpPage.tsx @@ -20,7 +20,7 @@ import { AuthProviderMcp } from '../auth/AuthContextMcp.tsx'; import { isNotFoundError } from '../../../lib/api/error.ts'; import { NotFoundBanner } from '../../../components/Ui/NotFoundBanner/NotFoundBanner.tsx'; import { BentoGrid, BentoCard, GraphCard, ComponentCard } from '../../../components/BentoGrid'; -import { useCrossplaneHintConfig, useGitOpsHintConfig, useVaultHintConfig, useVeleroHintConfig } from '../../../components/BentoGrid/ComponentCard/componentConfigs.ts'; +import { useCrossplaneHintConfig, useGitOpsHintConfig, useESOHintConfig, useKyvernoHintConfig } from '../../../components/BentoGrid/ComponentCard/componentConfigs.ts'; import { ManagedResourcesRequest, ManagedResourcesResponse } from '../../../lib/api/types/crossplane/listManagedResources'; import { resourcesInterval } from '../../../lib/shared/constants'; import { ManagedResourceItem } from '../../../lib/shared/types'; @@ -102,8 +102,8 @@ function McpPageContent({ mcp, controlPlaneName }: { mcp: any; controlPlaneName: // Get hint configurations const crossplaneConfig = useCrossplaneHintConfig(); const gitOpsConfig = useGitOpsHintConfig(); - const vaultConfig = useVaultHintConfig(); - const veleroConfig = useVeleroHintConfig(); + const vaultConfig = useESOHintConfig(); + const veleroConfig = useKyvernoHintConfig(); // Handle component card clicks const handleCrossplaneExpand = () => { diff --git a/src/utils/hintsCardsRowCalculations.ts b/src/utils/hintsCardsRowCalculations.ts index 0e6113e7..21606893 100644 --- a/src/utils/hintsCardsRowCalculations.ts +++ b/src/utils/hintsCardsRowCalculations.ts @@ -207,8 +207,8 @@ export const calculateVaultSegments: GenericHintSegmentCalculator = ( if (!enabled) { return { - segments: [{ percentage: 100, color: HINT_COLORS.inactive, label: t('Hints.VaultHint.inactive') }], - label: t('Hints.VaultHint.inactive'), + segments: [{ percentage: 100, color: HINT_COLORS.inactive, label: t('Hints.ESOHint.inactive') }], + label: t('Hints.ESOHint.inactive'), showPercentage: false, isHealthy: false, showOnlyNonZero: true, @@ -216,7 +216,7 @@ export const calculateVaultSegments: GenericHintSegmentCalculator = ( } const hasResources = allItems.length > 0; - const label = hasResources ? t('Hints.VaultHint.progressAvailable') : t('Hints.VaultHint.noResources'); + const label = hasResources ? t('Hints.ESOHint.progressAvailable') : t('Hints.ESOHint.noResources'); const color = hasResources ? HINT_COLORS.healthy : HINT_COLORS.inactive; return { From 2e950b041f4223e7fd51c2c8235a2e3aa868b052 Mon Sep 17 00:00:00 2001 From: Lasserich Date: Thu, 11 Sep 2025 19:47:19 +0200 Subject: [PATCH 18/37] fix: length of charts --- public/locales/en.json | 9 +++++++ .../ComponentCard/ComponentCard.module.css | 24 +++++++++++++++++++ .../BentoGrid/ComponentCard/ComponentCard.tsx | 19 +++++++++++++-- .../ComponentCard/componentConfigs.ts | 4 ++-- 4 files changed, 52 insertions(+), 4 deletions(-) diff --git a/public/locales/en.json b/public/locales/en.json index ad427abd..20d3c9dc 100644 --- a/public/locales/en.json +++ b/public/locales/en.json @@ -425,6 +425,15 @@ "inactive": "Coming soon...", "activate": "Activate" }, + "KyvernoHint": { + "title": "Kyverno", + "subtitle": "Enforce policies", + "activeStatus": "Active v", + "progressAvailable": "Available", + "noResources": "No Resources", + "inactive": "Inactive", + "activate": "Activate" + }, "common": { "loading": "Loading...", "errorLoadingResources": "Error loading resources", diff --git a/src/components/BentoGrid/ComponentCard/ComponentCard.module.css b/src/components/BentoGrid/ComponentCard/ComponentCard.module.css index bbf1a642..4b91dc31 100644 --- a/src/components/BentoGrid/ComponentCard/ComponentCard.module.css +++ b/src/components/BentoGrid/ComponentCard/ComponentCard.module.css @@ -56,6 +56,30 @@ padding: 0 0.5rem; } +.progressBarContainerSmall { + display: flex; + gap: 8px; + width: 100%; + max-width: 400px; + padding: 0 0.5rem; +} + +.progressBarContainerMedium { + display: flex; + gap: 8px; + width: 100%; + max-width: 600px; + padding: 0 0.75rem; +} + +.progressBarContainerLarge { + display: flex; + gap: 8px; + width: 100%; + max-width: none; + padding: 0 1rem; +} + .progressBar { width: 100%; } diff --git a/src/components/BentoGrid/ComponentCard/ComponentCard.tsx b/src/components/BentoGrid/ComponentCard/ComponentCard.tsx index d16663d4..b56f81e0 100644 --- a/src/components/BentoGrid/ComponentCard/ComponentCard.tsx +++ b/src/components/BentoGrid/ComponentCard/ComponentCard.tsx @@ -38,7 +38,7 @@ export const ComponentCard: React.FC void; /> } titleText={config.title} - subtitleText={config.subtitle} + subtitleText={size === 'small' ? undefined : config.subtitle} interactive={enabled} /> } @@ -65,7 +65,11 @@ export const ComponentCard: React.FC void; )}

-
+
void; showPercentage={hintState.showPercentage} isHealthy={hintState.isHealthy} showOnlyNonZero={hintState.showOnlyNonZero ?? true} + barWidth={ + size === 'small' ? '80%' : + size === 'medium' ? '85%' : + '90%' + } + barHeight={size === 'small' ? '8px' : '12px'} + barMaxWidth={ + size === 'small' ? '400px' : + size === 'medium' ? '600px' : + 'none' + } />
diff --git a/src/components/BentoGrid/ComponentCard/componentConfigs.ts b/src/components/BentoGrid/ComponentCard/componentConfigs.ts index aae11f91..f12713ca 100644 --- a/src/components/BentoGrid/ComponentCard/componentConfigs.ts +++ b/src/components/BentoGrid/ComponentCard/componentConfigs.ts @@ -56,8 +56,8 @@ export const useKyvernoHintConfig = (): GenericHintConfig => { const { t } = useTranslation(); return { - title: "Kyverno", - subtitle: "Enfore policies", + title: t('Hints.KyvernoHint.title'), + subtitle: t('Hints.KyvernoHint.subtitle'), iconSrc: '/kyverno.svg', iconAlt: 'Kyverno', iconStyle: { borderRadius: '0' }, // Vault icon should not be rounded From e2fbf53b57904234331000a5720404a51e397ad9 Mon Sep 17 00:00:00 2001 From: Lasserich Date: Mon, 15 Sep 2025 17:22:22 +0200 Subject: [PATCH 19/37] feat: providers distribution bar for crossplane --- .../ComponentCard/ComponentCard.module.css | 12 ++- .../BentoGrid/ComponentCard/ComponentCard.tsx | 37 +++++++-- .../MultiPercentageBar.module.css | 29 +++++++ .../MultiPercentageBar/MultiPercentageBar.tsx | 14 +++- src/spaces/mcp/pages/McpPage.tsx | 79 ++++++++++++++++--- 5 files changed, 154 insertions(+), 17 deletions(-) diff --git a/src/components/BentoGrid/ComponentCard/ComponentCard.module.css b/src/components/BentoGrid/ComponentCard/ComponentCard.module.css index 4b91dc31..907cc707 100644 --- a/src/components/BentoGrid/ComponentCard/ComponentCard.module.css +++ b/src/components/BentoGrid/ComponentCard/ComponentCard.module.css @@ -48,6 +48,15 @@ flex: 1; } +.contentContainerMultiple { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + padding: 0.25rem 0; + flex: 1; +} + .progressBarContainer { display: flex; gap: 8px; @@ -74,7 +83,8 @@ .progressBarContainerLarge { display: flex; - gap: 8px; + flex-direction: column; + gap: 6px; width: 100%; max-width: none; padding: 0 1rem; diff --git a/src/components/BentoGrid/ComponentCard/ComponentCard.tsx b/src/components/BentoGrid/ComponentCard/ComponentCard.tsx index b56f81e0..02e5ff8e 100644 --- a/src/components/BentoGrid/ComponentCard/ComponentCard.tsx +++ b/src/components/BentoGrid/ComponentCard/ComponentCard.tsx @@ -6,7 +6,12 @@ import { MultiPercentageBar } from '../MultiPercentageBar/MultiPercentageBar'; import styles from './ComponentCard.module.css'; import { GenericHintProps } from '../../../types/types'; -export const ComponentCard: React.FC void; size?: 'small' | 'medium' | 'large' | 'extra-large' }> = ({ +export const ComponentCard: React.FC void; + size?: 'small' | 'medium' | 'large' | 'extra-large'; + secondarySegments?: Array<{ percentage: number; color: string; label: string }>; + secondaryLabel?: string; +}> = ({ enabled = false, version, allItems = [], @@ -15,6 +20,8 @@ export const ComponentCard: React.FC void; config, onClick, size = 'medium', + secondarySegments, + secondaryLabel = 'Secondary Metric', }) => { const { t } = useTranslation(); @@ -44,15 +51,16 @@ export const ComponentCard: React.FC void; } className={cx(styles.card, { [styles.disabled]: !enabled, - [styles.clickable]: !!onClick, + [styles.clickable]: !!onClick && enabled, })} - onClick={onClick} + onClick={enabled ? onClick : undefined} + > {/* Disabled overlay */} {!enabled &&
} {/* Expand button */} - {onClick && ( + {onClick && enabled && (
)} @@ -282,18 +273,7 @@ function McpPageContent({ mcp, controlPlaneName }: { mcp: any; controlPlaneName: config={gitOpsConfig} onClick={handleCollapseExpanded} size="large" - /> -
@@ -395,21 +375,29 @@ function McpPageContent({ mcp, controlPlaneName }: { mcp: any; controlPlaneName: {/* Tables section - outside the BentoGrid to maintain the 600px layout */} {expandedCard === 'crossplane' && (
-
- -
-
- -
-
- -
+ +
+
+ +
+
+ +
+
+ +
+
+
+
)} {expandedCard === 'gitops' && (
- + + + +
)}
From 4bd22eb1b76a11a9cb266ae05227d4e47954d946 Mon Sep 17 00:00:00 2001 From: Lasserich Date: Tue, 16 Sep 2025 15:32:26 +0200 Subject: [PATCH 23/37] feat: member card --- public/locales/en.json | 9 ++ public/members.svg | 21 +++ .../BentoGrid/ComponentCard/ComponentCard.tsx | 2 +- .../ComponentCard/componentConfigs.ts | 20 ++- src/lib/api/types/crate/controlPlanes.ts | 3 +- src/spaces/mcp/pages/McpPage.module.css | 50 ++++++ src/spaces/mcp/pages/McpPage.tsx | 149 +++++++++++------- ...ations.ts => componentCardCalculations.ts} | 64 ++++++++ ....ts => componentCardsCalculations.spec.ts} | 2 +- 9 files changed, 261 insertions(+), 59 deletions(-) create mode 100644 public/members.svg rename src/utils/{hintsCardsRowCalculations.ts => componentCardCalculations.ts} (87%) rename src/utils/{hintsCardsRowCalculations.spec.ts => componentCardsCalculations.spec.ts} (99%) diff --git a/public/locales/en.json b/public/locales/en.json index 20d3c9dc..8c76ab46 100644 --- a/public/locales/en.json +++ b/public/locales/en.json @@ -15,6 +15,9 @@ "ComponentList": { "tableComponentHeader": "Name", "tableVersionHeader": "Version" + }, + "MemberList": { + }, "FluxList": { "tableNameHeader": "Name", @@ -416,6 +419,12 @@ "unmanaged": "Unmanaged" } }, + "MembersHint": { + "title": "Members", + "subtitle": "Manage access to your Managed Control Plane", + "users": "Users", + "serviceAccounts": "Service Accounts" + }, "ESOHint": { "title": "ESO", "subtitle": "Secure secrets with rotation", diff --git a/public/members.svg b/public/members.svg new file mode 100644 index 00000000..63d1b4aa --- /dev/null +++ b/public/members.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/src/components/BentoGrid/ComponentCard/ComponentCard.tsx b/src/components/BentoGrid/ComponentCard/ComponentCard.tsx index 89e331b8..61b9e0d4 100644 --- a/src/components/BentoGrid/ComponentCard/ComponentCard.tsx +++ b/src/components/BentoGrid/ComponentCard/ComponentCard.tsx @@ -35,7 +35,7 @@ export const ComponentCard: React.FC { const { t } = useTranslation(); @@ -60,8 +61,23 @@ export const useKyvernoHintConfig = (): GenericHintConfig => { subtitle: t('Hints.KyvernoHint.subtitle'), iconSrc: '/kyverno.svg', iconAlt: 'Kyverno', - iconStyle: { borderRadius: '0' }, // Vault icon should not be rounded + iconStyle: { borderRadius: '0' }, // Kyverno icon should not be rounded calculateSegments: (allItems, isLoading, error, enabled) => calculateVaultSegments(allItems, isLoading, error, enabled, t), }; }; + +export const useMembersHintConfig = (): GenericHintConfig => { + const { t } = useTranslation(); + + return { + title: t('Hints.MembersHint.title'), + subtitle: t('Hints.MembersHint.subtitle'), + iconSrc: '/members.svg', + iconAlt: 'Members', + iconStyle: { borderRadius: '0' }, // Members icon should not be rounded + calculateSegments: (allItems, isLoading, error, enabled) => + calculateMembersSegments(allItems, isLoading, error, enabled, t), + // calculateHoverData: (allItems, enabled) => calculateGitOpsHoverDataGeneric(allItems, enabled, t), + }; +}; diff --git a/src/lib/api/types/crate/controlPlanes.ts b/src/lib/api/types/crate/controlPlanes.ts index 0df87bcf..f1415f38 100644 --- a/src/lib/api/types/crate/controlPlanes.ts +++ b/src/lib/api/types/crate/controlPlanes.ts @@ -79,6 +79,5 @@ export const ControlPlane = ( ): Resource => { return { path: `/apis/core.openmcp.cloud/v1alpha1/namespaces/project-${projectName}--ws-${workspaceName}/managedcontrolplanes/${controlPlaneName}`, - jq: '{ spec: .spec | {components}, status: { conditions: [.status.conditions[] | {type: .type, status: .status, message: .message, reason: .reason, lastTransitionTime: .lastTransitionTime}], access: .status.components.authentication.access, status: .status.status }}', - }; + jq: '{ spec: .spec | {components, authorization}, status: { conditions: [.status.conditions[] | {type: .type, status: .status, message: .message, reason: .reason, lastTransitionTime: .lastTransitionTime}], access: .status.components.authentication.access, status: .status.status }}', }; }; diff --git a/src/spaces/mcp/pages/McpPage.module.css b/src/spaces/mcp/pages/McpPage.module.css index 604a683c..a987f812 100644 --- a/src/spaces/mcp/pages/McpPage.module.css +++ b/src/spaces/mcp/pages/McpPage.module.css @@ -8,6 +8,11 @@ transition: all 0.5s cubic-bezier(0.4, 0, 0.2, 1); } +.expandedMembersGrid { + transition: all 0.5s cubic-bezier(0.4, 0, 0.2, 1); + height: 200px !important; /* Reduced height for members view without graph */ +} + .expandedCard { transition: all 0.5s cubic-bezier(0.4, 0, 0.2, 1); border: 1px solid var(--sapObjectHeader_BorderColor) !important; @@ -68,3 +73,48 @@ transform: translateY(0); } } + +/* Action bar styles */ +.actionsBar { + display: flex; + flex-direction: row; + justify-content: space-between; + gap: 0.5rem; +} + +/* Main container styles */ +.mainContainer { + max-width: 1280px; + margin: 0 auto; + width: 100%; + padding-top: 16px; + padding-bottom: 12px; +} + +/* Card content container */ +.cardContentContainer { + position: relative; + height: 100%; +} + +/* Details panel bottom spacing */ +.detailsPanelBottom { + height: 12px; + background-color: #f5f5f5; + margin-bottom: 32px; + border-radius: 0 0 8px 8px; +} + +/* Table sections spacing */ +.tableSection { + margin-top: 24px; +} + +.crossplaneTableElement { + margin-top: 16px; +} + +/* First crossplane table element (no top margin) */ +.crossplaneTableElementFirst { + margin-top: 24px; +} diff --git a/src/spaces/mcp/pages/McpPage.tsx b/src/spaces/mcp/pages/McpPage.tsx index d18339d2..684c1514 100644 --- a/src/spaces/mcp/pages/McpPage.tsx +++ b/src/spaces/mcp/pages/McpPage.tsx @@ -19,7 +19,7 @@ import { AuthProviderMcp } from '../auth/AuthContextMcp.tsx'; import { isNotFoundError } from '../../../lib/api/error.ts'; import { NotFoundBanner } from '../../../components/Ui/NotFoundBanner/NotFoundBanner.tsx'; import { BentoGrid, BentoCard, GraphCard, ComponentCard } from '../../../components/BentoGrid'; -import { useCrossplaneHintConfig, useGitOpsHintConfig, useESOHintConfig, useKyvernoHintConfig } from '../../../components/BentoGrid/ComponentCard/componentConfigs.ts'; +import { useCrossplaneHintConfig, useGitOpsHintConfig, useESOHintConfig, useKyvernoHintConfig, useMembersHintConfig } from '../../../components/BentoGrid/ComponentCard/componentConfigs.ts'; import { ManagedResourcesRequest, ManagedResourcesResponse } from '../../../lib/api/types/crossplane/listManagedResources'; import { resourcesInterval } from '../../../lib/shared/constants'; import { ManagedResourceItem } from '../../../lib/shared/types'; @@ -28,6 +28,7 @@ import { ManagedResources } from '../../../components/ControlPlane/ManagedResour import { Providers } from '../../../components/ControlPlane/Providers.tsx'; import { ProvidersConfig } from '../../../components/ControlPlane/ProvidersConfig.tsx'; import FluxList from '../../../components/ControlPlane/FluxList.tsx'; +import { MemberTable } from '../../../components/Members/MemberTable.tsx'; import { resolveProviderType, generateColorMap } from '../../../components/Graphs/graphUtils'; // Utility function to flatten managed resources @@ -153,9 +154,10 @@ function McpPageContent({ mcp, controlPlaneName }: { mcp: any; controlPlaneName: // Get hint configurations const crossplaneConfig = useCrossplaneHintConfig(); - const gitOpsConfig = useGitOpsHintConfig(); // DEACTIVATED via enabled={false} - const vaultConfig = useESOHintConfig(); - const veleroConfig = useKyvernoHintConfig(); + const gitOpsConfig = useGitOpsHintConfig(); + const membersConfig = useMembersHintConfig(); + const esoConfig = useESOHintConfig(); + const kyvernoConfig = useKyvernoHintConfig(); // Handle component card clicks const handleCrossplaneExpand = () => { @@ -174,6 +176,14 @@ function McpPageContent({ mcp, controlPlaneName }: { mcp: any; controlPlaneName: }, 50); }; + const handleMembersExpand = () => { + setIsExpanding(true); + setTimeout(() => { + setExpandedCard('members'); + setIsExpanding(false); + }, 50); + }; + const handleCollapseExpanded = () => { setIsExpanding(true); setTimeout(() => { @@ -182,11 +192,6 @@ function McpPageContent({ mcp, controlPlaneName }: { mcp: any; controlPlaneName: }, 300); }; - // Add spacer at the bottom of the content - const BottomSpacer = () => ( -
- ); - return ( } //TODO: actionBar should use Toolbar and ToolbarButton for consistent design actionsBar={ -
+
-
- +
+ {/* Left side: Crossplane component in large (top) - expands to full width when expanded */} {(!expandedCard || expandedCard === 'crossplane') && ( -
+
)} - {/* GitOps component - shows when expanded - DEACTIVATED */} + {/* GitOps component - shows when expanded*/} {expandedCard === 'gitops' && ( -
+
)} - {/* Left side: Graph in extra-large (bottom) - expands to full width when any component is expanded */} - - - + {/* Members component - shows when expanded */} + {expandedCard === 'members' && ( + +
+ +
+
+ )} + + {/* Left side: Graph in extra-large (bottom) - expands to full width when any component is expanded, but hidden for members */} + {expandedCard !== 'members' && ( + + + + )} {/* Right side cards - hide when any component is expanded */} {!expandedCard && ( @@ -314,26 +338,26 @@ function McpPageContent({ mcp, controlPlaneName }: { mcp: any; controlPlaneName: /> - {/* Right side: Second medium component (GitOps copy) - DEACTIVATED */} + {/* Right side: Second medium component (Members) */} - {/* Right side: First small component (Velero config) */} + {/* Right side: First small component (Kyverno config) */} - {/* Right side: Second small component (Vault) */} + {/* Right side: Second small component (ESO) */} @@ -374,30 +398,49 @@ function McpPageContent({ mcp, controlPlaneName }: { mcp: any; controlPlaneName: {/* Tables section - outside the BentoGrid to maintain the 600px layout */} {expandedCard === 'crossplane' && ( -
+
-
+
-
+
-
+
-
+
)} {expandedCard === 'gitops' && ( -
+
-
+
+
+ )} + + {expandedCard === 'members' && ( +
+ + ({ + name: (binding.subjects?.[0]?.name || 'Unknown').replace(/^openmcp:/, ''), + kind: binding.subjects?.[0]?.kind || 'Unknown', + roles: binding.role || [], + namespace: binding.namespace || '', + })) || [] + } + requireAtLeastOneMember={false} + /> + +
)}
diff --git a/src/utils/hintsCardsRowCalculations.ts b/src/utils/componentCardCalculations.ts similarity index 87% rename from src/utils/hintsCardsRowCalculations.ts rename to src/utils/componentCardCalculations.ts index 21606893..3381b9cf 100644 --- a/src/utils/hintsCardsRowCalculations.ts +++ b/src/utils/componentCardCalculations.ts @@ -175,6 +175,70 @@ export const calculateGitOpsSegments: GenericHintSegmentCalculator = ( }; }; +/** + * Members-specific segment calculation + */ +export const calculateMembersSegments: GenericHintSegmentCalculator = ( + allItems: any[], + isLoading: boolean, + error: APIError | undefined, + enabled: boolean, + t: (key: string) => string, +): GenericHintState => { + if (isLoading) { + return { + segments: [{ percentage: 100, color: HINT_COLORS.inactive, label: t('Hints.common.loading') }], + label: t('Hints.common.loading'), + showPercentage: false, + isHealthy: false, + showOnlyNonZero: true, + }; + } + if (error) { + return { + segments: [{ percentage: 100, color: HINT_COLORS.unhealthy, label: t('Hints.common.errorLoadingResources') }], + label: t('Hints.common.errorLoadingResources'), + showPercentage: false, + isHealthy: false, + showOnlyNonZero: true, + }; + } + if (!enabled) { + return { + segments: [{ percentage: 100, color: HINT_COLORS.inactive, label: t('Hints.GitOpsHint.inactive') }], + label: t('Hints.GitOpsHint.inactive'), + showPercentage: false, + isHealthy: false, + showOnlyNonZero: true, + }; + } + const totalCount = allItems.length; + if (totalCount === 0) { + return { + segments: [{ percentage: 100, color: HINT_COLORS.inactive, label: t('Hints.GitOpsHint.noResources') }], + label: t('Hints.GitOpsHint.noResources'), + showPercentage: false, + isHealthy: false, + showOnlyNonZero: true, + }; + } + // Count the number of items with the flux label + const userAdmins = allItems.filter( + (user: any) => + user?.subjects?.[0]?.kind == "User" && user?.role == "admin" + ).length; + return { + segments: [ + { percentage: userAdmins / allItems.length * 100, color: HINT_COLORS.healthy, label: "Admin" }, + { percentage: 100 - (userAdmins / allItems.length * 100), color: HINT_COLORS.inactive, label: "Viewer" }, + ], + label: "Admins", + showPercentage: false, + isHealthy: true, + showOnlyNonZero: false, + }; +}; + /** * Vault-specific segment calculation */ diff --git a/src/utils/hintsCardsRowCalculations.spec.ts b/src/utils/componentCardsCalculations.spec.ts similarity index 99% rename from src/utils/hintsCardsRowCalculations.spec.ts rename to src/utils/componentCardsCalculations.spec.ts index d5c1df9f..847d166f 100644 --- a/src/utils/hintsCardsRowCalculations.spec.ts +++ b/src/utils/componentCardsCalculations.spec.ts @@ -5,7 +5,7 @@ import { calculateVaultSegments, calculateCrossplaneHoverData, HINT_COLORS, -} from './hintsCardsRowCalculations'; +} from './componentCardCalculations'; import { ManagedResourceItem, Condition } from '../lib/shared/types'; import { APIError } from '../lib/api/error'; From f2f2aca1194c6f27b381b7578aa5666fd65bc71a Mon Sep 17 00:00:00 2001 From: Lasserich Date: Tue, 16 Sep 2025 17:03:01 +0200 Subject: [PATCH 24/37] feat: some formatting --- .../BentoGrid/ComponentCard/ComponentCard.tsx | 39 +- .../MultiPercentageBar.module.css | 32 +- .../MultiPercentageBar.spec.tsx | 82 +++++ .../MultiPercentageBar/MultiPercentageBar.tsx | 338 +++++++++++++++--- src/utils/componentCardCalculations.ts | 44 ++- 5 files changed, 470 insertions(+), 65 deletions(-) diff --git a/src/components/BentoGrid/ComponentCard/ComponentCard.tsx b/src/components/BentoGrid/ComponentCard/ComponentCard.tsx index 61b9e0d4..8eef50d1 100644 --- a/src/components/BentoGrid/ComponentCard/ComponentCard.tsx +++ b/src/components/BentoGrid/ComponentCard/ComponentCard.tsx @@ -87,9 +87,6 @@ export const ComponentCard: React.FC {/* Second progress bar only for large and extra-large cards */} @@ -109,13 +126,23 @@ export const ComponentCard: React.FC diff --git a/src/components/BentoGrid/MultiPercentageBar/MultiPercentageBar.module.css b/src/components/BentoGrid/MultiPercentageBar/MultiPercentageBar.module.css index def25624..92c70e8c 100644 --- a/src/components/BentoGrid/MultiPercentageBar/MultiPercentageBar.module.css +++ b/src/components/BentoGrid/MultiPercentageBar/MultiPercentageBar.module.css @@ -55,7 +55,8 @@ } .label, -.percentage { +.percentage, +.count { font-size: var(--label-font-size); font-weight: 400; color: var(--sapTextColor, #374151); @@ -68,6 +69,11 @@ font-weight: 700; } +.count { + opacity: 0.7; + font-size: calc(var(--label-font-size) * 0.9); +} + /* Bar container */ .barContainer { display: flex; @@ -198,6 +204,28 @@ } } + + +/* No animation class for disabled animations */ +.noAnimation { + animation: none !important; +} + +.noAnimation .segment { + animation: none !important; + transform: scaleX(1) !important; +} + +.noAnimation .segmentLabel { + animation: none !important; + opacity: 1 !important; + transform: translateY(-50%) scale(1) !important; +} + +.noAnimation .waveOverlay { + animation: none !important; +} + /* Theme Support */ [data-ui5-theme-root*="dark"] .container, [data-ui5-theme*="dark"] .container { @@ -210,3 +238,5 @@ [data-ui5-theme*="dark"] .percentage { color: #ffffff; } + + diff --git a/src/components/BentoGrid/MultiPercentageBar/MultiPercentageBar.spec.tsx b/src/components/BentoGrid/MultiPercentageBar/MultiPercentageBar.spec.tsx index 31b40dfa..bb6037d8 100644 --- a/src/components/BentoGrid/MultiPercentageBar/MultiPercentageBar.spec.tsx +++ b/src/components/BentoGrid/MultiPercentageBar/MultiPercentageBar.spec.tsx @@ -6,6 +6,7 @@ describe('MultiPercentageBar utilities', () => { percentage: number; color: string; label: string; + count?: number; } // Helper function to filter non-zero segments (simulating component logic) @@ -113,4 +114,85 @@ describe('MultiPercentageBar utilities', () => { expect(result.segments).toBe(0); }); }); + + describe('color configuration utilities', () => { + // Helper function to apply color overrides (simulating component logic) + const applyColorOverrides = ( + segments: PercentageSegment[], + overrides: Record + ) => { + return segments.map(segment => ({ + ...segment, + color: overrides[segment.label] || segment.color, + })); + }; + + it('applies color overrides correctly', () => { + const segments: PercentageSegment[] = [ + { percentage: 60, color: '#28a745', label: 'Healthy' }, + { percentage: 40, color: '#d22020ff', label: 'Unhealthy' }, + ]; + + const overrides = { + 'Healthy': '#00ff00', + 'Unhealthy': '#ff0000', + }; + + const result = applyColorOverrides(segments, overrides); + + expect(result[0].color).toBe('#00ff00'); + expect(result[1].color).toBe('#ff0000'); + }); + + it('keeps original colors when no overrides match', () => { + const segments: PercentageSegment[] = [ + { percentage: 60, color: '#28a745', label: 'Healthy' }, + { percentage: 40, color: '#d22020ff', label: 'Unknown' }, + ]; + + const overrides = { + 'Different': '#00ff00', + }; + + const result = applyColorOverrides(segments, overrides); + + expect(result[0].color).toBe('#28a745'); + expect(result[1].color).toBe('#d22020ff'); + }); + }); + + describe('label configuration utilities', () => { + // Helper function to determine if primary label should be hidden + const shouldHidePrimaryLabel = ( + segments: PercentageSegment[], + hideWhenSingleFull: boolean + ) => { + return hideWhenSingleFull && + segments.length === 1 && + segments[0]?.percentage === 100; + }; + + it('hides primary label when single segment is 100%', () => { + const segments: PercentageSegment[] = [ + { percentage: 100, color: '#28a745', label: 'Complete' }, + ]; + + expect(shouldHidePrimaryLabel(segments, true)).toBe(true); + expect(shouldHidePrimaryLabel(segments, false)).toBe(false); + }); + + it('shows primary label when multiple segments or not 100%', () => { + const multipleSegments: PercentageSegment[] = [ + { percentage: 50, color: '#28a745', label: 'Healthy' }, + { percentage: 50, color: '#d22020ff', label: 'Unhealthy' }, + ]; + + const partialSegment: PercentageSegment[] = [ + { percentage: 80, color: '#28a745', label: 'Partial' }, + ]; + + expect(shouldHidePrimaryLabel(multipleSegments, true)).toBe(false); + expect(shouldHidePrimaryLabel(partialSegment, true)).toBe(false); + }); + }); }); diff --git a/src/components/BentoGrid/MultiPercentageBar/MultiPercentageBar.tsx b/src/components/BentoGrid/MultiPercentageBar/MultiPercentageBar.tsx index f3074a3c..ba34403e 100644 --- a/src/components/BentoGrid/MultiPercentageBar/MultiPercentageBar.tsx +++ b/src/components/BentoGrid/MultiPercentageBar/MultiPercentageBar.tsx @@ -1,6 +1,56 @@ import React, { useMemo } from 'react'; import styles from './MultiPercentageBar.module.css'; +/** + * MultiPercentageBar - A flexible, configurable progress bar component + * + * Examples: + * + * // Basic usage (backward compatible) + * + * + * // Advanced configuration with custom colors and labels inside chart + * + * + * // Hide primary label when single segment is 100% + * + */ + interface PercentageSegment { percentage: number; color: string; @@ -8,92 +58,272 @@ interface PercentageSegment { count?: number; // Optional count for displaying inside segments } +type LabelPosition = 'above' | 'inside' | 'none'; +type LabelDisplayMode = 'all' | 'primary' | 'custom'; + +interface LabelConfig { + position: LabelPosition; + displayMode: LabelDisplayMode; + showPercentage?: boolean; + showCount?: boolean; + customLabels?: string[]; // Custom labels to show when displayMode is 'custom' + primaryLabelText?: string; // Override primary label text + fontSize?: string; + fontWeight?: 'normal' | 'bold' | number; + textColor?: string; + healthyTextColor?: string; // Color for healthy state + hideWhenSingleFull?: boolean; // Hide primary label when single segment is 100% +} + +interface ColorConfig { + overrides?: Record; // Override colors by segment label + healthyThreshold?: number; // Percentage threshold for healthy state + useGradients?: boolean; // Whether to use gradient effects + opacity?: number; // Overall opacity for segments +} + +interface AnimationConfig { + duration?: number; + enableWave?: boolean; + staggerDelay?: number; // Delay between segment animations + enableTransitions?: boolean; +} + interface MultiPercentageBarProps { segments: PercentageSegment[]; - label?: string; showOnlyNonZero?: boolean; + + // Layout props barWidth?: string; barMaxWidth?: string; barHeight?: string; - showLabels?: boolean; - showPercentage?: boolean; // Control whether to show percentage number - isHealthy?: boolean; // Control whether to style the text as healthy (green) - labelFontSize?: string; gap?: string; borderRadius?: string; backgroundColor?: string; className?: string; style?: React.CSSProperties; - animationDuration?: number; // Animation duration in ms (for CSS custom property) - showSegmentLabels?: boolean; // Control whether to show labels inside segments - minSegmentWidthForLabel?: number; // Minimum percentage to show label inside segment + + // Label configuration + labelConfig?: LabelConfig; + + // Color configuration + colorConfig?: ColorConfig; + + // Animation configuration + animationConfig?: AnimationConfig; + + // Legacy props for backward compatibility + label?: string; + showLabels?: boolean; + showPercentage?: boolean; + isHealthy?: boolean; + labelFontSize?: string; + animationDuration?: number; + showSegmentLabels?: boolean; + minSegmentWidthForLabel?: number; } export const MultiPercentageBar: React.FC = ({ segments, - label, showOnlyNonZero = true, + + // Layout props barWidth = '80%', barMaxWidth = '400px', barHeight = '8px', - showLabels = true, - showPercentage = true, - isHealthy, - labelFontSize = '0.875rem', gap = '2px', borderRadius = '6px', backgroundColor, className, style, - animationDuration = 400, // Match CSS default + + // Configuration objects + labelConfig, + colorConfig, + animationConfig, + + // Legacy props (for backward compatibility) + label, + showLabels = true, + showPercentage = true, + isHealthy, + labelFontSize = '0.875rem', + animationDuration = 400, showSegmentLabels = false, - minSegmentWidthForLabel = 15, // Only show label if segment is at least 15% + minSegmentWidthForLabel = 15, }) => { - // Memoize filtered segments - const filteredSegments = useMemo(() => { - return showOnlyNonZero ? segments.filter((segment) => segment.percentage > 0) : segments; - }, [segments, showOnlyNonZero]); + // Merge legacy props with new config objects + const mergedLabelConfig: LabelConfig = useMemo(() => ({ + position: showSegmentLabels ? 'inside' : showLabels ? 'above' : 'none', + displayMode: 'primary', + showPercentage: showPercentage, + showCount: false, + primaryLabelText: label, + fontSize: labelFontSize, + fontWeight: 'normal', + hideWhenSingleFull: false, + ...labelConfig, + }), [labelConfig, showSegmentLabels, showLabels, showPercentage, label, labelFontSize]); + + const mergedColorConfig: ColorConfig = useMemo(() => ({ + healthyThreshold: 100, + useGradients: false, + opacity: 1, + ...colorConfig, + }), [colorConfig]); + + const mergedAnimationConfig: AnimationConfig = useMemo(() => ({ + duration: animationDuration, + enableWave: true, + staggerDelay: 100, + enableTransitions: true, + ...animationConfig, + }), [animationConfig, animationDuration]); - if (filteredSegments.length === 0) { + // Memoize filtered segments with color overrides + const processedSegments = useMemo(() => { + const filtered = showOnlyNonZero ? segments.filter((segment) => segment.percentage > 0) : segments; + + return filtered.map((segment) => ({ + ...segment, + color: mergedColorConfig.overrides?.[segment.label] || segment.color, + })); + }, [segments, showOnlyNonZero, mergedColorConfig.overrides]); + + if (processedSegments.length === 0) { return null; } - const primaryPercentage = filteredSegments[0]?.percentage || 0; - const displayLabel = label || 'Healthy'; - const allHealthy = isHealthy !== undefined ? isHealthy : primaryPercentage === 100; + const primarySegment = processedSegments[0]; + const primaryPercentage = primarySegment?.percentage || 0; + + // Determine if the component is in a "healthy" state + const isHealthyState = isHealthy !== undefined + ? isHealthy + : primaryPercentage >= (mergedColorConfig.healthyThreshold || 100); + + // Determine if we should hide the primary label (single segment at 100%) + const shouldHidePrimaryLabel = mergedLabelConfig.hideWhenSingleFull && + processedSegments.length === 1 && + primaryPercentage === 100; + + // Helper function to render labels above the bar + const renderAboveLabels = () => { + if (mergedLabelConfig.position !== 'above') return null; + + const labelsToShow = []; + + switch (mergedLabelConfig.displayMode) { + case 'primary': + if (!shouldHidePrimaryLabel) { + const displayText = mergedLabelConfig.primaryLabelText || processedSegments[0]?.label || 'Primary'; + const isRolesLabel = displayText.toLowerCase().includes('roles'); + labelsToShow.push({ + text: displayText, + percentage: mergedLabelConfig.showPercentage ? primaryPercentage : undefined, + count: mergedLabelConfig.showCount ? processedSegments[0]?.count : undefined, + isHealthy: isHealthyState && !isRolesLabel, // Don't apply healthy styling to roles labels + }); + } + break; + case 'all': + processedSegments.forEach((segment) => { + labelsToShow.push({ + text: segment.label, + percentage: mergedLabelConfig.showPercentage ? segment.percentage : undefined, + count: mergedLabelConfig.showCount ? segment.count : undefined, + isHealthy: false, // Only primary should be styled as healthy + }); + }); + break; + case 'custom': + if (mergedLabelConfig.customLabels) { + mergedLabelConfig.customLabels.forEach((customLabel, index) => { + const segment = processedSegments[index]; + if (segment) { + labelsToShow.push({ + text: customLabel, + percentage: mergedLabelConfig.showPercentage ? segment.percentage : undefined, + count: mergedLabelConfig.showCount ? segment.count : undefined, + isHealthy: index === 0 ? isHealthyState : false, + }); + } + }); + } + break; + } + + if (labelsToShow.length === 0) return null; + + return ( +
+ {labelsToShow.map((labelItem, index) => ( +
+ + {labelItem.text} + + {labelItem.percentage !== undefined && ( + + {labelItem.percentage}% + + )} + {labelItem.count !== undefined && ( + + ({labelItem.count}) + + )} +
+ ))} +
+ ); + }; return (
- {/* Label */} - {showLabels && ( -
-
- {displayLabel} - {showPercentage && ( - {primaryPercentage}% - )} -
-
- )} + {/* Labels above the bar */} + {renderAboveLabels()} {/* Progress bar */}
- {filteredSegments.map((segment, index) => ( + {processedSegments.map((segment, index) => (
= ({ { '--segment-percentage': segment.percentage, '--segment-color': segment.color, + opacity: mergedColorConfig.opacity, + ...(mergedAnimationConfig.duration === 0 && { + animation: 'none', + transform: 'scaleX(1)', + }), } as React.CSSProperties } > {/* Wave animation overlay */} -
+ {mergedAnimationConfig.enableWave &&
} {/* Segment label inside the bar */} - {showSegmentLabels && segment.percentage >= minSegmentWidthForLabel && ( - - {segment.count ? `${segment.label} ${segment.count}` : segment.label} + {mergedLabelConfig.position === 'inside' && segment.percentage >= (minSegmentWidthForLabel || 15) && ( + + {mergedLabelConfig.showCount && segment.count + ? `${segment.label} ${segment.count}` + : segment.label} + {mergedLabelConfig.showPercentage && ` ${segment.percentage}%`} )}
@@ -120,4 +364,12 @@ export const MultiPercentageBar: React.FC = ({ ); }; -export type { PercentageSegment, MultiPercentageBarProps }; +export type { + PercentageSegment, + MultiPercentageBarProps, + LabelConfig, + ColorConfig, + AnimationConfig, + LabelPosition, + LabelDisplayMode +}; diff --git a/src/utils/componentCardCalculations.ts b/src/utils/componentCardCalculations.ts index 3381b9cf..34ec7f10 100644 --- a/src/utils/componentCardCalculations.ts +++ b/src/utils/componentCardCalculations.ts @@ -13,6 +13,8 @@ export const HINT_COLORS = { inactive: '#e9e9e9ff', managed: '#28a745', progress: '#fd7e14', + roles: '#08848c', // Teal color for roles + flux: '#386ce4', // Blue color for flux/gitops } as const; /** @@ -161,16 +163,15 @@ export const calculateGitOpsSegments: GenericHintSegmentCalculator = ( const progressValue = totalCount > 0 ? Math.round((fluxLabelCount / totalCount) * 100) : 0; const restPercentage = 100 - progressValue; - const progressColor = progressValue >= 70 ? HINT_COLORS.healthy : HINT_COLORS.progress; return { segments: [ - { percentage: progressValue, color: progressColor, label: t('common.progress') }, + { percentage: progressValue, color: HINT_COLORS.flux, label: t('common.progress') }, { percentage: restPercentage, color: HINT_COLORS.inactive, label: t('common.remaining') }, ], label: t('Hints.GitOpsHint.managed'), showPercentage: true, - isHealthy: progressValue >= 70, + isHealthy: false, // Don't apply green styling to GitOps labels showOnlyNonZero: true, }; }; @@ -222,20 +223,33 @@ export const calculateMembersSegments: GenericHintSegmentCalculator = ( showOnlyNonZero: true, }; } - // Count the number of items with the flux label - const userAdmins = allItems.filter( - (user: any) => - user?.subjects?.[0]?.kind == "User" && user?.role == "admin" - ).length; + // Count the number of roles and their distribution + const roleCounts: Record = {}; + + allItems.forEach((item: any) => { + const role = item?.role || 'unknown'; + roleCounts[role] = (roleCounts[role] || 0) + 1; + }); + + const totalRoles = Object.keys(roleCounts).length; + + // Convert to segments with percentages and counts + const segments = Object.entries(roleCounts) + .map(([role, count]) => ({ + percentage: Math.round((count / totalCount) * 100), + color: HINT_COLORS.roles, // All roles use the same teal color + label: role.charAt(0).toUpperCase() + role.slice(1), + count: count + })) + .filter(segment => segment.percentage > 0) + .sort((a, b) => b.percentage - a.percentage); + return { - segments: [ - { percentage: userAdmins / allItems.length * 100, color: HINT_COLORS.healthy, label: "Admin" }, - { percentage: 100 - (userAdmins / allItems.length * 100), color: HINT_COLORS.inactive, label: "Viewer" }, - ], - label: "Admins", + segments, + label: `Roles ${totalRoles}`, showPercentage: false, - isHealthy: true, - showOnlyNonZero: false, + isHealthy: false, // Changed to false to prevent green styling + showOnlyNonZero: true, }; }; From d0bddfd457d3119750ba3aa4752692ba73f80860 Mon Sep 17 00:00:00 2001 From: Lasserich Date: Tue, 16 Sep 2025 17:14:49 +0200 Subject: [PATCH 25/37] chore: cleanup --- .../BentoGrid/ComponentCard/ComponentCard.tsx | 13 +- .../CardHoverContent.module.css | 17 --- .../CardHoverContent.tsx | 129 ------------------ .../hoverCalculations.ts | 85 ------------ .../MultiPercentageBar/MultiPercentageBar.tsx | 99 ++------------ src/utils/componentCardCalculations.ts | 19 +-- 6 files changed, 18 insertions(+), 344 deletions(-) delete mode 100644 src/components/BentoGrid/ComponentCardHoverContent/CardHoverContent.module.css delete mode 100644 src/components/BentoGrid/ComponentCardHoverContent/CardHoverContent.tsx delete mode 100644 src/components/BentoGrid/ComponentCardHoverContent/hoverCalculations.ts diff --git a/src/components/BentoGrid/ComponentCard/ComponentCard.tsx b/src/components/BentoGrid/ComponentCard/ComponentCard.tsx index 8eef50d1..38dd469f 100644 --- a/src/components/BentoGrid/ComponentCard/ComponentCard.tsx +++ b/src/components/BentoGrid/ComponentCard/ComponentCard.tsx @@ -26,8 +26,6 @@ export const ComponentCard: React.FC { const { t } = useTranslation(); - - // Calculate segments and state using the provided calculator const hintState = config.calculateSegments(allItems, isLoading || false, error, enabled, t); return ( @@ -56,9 +54,7 @@ export const ComponentCard: React.FC - {/* Disabled overlay */} {!enabled &&
} {/* Expand/Collapse button */} @@ -67,7 +63,7 @@ export const ComponentCard: React.FC { e.stopPropagation(); @@ -88,6 +84,7 @@ export const ComponentCard: React.FC - {/* Second progress bar only for large and extra-large cards */} + {/* Secondary chart for large and extra-large cards */} {(size === 'large' || size === 'extra-large') && secondarySegments && ( { - if (label.length <= maxLength) { - return label; - } - return label.substring(0, maxLength) + '...'; -}; - -export const HoverContent: React.FC = ({ - enabled, - totalCount, - totalLabel, - legendItems, - radarDataset, - radarDimensions, - radarMeasures, - isLoading = false, -}) => { - // Process the dataset to truncate labels - const processedDataset = useMemo(() => { - return radarDataset.map((dataPoint) => { - const processedDataPoint = { ...dataPoint }; - - // Truncate labels for each dimension accessor - radarDimensions.forEach((dimension) => { - const value = dataPoint[dimension.accessor]; - if (typeof value === 'string') { - processedDataPoint[dimension.accessor] = truncateLabel(value); - } - }); - - return processedDataPoint; - }); - }, [radarDataset, radarDimensions]); - - if (!enabled) { - return null; - } - - return ( -
- -
- {isLoading || radarDataset.length === 0 ? ( -
- String(value || ''), - }, - ]} - measures={[ - { - accessor: 'users', - formatter: (value: string | number) => String(value || ''), - label: 'Users', - }, - { - accessor: 'sessions', - formatter: (value: string | number) => String(value || ''), - hideDataLabel: true, - label: 'Active Sessions', - }, - { - accessor: 'volume', - label: 'Vol.', - }, - ]} - style={{ width: '100%', height: '100%', minWidth: 280, minHeight: 280 }} - noLegend={true} - onClick={() => {}} - onDataPointClick={() => {}} - onLegendClick={() => {}} - /> -
- ) : ( - - )} -
-
- ); -}; diff --git a/src/components/BentoGrid/ComponentCardHoverContent/hoverCalculations.ts b/src/components/BentoGrid/ComponentCardHoverContent/hoverCalculations.ts deleted file mode 100644 index e77d18fd..00000000 --- a/src/components/BentoGrid/ComponentCardHoverContent/hoverCalculations.ts +++ /dev/null @@ -1,85 +0,0 @@ -import { ManagedResourceItem, Condition } from '../../../lib/shared/types'; - -export interface ResourceTypeStats { - type: string; - total: number; - healthy: number; - creating: number; - unhealthy: number; - healthyPercentage: number; - creatingPercentage: number; - unhealthyPercentage: number; -} - -export interface OverallStats { - total: number; - healthy: number; - creating: number; - unhealthy: number; -} - -export interface CrossplaneHoverData { - resourceTypeStats: ResourceTypeStats[]; - overallStats: OverallStats; -} - -/** - * Calculate comprehensive statistics for Crossplane hover content - */ -export const calculateCrossplaneHoverData = (allItems: ManagedResourceItem[]): CrossplaneHoverData => { - const typeStats: Record = {}; - let totalHealthy = 0; - let totalCreating = 0; - let totalUnhealthy = 0; - - allItems.forEach((item: ManagedResourceItem) => { - const type = item.kind || 'Unknown'; - - if (!typeStats[type]) { - typeStats[type] = { total: 0, healthy: 0, creating: 0, unhealthy: 0 }; - } - - typeStats[type].total++; - - const conditions = item.status?.conditions || []; - const ready = conditions.find((c: Condition) => c.type === 'Ready' && c.status === 'True'); - const synced = conditions.find((c: Condition) => c.type === 'Synced' && c.status === 'True'); - - if (ready && synced) { - typeStats[type].healthy++; - totalHealthy++; - } else if (synced && !ready) { - // Resource is synced but not ready - it's creating - typeStats[type].creating++; - totalCreating++; - } else { - // Resource has issues or is not synced - typeStats[type].unhealthy++; - totalUnhealthy++; - } - }); - - const resourceTypeStats: ResourceTypeStats[] = Object.keys(typeStats).map((type) => { - const stats = typeStats[type]; - return { - type, - total: stats.total, - healthy: stats.healthy, - creating: stats.creating, - unhealthy: stats.unhealthy, - healthyPercentage: Math.round((stats.healthy / stats.total) * 100), - creatingPercentage: Math.round((stats.creating / stats.total) * 100), - unhealthyPercentage: Math.round((stats.unhealthy / stats.total) * 100), - }; - }); - - return { - resourceTypeStats, - overallStats: { - total: allItems.length, - healthy: totalHealthy, - creating: totalCreating, - unhealthy: totalUnhealthy, - }, - }; -}; diff --git a/src/components/BentoGrid/MultiPercentageBar/MultiPercentageBar.tsx b/src/components/BentoGrid/MultiPercentageBar/MultiPercentageBar.tsx index ba34403e..f8618df5 100644 --- a/src/components/BentoGrid/MultiPercentageBar/MultiPercentageBar.tsx +++ b/src/components/BentoGrid/MultiPercentageBar/MultiPercentageBar.tsx @@ -2,53 +2,7 @@ import React, { useMemo } from 'react'; import styles from './MultiPercentageBar.module.css'; /** - * MultiPercentageBar - A flexible, configurable progress bar component - * - * Examples: - * - * // Basic usage (backward compatible) - * - * - * // Advanced configuration with custom colors and labels inside chart - * - * - * // Hide primary label when single segment is 100% - * + * MultiPercentageBar - A configurable progress bar component with segments */ interface PercentageSegment { @@ -92,8 +46,8 @@ interface AnimationConfig { interface MultiPercentageBarProps { segments: PercentageSegment[]; showOnlyNonZero?: boolean; + isHealthy?: boolean; // Override for healthy state from parent component - // Layout props barWidth?: string; barMaxWidth?: string; barHeight?: string; @@ -103,22 +57,10 @@ interface MultiPercentageBarProps { className?: string; style?: React.CSSProperties; - // Label configuration labelConfig?: LabelConfig; - - // Color configuration colorConfig?: ColorConfig; - - // Animation configuration animationConfig?: AnimationConfig; - // Legacy props for backward compatibility - label?: string; - showLabels?: boolean; - showPercentage?: boolean; - isHealthy?: boolean; - labelFontSize?: string; - animationDuration?: number; showSegmentLabels?: boolean; minSegmentWidthForLabel?: number; } @@ -126,8 +68,7 @@ interface MultiPercentageBarProps { export const MultiPercentageBar: React.FC = ({ segments, showOnlyNonZero = true, - - // Layout props + isHealthy = false, barWidth = '80%', barMaxWidth = '400px', barHeight = '8px', @@ -136,34 +77,22 @@ export const MultiPercentageBar: React.FC = ({ backgroundColor, className, style, - - // Configuration objects labelConfig, colorConfig, animationConfig, - - // Legacy props (for backward compatibility) - label, - showLabels = true, - showPercentage = true, - isHealthy, - labelFontSize = '0.875rem', - animationDuration = 400, showSegmentLabels = false, minSegmentWidthForLabel = 15, }) => { - // Merge legacy props with new config objects const mergedLabelConfig: LabelConfig = useMemo(() => ({ - position: showSegmentLabels ? 'inside' : showLabels ? 'above' : 'none', + position: showSegmentLabels ? 'inside' : 'above', displayMode: 'primary', - showPercentage: showPercentage, + showPercentage: false, showCount: false, - primaryLabelText: label, - fontSize: labelFontSize, + fontSize: '0.875rem', fontWeight: 'normal', hideWhenSingleFull: false, ...labelConfig, - }), [labelConfig, showSegmentLabels, showLabels, showPercentage, label, labelFontSize]); + }), [labelConfig, showSegmentLabels]); const mergedColorConfig: ColorConfig = useMemo(() => ({ healthyThreshold: 100, @@ -173,12 +102,12 @@ export const MultiPercentageBar: React.FC = ({ }), [colorConfig]); const mergedAnimationConfig: AnimationConfig = useMemo(() => ({ - duration: animationDuration, + duration: 400, enableWave: true, staggerDelay: 100, enableTransitions: true, ...animationConfig, - }), [animationConfig, animationDuration]); + }), [animationConfig]); // Memoize filtered segments with color overrides const processedSegments = useMemo(() => { @@ -197,12 +126,6 @@ export const MultiPercentageBar: React.FC = ({ const primarySegment = processedSegments[0]; const primaryPercentage = primarySegment?.percentage || 0; - // Determine if the component is in a "healthy" state - const isHealthyState = isHealthy !== undefined - ? isHealthy - : primaryPercentage >= (mergedColorConfig.healthyThreshold || 100); - - // Determine if we should hide the primary label (single segment at 100%) const shouldHidePrimaryLabel = mergedLabelConfig.hideWhenSingleFull && processedSegments.length === 1 && primaryPercentage === 100; @@ -222,7 +145,7 @@ export const MultiPercentageBar: React.FC = ({ text: displayText, percentage: mergedLabelConfig.showPercentage ? primaryPercentage : undefined, count: mergedLabelConfig.showCount ? processedSegments[0]?.count : undefined, - isHealthy: isHealthyState && !isRolesLabel, // Don't apply healthy styling to roles labels + isHealthy: isHealthy && !isRolesLabel, }); } break; @@ -245,7 +168,7 @@ export const MultiPercentageBar: React.FC = ({ text: customLabel, percentage: mergedLabelConfig.showPercentage ? segment.percentage : undefined, count: mergedLabelConfig.showCount ? segment.count : undefined, - isHealthy: index === 0 ? isHealthyState : false, + isHealthy: index === 0 ? isHealthy : false, }); } }); diff --git a/src/utils/componentCardCalculations.ts b/src/utils/componentCardCalculations.ts index 34ec7f10..69766c87 100644 --- a/src/utils/componentCardCalculations.ts +++ b/src/utils/componentCardCalculations.ts @@ -3,23 +3,14 @@ import { APIError } from '../lib/api/error'; import { GenericHintSegmentCalculator, GenericHintState } from '../types/types'; -/** - * Common colors used across all hints - */ export const HINT_COLORS = { healthy: '#28a745', creating: '#0874f4', unhealthy: '#d22020ff', inactive: '#e9e9e9ff', - managed: '#28a745', - progress: '#fd7e14', - roles: '#08848c', // Teal color for roles - flux: '#386ce4', // Blue color for flux/gitops + roles: '#08848c', + flux: '#386ce4', } as const; - -/** - * Crossplane-specific segment calculation - */ export const calculateCrossplaneSegments: GenericHintSegmentCalculator = ( allItems: ManagedResourceItem[], isLoading: boolean, @@ -68,8 +59,6 @@ export const calculateCrossplaneSegments: GenericHintSegmentCalculator = ( showOnlyNonZero: true, }; } - - // Calculate health statistics const healthyCount = allItems.filter((item: ManagedResourceItem) => { const conditions = item.status?.conditions || []; const ready = conditions.find((c: Condition) => c.type === 'Ready' && c.status === 'True'); @@ -154,7 +143,7 @@ export const calculateGitOpsSegments: GenericHintSegmentCalculator = ( }; } - // Count the number of items with the flux label + const fluxLabelCount = allItems.filter( (item: ManagedResourceItem) => item?.metadata?.labels && @@ -233,7 +222,7 @@ export const calculateMembersSegments: GenericHintSegmentCalculator = ( const totalRoles = Object.keys(roleCounts).length; - // Convert to segments with percentages and counts + const segments = Object.entries(roleCounts) .map(([role, count]) => ({ percentage: Math.round((count / totalCount) * 100), From 3f089f0742aeaf102fab07ae02f7893ddc946da4 Mon Sep 17 00:00:00 2001 From: Lasserich Date: Tue, 16 Sep 2025 17:26:34 +0200 Subject: [PATCH 26/37] fix: linting --- src/components/BentoGrid/BentoGrid.tsx | 18 +-- .../BentoGrid/ComponentCard/ComponentCard.tsx | 60 ++++---- .../ComponentCard/componentConfigs.ts | 1 - .../BentoGrid/GraphCard/GraphCard.tsx | 6 +- .../MultiPercentageBar.spec.tsx | 30 ++-- .../MultiPercentageBar/MultiPercentageBar.tsx | 107 ++++++++------- src/components/Graphs/Graph.tsx | 6 +- src/components/Graphs/useGraph.ts | 4 +- src/lib/api/types/crate/controlPlanes.ts | 3 +- src/spaces/mcp/pages/McpPage.tsx | 128 ++++++++++-------- src/types/types.ts | 18 ++- src/utils/componentCardCalculations.ts | 15 +- 12 files changed, 194 insertions(+), 202 deletions(-) diff --git a/src/components/BentoGrid/BentoGrid.tsx b/src/components/BentoGrid/BentoGrid.tsx index a3d38260..d8c9071a 100644 --- a/src/components/BentoGrid/BentoGrid.tsx +++ b/src/components/BentoGrid/BentoGrid.tsx @@ -16,19 +16,13 @@ export interface BentoGridProps { className?: string; } -export const BentoCard: React.FC = ({ - size, - children, - className = '', - gridColumn, - gridRow -}) => { +export const BentoCard: React.FC = ({ size, children, className = '', gridColumn, gridRow }) => { const cardClass = `${styles.bentoCard} ${styles[`card-${size}`]} ${className}`; - + const style: React.CSSProperties = {}; if (gridColumn) style.gridColumn = gridColumn; if (gridRow) style.gridRow = gridRow; - + return (
{children} @@ -37,9 +31,5 @@ export const BentoCard: React.FC = ({ }; export const BentoGrid: React.FC = ({ children, className = '' }) => { - return ( -
- {children} -
- ); + return
{children}
; }; diff --git a/src/components/BentoGrid/ComponentCard/ComponentCard.tsx b/src/components/BentoGrid/ComponentCard/ComponentCard.tsx index 38dd469f..7a93bcbb 100644 --- a/src/components/BentoGrid/ComponentCard/ComponentCard.tsx +++ b/src/components/BentoGrid/ComponentCard/ComponentCard.tsx @@ -6,13 +6,15 @@ import { MultiPercentageBar } from '../MultiPercentageBar/MultiPercentageBar'; import styles from './ComponentCard.module.css'; import { GenericHintProps } from '../../../types/types'; -export const ComponentCard: React.FC void; - size?: 'small' | 'medium' | 'large' | 'extra-large'; - secondarySegments?: Array<{ percentage: number; color: string; label: string }>; - secondaryLabel?: string; - expanded?: boolean; -}> = ({ +export const ComponentCard: React.FC< + GenericHintProps & { + onClick?: () => void; + size?: 'small' | 'medium' | 'large' | 'extra-large'; + secondarySegments?: { percentage: number; color: string; label: string }[]; + secondaryLabel?: string; + expanded?: boolean; + } +> = ({ enabled = false, version, allItems = [], @@ -23,7 +25,7 @@ export const ComponentCard: React.FC { const { t } = useTranslation(); const hintState = config.calculateSegments(allItems, isLoading || false, error, enabled, t); @@ -60,9 +62,9 @@ export const ComponentCard: React.FC { @@ -72,33 +74,31 @@ export const ComponentCard: React.FC )} -
-
+
+
- + {/* Secondary chart for large and extra-large cards */} {(size === 'large' || size === 'extra-large') && secondarySegments && ( { diff --git a/src/components/BentoGrid/GraphCard/GraphCard.tsx b/src/components/BentoGrid/GraphCard/GraphCard.tsx index a9748607..c031b76a 100644 --- a/src/components/BentoGrid/GraphCard/GraphCard.tsx +++ b/src/components/BentoGrid/GraphCard/GraphCard.tsx @@ -9,11 +9,7 @@ export interface GraphCardProps { colorBy?: ColorBy; } -export const GraphCard: React.FC = ({ - className = '', - colorBy = 'source' -}) => { - +export const GraphCard: React.FC = ({ className = '', colorBy = 'source' }) => { return (
diff --git a/src/components/BentoGrid/MultiPercentageBar/MultiPercentageBar.spec.tsx b/src/components/BentoGrid/MultiPercentageBar/MultiPercentageBar.spec.tsx index bb6037d8..f9d30321 100644 --- a/src/components/BentoGrid/MultiPercentageBar/MultiPercentageBar.spec.tsx +++ b/src/components/BentoGrid/MultiPercentageBar/MultiPercentageBar.spec.tsx @@ -117,11 +117,8 @@ describe('MultiPercentageBar utilities', () => { describe('color configuration utilities', () => { // Helper function to apply color overrides (simulating component logic) - const applyColorOverrides = ( - segments: PercentageSegment[], - overrides: Record - ) => { - return segments.map(segment => ({ + const applyColorOverrides = (segments: PercentageSegment[], overrides: Record) => { + return segments.map((segment) => ({ ...segment, color: overrides[segment.label] || segment.color, })); @@ -134,8 +131,8 @@ describe('MultiPercentageBar utilities', () => { ]; const overrides = { - 'Healthy': '#00ff00', - 'Unhealthy': '#ff0000', + Healthy: '#00ff00', + Unhealthy: '#ff0000', }; const result = applyColorOverrides(segments, overrides); @@ -151,7 +148,7 @@ describe('MultiPercentageBar utilities', () => { ]; const overrides = { - 'Different': '#00ff00', + Different: '#00ff00', }; const result = applyColorOverrides(segments, overrides); @@ -163,19 +160,12 @@ describe('MultiPercentageBar utilities', () => { describe('label configuration utilities', () => { // Helper function to determine if primary label should be hidden - const shouldHidePrimaryLabel = ( - segments: PercentageSegment[], - hideWhenSingleFull: boolean - ) => { - return hideWhenSingleFull && - segments.length === 1 && - segments[0]?.percentage === 100; + const shouldHidePrimaryLabel = (segments: PercentageSegment[], hideWhenSingleFull: boolean) => { + return hideWhenSingleFull && segments.length === 1 && segments[0]?.percentage === 100; }; it('hides primary label when single segment is 100%', () => { - const segments: PercentageSegment[] = [ - { percentage: 100, color: '#28a745', label: 'Complete' }, - ]; + const segments: PercentageSegment[] = [{ percentage: 100, color: '#28a745', label: 'Complete' }]; expect(shouldHidePrimaryLabel(segments, true)).toBe(true); expect(shouldHidePrimaryLabel(segments, false)).toBe(false); @@ -187,9 +177,7 @@ describe('MultiPercentageBar utilities', () => { { percentage: 50, color: '#d22020ff', label: 'Unhealthy' }, ]; - const partialSegment: PercentageSegment[] = [ - { percentage: 80, color: '#28a745', label: 'Partial' }, - ]; + const partialSegment: PercentageSegment[] = [{ percentage: 80, color: '#28a745', label: 'Partial' }]; expect(shouldHidePrimaryLabel(multipleSegments, true)).toBe(false); expect(shouldHidePrimaryLabel(partialSegment, true)).toBe(false); diff --git a/src/components/BentoGrid/MultiPercentageBar/MultiPercentageBar.tsx b/src/components/BentoGrid/MultiPercentageBar/MultiPercentageBar.tsx index f8618df5..509d7c82 100644 --- a/src/components/BentoGrid/MultiPercentageBar/MultiPercentageBar.tsx +++ b/src/components/BentoGrid/MultiPercentageBar/MultiPercentageBar.tsx @@ -47,7 +47,7 @@ interface MultiPercentageBarProps { segments: PercentageSegment[]; showOnlyNonZero?: boolean; isHealthy?: boolean; // Override for healthy state from parent component - + barWidth?: string; barMaxWidth?: string; barHeight?: string; @@ -56,11 +56,11 @@ interface MultiPercentageBarProps { backgroundColor?: string; className?: string; style?: React.CSSProperties; - + labelConfig?: LabelConfig; colorConfig?: ColorConfig; animationConfig?: AnimationConfig; - + showSegmentLabels?: boolean; minSegmentWidthForLabel?: number; } @@ -83,36 +83,45 @@ export const MultiPercentageBar: React.FC = ({ showSegmentLabels = false, minSegmentWidthForLabel = 15, }) => { - const mergedLabelConfig: LabelConfig = useMemo(() => ({ - position: showSegmentLabels ? 'inside' : 'above', - displayMode: 'primary', - showPercentage: false, - showCount: false, - fontSize: '0.875rem', - fontWeight: 'normal', - hideWhenSingleFull: false, - ...labelConfig, - }), [labelConfig, showSegmentLabels]); + const mergedLabelConfig: LabelConfig = useMemo( + () => ({ + position: showSegmentLabels ? 'inside' : 'above', + displayMode: 'primary', + showPercentage: false, + showCount: false, + fontSize: '0.875rem', + fontWeight: 'normal', + hideWhenSingleFull: false, + ...labelConfig, + }), + [labelConfig, showSegmentLabels], + ); - const mergedColorConfig: ColorConfig = useMemo(() => ({ - healthyThreshold: 100, - useGradients: false, - opacity: 1, - ...colorConfig, - }), [colorConfig]); + const mergedColorConfig: ColorConfig = useMemo( + () => ({ + healthyThreshold: 100, + useGradients: false, + opacity: 1, + ...colorConfig, + }), + [colorConfig], + ); - const mergedAnimationConfig: AnimationConfig = useMemo(() => ({ - duration: 400, - enableWave: true, - staggerDelay: 100, - enableTransitions: true, - ...animationConfig, - }), [animationConfig]); + const mergedAnimationConfig: AnimationConfig = useMemo( + () => ({ + duration: 400, + enableWave: true, + staggerDelay: 100, + enableTransitions: true, + ...animationConfig, + }), + [animationConfig], + ); // Memoize filtered segments with color overrides const processedSegments = useMemo(() => { const filtered = showOnlyNonZero ? segments.filter((segment) => segment.percentage > 0) : segments; - + return filtered.map((segment) => ({ ...segment, color: mergedColorConfig.overrides?.[segment.label] || segment.color, @@ -125,17 +134,16 @@ export const MultiPercentageBar: React.FC = ({ const primarySegment = processedSegments[0]; const primaryPercentage = primarySegment?.percentage || 0; - - const shouldHidePrimaryLabel = mergedLabelConfig.hideWhenSingleFull && - processedSegments.length === 1 && - primaryPercentage === 100; + + const shouldHidePrimaryLabel = + mergedLabelConfig.hideWhenSingleFull && processedSegments.length === 1 && primaryPercentage === 100; // Helper function to render labels above the bar const renderAboveLabels = () => { if (mergedLabelConfig.position !== 'above') return null; - + const labelsToShow = []; - + switch (mergedLabelConfig.displayMode) { case 'primary': if (!shouldHidePrimaryLabel) { @@ -182,10 +190,11 @@ export const MultiPercentageBar: React.FC = ({
{labelsToShow.map((labelItem, index) => (
- = ({ {labelItem.text} {labelItem.percentage !== undefined && ( - = ({ )} {labelItem.count !== undefined && ( - = ({ > {/* Wave animation overlay */} {mergedAnimationConfig.enableWave &&
} - + {/* Segment label inside the bar */} {mergedLabelConfig.position === 'inside' && segment.percentage >= (minSegmentWidthForLabel || 15) && ( - - {mergedLabelConfig.showCount && segment.count - ? `${segment.label} ${segment.count}` - : segment.label} + {mergedLabelConfig.showCount && segment.count ? `${segment.label} ${segment.count}` : segment.label} {mergedLabelConfig.showPercentage && ` ${segment.percentage}%`} )} @@ -287,12 +296,12 @@ export const MultiPercentageBar: React.FC = ({ ); }; -export type { - PercentageSegment, - MultiPercentageBarProps, - LabelConfig, - ColorConfig, +export type { + PercentageSegment, + MultiPercentageBarProps, + LabelConfig, + ColorConfig, AnimationConfig, LabelPosition, - LabelDisplayMode + LabelDisplayMode, }; diff --git a/src/components/Graphs/Graph.tsx b/src/components/Graphs/Graph.tsx index 6fab3644..fda6d56f 100644 --- a/src/components/Graphs/Graph.tsx +++ b/src/components/Graphs/Graph.tsx @@ -108,18 +108,18 @@ const Graph: React.FC = ({ colorBy: initialColorBy = 'source' }) => selectionMode={SelectionMode.Partial} preventScrolling={true} > - + - + {/* Legend and filter in bottom-right */}
setFilterPopoverOpen(false)} placement="Top" + onClose={() => setFilterPopoverOpen(false)} >
-
+
)} - + {expandedCard === 'gitops' && (
-
+
)} {expandedCard === 'members' && (
- ({ + mcp?.spec?.authorization?.roleBindings?.map((binding: RoleBinding) => ({ name: (binding.subjects?.[0]?.name || 'Unknown').replace(/^openmcp:/, ''), kind: binding.subjects?.[0]?.kind || 'Unknown', roles: binding.role || [], @@ -440,7 +450,7 @@ function McpPageContent({ mcp, controlPlaneName }: { mcp: any; controlPlaneName: requireAtLeastOneMember={false} /> -
+
)}
diff --git a/src/types/types.ts b/src/types/types.ts index fe02fe54..921b5bda 100644 --- a/src/types/types.ts +++ b/src/types/types.ts @@ -1,11 +1,10 @@ import { ReactNode } from 'react'; import { APIError } from '../lib/api/error'; -import { ManagedResourceItem } from '../lib/shared/types'; import { PercentageSegment } from '../components/BentoGrid/MultiPercentageBar/MultiPercentageBar'; -export interface GenericHintSegmentCalculator { +export interface GenericHintSegmentCalculator { ( - allItems: ManagedResourceItem[], + allItems: T[], isLoading: boolean, error: APIError | undefined, enabled: boolean, @@ -13,7 +12,6 @@ export interface GenericHintSegmentCalculator { ): GenericHintState; } - export interface GenericHintState { segments: PercentageSegment[]; label: string; @@ -22,24 +20,24 @@ export interface GenericHintState { showOnlyNonZero?: boolean; } -export interface GenericHintConfig { +export interface GenericHintConfig { title: string; subtitle: string; iconSrc: string; iconAlt: string; iconStyle?: React.CSSProperties; scrollTarget?: string; - calculateSegments: GenericHintSegmentCalculator; - renderHoverContent?: (allItems: ManagedResourceItem[], enabled: boolean) => ReactNode; + calculateSegments: GenericHintSegmentCalculator; + renderHoverContent?: (allItems: T[], enabled: boolean) => ReactNode; } -export interface GenericHintProps { +export interface GenericHintProps { enabled?: boolean; version?: string; onActivate?: () => void; - allItems?: ManagedResourceItem[]; + allItems?: T[]; isLoading?: boolean; error?: APIError; - config: GenericHintConfig; + config: GenericHintConfig; height?: string | number; } diff --git a/src/utils/componentCardCalculations.ts b/src/utils/componentCardCalculations.ts index 69766c87..878b59d4 100644 --- a/src/utils/componentCardCalculations.ts +++ b/src/utils/componentCardCalculations.ts @@ -2,6 +2,9 @@ import { ManagedResourceItem, Condition } from '../lib/shared/types'; import { APIError } from '../lib/api/error'; import { GenericHintSegmentCalculator, GenericHintState } from '../types/types'; +interface MemberItem { + role?: string; +} export const HINT_COLORS = { healthy: '#28a745', @@ -143,7 +146,6 @@ export const calculateGitOpsSegments: GenericHintSegmentCalculator = ( }; } - const fluxLabelCount = allItems.filter( (item: ManagedResourceItem) => item?.metadata?.labels && @@ -169,7 +171,7 @@ export const calculateGitOpsSegments: GenericHintSegmentCalculator = ( * Members-specific segment calculation */ export const calculateMembersSegments: GenericHintSegmentCalculator = ( - allItems: any[], + allItems: MemberItem[], isLoading: boolean, error: APIError | undefined, enabled: boolean, @@ -214,23 +216,22 @@ export const calculateMembersSegments: GenericHintSegmentCalculator = ( } // Count the number of roles and their distribution const roleCounts: Record = {}; - - allItems.forEach((item: any) => { + + allItems.forEach((item: MemberItem) => { const role = item?.role || 'unknown'; roleCounts[role] = (roleCounts[role] || 0) + 1; }); const totalRoles = Object.keys(roleCounts).length; - const segments = Object.entries(roleCounts) .map(([role, count]) => ({ percentage: Math.round((count / totalCount) * 100), color: HINT_COLORS.roles, // All roles use the same teal color label: role.charAt(0).toUpperCase() + role.slice(1), - count: count + count: count, })) - .filter(segment => segment.percentage > 0) + .filter((segment) => segment.percentage > 0) .sort((a, b) => b.percentage - a.percentage); return { From e0c0fb1532ebb3b94d42334545b9ae9373e22a7f Mon Sep 17 00:00:00 2001 From: Lasserich Date: Wed, 17 Sep 2025 09:10:56 +0200 Subject: [PATCH 27/37] fix: linting --- src/spaces/mcp/pages/McpPage.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/spaces/mcp/pages/McpPage.tsx b/src/spaces/mcp/pages/McpPage.tsx index 14325f81..8722137f 100644 --- a/src/spaces/mcp/pages/McpPage.tsx +++ b/src/spaces/mcp/pages/McpPage.tsx @@ -40,7 +40,6 @@ import FluxList from '../../../components/ControlPlane/FluxList.tsx'; import { MemberTable } from '../../../components/Members/MemberTable.tsx'; import { resolveProviderType, generateColorMap } from '../../../components/Graphs/graphUtils'; import { NodeData } from '../../../components/Graphs/types'; - interface RoleBinding { role: string; subjects: { @@ -139,6 +138,7 @@ export default function McpPage() { ); } +// eslint-disable-next-line @typescript-eslint/no-explicit-any function McpPageContent({ mcp, controlPlaneName }: { mcp: any; controlPlaneName: string }) { const { t } = useTranslation(); const { projectName, workspaceName } = useParams(); @@ -443,7 +443,7 @@ function McpPageContent({ mcp, controlPlaneName }: { mcp: any; controlPlaneName: mcp?.spec?.authorization?.roleBindings?.map((binding: RoleBinding) => ({ name: (binding.subjects?.[0]?.name || 'Unknown').replace(/^openmcp:/, ''), kind: binding.subjects?.[0]?.kind || 'Unknown', - roles: binding.role || [], + roles: binding.role ? [binding.role] : [], namespace: binding.namespace || '', })) || [] } From 6aa5508700eb94e4c02cba841c31bfaf8f8a4c08 Mon Sep 17 00:00:00 2001 From: Lasserich Date: Wed, 17 Sep 2025 10:11:47 +0200 Subject: [PATCH 28/37] fix: unit tests --- src/utils/componentCardsCalculations.spec.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/utils/componentCardsCalculations.spec.ts b/src/utils/componentCardsCalculations.spec.ts index 847d166f..681355d5 100644 --- a/src/utils/componentCardsCalculations.spec.ts +++ b/src/utils/componentCardsCalculations.spec.ts @@ -168,7 +168,7 @@ describe('calculations', () => { expect(result.isHealthy).toBe(false); // < 70% }); - it('marks as healthy when progress >= 70%', () => { + it('returns progress information when progress >= 70%', () => { const items = Array.from({ length: 10 }, (_, i) => { const item = createManagedResourceItem(`Pod${i}`); if (i < 8) { @@ -183,11 +183,11 @@ describe('calculations', () => { const result = calculateGitOpsSegments(items, false, undefined, true, mockT); expect(result.segments[0].percentage).toBe(80); - expect(result.segments[0].color).toBe(HINT_COLORS.healthy); - expect(result.isHealthy).toBe(true); + expect(result.segments[0].color).toBe(HINT_COLORS.flux); + expect(result.isHealthy).toBe(false); }); - it('uses progress color when progress < 70%', () => { + it('returns progress information when progress < 70%', () => { const items = Array.from({ length: 10 }, (_, i) => { const item = createManagedResourceItem(`Pod${i}`); if (i < 5) { @@ -202,7 +202,7 @@ describe('calculations', () => { const result = calculateGitOpsSegments(items, false, undefined, true, mockT); expect(result.segments[0].percentage).toBe(50); - expect(result.segments[0].color).toBe(HINT_COLORS.progress); + expect(result.segments[0].color).toBe(HINT_COLORS.flux); expect(result.isHealthy).toBe(false); }); }); From 488cddebed90f7c53149307ead10c71825bcef9f Mon Sep 17 00:00:00 2001 From: Lasse Date: Wed, 17 Sep 2025 10:13:10 +0200 Subject: [PATCH 29/37] Update public/locales/en.json Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- public/locales/en.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/locales/en.json b/public/locales/en.json index 3d95c8a6..054764fe 100644 --- a/public/locales/en.json +++ b/public/locales/en.json @@ -409,7 +409,7 @@ }, "GitOpsHint": { "title": "Flux", - "subtitle": "Persist desired state in code repsitories", + "subtitle": "Persist desired state in code repositories", "activeStatus": "Active v", "progressAvailable": "Available", "noResources": "No Resources", From c7912ae919df5f8958a8fb0ca2d0520e654e4241 Mon Sep 17 00:00:00 2001 From: Johannes Ott Date: Wed, 17 Sep 2025 17:27:07 +0200 Subject: [PATCH 30/37] reploace login image (light & dark) --- public/co-logo-orchestrating-dark.png | Bin 0 -> 75710 bytes public/co-logo-orchestrating.png | Bin 146256 -> 76932 bytes src/views/Login.tsx | 6 +++++- 3 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 public/co-logo-orchestrating-dark.png diff --git a/public/co-logo-orchestrating-dark.png b/public/co-logo-orchestrating-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..6d4ddd0b862f55123985ac5d01c1ed3de7df1cb2 GIT binary patch literal 75710 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�Wxf|%LGMFfT4sN% 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 literal 0 HcmV?d00001 diff --git a/public/co-logo-orchestrating.png b/public/co-logo-orchestrating.png index 93addb7ec290113cd29d91ca74a766449d98613e..b98d4b26e0db93ce3216dd8d92a9b9d5bc2c978d 100644 GIT binary patch literal 76932 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 !N@N-_+ci5x* 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 literal 146256 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 d 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

!O+zMI=tXu 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 z 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 diff --git a/src/views/Login.tsx b/src/views/Login.tsx index ca935f9d..cb8f3366 100644 --- a/src/views/Login.tsx +++ b/src/views/Login.tsx @@ -29,7 +29,11 @@ export default function LoginView() { >

- Logo + + + + Logo +
{t('Login.welcomeMessage')}
{t('Login.description')} From 3fb1ca10cf60ef60e6d54dd80847f1d4b830769f Mon Sep 17 00:00:00 2001 From: Johannes Ott Date: Wed, 17 Sep 2025 17:49:27 +0200 Subject: [PATCH 31/37] adjust border radius --- .../MultiPercentageBar/MultiPercentageBar.module.css | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/components/BentoGrid/MultiPercentageBar/MultiPercentageBar.module.css b/src/components/BentoGrid/MultiPercentageBar/MultiPercentageBar.module.css index 92c70e8c..9bd42cf8 100644 --- a/src/components/BentoGrid/MultiPercentageBar/MultiPercentageBar.module.css +++ b/src/components/BentoGrid/MultiPercentageBar/MultiPercentageBar.module.css @@ -81,17 +81,25 @@ width: var(--bar-width); max-width: var(--bar-max-width); background-color: var(--background-color); - border-radius: var(--border-radius); + border-radius: 0; padding: 2px; overflow: hidden; } +.barContainer > :first-child { + border-top-left-radius: var(--border-radius); + border-bottom-left-radius: var(--border-radius); +} +.barContainer > :last-child { + border-top-right-radius: var(--border-radius); + border-bottom-right-radius: var(--border-radius); +} + /* Individual segments */ .segment { flex: var(--segment-percentage); min-width: 10px; background-color: var(--segment-color); - border-radius: var(--border-radius); height: var(--bar-height); position: relative; overflow: hidden; From a626b5c529a091d04e58b9118b13114da3bf650e Mon Sep 17 00:00:00 2001 From: Johannes Ott Date: Wed, 17 Sep 2025 17:49:40 +0200 Subject: [PATCH 32/37] adjust label --- public/locales/en.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/locales/en.json b/public/locales/en.json index 054764fe..cbc77e1d 100644 --- a/public/locales/en.json +++ b/public/locales/en.json @@ -429,7 +429,7 @@ "serviceAccounts": "Service Accounts" }, "ESOHint": { - "title": "ESO", + "title": "External Secrets", "subtitle": "Secure secrets with rotation", "activeStatus": "Active v", "progressAvailable": "Available", From 8d52c394b545c9d7b4917d2e5cdb801bb21d40d5 Mon Sep 17 00:00:00 2001 From: Johannes Ott Date: Wed, 17 Sep 2025 17:55:15 +0200 Subject: [PATCH 33/37] cleanup icon --- public/logo.png | Bin 277964 -> 21085 bytes src/components/Core/ShellBar.tsx | 4 ++-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/public/logo.png b/public/logo.png index 28d703df0237680334b23e4626cb92a2c9c5f8bc..a2c2347af7618f90adc0bd28a01fe3b9a6015e53 100644 GIT binary patch literal 21085 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 ZSVoI(%~fHPL!cmFa^ceXX9n)^{{vRz6cYdd literal 277964 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

57I%xU9g1dU&d+N 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

} From 7c0dfc53a2c34bc487599eed0d3e16ca93d67550 Mon Sep 17 00:00:00 2001 From: Johannes Ott Date: Wed, 17 Sep 2025 17:58:39 +0200 Subject: [PATCH 34/37] favicon cleanups --- index.html | 4 ++-- public/favicon.ico | Bin 0 -> 15086 bytes 2 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 public/favicon.ico diff --git a/index.html b/index.html index 9156cbe7..3bb5b224 100644 --- a/index.html +++ b/index.html @@ -3,9 +3,9 @@ - + - MCP + ManagedControlPlane UI diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..654927843c0be3c9754eaa89d80ac0fd2bc1589c GIT binary patch literal 15086 zcmeI2X>3(R6o79nic~4ZC2Cw+tt^TWP*F5OYczmca7o-SO6r0}gD58MwoyVOQK_hj z60l8-aX}P*7(hV;S(HUkW89Z0ii*mn0s_5$UwH%17ohE<4{35w@-cJg&YU^t%yQ>V ziK4tHKkCsVA}xtt>J&w%Mp0B!l6o$RqHicGBK7@EZK7x-6}nP~CedK9yg`oLk|h5o z5lAACL?DSk5`iQFNd%GzwCV`7$NB+qFQHj%nd zx!(IjU$`9HgHM7*khzb&Mp-^6E$u_Fe*wA=hgnb$zrfev+TIAkCf|uZ`tHwE-hJ{X z*Z|gby#`;kzb)(qN;$ODnhy4d{l{1ihHjugr7#Y(DcBxT%k*sx1iQn#xsnsC( zcnR)>W1tLL!iP-zQQIKK>JV_wzYW?EY%%WU9fN8(1#W;~@9*SYAI>@J=~HNL`U&)b zGT2ogGVR|RofpCj@G1Nap>OS~0M~CQ8$n+2tl%87{0-2ym8oaPM&HyGe3?i7U?_)O z@gdXxThZry2==Wb{{=h`=YZlGTn*N7-f2geW6pVf>H)a&$d4T+>3(!6Um4D=K=DzlUpE2wmt;= z=cA}Ugt$&4zkg6p+7=4Zo*gIWf_w#G?$nT1Tob|mDddj^$HcMF_Kk2Eq)RqF1pD7Z zk@~*@_5TLr;b9m9Q=u9{96OQ!7OblerrO&Vlyv*uW3BruYzFIo3`aqxG}nh<{{j>h z!JY6I*heP%Rtk#y(^yEafg}P+1d<3O5!hoR5H|>ix80OhaW52eG9)cFt&QW+sdRoS{lWCP;p=ZVt;t)} zyCIFDGb^oM6&02>q!szaq~rFj$Qw=i%n|*1&L^$e)bI2kNS~Au@kWtF>}R^G*V&(&NO)8-W@g=}RQ4VS^aFcfZU26s@` zJ3#LPkAZCDb{Z{(1G8yNo6ax?vb7=fe-JvnGc18)L3^AJ-beFA`_Db2UlRM35;zgE zwZZ-!NAG6mfpzK0K>9QuHF=_A29-j90!W&g%M8yoC@5nPx`Cz8Gl>gLPb zfPcGL0qbBTtOf6Sybt#d{u<~4+QwJDSz}@UOW-g#0F14F6EYU|{|k6OroRuuWUySD zT{q_a``7O<0nUTw*pS|T1#P|e*2nd!ynhS%670VlJP!7GKfD3;psgQ)<>SD5O&tsS z*Ox)C2A08Na4t9pIW0v`gSsC9`*Du+0Q)!or+|GLt53jook3q3TNn1f5URjFYT;-& z4!VPKHaO;gfODY^3SbI&Z|UAK0*u)#@IGB}PBdnN{V#@d;B!!)bI&nw-g}RzzIQ8`Z5~y=V~Yf#Xg^e`=A5Z{}31hHDLWRusl5yr7Md+iQ`&=SP1d<5+PZ8L1@38ZKtD?$yW?Tlfuq3YQJtVG+hR4&3+QpN` zw27a8=*G(G+5OAv=5?r@wz7E1%s5^SYpeKn?_6^ncg1fv-4fV(Ptk^lL^30A2?aNS z`)4MWdp7p0v?HnIg=e|G;CH$_jkC#D!}+iy@!LNbJRjT&!=MMKuL`b(hrsja_Qdvn zXGXzt@S8UqJkNQy^b9rxz&)w_WKz#S`t}w~1J5Vc%kX?Z0Gkq%-(~^YsUakwDE2*27db-GgHTM z2&9+aoGPy*HAbGjJe!p_lQQayZCkZ$xg+J^5^tlD=sY-+pcJ!*bms@uX;D Date: Thu, 18 Sep 2025 12:51:43 +0200 Subject: [PATCH 35/37] feat: refactor code --- public/locales/en.json | 22 +- .../BaseCard/BaseCard.module.css | 60 ++ .../ComponentCard/BaseCard/BaseCard.tsx | 83 +++ .../ComponentCard/ComponentCard.module.css | 131 ----- .../BentoGrid/ComponentCard/ComponentCard.tsx | 148 ----- .../CrossplaneCard/CrossplaneCard.module.css | 54 ++ .../CrossplaneCard/CrossplaneCard.tsx | 146 +++++ .../CrossplaneCard/crossplaneCalculations.ts | 211 +++++++ .../ComponentCard/ESOCard/ESOCard.module.css | 45 ++ .../ComponentCard/ESOCard/ESOCard.tsx | 90 +++ .../ComponentCard/ESOCard/esoCalculations.ts | 83 +++ .../FluxCard/FluxCard.module.css | 54 ++ .../ComponentCard/FluxCard/FluxCard.tsx | 135 +++++ .../FluxCard/fluxCalculations.ts | 170 ++++++ .../KyvernoCard/KyvernoCard.module.css | 45 ++ .../ComponentCard/KyvernoCard/KyvernoCard.tsx | 91 +++ .../KyvernoCard/kyvernoCalculations.ts | 83 +++ .../ComponentCard/componentConfigs.ts | 82 --- .../LegendSection/LegendSection.module.css | 71 --- .../BentoGrid/LegendSection/LegendSection.tsx | 32 -- .../MembersCard/MembersCard.module.css | 45 ++ .../BentoGrid/MembersCard/MembersCard.tsx | 90 +++ .../MembersCard/membersCalculations.ts | 97 ++++ .../MultiPercentageBar.module.css | 16 +- .../MultiPercentageBar/MultiPercentageBar.tsx | 9 +- src/components/BentoGrid/index.ts | 5 - src/spaces/mcp/pages/McpPage.tsx | 377 ++----------- src/spaces/mcp/pages/useCardData.ts | 30 + .../mcp/views/CrossplaneDetailsTable.tsx | 26 + src/spaces/mcp/views/GitOpsDetailsTable.tsx | 14 + src/spaces/mcp/views/McpBentoLayout.tsx | 210 +++++++ src/spaces/mcp/views/MembersDetailsTable.tsx | 37 ++ src/utils/componentCardCalculations.ts | 516 ------------------ src/utils/componentCardsCalculations.spec.ts | 314 ----------- 34 files changed, 1957 insertions(+), 1665 deletions(-) create mode 100644 src/components/BentoGrid/ComponentCard/BaseCard/BaseCard.module.css create mode 100644 src/components/BentoGrid/ComponentCard/BaseCard/BaseCard.tsx delete mode 100644 src/components/BentoGrid/ComponentCard/ComponentCard.module.css delete mode 100644 src/components/BentoGrid/ComponentCard/ComponentCard.tsx create mode 100644 src/components/BentoGrid/ComponentCard/CrossplaneCard/CrossplaneCard.module.css create mode 100644 src/components/BentoGrid/ComponentCard/CrossplaneCard/CrossplaneCard.tsx create mode 100644 src/components/BentoGrid/ComponentCard/CrossplaneCard/crossplaneCalculations.ts create mode 100644 src/components/BentoGrid/ComponentCard/ESOCard/ESOCard.module.css create mode 100644 src/components/BentoGrid/ComponentCard/ESOCard/ESOCard.tsx create mode 100644 src/components/BentoGrid/ComponentCard/ESOCard/esoCalculations.ts create mode 100644 src/components/BentoGrid/ComponentCard/FluxCard/FluxCard.module.css create mode 100644 src/components/BentoGrid/ComponentCard/FluxCard/FluxCard.tsx create mode 100644 src/components/BentoGrid/ComponentCard/FluxCard/fluxCalculations.ts create mode 100644 src/components/BentoGrid/ComponentCard/KyvernoCard/KyvernoCard.module.css create mode 100644 src/components/BentoGrid/ComponentCard/KyvernoCard/KyvernoCard.tsx create mode 100644 src/components/BentoGrid/ComponentCard/KyvernoCard/kyvernoCalculations.ts delete mode 100644 src/components/BentoGrid/ComponentCard/componentConfigs.ts delete mode 100644 src/components/BentoGrid/LegendSection/LegendSection.module.css delete mode 100644 src/components/BentoGrid/LegendSection/LegendSection.tsx create mode 100644 src/components/BentoGrid/MembersCard/MembersCard.module.css create mode 100644 src/components/BentoGrid/MembersCard/MembersCard.tsx create mode 100644 src/components/BentoGrid/MembersCard/membersCalculations.ts delete mode 100644 src/components/BentoGrid/index.ts create mode 100644 src/spaces/mcp/pages/useCardData.ts create mode 100644 src/spaces/mcp/views/CrossplaneDetailsTable.tsx create mode 100644 src/spaces/mcp/views/GitOpsDetailsTable.tsx create mode 100644 src/spaces/mcp/views/McpBentoLayout.tsx create mode 100644 src/spaces/mcp/views/MembersDetailsTable.tsx delete mode 100644 src/utils/componentCardCalculations.ts delete mode 100644 src/utils/componentCardsCalculations.spec.ts diff --git a/public/locales/en.json b/public/locales/en.json index 3d95c8a6..3dfd06e0 100644 --- a/public/locales/en.json +++ b/public/locales/en.json @@ -357,7 +357,12 @@ "unhealthy": "Unhealthy", "progress": "Managed", "remaining": "Remaining", - "active": "Active" + "active": "Active", + "inactive": "Inactive", + "providers": "Provider", + "health": "Health", + "serviceaccounts": "ServiceAccounts", + "loading": "Loading..." }, "errors": { "installError": "Install error", @@ -399,13 +404,7 @@ "noResources": "No Resources", "inactive": "Inactive", "activate": "Activate", - "healthy": "Healthy", - "hoverContent": { - "totalResources": "Total Resources", - "healthy": "Healthy", - "creating": "Creating", - "failing": "Failing" - } + "healthy": "Healthy" }, "GitOpsHint": { "title": "Flux", @@ -415,12 +414,7 @@ "noResources": "No Resources", "inactive": "Inactive", "activate": "Activate", - "managed": "Managed", - "hoverContent": { - "totalResources": "Total Resources", - "managed": "Managed", - "unmanaged": "Unmanaged" - } + "managed": "Persisted" }, "MembersHint": { "title": "Members", diff --git a/src/components/BentoGrid/ComponentCard/BaseCard/BaseCard.module.css b/src/components/BentoGrid/ComponentCard/BaseCard/BaseCard.module.css new file mode 100644 index 00000000..d1475648 --- /dev/null +++ b/src/components/BentoGrid/ComponentCard/BaseCard/BaseCard.module.css @@ -0,0 +1,60 @@ +.container { + position: relative; + width: 100%; + height: 100%; + display: flex; + flex-direction: column; +} + +.card { + height: 100%; + display: flex; + flex-direction: column; +} + +.disabled { + opacity: 0.6; + user-select: none; + pointer-events: none; +} + +.clickable { + cursor: pointer; +} + +.disabledOverlay { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + background: rgba(0, 0, 0, 0.1); + z-index: 1; + pointer-events: none; +} + +.avatar { + width: 50px; + height: 50px; + border-radius: 50%; + background: transparent; + object-fit: cover; +} + +.expandButton { + position: absolute; + bottom: 8px; + right: 8px; + min-width: 32px; + height: 32px; + z-index: 10; +} + +.expandButtonSmall { + position: absolute; + bottom: 8px; + right: 8px; + min-width: 24px; + height: 24px; + z-index: 10; +} \ No newline at end of file diff --git a/src/components/BentoGrid/ComponentCard/BaseCard/BaseCard.tsx b/src/components/BentoGrid/ComponentCard/BaseCard/BaseCard.tsx new file mode 100644 index 00000000..d4a5a340 --- /dev/null +++ b/src/components/BentoGrid/ComponentCard/BaseCard/BaseCard.tsx @@ -0,0 +1,83 @@ +import { Card, CardHeader, Button } from '@ui5/webcomponents-react'; +import { useTranslation } from 'react-i18next'; +import cx from 'clsx'; +import { ReactNode } from 'react'; +import styles from './BaseCard.module.css'; + +interface BaseCardProps { + title: string; + subtitle?: string; + iconSrc: string; + iconAlt: string; + iconStyle?: React.CSSProperties; + version?: string; + enabled: boolean; + onClick?: () => void; + expanded?: boolean; + size?: 'small' | 'medium' | 'large' | 'extra-large'; + children: ReactNode; +} + +export const BaseCard = ({ + title, + subtitle, + iconSrc, + iconAlt, + iconStyle, + version, + enabled, + onClick, + expanded = false, + size = 'medium', + children, +}: BaseCardProps) => { + const { t } = useTranslation(); + + return ( +
+ + } + titleText={title} + subtitleText={size === 'small' ? undefined : subtitle} + interactive={enabled} + /> + } + className={cx(styles.card, { + [styles.disabled]: !enabled, + [styles.clickable]: !!onClick && enabled, + })} + onClick={enabled ? onClick : undefined} + > + {!enabled &&
} + + {onClick && enabled && ( +
+ ); +}; \ No newline at end of file diff --git a/src/components/BentoGrid/ComponentCard/ComponentCard.module.css b/src/components/BentoGrid/ComponentCard/ComponentCard.module.css deleted file mode 100644 index dd729aa9..00000000 --- a/src/components/BentoGrid/ComponentCard/ComponentCard.module.css +++ /dev/null @@ -1,131 +0,0 @@ -.container { - position: relative; - width: 100%; - height: 100%; - display: flex; - flex-direction: column; -} - -.card { - height: 100%; - display: flex; - flex-direction: column; -} - -.disabled { - opacity: 0.6; - user-select: none; - pointer-events: none; -} - -.clickable { - cursor: pointer; -} - -.disabledOverlay { - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - background: rgba(0, 0, 0, 0.1); - z-index: 1; - pointer-events: none; -} - -.avatar { - width: 50px; - height: 50px; - border-radius: 50%; - background: transparent; - object-fit: cover; -} - -.contentContainer { - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - padding: 0.5rem 0; - flex: 1; -} - -.contentContainerMultiple { - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - padding: 0.25rem 0; - flex: 1; -} - -.progressBarContainer { - display: flex; - gap: 8px; - width: 100%; - max-width: 500px; - padding: 0 0.5rem; -} - -.progressBarContainerSmall { - display: flex; - gap: 8px; - width: 100%; - max-width: 400px; - padding: 0 0.5rem; -} - -.progressBarContainerMedium { - display: flex; - gap: 8px; - width: 100%; - max-width: 600px; - padding: 0 0.75rem; -} - -.progressBarContainerLarge { - display: flex; - flex-direction: column; - gap: 6px; - width: 100%; - max-width: none; - padding: 0 1rem; -} - -.progressBar { - width: 100%; -} - -.activateButton { - position: absolute; - top: 16px; - right: 16px; - z-index: 2; - pointer-events: auto; -} - -.activateButtonClickable { - cursor: pointer; -} - -.activateButtonDefault { - cursor: default; -} - -.expandButton { - position: absolute; - bottom: 8px; - right: 8px; - min-width: 32px; - height: 32px; - z-index: 10; -} - -.expandButtonSmall { - position: absolute; - bottom: 8px; - right: 8px; - min-width: 24px; - height: 24px; - z-index: 10; -} diff --git a/src/components/BentoGrid/ComponentCard/ComponentCard.tsx b/src/components/BentoGrid/ComponentCard/ComponentCard.tsx deleted file mode 100644 index 7a93bcbb..00000000 --- a/src/components/BentoGrid/ComponentCard/ComponentCard.tsx +++ /dev/null @@ -1,148 +0,0 @@ -import React from 'react'; -import { Card, CardHeader, Button } from '@ui5/webcomponents-react'; -import { useTranslation } from 'react-i18next'; -import cx from 'clsx'; -import { MultiPercentageBar } from '../MultiPercentageBar/MultiPercentageBar'; -import styles from './ComponentCard.module.css'; -import { GenericHintProps } from '../../../types/types'; - -export const ComponentCard: React.FC< - GenericHintProps & { - onClick?: () => void; - size?: 'small' | 'medium' | 'large' | 'extra-large'; - secondarySegments?: { percentage: number; color: string; label: string }[]; - secondaryLabel?: string; - expanded?: boolean; - } -> = ({ - enabled = false, - version, - allItems = [], - isLoading, - error, - config, - onClick, - size = 'medium', - secondarySegments, - secondaryLabel = 'Secondary Metric', - expanded = false, -}) => { - const { t } = useTranslation(); - const hintState = config.calculateSegments(allItems, isLoading || false, error, enabled, t); - - return ( -
- - } - titleText={config.title} - subtitleText={size === 'small' ? undefined : config.subtitle} - interactive={enabled} - /> - } - className={cx(styles.card, { - [styles.disabled]: !enabled, - [styles.clickable]: !!onClick && enabled, - })} - onClick={enabled ? onClick : undefined} - > - {!enabled &&
} - - {/* Expand/Collapse button */} - {onClick && enabled && ( -
- ); -}; diff --git a/src/components/BentoGrid/ComponentCard/CrossplaneCard/CrossplaneCard.module.css b/src/components/BentoGrid/ComponentCard/CrossplaneCard/CrossplaneCard.module.css new file mode 100644 index 00000000..96e9c923 --- /dev/null +++ b/src/components/BentoGrid/ComponentCard/CrossplaneCard/CrossplaneCard.module.css @@ -0,0 +1,54 @@ +.contentContainer { + display: flex; + flex-direction: column; + align-items: center; + justify-content: flex-start; + padding: 0.125rem 0; + flex: 1; +} + +.contentContainerMultiple { + display: flex; + flex-direction: column; + align-items: center; + justify-content: flex-start; + padding: 0.125rem 0; + flex: 1; +} + +.progressBarContainer { + display: flex; + gap: 8px; + width: 100%; + max-width: 500px; + padding: 0 0.5rem; +} + +.progressBarContainerSmall { + display: flex; + gap: 6px; + width: 100%; + max-width: 400px; + padding: 0 0.5rem; +} + +.progressBarContainerMedium { + display: flex; + gap: 6px; + width: 100%; + max-width: 600px; + padding: 0 0.75rem; +} + +.progressBarContainerLarge { + display: flex; + flex-direction: column; + gap: 4px; + width: 100%; + max-width: none; + padding: 0 1rem; +} + +.progressBar { + width: 100%; +} \ No newline at end of file diff --git a/src/components/BentoGrid/ComponentCard/CrossplaneCard/CrossplaneCard.tsx b/src/components/BentoGrid/ComponentCard/CrossplaneCard/CrossplaneCard.tsx new file mode 100644 index 00000000..7cdedd50 --- /dev/null +++ b/src/components/BentoGrid/ComponentCard/CrossplaneCard/CrossplaneCard.tsx @@ -0,0 +1,146 @@ +import { useMemo } from 'react'; +import { useTranslation } from 'react-i18next'; +import { BaseCard } from '../BaseCard/BaseCard'; +import { MultiPercentageBar } from '../../MultiPercentageBar/MultiPercentageBar'; +import { ManagedResourceItem } from '../../../../lib/shared/types'; +import { APIError } from '../../../../lib/api/error'; +import { calculateCrossplaneSegments, calculateProviderDistribution } from './crossplaneCalculations'; +import { useProvidersConfigResource } from '../../../../lib/api/useApiResource'; +import styles from './CrossplaneCard.module.css'; + +interface CrossplaneCardProps { + allItems: ManagedResourceItem[]; + enabled: boolean; + version?: string; + isLoading?: boolean; + error?: APIError; + onClick?: () => void; + expanded?: boolean; + size?: 'small' | 'medium' | 'large' | 'extra-large'; +} + +export const CrossplaneCard = ({ + allItems = [], + enabled, + version, + isLoading = false, + error, + onClick, + expanded = false, + size = 'medium', +}: CrossplaneCardProps) => { + const { t } = useTranslation(); + + // Fetch provider configs for distribution calculation + const { data: providerConfigsList } = useProvidersConfigResource({ + refreshInterval: 60000, + }); + + const crossplaneState = useMemo( + () => calculateCrossplaneSegments(allItems, isLoading, error, enabled, t), + [allItems, isLoading, error, enabled, t] + ); + + // Calculate provider distribution for secondary bar + const providerDistribution = useMemo( + () => calculateProviderDistribution(allItems, providerConfigsList || []), + [allItems, providerConfigsList], + ); + + const secondarySegments = providerDistribution.segments; + const secondaryLabel = `${t('common.providers')} ${providerDistribution.totalProviders}`; + + return ( + +
+ {/* Primary chart container */} +
+ +
+ + {/* Secondary chart container - rendered below the primary chart */} + {(size === 'medium' || size === 'large' || size === 'extra-large') && secondarySegments && ( +
+ +
+ )} +
+
+ ); +}; \ No newline at end of file diff --git a/src/components/BentoGrid/ComponentCard/CrossplaneCard/crossplaneCalculations.ts b/src/components/BentoGrid/ComponentCard/CrossplaneCard/crossplaneCalculations.ts new file mode 100644 index 00000000..b1878a87 --- /dev/null +++ b/src/components/BentoGrid/ComponentCard/CrossplaneCard/crossplaneCalculations.ts @@ -0,0 +1,211 @@ +import { ManagedResourceItem, Condition, ProviderConfigs } from '../../../../lib/shared/types'; +import { APIError } from '../../../../lib/api/error'; +import { resolveProviderType, generateColorMap } from '../../../Graphs/graphUtils'; +import { NodeData } from '../../../Graphs/types'; + +export const HINT_COLORS = { + healthy: '#28a745', + creating: '#0874f4', + unhealthy: '#d22020ff', + inactive: '#e9e9e9ff', +} as const; + +export interface CrossplaneSegment { + percentage: number; + color: string; + label: string; + count?: number; +} + +export interface CrossplaneState { + segments: CrossplaneSegment[]; + label: string; + showPercentage: boolean; + isHealthy: boolean; + showOnlyNonZero?: boolean; +} + +export const calculateCrossplaneSegments = ( + allItems: ManagedResourceItem[], + isLoading: boolean, + error: APIError | undefined, + enabled: boolean, + t: (key: string) => string, +): CrossplaneState => { + if (isLoading) { + return { + segments: [{ percentage: 100, color: HINT_COLORS.inactive, label: t('Hints.common.loading') }], + label: t('Hints.common.loading'), + showPercentage: false, + isHealthy: false, + showOnlyNonZero: true, + }; + } + + if (error) { + return { + segments: [{ percentage: 100, color: HINT_COLORS.unhealthy, label: t('Hints.common.errorLoadingResources') }], + label: t('Hints.common.errorLoadingResources'), + showPercentage: false, + isHealthy: false, + showOnlyNonZero: true, + }; + } + + if (!enabled) { + return { + segments: [{ percentage: 100, color: HINT_COLORS.inactive, label: t('Hints.CrossplaneHint.inactive') }], + label: t('Hints.CrossplaneHint.inactive'), + showPercentage: false, + isHealthy: false, + showOnlyNonZero: true, + }; + } + + const totalCount = allItems.length; + + if (totalCount === 0) { + return { + segments: [{ percentage: 100, color: HINT_COLORS.inactive, label: t('Hints.CrossplaneHint.noResources') }], + label: t('Hints.CrossplaneHint.noResources'), + showPercentage: false, + isHealthy: false, + showOnlyNonZero: true, + }; + } + + const healthyCount = allItems.filter((item: ManagedResourceItem) => { + const conditions = item.status?.conditions || []; + const ready = conditions.find((c: Condition) => c.type === 'Ready' && c.status === 'True'); + const synced = conditions.find((c: Condition) => c.type === 'Synced' && c.status === 'True'); + return !!ready && !!synced; + }).length; + + const creatingCount = allItems.filter((item: ManagedResourceItem) => { + const conditions = item.status?.conditions || []; + const ready = conditions.find((c: Condition) => c.type === 'Ready' && c.status === 'True'); + const synced = conditions.find((c: Condition) => c.type === 'Synced' && c.status === 'True'); + return !!synced && !ready; + }).length; + + const unhealthyCount = totalCount - healthyCount - creatingCount; + const healthyPercentage = Math.round((healthyCount / totalCount) * 100); + const creatingPercentage = Math.round((creatingCount / totalCount) * 100); + const unhealthyPercentage = Math.round((unhealthyCount / totalCount) * 100); + + return { + segments: [ + { percentage: healthyPercentage, color: HINT_COLORS.healthy, label: t('common.healthy'), count: healthyCount }, + { percentage: creatingPercentage, color: HINT_COLORS.creating, label: t('common.creating'), count: creatingCount }, + { percentage: unhealthyPercentage, color: HINT_COLORS.unhealthy, label: t('common.unhealthy'), count: unhealthyCount }, + ], + label: t('Hints.CrossplaneHint.healthy'), + showPercentage: true, + isHealthy: healthyPercentage === 100 && totalCount > 0, + showOnlyNonZero: true, + }; +}; + +export const calculateCrossplaneHealthSegments = ( + allItems: ManagedResourceItem[], + t: (key: string) => string, + enabled: boolean, + isLoading: boolean = false, +) => { + if (isLoading) { + return { + segments: [{ percentage: 100, color: HINT_COLORS.inactive, label: t('common.loading') || 'Loading...' }], + healthyPercentage: 0, + isLoading: true, + }; + } + + if (!enabled) { + return { + segments: [{ percentage: 100, color: HINT_COLORS.inactive, label: t('common.inactive') }], + healthyPercentage: 0, + isInactive: true, + }; + } + + if (!allItems || allItems.length === 0) { + return { + segments: [{ percentage: 100, color: HINT_COLORS.inactive, label: t('common.inactive') }], + healthyPercentage: 0, + isInactive: true, + }; + } + + // Count health states for all Crossplane managed resources + const healthyCounts = allItems.filter( + (item) => item?.status?.conditions?.some( + (condition: any) => condition.type === 'Ready' && condition.status === 'True' + ) + ).length; + + const total = allItems.length; + const healthyPercentage = Math.round((healthyCounts / total) * 100); + const remainingPercentage = 100 - healthyPercentage; + + const segments = [ + { + percentage: healthyPercentage, + color: '#38d4bc', + label: t('common.healthy'), + count: healthyCounts + }, + remainingPercentage > 0 && { + percentage: remainingPercentage, + color: HINT_COLORS.inactive, + label: t('common.remaining'), + count: total - healthyCounts + }, + ].filter(Boolean) as { percentage: number; color: string; label: string; count: number }[]; + + return { + segments, + healthyPercentage, + isInactive: false, + }; +}; + +// Utility function to calculate provider distribution with graph colors +export const calculateProviderDistribution = (items: ManagedResourceItem[], providerConfigs: ProviderConfigs[]) => { + if (!items || items.length === 0) return { segments: [], totalProviders: 0 }; + + // Count resources by provider type (same method as graph) + const providerCounts: Record = {}; + + items.forEach((item) => { + const providerConfigName = item?.spec?.providerConfigRef?.name ?? 'unknown'; + const providerType = resolveProviderType(providerConfigName, providerConfigs); + providerCounts[providerType] = (providerCounts[providerType] || 0) + 1; + }); + + // Create NodeData-like objects for color generation (reuse graph's color logic) + const nodeDataForColors = Object.keys(providerCounts).map((providerType) => ({ + providerType, + providerConfigName: '', // Not needed for color generation + fluxName: undefined, + })); + + // Generate colors using the same logic as the graph + const colorMap = generateColorMap(nodeDataForColors as NodeData[], 'source'); + + // Convert to segments with percentages and counts + const total = items.length; + const segments = Object.entries(providerCounts) + .map(([provider, count]) => ({ + percentage: Math.round((count / total) * 100), + color: colorMap[provider] || '#BFBFBF', // fallback color + label: provider.replace('provider-', '').toUpperCase(), + count: count, + })) + .filter((segment) => segment.percentage > 0) + .sort((a, b) => b.percentage - a.percentage); + + return { + segments, + totalProviders: segments.length, + }; +}; \ No newline at end of file diff --git a/src/components/BentoGrid/ComponentCard/ESOCard/ESOCard.module.css b/src/components/BentoGrid/ComponentCard/ESOCard/ESOCard.module.css new file mode 100644 index 00000000..cdd62e68 --- /dev/null +++ b/src/components/BentoGrid/ComponentCard/ESOCard/ESOCard.module.css @@ -0,0 +1,45 @@ +.contentContainer { + display: flex; + flex-direction: column; + align-items: center; + justify-content: flex-start; + padding: 0.125rem 0; + flex: 1; +} + +.progressBarContainer { + display: flex; + gap: 8px; + width: 100%; + max-width: 500px; + padding: 0 0.5rem; +} + +.progressBarContainerSmall { + display: flex; + gap: 6px; + width: 100%; + max-width: 400px; + padding: 0 0.5rem; +} + +.progressBarContainerMedium { + display: flex; + gap: 6px; + width: 100%; + max-width: 600px; + padding: 0 0.75rem; +} + +.progressBarContainerLarge { + display: flex; + flex-direction: column; + gap: 4px; + width: 100%; + max-width: none; + padding: 0 1rem; +} + +.progressBar { + width: 100%; +} \ No newline at end of file diff --git a/src/components/BentoGrid/ComponentCard/ESOCard/ESOCard.tsx b/src/components/BentoGrid/ComponentCard/ESOCard/ESOCard.tsx new file mode 100644 index 00000000..4642bc22 --- /dev/null +++ b/src/components/BentoGrid/ComponentCard/ESOCard/ESOCard.tsx @@ -0,0 +1,90 @@ +import { useMemo } from 'react'; +import { useTranslation } from 'react-i18next'; +import { BaseCard } from '../BaseCard/BaseCard'; +import { MultiPercentageBar } from '../../MultiPercentageBar/MultiPercentageBar'; +import { ManagedResourceItem } from '../../../../lib/shared/types'; +import { APIError } from '../../../../lib/api/error'; +import { calculateESOSegments } from './esoCalculations'; +import styles from './ESOCard.module.css'; + +interface ESOCardProps { + allItems: ManagedResourceItem[]; + enabled: boolean; + version?: string; + isLoading?: boolean; + error?: APIError; + onClick?: () => void; + expanded?: boolean; + size?: 'small' | 'medium' | 'large' | 'extra-large'; +} + +export const ESOCard = ({ + allItems = [], + enabled, + version, + isLoading = false, + error, + onClick, + expanded = false, + size = 'medium', +}: ESOCardProps) => { + const { t } = useTranslation(); + + const esoState = useMemo( + () => calculateESOSegments(allItems, isLoading, error, enabled, t), + [allItems, isLoading, error, enabled, t] + ); + + return ( + +
+
+ +
+
+
+ ); +}; \ No newline at end of file diff --git a/src/components/BentoGrid/ComponentCard/ESOCard/esoCalculations.ts b/src/components/BentoGrid/ComponentCard/ESOCard/esoCalculations.ts new file mode 100644 index 00000000..81580bbb --- /dev/null +++ b/src/components/BentoGrid/ComponentCard/ESOCard/esoCalculations.ts @@ -0,0 +1,83 @@ +import { ManagedResourceItem } from '../../../../lib/shared/types'; +import { APIError } from '../../../../lib/api/error'; + +export const HINT_COLORS = { + healthy: '#28a745', + unhealthy: '#d22020ff', + inactive: '#e9e9e9ff', +} as const; + +export interface ESOSegment { + percentage: number; + color: string; + label: string; + count?: number; +} + +export interface ESOState { + segments: ESOSegment[]; + label: string; + showPercentage: boolean; + isHealthy: boolean; + showOnlyNonZero?: boolean; +} + +export const calculateESOSegments = ( + allItems: ManagedResourceItem[], + isLoading: boolean, + error: APIError | undefined, + enabled: boolean, + t: (key: string) => string, +): ESOState => { + if (isLoading) { + return { + segments: [{ percentage: 100, color: HINT_COLORS.inactive, label: t('Hints.common.loading') }], + label: t('Hints.common.loading'), + showPercentage: false, + isHealthy: false, + showOnlyNonZero: true, + }; + } + + if (error) { + return { + segments: [{ percentage: 100, color: HINT_COLORS.unhealthy, label: t('Hints.common.errorLoadingResources') }], + label: t('Hints.common.errorLoadingResources'), + showPercentage: false, + isHealthy: false, + showOnlyNonZero: true, + }; + } + + if (!enabled) { + return { + segments: [{ percentage: 100, color: HINT_COLORS.inactive, label: t('Hints.ESOHint.inactive') }], + label: t('Hints.ESOHint.inactive'), + showPercentage: false, + isHealthy: false, + showOnlyNonZero: true, + }; + } + + const totalCount = allItems.length; + + if (totalCount === 0) { + return { + segments: [{ percentage: 100, color: HINT_COLORS.inactive, label: t('Hints.ESOHint.noResources') }], + label: t('Hints.ESOHint.noResources'), + showPercentage: false, + isHealthy: false, + showOnlyNonZero: true, + }; + } + + // TODO: Implement ESO-specific logic + // For now, return a placeholder + return { + segments: [{ percentage: 100, color: HINT_COLORS.inactive, label: t('common.notImplemented') }], + label: t('Hints.ESOHint.title'), + showPercentage: false, + isHealthy: false, + showOnlyNonZero: true, + }; +}; \ No newline at end of file diff --git a/src/components/BentoGrid/ComponentCard/FluxCard/FluxCard.module.css b/src/components/BentoGrid/ComponentCard/FluxCard/FluxCard.module.css new file mode 100644 index 00000000..96e9c923 --- /dev/null +++ b/src/components/BentoGrid/ComponentCard/FluxCard/FluxCard.module.css @@ -0,0 +1,54 @@ +.contentContainer { + display: flex; + flex-direction: column; + align-items: center; + justify-content: flex-start; + padding: 0.125rem 0; + flex: 1; +} + +.contentContainerMultiple { + display: flex; + flex-direction: column; + align-items: center; + justify-content: flex-start; + padding: 0.125rem 0; + flex: 1; +} + +.progressBarContainer { + display: flex; + gap: 8px; + width: 100%; + max-width: 500px; + padding: 0 0.5rem; +} + +.progressBarContainerSmall { + display: flex; + gap: 6px; + width: 100%; + max-width: 400px; + padding: 0 0.5rem; +} + +.progressBarContainerMedium { + display: flex; + gap: 6px; + width: 100%; + max-width: 600px; + padding: 0 0.75rem; +} + +.progressBarContainerLarge { + display: flex; + flex-direction: column; + gap: 4px; + width: 100%; + max-width: none; + padding: 0 1rem; +} + +.progressBar { + width: 100%; +} \ No newline at end of file diff --git a/src/components/BentoGrid/ComponentCard/FluxCard/FluxCard.tsx b/src/components/BentoGrid/ComponentCard/FluxCard/FluxCard.tsx new file mode 100644 index 00000000..e2e0b8a8 --- /dev/null +++ b/src/components/BentoGrid/ComponentCard/FluxCard/FluxCard.tsx @@ -0,0 +1,135 @@ +import { useMemo } from 'react'; +import { useTranslation } from 'react-i18next'; +import { BaseCard } from '../BaseCard/BaseCard'; +import { MultiPercentageBar } from '../../MultiPercentageBar/MultiPercentageBar'; +import { ManagedResourceItem } from '../../../../lib/shared/types'; +import { APIError } from '../../../../lib/api/error'; +import { calculateGitOpsSegments } from './fluxCalculations'; +import styles from './FluxCard.module.css'; + +interface FluxCardProps { + allItems: ManagedResourceItem[]; + enabled: boolean; + version?: string; + isLoading?: boolean; + error?: APIError; + onClick?: () => void; + expanded?: boolean; + size?: 'small' | 'medium' | 'large' | 'extra-large'; + secondarySegments?: { percentage: number; color: string; label: string }[]; + secondaryLabel?: string; +} + +export const FluxCard = ({ + allItems = [], + enabled, + version, + isLoading = false, + error, + onClick, + expanded = false, + size = 'medium', + secondarySegments, + secondaryLabel = 'Secondary Metric', +}: FluxCardProps) => { + const { t } = useTranslation(); + + const fluxState = useMemo( + () => calculateGitOpsSegments(allItems, isLoading, error, enabled, t), + [allItems, isLoading, error, enabled, t] + ); + + return ( + +
+ {/* Primary chart container */} +
+ +
+ + {/* Secondary chart container - rendered below the primary chart */} + {(size === 'medium' || size === 'large' || size === 'extra-large') && secondarySegments && ( +
+ +
+ )} +
+
+ ); +}; \ No newline at end of file diff --git a/src/components/BentoGrid/ComponentCard/FluxCard/fluxCalculations.ts b/src/components/BentoGrid/ComponentCard/FluxCard/fluxCalculations.ts new file mode 100644 index 00000000..123d3004 --- /dev/null +++ b/src/components/BentoGrid/ComponentCard/FluxCard/fluxCalculations.ts @@ -0,0 +1,170 @@ +import { ManagedResourceItem } from '../../../../lib/shared/types'; +import { APIError } from '../../../../lib/api/error'; + +export const HINT_COLORS = { + flux: '#386ce4', + inactive: '#e9e9e9ff', +} as const; + +export interface FluxSegment { + percentage: number; + color: string; + label: string; + count?: number; +} + +export interface FluxState { + segments: FluxSegment[]; + label: string; + showPercentage: boolean; + isHealthy: boolean; + showOnlyNonZero?: boolean; +} + +export const calculateGitOpsSegments = ( + allItems: ManagedResourceItem[], + isLoading: boolean, + error: APIError | undefined, + enabled: boolean, + t: (key: string) => string, +): FluxState => { + if (isLoading) { + return { + segments: [{ percentage: 100, color: HINT_COLORS.inactive, label: t('Hints.common.loading') }], + label: t('Hints.common.loading'), + showPercentage: false, + isHealthy: false, + showOnlyNonZero: true, + }; + } + + if (error) { + return { + segments: [{ percentage: 100, color: '#d22020ff', label: t('Hints.common.errorLoadingResources') }], + label: t('Hints.common.errorLoadingResources'), + showPercentage: false, + isHealthy: false, + showOnlyNonZero: true, + }; + } + + if (!enabled) { + return { + segments: [{ percentage: 100, color: HINT_COLORS.inactive, label: t('Hints.GitOpsHint.inactive') }], + label: t('Hints.GitOpsHint.inactive'), + showPercentage: false, + isHealthy: false, + showOnlyNonZero: true, + }; + } + + const totalCount = allItems.length; + + if (totalCount === 0) { + return { + segments: [{ percentage: 100, color: HINT_COLORS.inactive, label: t('Hints.GitOpsHint.noResources') }], + label: t('Hints.GitOpsHint.noResources'), + showPercentage: false, + isHealthy: false, + showOnlyNonZero: true, + }; + } + + const fluxLabelCount = allItems.filter( + (item: ManagedResourceItem) => + item?.metadata?.labels && + Object.prototype.hasOwnProperty.call(item.metadata.labels, 'kustomize.toolkit.fluxcd.io/name'), + ).length; + + const progressValue = totalCount > 0 ? Math.round((fluxLabelCount / totalCount) * 100) : 0; + const restPercentage = 100 - progressValue; + + return { + segments: [ + { percentage: progressValue, color: HINT_COLORS.flux, label: t('common.progress'), count: fluxLabelCount }, + { percentage: restPercentage, color: HINT_COLORS.inactive, label: t('common.remaining'), count: totalCount - fluxLabelCount }, + ], + label: t('Hints.GitOpsHint.managed'), + showPercentage: true, + isHealthy: false, // Don't apply green styling to GitOps labels + showOnlyNonZero: true, + }; +}; + +export const calculateFluxHealthSegments = ( + allItems: ManagedResourceItem[], + t: (key: string) => string, + enabled: boolean, + isLoading: boolean = false, +) => { + if (isLoading) { + return { + segments: [{ percentage: 100, color: HINT_COLORS.inactive, label: t('common.loading') || 'Loading...' }], + healthyPercentage: 0, + isLoading: true, + }; + } + + if (!enabled) { + return { + segments: [{ percentage: 100, color: HINT_COLORS.inactive, label: t('common.inactive') }], + healthyPercentage: 0, + isInactive: true, + }; + } + + if (!allItems || allItems.length === 0) { + return { + segments: [{ percentage: 100, color: HINT_COLORS.inactive, label: t('common.inactive') }], + healthyPercentage: 0, + isInactive: true, + }; + } + + // Filter for Flux-managed items + const fluxManagedItems = allItems.filter( + (item: ManagedResourceItem) => + item?.metadata?.labels && + Object.prototype.hasOwnProperty.call(item.metadata.labels, 'kustomize.toolkit.fluxcd.io/name'), + ); + + if (fluxManagedItems.length === 0) { + return { + segments: [{ percentage: 100, color: HINT_COLORS.inactive, label: t('common.inactive') }], + healthyPercentage: 0, + isInactive: true, + }; + } + + // Count health states + const healthyCounts = fluxManagedItems.filter( + (item) => item?.status?.conditions?.some( + (condition: any) => condition.type === 'Ready' && condition.status === 'True' + ) + ).length; + + const total = fluxManagedItems.length; + const healthyPercentage = Math.round((healthyCounts / total) * 100); + const remainingPercentage = 100 - healthyPercentage; + + const segments = [ + { + percentage: healthyPercentage, + color: HINT_COLORS.flux, + label: t('common.healthy'), + count: healthyCounts + }, + remainingPercentage > 0 && { + percentage: remainingPercentage, + color: HINT_COLORS.inactive, + label: t('common.remaining'), + count: total - healthyCounts + }, + ].filter(Boolean) as { percentage: number; color: string; label: string; count: number }[]; + + return { + segments, + healthyPercentage, + isInactive: false, + }; +}; \ No newline at end of file diff --git a/src/components/BentoGrid/ComponentCard/KyvernoCard/KyvernoCard.module.css b/src/components/BentoGrid/ComponentCard/KyvernoCard/KyvernoCard.module.css new file mode 100644 index 00000000..cdd62e68 --- /dev/null +++ b/src/components/BentoGrid/ComponentCard/KyvernoCard/KyvernoCard.module.css @@ -0,0 +1,45 @@ +.contentContainer { + display: flex; + flex-direction: column; + align-items: center; + justify-content: flex-start; + padding: 0.125rem 0; + flex: 1; +} + +.progressBarContainer { + display: flex; + gap: 8px; + width: 100%; + max-width: 500px; + padding: 0 0.5rem; +} + +.progressBarContainerSmall { + display: flex; + gap: 6px; + width: 100%; + max-width: 400px; + padding: 0 0.5rem; +} + +.progressBarContainerMedium { + display: flex; + gap: 6px; + width: 100%; + max-width: 600px; + padding: 0 0.75rem; +} + +.progressBarContainerLarge { + display: flex; + flex-direction: column; + gap: 4px; + width: 100%; + max-width: none; + padding: 0 1rem; +} + +.progressBar { + width: 100%; +} \ No newline at end of file diff --git a/src/components/BentoGrid/ComponentCard/KyvernoCard/KyvernoCard.tsx b/src/components/BentoGrid/ComponentCard/KyvernoCard/KyvernoCard.tsx new file mode 100644 index 00000000..5fe5cc12 --- /dev/null +++ b/src/components/BentoGrid/ComponentCard/KyvernoCard/KyvernoCard.tsx @@ -0,0 +1,91 @@ +import { useMemo } from 'react'; +import { useTranslation } from 'react-i18next'; +import { BaseCard } from '../BaseCard/BaseCard'; +import { MultiPercentageBar } from '../../MultiPercentageBar/MultiPercentageBar'; +import { ManagedResourceItem } from '../../../../lib/shared/types'; +import { APIError } from '../../../../lib/api/error'; +import { calculateKyvernoSegments } from './kyvernoCalculations'; +import styles from './KyvernoCard.module.css'; + +interface KyvernoCardProps { + allItems: ManagedResourceItem[]; + enabled: boolean; + version?: string; + isLoading?: boolean; + error?: APIError; + onClick?: () => void; + expanded?: boolean; + size?: 'small' | 'medium' | 'large' | 'extra-large'; +} + +export const KyvernoCard = ({ + allItems = [], + enabled, + version, + isLoading = false, + error, + onClick, + expanded = false, + size = 'medium', +}: KyvernoCardProps) => { + const { t } = useTranslation(); + + const kyvernoState = useMemo( + () => calculateKyvernoSegments(allItems, isLoading, error, enabled, t), + [allItems, isLoading, error, enabled, t] + ); + + return ( + +
+
+ +
+
+
+ ); +}; \ No newline at end of file diff --git a/src/components/BentoGrid/ComponentCard/KyvernoCard/kyvernoCalculations.ts b/src/components/BentoGrid/ComponentCard/KyvernoCard/kyvernoCalculations.ts new file mode 100644 index 00000000..f304b123 --- /dev/null +++ b/src/components/BentoGrid/ComponentCard/KyvernoCard/kyvernoCalculations.ts @@ -0,0 +1,83 @@ +import { ManagedResourceItem } from '../../../../lib/shared/types'; +import { APIError } from '../../../../lib/api/error'; + +export const HINT_COLORS = { + healthy: '#28a745', + unhealthy: '#d22020ff', + inactive: '#e9e9e9ff', +} as const; + +export interface KyvernoSegment { + percentage: number; + color: string; + label: string; + count?: number; +} + +export interface KyvernoState { + segments: KyvernoSegment[]; + label: string; + showPercentage: boolean; + isHealthy: boolean; + showOnlyNonZero?: boolean; +} + +export const calculateKyvernoSegments = ( + allItems: ManagedResourceItem[], + isLoading: boolean, + error: APIError | undefined, + enabled: boolean, + t: (key: string) => string, +): KyvernoState => { + if (isLoading) { + return { + segments: [{ percentage: 100, color: HINT_COLORS.inactive, label: t('Hints.common.loading') }], + label: t('Hints.common.loading'), + showPercentage: false, + isHealthy: false, + showOnlyNonZero: true, + }; + } + + if (error) { + return { + segments: [{ percentage: 100, color: HINT_COLORS.unhealthy, label: t('Hints.common.errorLoadingResources') }], + label: t('Hints.common.errorLoadingResources'), + showPercentage: false, + isHealthy: false, + showOnlyNonZero: true, + }; + } + + if (!enabled) { + return { + segments: [{ percentage: 100, color: HINT_COLORS.inactive, label: t('Hints.KyvernoHint.inactive') }], + label: t('Hints.KyvernoHint.inactive'), + showPercentage: false, + isHealthy: false, + showOnlyNonZero: true, + }; + } + + const totalCount = allItems.length; + + if (totalCount === 0) { + return { + segments: [{ percentage: 100, color: HINT_COLORS.inactive, label: t('Hints.KyvernoHint.noResources') }], + label: t('Hints.KyvernoHint.noResources'), + showPercentage: false, + isHealthy: false, + showOnlyNonZero: true, + }; + } + + // TODO: Implement Kyverno-specific logic + // For now, return a placeholder + return { + segments: [{ percentage: 100, color: HINT_COLORS.inactive, label: t('common.notImplemented') }], + label: t('Hints.KyvernoHint.title'), + showPercentage: false, + isHealthy: false, + showOnlyNonZero: true, + }; +}; \ No newline at end of file diff --git a/src/components/BentoGrid/ComponentCard/componentConfigs.ts b/src/components/BentoGrid/ComponentCard/componentConfigs.ts deleted file mode 100644 index 6562c809..00000000 --- a/src/components/BentoGrid/ComponentCard/componentConfigs.ts +++ /dev/null @@ -1,82 +0,0 @@ -import { useTranslation } from 'react-i18next'; -import { GenericHintConfig } from '../../../types/types'; -import { - calculateCrossplaneSegments, - calculateGitOpsSegments, - calculateMembersSegments, - calculateVaultSegments, -} from '../../../utils/componentCardCalculations'; - -export const useCrossplaneHintConfig = (): GenericHintConfig => { - const { t } = useTranslation(); - - return { - title: t('Hints.CrossplaneHint.title'), - subtitle: t('Hints.CrossplaneHint.subtitle'), - iconSrc: '/crossplane-icon.png', - iconAlt: 'Crossplane', - scrollTarget: '.crossplane-table-element', - calculateSegments: (allItems, isLoading, error, enabled) => - calculateCrossplaneSegments(allItems, isLoading, error, enabled, t), - // calculateHoverData: (allItems, enabled) => calculateCrossplaneHoverDataGeneric(allItems, enabled, t), - }; -}; - -export const useGitOpsHintConfig = (): GenericHintConfig => { - const { t } = useTranslation(); - - return { - title: t('Hints.GitOpsHint.title'), - subtitle: t('Hints.GitOpsHint.subtitle'), - iconSrc: '/flux.png', - iconAlt: 'Flux', - scrollTarget: '.cp-page-section-gitops', - calculateSegments: (allItems, isLoading, error, enabled) => - calculateGitOpsSegments(allItems, isLoading, error, enabled, t), - // calculateHoverData: (allItems, enabled) => calculateGitOpsHoverDataGeneric(allItems, enabled, t), - }; -}; - -export const useESOHintConfig = (): GenericHintConfig => { - const { t } = useTranslation(); - - return { - title: t('Hints.ESOHint.title'), - subtitle: t('Hints.ESOHint.subtitle'), - iconSrc: '/eso.png', - iconAlt: 'ESO', - // Not sure yet whether this looks better fully round or with rounded edges... - // iconStyle: { borderRadius: '8px' }, // ESO icon with rounded corners - calculateSegments: (allItems, isLoading, error, enabled) => - calculateVaultSegments(allItems, isLoading, error, enabled, t), - }; -}; - -export const useKyvernoHintConfig = (): GenericHintConfig => { - const { t } = useTranslation(); - - return { - title: t('Hints.KyvernoHint.title'), - subtitle: t('Hints.KyvernoHint.subtitle'), - iconSrc: '/kyverno.svg', - iconAlt: 'Kyverno', - iconStyle: { borderRadius: '0' }, // Kyverno icon should not be rounded - calculateSegments: (allItems, isLoading, error, enabled) => - calculateVaultSegments(allItems, isLoading, error, enabled, t), - }; -}; - -export const useMembersHintConfig = (): GenericHintConfig => { - const { t } = useTranslation(); - - return { - title: t('Hints.MembersHint.title'), - subtitle: t('Hints.MembersHint.subtitle'), - iconSrc: '/members.svg', - iconAlt: 'Members', - iconStyle: { borderRadius: '0' }, // Members icon should not be rounded - calculateSegments: (allItems, isLoading, error, enabled) => - calculateMembersSegments(allItems, isLoading, error, enabled, t), - // calculateHoverData: (allItems, enabled) => calculateGitOpsHoverDataGeneric(allItems, enabled, t), - }; -}; diff --git a/src/components/BentoGrid/LegendSection/LegendSection.module.css b/src/components/BentoGrid/LegendSection/LegendSection.module.css deleted file mode 100644 index 63e40530..00000000 --- a/src/components/BentoGrid/LegendSection/LegendSection.module.css +++ /dev/null @@ -1,71 +0,0 @@ -/* Legend Section Styles */ -.legendSection { - color: var(--sapTextColor, #374151); - margin-bottom: 1rem; - width: 80%; - max-width: 400px; - align-self: center; -} - -.legendTitle { - color: var(--sapTitleColor, var(--sapTextColor, #374151)); - font-size: 0.95rem; - font-weight: 600; - margin-bottom: 0.5rem; - text-align: left; -} - -.legendItem { - color: var(--sapContent_LabelColor, #6b7280); - font-size: 0.85rem; -} - -.legendItemsContainer { - display: flex; - gap: 0.75rem; - align-items: center; - justify-content: flex-start; -} - -.legendItemWrapper { - display: flex; - align-items: center; - gap: 0.25rem; -} - -.legendDot { - width: 10px; - height: 10px; - border-radius: 50%; -} - -/* Dark mode support */ -@media (prefers-color-scheme: dark) { - .legendSection { - color: #ffffff; - } - - .legendTitle { - color: #ffffff; - } - - .legendItem { - color: #cccccc; - } -} - -/* Also check for UI5 theme variables for dark themes */ -[data-ui5-theme-root*="dark"] .legendSection, -[data-ui5-theme*="dark"] .legendSection { - color: #ffffff; -} - -[data-ui5-theme-root*="dark"] .legendTitle, -[data-ui5-theme*="dark"] .legendTitle { - color: #ffffff; -} - -[data-ui5-theme-root*="dark"] .legendItem, -[data-ui5-theme*="dark"] .legendItem { - color: #cccccc; -} diff --git a/src/components/BentoGrid/LegendSection/LegendSection.tsx b/src/components/BentoGrid/LegendSection/LegendSection.tsx deleted file mode 100644 index 8c308234..00000000 --- a/src/components/BentoGrid/LegendSection/LegendSection.tsx +++ /dev/null @@ -1,32 +0,0 @@ -import React from 'react'; -import styles from './LegendSection.module.css'; - -interface LegendItem { - label: string; - count: number; - color: string; -} - -interface LegendSectionProps { - title: string; - items: LegendItem[]; - style?: React.CSSProperties; -} - -export const LegendSection: React.FC = ({ title, items, style }) => { - return ( -
-
{title}
-
- {items.map((item, index) => ( -
-
- - {item.count} {item.label} - -
- ))} -
-
- ); -}; diff --git a/src/components/BentoGrid/MembersCard/MembersCard.module.css b/src/components/BentoGrid/MembersCard/MembersCard.module.css new file mode 100644 index 00000000..cdd62e68 --- /dev/null +++ b/src/components/BentoGrid/MembersCard/MembersCard.module.css @@ -0,0 +1,45 @@ +.contentContainer { + display: flex; + flex-direction: column; + align-items: center; + justify-content: flex-start; + padding: 0.125rem 0; + flex: 1; +} + +.progressBarContainer { + display: flex; + gap: 8px; + width: 100%; + max-width: 500px; + padding: 0 0.5rem; +} + +.progressBarContainerSmall { + display: flex; + gap: 6px; + width: 100%; + max-width: 400px; + padding: 0 0.5rem; +} + +.progressBarContainerMedium { + display: flex; + gap: 6px; + width: 100%; + max-width: 600px; + padding: 0 0.75rem; +} + +.progressBarContainerLarge { + display: flex; + flex-direction: column; + gap: 4px; + width: 100%; + max-width: none; + padding: 0 1rem; +} + +.progressBar { + width: 100%; +} \ No newline at end of file diff --git a/src/components/BentoGrid/MembersCard/MembersCard.tsx b/src/components/BentoGrid/MembersCard/MembersCard.tsx new file mode 100644 index 00000000..cb3d77b4 --- /dev/null +++ b/src/components/BentoGrid/MembersCard/MembersCard.tsx @@ -0,0 +1,90 @@ +import { useMemo } from 'react'; +import { useTranslation } from 'react-i18next'; +import { BaseCard } from '../ComponentCard/BaseCard/BaseCard'; +import { MultiPercentageBar } from '../MultiPercentageBar/MultiPercentageBar'; +import { APIError } from '../../../lib/api/error'; +import { calculateMembersSegments, MemberItem } from './membersCalculations'; +import styles from './MembersCard.module.css'; + +interface MembersCardProps { + allItems: MemberItem[]; + enabled: boolean; + version?: string; + isLoading?: boolean; + error?: APIError; + onClick?: () => void; + expanded?: boolean; + size?: 'small' | 'medium' | 'large' | 'extra-large'; +} + +export const MembersCard = ({ + allItems = [], + enabled, + version, + isLoading = false, + error, + onClick, + expanded = false, + size = 'medium', +}: MembersCardProps) => { + const { t } = useTranslation(); + + const membersState = useMemo( + () => calculateMembersSegments(allItems, isLoading, error, enabled, t), + [allItems, isLoading, error, enabled, t] + ); + + return ( + +
+
+ +
+
+
+ ); +}; \ No newline at end of file diff --git a/src/components/BentoGrid/MembersCard/membersCalculations.ts b/src/components/BentoGrid/MembersCard/membersCalculations.ts new file mode 100644 index 00000000..94125f9b --- /dev/null +++ b/src/components/BentoGrid/MembersCard/membersCalculations.ts @@ -0,0 +1,97 @@ +import { APIError } from '../../../lib/api/error'; + +export const HINT_COLORS = { + roles: '#08848c', + inactive: '#e9e9e9ff', + unhealthy: '#d22020ff', +} as const; + +export interface MemberItem { + role?: string; +} + +export interface MemberSegment { + percentage: number; + color: string; + label: string; + count?: number; +} + +export interface MemberState { + segments: MemberSegment[]; + label: string; + showPercentage: boolean; + isHealthy: boolean; + showOnlyNonZero?: boolean; +} + +export const calculateMembersSegments = ( + allItems: MemberItem[], + isLoading: boolean, + error: APIError | undefined, + enabled: boolean, + t: (key: string) => string, +): MemberState => { + if (isLoading) { + return { + segments: [{ percentage: 100, color: HINT_COLORS.inactive, label: t('Hints.common.loading') }], + label: t('Hints.common.loading'), + showPercentage: false, + isHealthy: false, + showOnlyNonZero: true, + }; + } + if (error) { + return { + segments: [{ percentage: 100, color: HINT_COLORS.unhealthy, label: t('Hints.common.errorLoadingResources') }], + label: t('Hints.common.errorLoadingResources'), + showPercentage: false, + isHealthy: false, + showOnlyNonZero: true, + }; + } + if (!enabled) { + return { + segments: [{ percentage: 100, color: HINT_COLORS.inactive, label: t('Hints.MembersHint.inactive') }], + label: t('Hints.MembersHint.inactive'), + showPercentage: false, + isHealthy: false, + showOnlyNonZero: true, + }; + } + const totalCount = allItems.length; + if (totalCount === 0) { + return { + segments: [{ percentage: 100, color: HINT_COLORS.inactive, label: t('Hints.MembersHint.noMembers') }], + label: t('Hints.MembersHint.noMembers'), + showPercentage: false, + isHealthy: false, + showOnlyNonZero: true, + }; + } + // Count the number of roles and their distribution + const roleCounts: Record = {}; + + allItems.forEach((item: MemberItem) => { + const role = item?.role || 'unknown'; + roleCounts[role] = (roleCounts[role] || 0) + 1; + }); + + const segments = Object.entries(roleCounts) + .map(([role, count]) => ({ + percentage: Math.round((count / totalCount) * 100), + color: HINT_COLORS.roles, // All roles use the same teal color + label: role.charAt(0).toUpperCase() + role.slice(1), + count, + })) + .filter((segment) => segment.percentage > 0) + .sort((a, b) => b.percentage - a.percentage); + + return { + segments, + label: `Users ${totalCount}`, + showPercentage: false, + isHealthy: false, // Changed to false to prevent green styling + showOnlyNonZero: true, + }; +}; \ No newline at end of file diff --git a/src/components/BentoGrid/MultiPercentageBar/MultiPercentageBar.module.css b/src/components/BentoGrid/MultiPercentageBar/MultiPercentageBar.module.css index 92c70e8c..cf2fe67a 100644 --- a/src/components/BentoGrid/MultiPercentageBar/MultiPercentageBar.module.css +++ b/src/components/BentoGrid/MultiPercentageBar/MultiPercentageBar.module.css @@ -12,9 +12,8 @@ display: flex; flex-direction: column; align-items: center; - gap: 4px; width: 100%; - padding-bottom: 8px; + padding-bottom: 4px; /* Initial animation */ animation: fadeInUp var(--animation-duration) ease-out; @@ -63,12 +62,21 @@ transition: color 0.3s ease, font-weight 0.3s ease; } -.label.healthy, -.percentage.healthy { +.label.healthy { color: green; font-weight: 700; } +.percentage.healthy { + color: green; + font-weight: 400 !important; +} + +.count.healthy { + color: green; + font-weight: 400 !important; +} + .count { opacity: 0.7; font-size: calc(var(--label-font-size) * 0.9); diff --git a/src/components/BentoGrid/MultiPercentageBar/MultiPercentageBar.tsx b/src/components/BentoGrid/MultiPercentageBar/MultiPercentageBar.tsx index 509d7c82..d66cfe75 100644 --- a/src/components/BentoGrid/MultiPercentageBar/MultiPercentageBar.tsx +++ b/src/components/BentoGrid/MultiPercentageBar/MultiPercentageBar.tsx @@ -85,7 +85,7 @@ export const MultiPercentageBar: React.FC = ({ }) => { const mergedLabelConfig: LabelConfig = useMemo( () => ({ - position: showSegmentLabels ? 'inside' : 'above', + position: 'above', // Always show above labels, segment labels are controlled separately displayMode: 'primary', showPercentage: false, showCount: false, @@ -94,7 +94,7 @@ export const MultiPercentageBar: React.FC = ({ hideWhenSingleFull: false, ...labelConfig, }), - [labelConfig, showSegmentLabels], + [labelConfig], ); const mergedColorConfig: ColorConfig = useMemo( @@ -209,7 +209,6 @@ export const MultiPercentageBar: React.FC = ({ mergedLabelConfig.textColor || (labelItem.isHealthy ? mergedLabelConfig.healthyTextColor : undefined), fontSize: mergedLabelConfig.fontSize, - fontWeight: mergedLabelConfig.fontWeight, }} > {labelItem.percentage}% @@ -217,7 +216,7 @@ export const MultiPercentageBar: React.FC = ({ )} {labelItem.count !== undefined && ( = ({ {mergedAnimationConfig.enableWave &&
} {/* Segment label inside the bar */} - {mergedLabelConfig.position === 'inside' && segment.percentage >= (minSegmentWidthForLabel || 15) && ( + {showSegmentLabels && segment.percentage >= (minSegmentWidthForLabel || 15) && ( { - if (!managedResources || !Array.isArray(managedResources)) return []; - - return managedResources - .filter((managedResource) => managedResource?.items) - .flatMap((managedResource) => managedResource.items || []); -}; - -// Utility function to calculate provider distribution with graph colors -const calculateProviderDistribution = (items: ManagedResourceItem[], providerConfigs: ProviderConfigs[]) => { - if (!items || items.length === 0) return { segments: [], totalProviders: 0 }; - - // Count resources by provider type (same method as graph) - const providerCounts: Record = {}; - - items.forEach((item) => { - const providerConfigName = item?.spec?.providerConfigRef?.name ?? 'unknown'; - const providerType = resolveProviderType(providerConfigName, providerConfigs); - providerCounts[providerType] = (providerCounts[providerType] || 0) + 1; - }); - - // Create NodeData-like objects for color generation (reuse graph's color logic) - const nodeDataForColors = Object.keys(providerCounts).map((providerType) => ({ - providerType, - providerConfigName: '', // Not needed for color generation - fluxName: undefined, - })); - - // Generate colors using the same logic as the graph - const colorMap = generateColorMap(nodeDataForColors as NodeData[], 'source'); +import { useMemo } from 'react'; +import { useMcpBentoLayout } from '../views/McpBentoLayout'; +import { CrossplaneDetailsTable } from '../views/CrossplaneDetailsTable'; +import { GitOpsDetailsTable } from '../views/GitOpsDetailsTable'; +import { MembersDetailsTable } from '../views/MembersDetailsTable'; - // Convert to segments with percentages and counts - const total = items.length; - const segments = Object.entries(providerCounts) - .map(([provider, count]) => ({ - percentage: Math.round((count / total) * 100), - color: colorMap[provider] || '#BFBFBF', // fallback color - label: provider.replace('provider-', '').toUpperCase(), - count: count, - })) - .filter((segment) => segment.percentage > 0) - .sort((a, b) => b.percentage - a.percentage); - - return { - segments, - totalProviders: segments.length, - }; -}; export default function McpPage() { const { projectName, workspaceName, controlPlaneName } = useParams(); @@ -142,8 +70,6 @@ export default function McpPage() { function McpPageContent({ mcp, controlPlaneName }: { mcp: any; controlPlaneName: string }) { const { t } = useTranslation(); const { projectName, workspaceName } = useParams(); - const [expandedCard, setExpandedCard] = useState(null); - const [isExpanding, setIsExpanding] = useState(false); // Add managed resources API call within the MCP context const { @@ -154,62 +80,28 @@ function McpPageContent({ mcp, controlPlaneName }: { mcp: any; controlPlaneName: refreshInterval: resourcesInterval, }); - // Fetch provider configs for distribution calculation - const { data: providerConfigsList } = useProvidersConfigResource({ - refreshInterval: 60000, - }); - - // Flatten all managed resources once and pass to components - const allItems = useMemo( - () => flattenManagedResources(managedResources ?? ([] as unknown as ManagedResourcesResponse)), - [managedResources], - ); - - // Calculate provider distribution for crossplane card - const providerDistribution = useMemo( - () => calculateProviderDistribution(allItems, providerConfigsList || []), - [allItems, providerConfigsList], + // Flatten managed resources + const allItems = useMemo(() => { + if (!managedResources || !Array.isArray(managedResources)) return []; + return managedResources + .filter((managedResource) => managedResource?.items) + .flatMap((managedResource) => managedResource.items || []); + }, [managedResources]); + + // Prepare member items from role bindings + const memberItems = useMemo( + () => (mcp?.spec?.authorization?.roleBindings || []).map((rb: any) => ({ role: rb.role })), + [mcp?.spec?.authorization?.roleBindings] ); - // Get hint configurations - const crossplaneConfig = useCrossplaneHintConfig(); - const gitOpsConfig = useGitOpsHintConfig(); - const membersConfig = useMembersHintConfig(); - const esoConfig = useESOHintConfig(); - const kyvernoConfig = useKyvernoHintConfig(); - - // Handle component card clicks - const handleCrossplaneExpand = () => { - setIsExpanding(true); - setTimeout(() => { - setExpandedCard('crossplane'); - setIsExpanding(false); - }, 50); - }; - - const handleGitOpsExpand = () => { - setIsExpanding(true); - setTimeout(() => { - setExpandedCard('gitops'); - setIsExpanding(false); - }, 50); - }; - - const handleMembersExpand = () => { - setIsExpanding(true); - setTimeout(() => { - setExpandedCard('members'); - setIsExpanding(false); - }, 50); - }; - - const handleCollapseExpanded = () => { - setIsExpanding(true); - setTimeout(() => { - setExpandedCard(null); - setIsExpanding(false); - }, 300); - }; + // Use the Bento layout hook which manages expansion state internally + const { expandedCard, bentoGrid } = useMcpBentoLayout({ + mcp, + allItems, + memberItems, + isLoading: managedResourcesLoading, + error: managedResourcesError, + }); return (
- - {/* Left side: Crossplane component in large (top) - expands to full width when expanded */} - {(!expandedCard || expandedCard === 'crossplane') && ( - -
- -
-
- )} - - {/* GitOps component - shows when expanded*/} - {expandedCard === 'gitops' && ( - -
- -
-
- )} - - {/* Members component - shows when expanded */} - {expandedCard === 'members' && ( - -
- -
-
- )} - - {/* Left side: Graph in extra-large (bottom) - expands to full width when any component is expanded, but hidden for members */} - {expandedCard !== 'members' && ( - - - - )} - - {/* Right side cards - hide when any component is expanded */} - {!expandedCard && ( - <> - {/* Right side: First medium component (GitOps) - ACTIVATED */} - - - + {/* Unified Bento Layout - Graph stays persistent */} + {bentoGrid} - {/* Right side: Second medium component (Members) */} - - - - - {/* Right side: First small component (Kyverno config) */} - - - - - {/* Right side: Second small component (ESO) */} - - - - - )} -
- - {/* Tables section - outside the BentoGrid to maintain the 600px layout */} - {expandedCard === 'crossplane' && ( -
- -
-
- -
-
- -
-
- -
-
-
-
-
- )} - - {expandedCard === 'gitops' && ( -
- - - -
-
- )} - - {expandedCard === 'members' && ( -
- - ({ - name: (binding.subjects?.[0]?.name || 'Unknown').replace(/^openmcp:/, ''), - kind: binding.subjects?.[0]?.kind || 'Unknown', - roles: binding.role ? [binding.role] : [], - namespace: binding.namespace || '', - })) || [] - } - requireAtLeastOneMember={false} - /> - -
-
- )} + {/* Render details tables based on expanded state */} + {expandedCard === 'crossplane' && } + {expandedCard === 'gitops' && } + {expandedCard === 'members' && }
diff --git a/src/spaces/mcp/pages/useCardData.ts b/src/spaces/mcp/pages/useCardData.ts new file mode 100644 index 00000000..d35b0cdc --- /dev/null +++ b/src/spaces/mcp/pages/useCardData.ts @@ -0,0 +1,30 @@ +import { useMemo } from 'react'; +import { ManagedResourceItem } from '../../../lib/shared/types'; + +// Utility function to flatten managed resources +const flattenManagedResources = (managedResources: any): ManagedResourceItem[] => { + if (!managedResources || !Array.isArray(managedResources)) return []; + + return managedResources + .filter((managedResource) => managedResource?.items) + .flatMap((managedResource) => managedResource.items || []); +}; + +export const useCardData = (managedResources: any, mcp: any) => { + // Flatten all managed resources once and pass to components + const allItems = useMemo( + () => flattenManagedResources(managedResources), + [managedResources], + ); + + // Prepare member items from role bindings + const memberItems = useMemo( + () => (mcp?.spec?.authorization?.roleBindings || []).map((rb: any) => ({ role: rb.role })), + [mcp?.spec?.authorization?.roleBindings] + ); + + return { + allItems, + memberItems, + }; +}; \ No newline at end of file diff --git a/src/spaces/mcp/views/CrossplaneDetailsTable.tsx b/src/spaces/mcp/views/CrossplaneDetailsTable.tsx new file mode 100644 index 00000000..4632ec3f --- /dev/null +++ b/src/spaces/mcp/views/CrossplaneDetailsTable.tsx @@ -0,0 +1,26 @@ +import { Panel } from '@ui5/webcomponents-react'; +import { ManagedResources } from '../../../components/ControlPlane/ManagedResources'; +import { Providers } from '../../../components/ControlPlane/Providers'; +import { ProvidersConfig } from '../../../components/ControlPlane/ProvidersConfig'; +import styles from '../pages/McpPage.module.css'; + +export function CrossplaneDetailsTable() { + return ( +
+ +
+
+ +
+
+ +
+
+ +
+
+
+
+
+ ); +} \ No newline at end of file diff --git a/src/spaces/mcp/views/GitOpsDetailsTable.tsx b/src/spaces/mcp/views/GitOpsDetailsTable.tsx new file mode 100644 index 00000000..010047e8 --- /dev/null +++ b/src/spaces/mcp/views/GitOpsDetailsTable.tsx @@ -0,0 +1,14 @@ +import { Panel } from '@ui5/webcomponents-react'; +import FluxList from '../../../components/ControlPlane/FluxList'; +import styles from '../pages/McpPage.module.css'; + +export function GitOpsDetailsTable() { + return ( +
+ + + +
+
+ ); +} \ No newline at end of file diff --git a/src/spaces/mcp/views/McpBentoLayout.tsx b/src/spaces/mcp/views/McpBentoLayout.tsx new file mode 100644 index 00000000..bf76f3e5 --- /dev/null +++ b/src/spaces/mcp/views/McpBentoLayout.tsx @@ -0,0 +1,210 @@ +import { useState } from 'react'; +import { BentoGrid, BentoCard } from '../../../components/BentoGrid'; +import { GraphCard } from '../../../components/BentoGrid/GraphCard/GraphCard'; +import { CrossplaneCard } from '../../../components/BentoGrid/ComponentCard/CrossplaneCard/CrossplaneCard'; +import { FluxCard } from '../../../components/BentoGrid/ComponentCard/FluxCard/FluxCard'; +import { ESOCard } from '../../../components/BentoGrid/ComponentCard/ESOCard/ESOCard'; +import { KyvernoCard } from '../../../components/BentoGrid/ComponentCard/KyvernoCard/KyvernoCard'; +import { MembersCard } from '../../../components/BentoGrid/MembersCard/MembersCard'; +import { ManagedResourceItem } from '../../../lib/shared/types'; +import styles from '../pages/McpPage.module.css'; + +export type ExpandedCardType = 'crossplane' | 'gitops' | 'members' | null; + +interface McpBentoLayoutProps { + mcp: any; + allItems: ManagedResourceItem[]; + memberItems: any[]; + isLoading: boolean; + error: any; + onExpandedCardChange?: (expandedCard: ExpandedCardType) => void; +} + +export function useMcpBentoLayout({ + mcp, + allItems, + memberItems, + isLoading, + error, + onExpandedCardChange, +}: McpBentoLayoutProps) { + // Card expansion state management + const [expandedCard, setExpandedCard] = useState(null); + const [isExpanding, setIsExpanding] = useState(false); + + const createExpandHandler = (cardType: ExpandedCardType) => () => { + setIsExpanding(true); + setTimeout(() => { + setExpandedCard(cardType); + setIsExpanding(false); + onExpandedCardChange?.(cardType); + }, 50); + }; + + const handleCollapseExpanded = () => { + setIsExpanding(true); + setTimeout(() => { + setExpandedCard(null); + setIsExpanding(false); + onExpandedCardChange?.(null); + }, 300); + }; + + const handleCrossplaneExpand = createExpandHandler('crossplane'); + const handleGitOpsExpand = createExpandHandler('gitops'); + const handleMembersExpand = createExpandHandler('members'); + + const bentoGrid = ( + + {/* Crossplane Card - always rendered but changes size/position */} + {(!expandedCard || expandedCard === 'crossplane') && ( + +
+ +
+
+ )} + + {/* GitOps Card - shows when expanded */} + {expandedCard === 'gitops' && ( + +
+ +
+
+ )} + + {/* Members Card - shows when expanded */} + {expandedCard === 'members' && ( + +
+ +
+
+ )} + + {/* Graph Card - persistent, only hidden for members view */} + {expandedCard !== 'members' && ( + + + + )} + + {/* Right side cards - only show when collapsed */} + {!expandedCard && ( + <> + {/* GitOps Card */} + + + + + {/* Members Card */} + + + + + {/* Kyverno Card */} + + + + + {/* ESO Card */} + + + + + )} +
+ ); + + return { expandedCard, bentoGrid }; +} \ No newline at end of file diff --git a/src/spaces/mcp/views/MembersDetailsTable.tsx b/src/spaces/mcp/views/MembersDetailsTable.tsx new file mode 100644 index 00000000..9c632d5a --- /dev/null +++ b/src/spaces/mcp/views/MembersDetailsTable.tsx @@ -0,0 +1,37 @@ +import { Panel } from '@ui5/webcomponents-react'; +import { MemberTable } from '../../../components/Members/MemberTable'; +import styles from '../pages/McpPage.module.css'; + +interface RoleBinding { + role: string; + subjects: { + kind: string; + name: string; + }[]; + namespace?: string; +} + +interface MembersDetailsTableProps { + mcp: any; +} + +export function MembersDetailsTable({ mcp }: MembersDetailsTableProps) { + return ( +
+ + ({ + name: (binding.subjects?.[0]?.name || 'Unknown').replace(/^openmcp:/, ''), + kind: binding.subjects?.[0]?.kind || 'Unknown', + roles: binding.role ? [binding.role] : [], + namespace: binding.namespace || '', + })) || [] + } + requireAtLeastOneMember={false} + /> + +
+
+ ); +} \ No newline at end of file diff --git a/src/utils/componentCardCalculations.ts b/src/utils/componentCardCalculations.ts deleted file mode 100644 index 878b59d4..00000000 --- a/src/utils/componentCardCalculations.ts +++ /dev/null @@ -1,516 +0,0 @@ -import { ManagedResourceItem, Condition } from '../lib/shared/types'; -import { APIError } from '../lib/api/error'; -import { GenericHintSegmentCalculator, GenericHintState } from '../types/types'; - -interface MemberItem { - role?: string; -} - -export const HINT_COLORS = { - healthy: '#28a745', - creating: '#0874f4', - unhealthy: '#d22020ff', - inactive: '#e9e9e9ff', - roles: '#08848c', - flux: '#386ce4', -} as const; -export const calculateCrossplaneSegments: GenericHintSegmentCalculator = ( - allItems: ManagedResourceItem[], - isLoading: boolean, - error: APIError | undefined, - enabled: boolean, - t: (key: string) => string, -): GenericHintState => { - if (isLoading) { - return { - segments: [{ percentage: 100, color: HINT_COLORS.inactive, label: t('Hints.common.loading') }], - label: t('Hints.common.loading'), - showPercentage: false, - isHealthy: false, - showOnlyNonZero: true, - }; - } - - if (error) { - return { - segments: [{ percentage: 100, color: HINT_COLORS.unhealthy, label: t('Hints.common.errorLoadingResources') }], - label: t('Hints.common.errorLoadingResources'), - showPercentage: false, - isHealthy: false, - showOnlyNonZero: true, - }; - } - - if (!enabled) { - return { - segments: [{ percentage: 100, color: HINT_COLORS.inactive, label: t('Hints.CrossplaneHint.inactive') }], - label: t('Hints.CrossplaneHint.inactive'), - showPercentage: false, - isHealthy: false, - showOnlyNonZero: true, - }; - } - - const totalCount = allItems.length; - - if (totalCount === 0) { - return { - segments: [{ percentage: 100, color: HINT_COLORS.inactive, label: t('Hints.CrossplaneHint.noResources') }], - label: t('Hints.CrossplaneHint.noResources'), - showPercentage: false, - isHealthy: false, - showOnlyNonZero: true, - }; - } - const healthyCount = allItems.filter((item: ManagedResourceItem) => { - const conditions = item.status?.conditions || []; - const ready = conditions.find((c: Condition) => c.type === 'Ready' && c.status === 'True'); - const synced = conditions.find((c: Condition) => c.type === 'Synced' && c.status === 'True'); - return !!ready && !!synced; - }).length; - - const creatingCount = allItems.filter((item: ManagedResourceItem) => { - const conditions = item.status?.conditions || []; - const ready = conditions.find((c: Condition) => c.type === 'Ready' && c.status === 'True'); - const synced = conditions.find((c: Condition) => c.type === 'Synced' && c.status === 'True'); - return !!synced && !ready; - }).length; - - const unhealthyCount = totalCount - healthyCount - creatingCount; - const healthyPercentage = Math.round((healthyCount / totalCount) * 100); - const creatingPercentage = Math.round((creatingCount / totalCount) * 100); - const unhealthyPercentage = Math.round((unhealthyCount / totalCount) * 100); - - return { - segments: [ - { percentage: healthyPercentage, color: HINT_COLORS.healthy, label: t('common.healthy') }, - { percentage: creatingPercentage, color: HINT_COLORS.creating, label: t('common.creating') }, - { percentage: unhealthyPercentage, color: HINT_COLORS.unhealthy, label: t('common.unhealthy') }, - ], - label: t('Hints.CrossplaneHint.healthy'), - showPercentage: true, - isHealthy: healthyPercentage === 100 && totalCount > 0, - showOnlyNonZero: true, - }; -}; - -/** - * GitOps-specific segment calculation - */ -export const calculateGitOpsSegments: GenericHintSegmentCalculator = ( - allItems: ManagedResourceItem[], - isLoading: boolean, - error: APIError | undefined, - enabled: boolean, - t: (key: string) => string, -): GenericHintState => { - if (isLoading) { - return { - segments: [{ percentage: 100, color: HINT_COLORS.inactive, label: t('Hints.common.loading') }], - label: t('Hints.common.loading'), - showPercentage: false, - isHealthy: false, - showOnlyNonZero: true, - }; - } - - if (error) { - return { - segments: [{ percentage: 100, color: HINT_COLORS.unhealthy, label: t('Hints.common.errorLoadingResources') }], - label: t('Hints.common.errorLoadingResources'), - showPercentage: false, - isHealthy: false, - showOnlyNonZero: true, - }; - } - - if (!enabled) { - return { - segments: [{ percentage: 100, color: HINT_COLORS.inactive, label: t('Hints.GitOpsHint.inactive') }], - label: t('Hints.GitOpsHint.inactive'), - showPercentage: false, - isHealthy: false, - showOnlyNonZero: true, - }; - } - - const totalCount = allItems.length; - - if (totalCount === 0) { - return { - segments: [{ percentage: 100, color: HINT_COLORS.inactive, label: t('Hints.GitOpsHint.noResources') }], - label: t('Hints.GitOpsHint.noResources'), - showPercentage: false, - isHealthy: false, - showOnlyNonZero: true, - }; - } - - const fluxLabelCount = allItems.filter( - (item: ManagedResourceItem) => - item?.metadata?.labels && - Object.prototype.hasOwnProperty.call(item.metadata.labels, 'kustomize.toolkit.fluxcd.io/name'), - ).length; - - const progressValue = totalCount > 0 ? Math.round((fluxLabelCount / totalCount) * 100) : 0; - const restPercentage = 100 - progressValue; - - return { - segments: [ - { percentage: progressValue, color: HINT_COLORS.flux, label: t('common.progress') }, - { percentage: restPercentage, color: HINT_COLORS.inactive, label: t('common.remaining') }, - ], - label: t('Hints.GitOpsHint.managed'), - showPercentage: true, - isHealthy: false, // Don't apply green styling to GitOps labels - showOnlyNonZero: true, - }; -}; - -/** - * Members-specific segment calculation - */ -export const calculateMembersSegments: GenericHintSegmentCalculator = ( - allItems: MemberItem[], - isLoading: boolean, - error: APIError | undefined, - enabled: boolean, - t: (key: string) => string, -): GenericHintState => { - if (isLoading) { - return { - segments: [{ percentage: 100, color: HINT_COLORS.inactive, label: t('Hints.common.loading') }], - label: t('Hints.common.loading'), - showPercentage: false, - isHealthy: false, - showOnlyNonZero: true, - }; - } - if (error) { - return { - segments: [{ percentage: 100, color: HINT_COLORS.unhealthy, label: t('Hints.common.errorLoadingResources') }], - label: t('Hints.common.errorLoadingResources'), - showPercentage: false, - isHealthy: false, - showOnlyNonZero: true, - }; - } - if (!enabled) { - return { - segments: [{ percentage: 100, color: HINT_COLORS.inactive, label: t('Hints.GitOpsHint.inactive') }], - label: t('Hints.GitOpsHint.inactive'), - showPercentage: false, - isHealthy: false, - showOnlyNonZero: true, - }; - } - const totalCount = allItems.length; - if (totalCount === 0) { - return { - segments: [{ percentage: 100, color: HINT_COLORS.inactive, label: t('Hints.GitOpsHint.noResources') }], - label: t('Hints.GitOpsHint.noResources'), - showPercentage: false, - isHealthy: false, - showOnlyNonZero: true, - }; - } - // Count the number of roles and their distribution - const roleCounts: Record = {}; - - allItems.forEach((item: MemberItem) => { - const role = item?.role || 'unknown'; - roleCounts[role] = (roleCounts[role] || 0) + 1; - }); - - const totalRoles = Object.keys(roleCounts).length; - - const segments = Object.entries(roleCounts) - .map(([role, count]) => ({ - percentage: Math.round((count / totalCount) * 100), - color: HINT_COLORS.roles, // All roles use the same teal color - label: role.charAt(0).toUpperCase() + role.slice(1), - count: count, - })) - .filter((segment) => segment.percentage > 0) - .sort((a, b) => b.percentage - a.percentage); - - return { - segments, - label: `Roles ${totalRoles}`, - showPercentage: false, - isHealthy: false, // Changed to false to prevent green styling - showOnlyNonZero: true, - }; -}; - -/** - * Vault-specific segment calculation - */ -export const calculateVaultSegments: GenericHintSegmentCalculator = ( - allItems: ManagedResourceItem[], - isLoading: boolean, - error: APIError | undefined, - enabled: boolean, - t: (key: string) => string, -): GenericHintState => { - if (isLoading) { - return { - segments: [{ percentage: 100, color: HINT_COLORS.inactive, label: t('Hints.common.loading') }], - label: t('Hints.common.loading'), - showPercentage: false, - isHealthy: false, - showOnlyNonZero: true, - }; - } - - if (error) { - return { - segments: [{ percentage: 100, color: HINT_COLORS.unhealthy, label: t('Hints.common.errorLoadingResources') }], - label: t('Hints.common.errorLoadingResources'), - showPercentage: false, - isHealthy: false, - showOnlyNonZero: true, - }; - } - - if (!enabled) { - return { - segments: [{ percentage: 100, color: HINT_COLORS.inactive, label: t('Hints.ESOHint.inactive') }], - label: t('Hints.ESOHint.inactive'), - showPercentage: false, - isHealthy: false, - showOnlyNonZero: true, - }; - } - - const hasResources = allItems.length > 0; - const label = hasResources ? t('Hints.ESOHint.progressAvailable') : t('Hints.ESOHint.noResources'); - const color = hasResources ? HINT_COLORS.healthy : HINT_COLORS.inactive; - - return { - segments: [{ percentage: 100, color, label: t('common.active') }], - label, - showPercentage: true, - isHealthy: hasResources, - showOnlyNonZero: true, - }; -}; - -/** - * Types for hover content calculations - */ -export interface ResourceTypeStats { - type: string; - total: number; - healthy: number; - creating: number; - unhealthy: number; - healthyPercentage: number; - creatingPercentage: number; - unhealthyPercentage: number; -} - -export interface OverallStats { - total: number; - healthy: number; - creating: number; - unhealthy: number; -} - -export interface CrossplaneHoverData { - resourceTypeStats: ResourceTypeStats[]; - overallStats: OverallStats; -} - -/** - * Calculate comprehensive statistics for Crossplane hover content - */ -export const calculateCrossplaneHoverData = (allItems: ManagedResourceItem[]): CrossplaneHoverData => { - const typeStats: Record = {}; - let totalHealthy = 0; - let totalCreating = 0; - let totalUnhealthy = 0; - - allItems.forEach((item: ManagedResourceItem) => { - const type = item.kind || 'Unknown'; - - if (!typeStats[type]) { - typeStats[type] = { total: 0, healthy: 0, creating: 0, unhealthy: 0 }; - } - - typeStats[type].total++; - - const conditions = item.status?.conditions || []; - const ready = conditions.find((c: Condition) => c.type === 'Ready' && c.status === 'True'); - const synced = conditions.find((c: Condition) => c.type === 'Synced' && c.status === 'True'); - - if (ready && synced) { - typeStats[type].healthy++; - totalHealthy++; - } else if (synced && !ready) { - // Resource is synced but not ready - it's creating - typeStats[type].creating++; - totalCreating++; - } else { - // Resource has issues or is not synced - typeStats[type].unhealthy++; - totalUnhealthy++; - } - }); - - const resourceTypeStats: ResourceTypeStats[] = Object.keys(typeStats).map((type) => { - const stats = typeStats[type]; - return { - type, - total: stats.total, - healthy: stats.healthy, - creating: stats.creating, - unhealthy: stats.unhealthy, - healthyPercentage: Math.round((stats.healthy / stats.total) * 100), - creatingPercentage: Math.round((stats.creating / stats.total) * 100), - unhealthyPercentage: Math.round((stats.unhealthy / stats.total) * 100), - }; - }); - - return { - resourceTypeStats, - overallStats: { - total: allItems.length, - healthy: totalHealthy, - creating: totalCreating, - unhealthy: totalUnhealthy, - }, - }; -}; - -// /** -// * Calculate hover data for Crossplane using the generic HoverContent structure -// * Shows healthy resources (the positive segment) -// */ -// export const calculateCrossplaneHoverDataGeneric: HoverDataCalculator = ( -// allItems: ManagedResourceItem[], -// enabled: boolean, -// t: (key: string) => string, -// ): Omit | null => { -// if (!enabled || allItems.length === 0) { -// return null; -// } - -// const { resourceTypeStats, overallStats } = calculateCrossplaneHoverData(allItems); - -// // Get the segments from the bar chart calculation to ensure color consistency -// const segmentData = calculateCrossplaneSegments(allItems, false, undefined, enabled, t); - -// const legendItems = segmentData.segments.map((segment) => ({ -// label: segment.label, -// count: -// segment.label === t('common.healthy') -// ? overallStats.healthy -// : segment.label === t('common.creating') -// ? overallStats.creating -// : overallStats.unhealthy, -// color: segment.color, -// })); - -// // Focus on healthy percentage in radar chart (the positive aspect) -// const radarDataset = resourceTypeStats.map((stats) => ({ -// type: stats.type, -// healthy: stats.healthyPercentage, -// })); - -// // Use the color of the healthy segment (first segment in the bar chart) -// const healthyColor = segmentData.segments.find((s) => s.label === t('common.healthy'))?.color || HINT_COLORS.healthy; - -// return { -// totalCount: overallStats.total, -// totalLabel: t('Hints.CrossplaneHint.hoverContent.totalResources'), -// legendItems, -// radarDataset, -// radarDimensions: [{ accessor: 'type' }], -// radarMeasures: [ -// { -// accessor: 'healthy', -// color: healthyColor, -// hideDataLabel: true, -// label: t('Hints.CrossplaneHint.hoverContent.healthy') + ' (%)', -// }, -// ], -// }; -// }; - -// /** -// * Calculate hover data for GitOps showing resource type management coverage -// * Shows managed resources (the positive segment) -// */ -// export const calculateGitOpsHoverDataGeneric: HoverDataCalculator = ( -// allItems: ManagedResourceItem[], -// enabled: boolean, -// t: (key: string) => string, -// ): Omit | null => { -// if (!enabled || allItems.length === 0) { -// return null; -// } - -// // Group by resource type and calculate flux management coverage -// const typeStats: Record = {}; -// let totalManaged = 0; - -// allItems.forEach((item: ManagedResourceItem) => { -// const type = item.kind || 'Unknown'; - -// if (!typeStats[type]) { -// typeStats[type] = { total: 0, managed: 0 }; -// } - -// typeStats[type].total++; - -// // Check if the resource is managed by Flux -// if ( -// item?.metadata?.labels && -// Object.prototype.hasOwnProperty.call(item.metadata.labels, 'kustomize.toolkit.fluxcd.io/name') -// ) { -// typeStats[type].managed++; -// totalManaged++; -// } -// }); - -// const totalUnmanaged = allItems.length - totalManaged; - -// // Get the segments from the bar chart calculation to ensure color consistency -// const segmentData = calculateGitOpsSegments(allItems, false, undefined, enabled, t); - -// const legendItems = segmentData.segments.map((segment) => ({ -// label: segment.label, -// count: segment.label === t('common.progress') ? totalManaged : totalUnmanaged, -// color: segment.color, -// })); - -// // Focus on managed percentage in radar chart (the positive aspect) -// const radarDataset = Object.keys(typeStats).map((type) => { -// const stats = typeStats[type]; -// const managedPercentage = Math.round((stats.managed / stats.total) * 100); -// return { -// type, -// managed: managedPercentage, -// }; -// }); - -// // Use the color of the progress/managed segment (first segment in the bar chart) -// const managedColor = segmentData.segments.find((s) => s.label === t('common.progress'))?.color || HINT_COLORS.managed; - -// return { -// totalCount: allItems.length, -// totalLabel: t('Hints.GitOpsHint.hoverContent.totalResources'), -// legendItems, -// radarDataset, -// radarDimensions: [{ accessor: 'type' }], -// radarMeasures: [ -// { -// accessor: 'managed', -// color: managedColor, -// hideDataLabel: true, -// label: t('Hints.GitOpsHint.hoverContent.managed') + ' (%)', -// }, -// ], -// }; -// }; diff --git a/src/utils/componentCardsCalculations.spec.ts b/src/utils/componentCardsCalculations.spec.ts deleted file mode 100644 index 681355d5..00000000 --- a/src/utils/componentCardsCalculations.spec.ts +++ /dev/null @@ -1,314 +0,0 @@ -import { describe, it, expect, vi } from 'vitest'; -import { - calculateCrossplaneSegments, - calculateGitOpsSegments, - calculateVaultSegments, - calculateCrossplaneHoverData, - HINT_COLORS, -} from './componentCardCalculations'; -import { ManagedResourceItem, Condition } from '../lib/shared/types'; -import { APIError } from '../lib/api/error'; - -// Mock react-i18next -vi.mock('react-i18next', () => ({ - useTranslation: () => ({ - t: (key: string) => key, - }), -})); - -describe('calculations', () => { - // Mock translation function - const mockT = (key: string) => key; - - const createManagedResourceItem = ( - kind: string = 'TestResource', - conditions: Condition[] = [], - ): ManagedResourceItem => ({ - kind, - metadata: { - name: 'test-resource', - creationTimestamp: '2023-01-01T00:00:00Z', - labels: [], - }, - status: { - conditions, - }, - }); - - const createCondition = (type: string, status: 'True' | 'False'): Condition => ({ - type, - status, - lastTransitionTime: '2023-01-01T00:00:00Z', - }); - - describe('calculateCrossplaneSegments', () => { - it('returns loading state when isLoading is true', () => { - const result = calculateCrossplaneSegments([], true, undefined, true, mockT); - - expect(result.segments).toHaveLength(1); - expect(result.segments[0].color).toBe(HINT_COLORS.inactive); - expect(result.showPercentage).toBe(false); - expect(result.isHealthy).toBe(false); - }); - - it('returns error state when error is provided', () => { - const error = new APIError('Test error', 500); - const result = calculateCrossplaneSegments([], false, error, true, mockT); - - expect(result.segments).toHaveLength(1); - expect(result.segments[0].color).toBe(HINT_COLORS.unhealthy); - expect(result.showPercentage).toBe(false); - expect(result.isHealthy).toBe(false); - }); - - it('returns inactive state when enabled is false', () => { - const result = calculateCrossplaneSegments([], false, undefined, false, mockT); - - expect(result.segments).toHaveLength(1); - expect(result.segments[0].color).toBe(HINT_COLORS.inactive); - expect(result.showPercentage).toBe(false); - expect(result.isHealthy).toBe(false); - }); - - it('returns no resources state when items array is empty', () => { - const result = calculateCrossplaneSegments([], false, undefined, true, mockT); - - expect(result.segments).toHaveLength(1); - expect(result.segments[0].color).toBe(HINT_COLORS.inactive); - expect(result.showPercentage).toBe(false); - expect(result.isHealthy).toBe(false); - }); - - it('correctly calculates segments for healthy resources', () => { - const healthyItems = [ - createManagedResourceItem('Pod', [createCondition('Ready', 'True'), createCondition('Synced', 'True')]), - createManagedResourceItem('Service', [createCondition('Ready', 'True'), createCondition('Synced', 'True')]), - ]; - - const result = calculateCrossplaneSegments(healthyItems, false, undefined, true, mockT); - - expect(result.segments).toHaveLength(3); - expect(result.segments[0].percentage).toBe(100); // healthy - expect(result.segments[1].percentage).toBe(0); // creating - expect(result.segments[2].percentage).toBe(0); // unhealthy - expect(result.isHealthy).toBe(true); - expect(result.showPercentage).toBe(true); - }); - - it('correctly calculates segments for creating resources', () => { - const creatingItems = [ - createManagedResourceItem('Pod', [createCondition('Ready', 'False'), createCondition('Synced', 'True')]), - ]; - - const result = calculateCrossplaneSegments(creatingItems, false, undefined, true, mockT); - - expect(result.segments).toHaveLength(3); - expect(result.segments[0].percentage).toBe(0); // healthy - expect(result.segments[1].percentage).toBe(100); // creating - expect(result.segments[2].percentage).toBe(0); // unhealthy - expect(result.isHealthy).toBe(false); - }); - - it('correctly calculates segments for unhealthy resources', () => { - const unhealthyItems = [ - createManagedResourceItem('Pod', [createCondition('Ready', 'False'), createCondition('Synced', 'False')]), - ]; - - const result = calculateCrossplaneSegments(unhealthyItems, false, undefined, true, mockT); - - expect(result.segments).toHaveLength(3); - expect(result.segments[0].percentage).toBe(0); // healthy - expect(result.segments[1].percentage).toBe(0); // creating - expect(result.segments[2].percentage).toBe(100); // unhealthy - expect(result.isHealthy).toBe(false); - }); - - it('correctly calculates mixed resource states', () => { - const mixedItems = [ - createManagedResourceItem('Pod1', [createCondition('Ready', 'True'), createCondition('Synced', 'True')]), - createManagedResourceItem('Pod2', [createCondition('Ready', 'False'), createCondition('Synced', 'True')]), - createManagedResourceItem('Pod3', [createCondition('Ready', 'False'), createCondition('Synced', 'False')]), - createManagedResourceItem('Pod4', []), // No conditions = unhealthy - ]; - - const result = calculateCrossplaneSegments(mixedItems, false, undefined, true, mockT); - - expect(result.segments).toHaveLength(3); - expect(result.segments[0].percentage).toBe(25); // 1/4 healthy - expect(result.segments[1].percentage).toBe(25); // 1/4 creating - expect(result.segments[2].percentage).toBe(50); // 2/4 unhealthy - expect(result.isHealthy).toBe(false); - }); - }); - - describe('calculateGitOpsSegments', () => { - it('returns loading state when isLoading is true', () => { - const result = calculateGitOpsSegments([], true, undefined, true, mockT); - - expect(result.segments).toHaveLength(1); - expect(result.segments[0].color).toBe(HINT_COLORS.inactive); - expect(result.showPercentage).toBe(false); - expect(result.isHealthy).toBe(false); - }); - - it('correctly calculates progress for flux-labeled resources', () => { - const itemWithFluxLabel = createManagedResourceItem('Pod'); - itemWithFluxLabel.metadata.labels = { - 'kustomize.toolkit.fluxcd.io/name': 'test-app', - } as any; - - const itemWithoutFluxLabel = createManagedResourceItem('Service'); - - const items = [itemWithFluxLabel, itemWithoutFluxLabel]; - const result = calculateGitOpsSegments(items, false, undefined, true, mockT); - - expect(result.segments).toHaveLength(2); - expect(result.segments[0].percentage).toBe(50); // 1/2 with flux label - expect(result.segments[1].percentage).toBe(50); // 1/2 remaining - expect(result.isHealthy).toBe(false); // < 70% - }); - - it('returns progress information when progress >= 70%', () => { - const items = Array.from({ length: 10 }, (_, i) => { - const item = createManagedResourceItem(`Pod${i}`); - if (i < 8) { - // 8/10 = 80% - item.metadata.labels = { - 'kustomize.toolkit.fluxcd.io/name': 'test-app', - } as any; - } - return item; - }); - - const result = calculateGitOpsSegments(items, false, undefined, true, mockT); - - expect(result.segments[0].percentage).toBe(80); - expect(result.segments[0].color).toBe(HINT_COLORS.flux); - expect(result.isHealthy).toBe(false); - }); - - it('returns progress information when progress < 70%', () => { - const items = Array.from({ length: 10 }, (_, i) => { - const item = createManagedResourceItem(`Pod${i}`); - if (i < 5) { - // 5/10 = 50% - item.metadata.labels = { - 'kustomize.toolkit.fluxcd.io/name': 'test-app', - } as any; - } - return item; - }); - - const result = calculateGitOpsSegments(items, false, undefined, true, mockT); - - expect(result.segments[0].percentage).toBe(50); - expect(result.segments[0].color).toBe(HINT_COLORS.flux); - expect(result.isHealthy).toBe(false); - }); - }); - - describe('calculateVaultSegments', () => { - it('returns active state when resources exist', () => { - const items = [createManagedResourceItem('Secret')]; - const result = calculateVaultSegments(items, false, undefined, true, mockT); - - expect(result.segments).toHaveLength(1); - expect(result.segments[0].percentage).toBe(100); - expect(result.segments[0].color).toBe(HINT_COLORS.healthy); - expect(result.isHealthy).toBe(true); - expect(result.showPercentage).toBe(true); - }); - - it('returns inactive state when no resources exist', () => { - const result = calculateVaultSegments([], false, undefined, true, mockT); - - expect(result.segments).toHaveLength(1); - expect(result.segments[0].percentage).toBe(100); - expect(result.segments[0].color).toBe(HINT_COLORS.inactive); - expect(result.isHealthy).toBe(false); - }); - }); - - describe('calculateCrossplaneHoverData', () => { - it('calculates statistics by resource type', () => { - const items = [ - createManagedResourceItem('Pod', [createCondition('Ready', 'True'), createCondition('Synced', 'True')]), - createManagedResourceItem('Pod', [createCondition('Ready', 'False'), createCondition('Synced', 'True')]), - createManagedResourceItem('Service', [createCondition('Ready', 'True'), createCondition('Synced', 'True')]), - createManagedResourceItem('Service', [createCondition('Ready', 'False'), createCondition('Synced', 'False')]), - ]; - - const result = calculateCrossplaneHoverData(items); - - expect(result.resourceTypeStats).toHaveLength(2); - - const podStats = result.resourceTypeStats.find((s) => s.type === 'Pod'); - expect(podStats).toBeDefined(); - expect(podStats!.total).toBe(2); - expect(podStats!.healthy).toBe(1); - expect(podStats!.creating).toBe(1); - expect(podStats!.unhealthy).toBe(0); - expect(podStats!.healthyPercentage).toBe(50); - - const serviceStats = result.resourceTypeStats.find((s) => s.type === 'Service'); - expect(serviceStats).toBeDefined(); - expect(serviceStats!.total).toBe(2); - expect(serviceStats!.healthy).toBe(1); - expect(serviceStats!.creating).toBe(0); - expect(serviceStats!.unhealthy).toBe(1); - expect(serviceStats!.unhealthyPercentage).toBe(50); - }); - - it('calculates overall statistics correctly', () => { - const items = [ - createManagedResourceItem('Pod', [createCondition('Ready', 'True'), createCondition('Synced', 'True')]), - createManagedResourceItem('Service', [createCondition('Ready', 'False'), createCondition('Synced', 'True')]), - createManagedResourceItem('ConfigMap', [createCondition('Ready', 'False'), createCondition('Synced', 'False')]), - ]; - - const result = calculateCrossplaneHoverData(items); - - expect(result.overallStats.total).toBe(3); - expect(result.overallStats.healthy).toBe(1); - expect(result.overallStats.creating).toBe(1); - expect(result.overallStats.unhealthy).toBe(1); - }); - - it('handles resources without kind', () => { - const itemWithoutKind = createManagedResourceItem('', [ - createCondition('Ready', 'True'), - createCondition('Synced', 'True'), - ]); - // @ts-ignore - testing edge case - itemWithoutKind.kind = undefined; - - const result = calculateCrossplaneHoverData([itemWithoutKind]); - - expect(result.resourceTypeStats).toHaveLength(1); - expect(result.resourceTypeStats[0].type).toBe('Unknown'); - expect(result.resourceTypeStats[0].healthy).toBe(1); - }); - - it('handles resources without conditions', () => { - const itemWithoutConditions = createManagedResourceItem('Pod'); - delete itemWithoutConditions.status; - - const result = calculateCrossplaneHoverData([itemWithoutConditions]); - - expect(result.resourceTypeStats).toHaveLength(1); - expect(result.resourceTypeStats[0].type).toBe('Pod'); - expect(result.resourceTypeStats[0].unhealthy).toBe(1); - expect(result.overallStats.unhealthy).toBe(1); - }); - - it('returns empty arrays for no items', () => { - const result = calculateCrossplaneHoverData([]); - - expect(result.resourceTypeStats).toHaveLength(0); - expect(result.overallStats.total).toBe(0); - expect(result.overallStats.healthy).toBe(0); - expect(result.overallStats.creating).toBe(0); - expect(result.overallStats.unhealthy).toBe(0); - }); - }); -}); From b8931c71ccbfa6aaddcd2c4bc3d9260b755df484 Mon Sep 17 00:00:00 2001 From: Lasserich Date: Thu, 18 Sep 2025 15:36:00 +0200 Subject: [PATCH 36/37] feat: enable clean code structure, enable secondary labels --- .../ComponentCard/BaseCard/BaseCard.tsx | 2 +- .../CrossplaneCard/CrossplaneCard.tsx | 114 +++++++++++------- .../CrossplaneCard/crossplaneCalculations.ts | 40 +++--- .../ComponentCard/ESOCard/ESOCard.tsx | 9 +- .../ComponentCard/ESOCard/esoCalculations.ts | 2 +- .../ComponentCard/FluxCard/FluxCard.tsx | 20 ++- .../FluxCard/fluxCalculations.ts | 31 ++--- .../ComponentCard/KyvernoCard/KyvernoCard.tsx | 11 +- .../KyvernoCard/kyvernoCalculations.ts | 2 +- .../BentoGrid/MembersCard/MembersCard.tsx | 11 +- .../MembersCard/membersCalculations.ts | 2 +- .../MultiPercentageBar.module.css | 79 ++++++++---- .../MultiPercentageBar/MultiPercentageBar.tsx | 57 +++++++-- src/spaces/mcp/pages/McpPage.tsx | 7 +- src/spaces/mcp/pages/useCardData.ts | 30 ----- .../mcp/views/CrossplaneDetailsTable.tsx | 2 +- .../{McpBentoLayout.tsx => DefaultBento.tsx} | 24 +--- ...sDetailsTable.tsx => FluxDetailsTable.tsx} | 2 +- src/spaces/mcp/views/MembersDetailsTable.tsx | 2 +- src/views/Login.tsx | 4 +- 20 files changed, 260 insertions(+), 191 deletions(-) delete mode 100644 src/spaces/mcp/pages/useCardData.ts rename src/spaces/mcp/views/{McpBentoLayout.tsx => DefaultBento.tsx} (92%) rename src/spaces/mcp/views/{GitOpsDetailsTable.tsx => FluxDetailsTable.tsx} (99%) diff --git a/src/components/BentoGrid/ComponentCard/BaseCard/BaseCard.tsx b/src/components/BentoGrid/ComponentCard/BaseCard/BaseCard.tsx index d4a5a340..7b6e8ceb 100644 --- a/src/components/BentoGrid/ComponentCard/BaseCard/BaseCard.tsx +++ b/src/components/BentoGrid/ComponentCard/BaseCard/BaseCard.tsx @@ -80,4 +80,4 @@ export const BaseCard = ({
); -}; \ No newline at end of file +}; diff --git a/src/components/BentoGrid/ComponentCard/CrossplaneCard/CrossplaneCard.tsx b/src/components/BentoGrid/ComponentCard/CrossplaneCard/CrossplaneCard.tsx index 7cdedd50..90c89599 100644 --- a/src/components/BentoGrid/ComponentCard/CrossplaneCard/CrossplaneCard.tsx +++ b/src/components/BentoGrid/ComponentCard/CrossplaneCard/CrossplaneCard.tsx @@ -1,4 +1,4 @@ -import { useMemo } from 'react'; +import { useMemo, useState } from 'react'; import { useTranslation } from 'react-i18next'; import { BaseCard } from '../BaseCard/BaseCard'; import { MultiPercentageBar } from '../../MultiPercentageBar/MultiPercentageBar'; @@ -30,6 +30,11 @@ export const CrossplaneCard = ({ size = 'medium', }: CrossplaneCardProps) => { const { t } = useTranslation(); + const [isProviderChartHovered, setIsProviderChartHovered] = useState(false); + const [isHealthChartHovered, setIsHealthChartHovered] = useState(false); + + // Show labels continuously only when explicitly expanded (coupled to expansion button) + const shouldShowLabelsAlways = expanded; // Fetch provider configs for distribution calculation const { data: providerConfigsList } = useProvidersConfigResource({ @@ -38,7 +43,7 @@ export const CrossplaneCard = ({ const crossplaneState = useMemo( () => calculateCrossplaneSegments(allItems, isLoading, error, enabled, t), - [allItems, isLoading, error, enabled, t] + [allItems, isLoading, error, enabled, t], ); // Calculate provider distribution for secondary bar @@ -48,7 +53,6 @@ export const CrossplaneCard = ({ ); const secondarySegments = providerDistribution.segments; - const secondaryLabel = `${t('common.providers')} ${providerDistribution.totalProviders}`; return (
- -
- - {/* Secondary chart container - rendered below the primary chart */} - {(size === 'medium' || size === 'large' || size === 'extra-large') && secondarySegments && ( -
setIsProviderChartHovered(true)} + onMouseLeave={() => setIsProviderChartHovered(false)} > ({ + ...segment, + segmentLabel: `${segment.label} (${segment.count})`, // Provider name (count) - percentage handled by component + segmentLabelColor: 'white' + }))} className={styles.progressBar} showOnlyNonZero={true} barWidth={size === 'medium' ? '80%' : '90%'} @@ -124,10 +99,11 @@ export const CrossplaneCard = ({ labelConfig={{ position: 'above', displayMode: 'primary', - showPercentage: false, - primaryLabelText: size === 'medium' ? secondaryLabel?.replace(/\s+\d+%?$/, '') || secondaryLabel : secondaryLabel, + showPercentage: false, // Don't show percentage in primary label, only in segments + primaryLabelText: t('common.providers'), + primaryLabelValue: providerDistribution.totalProviders, hideWhenSingleFull: false, - fontWeight: 'bold', + fontWeight: 'bold', }} animationConfig={{ enableWave: size !== 'medium', @@ -135,12 +111,58 @@ export const CrossplaneCard = ({ duration: size === 'medium' ? 0 : 400, staggerDelay: size === 'medium' ? 0 : 100, }} - showSegmentLabels={secondaryLabel?.includes('Providers')} + showSegmentLabels={false} + showSegmentLabelsOnHover={true} // Show segment labels only on hover + showLabels={shouldShowLabelsAlways || isProviderChartHovered} // Show continuously when expanded/large or on hover minSegmentWidthForLabel={12} />
+
+ + {/* Secondary chart container - rendered below the primary chart */} + {(size === 'medium' || size === 'large' || size === 'extra-large') && secondarySegments && ( +
+
setIsHealthChartHovered(true)} + onMouseLeave={() => setIsHealthChartHovered(false)} + > + ({ + ...segment, + segmentLabel: `${segment.label} (${segment.count})`, // Status (count) - percentage handled by component + segmentLabelColor: 'white' + }))} + className={styles.progressBar} + showOnlyNonZero={crossplaneState.showOnlyNonZero ?? true} + isHealthy={crossplaneState.isHealthy} + barWidth={size === 'medium' ? '80%' : '90%'} + barHeight={size === 'medium' ? '16px' : '18px'} + barMaxWidth={size === 'medium' ? '500px' : 'none'} + labelConfig={{ + position: 'above', + displayMode: 'primary', + showPercentage: size === 'medium' ? false : crossplaneState.showPercentage, // Restore original logic + showCount: false, + primaryLabelText: 'Health', + primaryLabelValue: undefined, + hideWhenSingleFull: false, + fontWeight: 'bold', + }} + animationConfig={{ + enableWave: size !== 'medium', + enableTransitions: size !== 'medium', + duration: size === 'medium' ? 0 : 400, + staggerDelay: size === 'medium' ? 0 : 100, + }} + showSegmentLabels={false} + showSegmentLabelsOnHover={true} + showLabels={shouldShowLabelsAlways || isHealthChartHovered} // Show continuously when expanded/large or on hover + minSegmentWidthForLabel={12} + /> +
+
)}
); -}; \ No newline at end of file +}; diff --git a/src/components/BentoGrid/ComponentCard/CrossplaneCard/crossplaneCalculations.ts b/src/components/BentoGrid/ComponentCard/CrossplaneCard/crossplaneCalculations.ts index b1878a87..62fb638a 100644 --- a/src/components/BentoGrid/ComponentCard/CrossplaneCard/crossplaneCalculations.ts +++ b/src/components/BentoGrid/ComponentCard/CrossplaneCard/crossplaneCalculations.ts @@ -96,8 +96,18 @@ export const calculateCrossplaneSegments = ( return { segments: [ { percentage: healthyPercentage, color: HINT_COLORS.healthy, label: t('common.healthy'), count: healthyCount }, - { percentage: creatingPercentage, color: HINT_COLORS.creating, label: t('common.creating'), count: creatingCount }, - { percentage: unhealthyPercentage, color: HINT_COLORS.unhealthy, label: t('common.unhealthy'), count: unhealthyCount }, + { + percentage: creatingPercentage, + color: HINT_COLORS.creating, + label: t('common.creating'), + count: creatingCount, + }, + { + percentage: unhealthyPercentage, + color: HINT_COLORS.unhealthy, + label: t('common.unhealthy'), + count: unhealthyCount, + }, ], label: t('Hints.CrossplaneHint.healthy'), showPercentage: true, @@ -137,28 +147,26 @@ export const calculateCrossplaneHealthSegments = ( } // Count health states for all Crossplane managed resources - const healthyCounts = allItems.filter( - (item) => item?.status?.conditions?.some( - (condition: any) => condition.type === 'Ready' && condition.status === 'True' - ) + const healthyCounts = allItems.filter((item) => + item?.status?.conditions?.some((condition: any) => condition.type === 'Ready' && condition.status === 'True'), ).length; const total = allItems.length; const healthyPercentage = Math.round((healthyCounts / total) * 100); const remainingPercentage = 100 - healthyPercentage; - + const segments = [ - { - percentage: healthyPercentage, - color: '#38d4bc', + { + percentage: healthyPercentage, + color: '#38d4bc', label: t('common.healthy'), - count: healthyCounts + count: healthyCounts, }, - remainingPercentage > 0 && { - percentage: remainingPercentage, - color: HINT_COLORS.inactive, + remainingPercentage > 0 && { + percentage: remainingPercentage, + color: HINT_COLORS.inactive, label: t('common.remaining'), - count: total - healthyCounts + count: total - healthyCounts, }, ].filter(Boolean) as { percentage: number; color: string; label: string; count: number }[]; @@ -208,4 +216,4 @@ export const calculateProviderDistribution = (items: ManagedResourceItem[], prov segments, totalProviders: segments.length, }; -}; \ No newline at end of file +}; diff --git a/src/components/BentoGrid/ComponentCard/ESOCard/ESOCard.tsx b/src/components/BentoGrid/ComponentCard/ESOCard/ESOCard.tsx index 4642bc22..d1fd4cea 100644 --- a/src/components/BentoGrid/ComponentCard/ESOCard/ESOCard.tsx +++ b/src/components/BentoGrid/ComponentCard/ESOCard/ESOCard.tsx @@ -32,7 +32,7 @@ export const ESOCard = ({ const esoState = useMemo( () => calculateESOSegments(allItems, isLoading, error, enabled, t), - [allItems, isLoading, error, enabled, t] + [allItems, isLoading, error, enabled, t], ); return ( @@ -43,9 +43,9 @@ export const ESOCard = ({ iconAlt="ESO" version={version} enabled={enabled} - onClick={onClick} expanded={expanded} size={size} + onClick={onClick} >
); -}; \ No newline at end of file +}; diff --git a/src/components/BentoGrid/ComponentCard/ESOCard/esoCalculations.ts b/src/components/BentoGrid/ComponentCard/ESOCard/esoCalculations.ts index 81580bbb..eb56123d 100644 --- a/src/components/BentoGrid/ComponentCard/ESOCard/esoCalculations.ts +++ b/src/components/BentoGrid/ComponentCard/ESOCard/esoCalculations.ts @@ -80,4 +80,4 @@ export const calculateESOSegments = ( isHealthy: false, showOnlyNonZero: true, }; -}; \ No newline at end of file +}; diff --git a/src/components/BentoGrid/ComponentCard/FluxCard/FluxCard.tsx b/src/components/BentoGrid/ComponentCard/FluxCard/FluxCard.tsx index e2e0b8a8..b2f7977a 100644 --- a/src/components/BentoGrid/ComponentCard/FluxCard/FluxCard.tsx +++ b/src/components/BentoGrid/ComponentCard/FluxCard/FluxCard.tsx @@ -36,7 +36,7 @@ export const FluxCard = ({ const fluxState = useMemo( () => calculateGitOpsSegments(allItems, isLoading, error, enabled, t), - [allItems, isLoading, error, enabled, t] + [allItems, isLoading, error, enabled, t], ); return ( @@ -47,9 +47,9 @@ export const FluxCard = ({ iconAlt="Flux" version={version} enabled={enabled} - onClick={onClick} expanded={expanded} size={size} + onClick={onClick} >
+
); -}; \ No newline at end of file +}; diff --git a/src/components/BentoGrid/ComponentCard/FluxCard/fluxCalculations.ts b/src/components/BentoGrid/ComponentCard/FluxCard/fluxCalculations.ts index 123d3004..6e86e267 100644 --- a/src/components/BentoGrid/ComponentCard/FluxCard/fluxCalculations.ts +++ b/src/components/BentoGrid/ComponentCard/FluxCard/fluxCalculations.ts @@ -82,7 +82,12 @@ export const calculateGitOpsSegments = ( return { segments: [ { percentage: progressValue, color: HINT_COLORS.flux, label: t('common.progress'), count: fluxLabelCount }, - { percentage: restPercentage, color: HINT_COLORS.inactive, label: t('common.remaining'), count: totalCount - fluxLabelCount }, + { + percentage: restPercentage, + color: HINT_COLORS.inactive, + label: t('common.remaining'), + count: totalCount - fluxLabelCount, + }, ], label: t('Hints.GitOpsHint.managed'), showPercentage: true, @@ -137,28 +142,26 @@ export const calculateFluxHealthSegments = ( } // Count health states - const healthyCounts = fluxManagedItems.filter( - (item) => item?.status?.conditions?.some( - (condition: any) => condition.type === 'Ready' && condition.status === 'True' - ) + const healthyCounts = fluxManagedItems.filter((item) => + item?.status?.conditions?.some((condition: any) => condition.type === 'Ready' && condition.status === 'True'), ).length; const total = fluxManagedItems.length; const healthyPercentage = Math.round((healthyCounts / total) * 100); const remainingPercentage = 100 - healthyPercentage; - + const segments = [ - { - percentage: healthyPercentage, + { + percentage: healthyPercentage, color: HINT_COLORS.flux, label: t('common.healthy'), - count: healthyCounts + count: healthyCounts, }, - remainingPercentage > 0 && { - percentage: remainingPercentage, - color: HINT_COLORS.inactive, + remainingPercentage > 0 && { + percentage: remainingPercentage, + color: HINT_COLORS.inactive, label: t('common.remaining'), - count: total - healthyCounts + count: total - healthyCounts, }, ].filter(Boolean) as { percentage: number; color: string; label: string; count: number }[]; @@ -167,4 +170,4 @@ export const calculateFluxHealthSegments = ( healthyPercentage, isInactive: false, }; -}; \ No newline at end of file +}; diff --git a/src/components/BentoGrid/ComponentCard/KyvernoCard/KyvernoCard.tsx b/src/components/BentoGrid/ComponentCard/KyvernoCard/KyvernoCard.tsx index 5fe5cc12..f5c49487 100644 --- a/src/components/BentoGrid/ComponentCard/KyvernoCard/KyvernoCard.tsx +++ b/src/components/BentoGrid/ComponentCard/KyvernoCard/KyvernoCard.tsx @@ -32,7 +32,7 @@ export const KyvernoCard = ({ const kyvernoState = useMemo( () => calculateKyvernoSegments(allItems, isLoading, error, enabled, t), - [allItems, isLoading, error, enabled, t] + [allItems, isLoading, error, enabled, t], ); return ( @@ -44,9 +44,9 @@ export const KyvernoCard = ({ iconStyle={{ borderRadius: '0' }} version={version} enabled={enabled} - onClick={onClick} expanded={expanded} size={size} + onClick={onClick} >
); -}; \ No newline at end of file +}; diff --git a/src/components/BentoGrid/ComponentCard/KyvernoCard/kyvernoCalculations.ts b/src/components/BentoGrid/ComponentCard/KyvernoCard/kyvernoCalculations.ts index f304b123..37936038 100644 --- a/src/components/BentoGrid/ComponentCard/KyvernoCard/kyvernoCalculations.ts +++ b/src/components/BentoGrid/ComponentCard/KyvernoCard/kyvernoCalculations.ts @@ -80,4 +80,4 @@ export const calculateKyvernoSegments = ( isHealthy: false, showOnlyNonZero: true, }; -}; \ No newline at end of file +}; diff --git a/src/components/BentoGrid/MembersCard/MembersCard.tsx b/src/components/BentoGrid/MembersCard/MembersCard.tsx index cb3d77b4..4d1fec8f 100644 --- a/src/components/BentoGrid/MembersCard/MembersCard.tsx +++ b/src/components/BentoGrid/MembersCard/MembersCard.tsx @@ -31,7 +31,7 @@ export const MembersCard = ({ const membersState = useMemo( () => calculateMembersSegments(allItems, isLoading, error, enabled, t), - [allItems, isLoading, error, enabled, t] + [allItems, isLoading, error, enabled, t], ); return ( @@ -43,9 +43,9 @@ export const MembersCard = ({ iconStyle={{ borderRadius: '0', width: '45px', height: '45px' }} version={version} enabled={enabled} - onClick={onClick} expanded={expanded} size={size} + onClick={onClick} >
); -}; \ No newline at end of file +}; diff --git a/src/components/BentoGrid/MembersCard/membersCalculations.ts b/src/components/BentoGrid/MembersCard/membersCalculations.ts index 94125f9b..db11cef9 100644 --- a/src/components/BentoGrid/MembersCard/membersCalculations.ts +++ b/src/components/BentoGrid/MembersCard/membersCalculations.ts @@ -94,4 +94,4 @@ export const calculateMembersSegments = ( isHealthy: false, // Changed to false to prevent green styling showOnlyNonZero: true, }; -}; \ No newline at end of file +}; diff --git a/src/components/BentoGrid/MultiPercentageBar/MultiPercentageBar.module.css b/src/components/BentoGrid/MultiPercentageBar/MultiPercentageBar.module.css index 60b7cc34..bf323745 100644 --- a/src/components/BentoGrid/MultiPercentageBar/MultiPercentageBar.module.css +++ b/src/components/BentoGrid/MultiPercentageBar/MultiPercentageBar.module.css @@ -7,7 +7,7 @@ --gap: 2px; --border-radius: 6px; --label-font-size: 0.875rem; - --background-color: var(--sapBackgroundColor, #fafafa); + --background-color: transparent; display: flex; flex-direction: column; @@ -63,17 +63,17 @@ } .label.healthy { - color: green; + color: var(--healthy-color, #28a745); font-weight: 700; } .percentage.healthy { - color: green; + color: var(--healthy-color, #28a745); font-weight: 400 !important; } .count.healthy { - color: green; + color: var(--healthy-color, #28a745); font-weight: 400 !important; } @@ -92,6 +92,21 @@ border-radius: 0; padding: 2px; overflow: hidden; + position: relative; +} + +/* Animated reveal overlay for continuous animation */ +.barContainer::before { + content: ''; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: var(--background-color, transparent); + z-index: 1; + transform: translateX(-100%); + animation: revealBar var(--animation-duration) cubic-bezier(0.4, 0, 0.2, 1) forwards; } .barContainer > :first-child { border-top-left-radius: var(--border-radius); @@ -114,20 +129,8 @@ /* Smooth transitions for flex changes */ transition: flex var(--animation-duration) cubic-bezier(0.4, 0, 0.2, 1); - - /* Initial state for animation */ - transform: scaleX(0); - transform-origin: left; - animation: growWidth var(--animation-duration) cubic-bezier(0.4, 0, 0.2, 1) forwards; } -/* Stagger the segment animations */ -.segment:nth-child(1) { animation-delay: 0ms; } -.segment:nth-child(2) { animation-delay: 100ms; } -.segment:nth-child(3) { animation-delay: 200ms; } -.segment:nth-child(4) { animation-delay: 300ms; } -.segment:nth-child(5) { animation-delay: 400ms; } - /* Wave animation overlay */ .waveOverlay { position: absolute; @@ -191,20 +194,49 @@ } } +@keyframes revealBar { + from { + transform: translateX(0); + } + to { + transform: translateX(100%); + } +} + /* Segment label inside the bar */ .segmentLabel { position: absolute; top: 50%; - left: 8px; + right: 6px; transform: translateY(-50%); - color: white; - font-size: 0.75rem; - font-weight: 500; + color: var(--segment-label-color, white); + font-size: var(--segment-label-font-size, 0.75rem); + font-weight: var(--segment-label-font-weight, 500); text-shadow: 0 1px 2px rgba(0, 0, 0, 0.3); white-space: nowrap; pointer-events: none; z-index: 2; opacity: 0; + transition: opacity 0.3s ease; +} + +/* Show segment labels on card hover */ +.showLabelsOnHover .segmentLabel { + opacity: 0; +} + +/* This will be triggered by parent card hover */ +.showLabelsOnHover.showLabels .segmentLabel { + opacity: 1; +} + +/* Direct control for showing labels */ +.showLabels .segmentLabel { + opacity: 1; +} + +/* Default behavior - labels show with animation */ +.container:not(.showLabelsOnHover) .segmentLabel { animation: fadeInLabel calc(var(--animation-duration) * 1.5) ease-out forwards; animation-delay: calc(var(--animation-duration) * 0.5); } @@ -227,6 +259,11 @@ animation: none !important; } +.noAnimation .barContainer::before { + animation: none !important; + transform: translateX(100%) !important; +} + .noAnimation .segment { animation: none !important; transform: scaleX(1) !important; @@ -245,7 +282,7 @@ /* Theme Support */ [data-ui5-theme-root*="dark"] .container, [data-ui5-theme*="dark"] .container { - --background-color: #2a2a2a; + --background-color: transparent; } [data-ui5-theme-root*="dark"] .label, diff --git a/src/components/BentoGrid/MultiPercentageBar/MultiPercentageBar.tsx b/src/components/BentoGrid/MultiPercentageBar/MultiPercentageBar.tsx index d66cfe75..9531f0c2 100644 --- a/src/components/BentoGrid/MultiPercentageBar/MultiPercentageBar.tsx +++ b/src/components/BentoGrid/MultiPercentageBar/MultiPercentageBar.tsx @@ -10,6 +10,8 @@ interface PercentageSegment { color: string; label: string; count?: number; // Optional count for displaying inside segments + segmentLabel?: string; // Optional label to show inside the segment + segmentLabelColor?: string; // Optional color for the segment label } type LabelPosition = 'above' | 'inside' | 'none'; @@ -19,14 +21,18 @@ interface LabelConfig { position: LabelPosition; displayMode: LabelDisplayMode; showPercentage?: boolean; + showSegmentPercentage?: boolean; // Control segment label percentages independently showCount?: boolean; customLabels?: string[]; // Custom labels to show when displayMode is 'custom' primaryLabelText?: string; // Override primary label text + primaryLabelValue?: string | number; // Arbitrary number/percentage to show after primary label fontSize?: string; fontWeight?: 'normal' | 'bold' | number; textColor?: string; - healthyTextColor?: string; // Color for healthy state + healthyTextColor?: string; // Arbitrary color for healthy state (replaces hardcoded green) hideWhenSingleFull?: boolean; // Hide primary label when single segment is 100% + segmentLabelFontSize?: string; // Font size for segment labels + segmentLabelFontWeight?: 'normal' | 'bold' | number; // Font weight for segment labels } interface ColorConfig { @@ -62,6 +68,8 @@ interface MultiPercentageBarProps { animationConfig?: AnimationConfig; showSegmentLabels?: boolean; + showSegmentLabelsOnHover?: boolean; + showLabels?: boolean; minSegmentWidthForLabel?: number; } @@ -81,6 +89,8 @@ export const MultiPercentageBar: React.FC = ({ colorConfig, animationConfig, showSegmentLabels = false, + showSegmentLabelsOnHover = false, + showLabels = false, minSegmentWidthForLabel = 15, }) => { const mergedLabelConfig: LabelConfig = useMemo( @@ -88,10 +98,14 @@ export const MultiPercentageBar: React.FC = ({ position: 'above', // Always show above labels, segment labels are controlled separately displayMode: 'primary', showPercentage: false, + showSegmentPercentage: true, // Default to showing percentages in segments showCount: false, fontSize: '0.875rem', fontWeight: 'normal', hideWhenSingleFull: false, + healthyTextColor: '#28a745', // Default green, but now customizable + segmentLabelFontSize: '0.75rem', + segmentLabelFontWeight: 'normal', ...labelConfig, }), [labelConfig], @@ -153,6 +167,7 @@ export const MultiPercentageBar: React.FC = ({ text: displayText, percentage: mergedLabelConfig.showPercentage ? primaryPercentage : undefined, count: mergedLabelConfig.showCount ? processedSegments[0]?.count : undefined, + customValue: mergedLabelConfig.primaryLabelValue, isHealthy: isHealthy && !isRolesLabel, }); } @@ -225,6 +240,19 @@ export const MultiPercentageBar: React.FC = ({ ({labelItem.count}) )} + {labelItem.customValue !== undefined && ( + + {labelItem.customValue} + + )}
))}
@@ -233,7 +261,7 @@ export const MultiPercentageBar: React.FC = ({ return (
= ({ '--gap': gap, '--border-radius': borderRadius, '--label-font-size': mergedLabelConfig.fontSize || '0.875rem', + '--healthy-color': mergedLabelConfig.healthyTextColor || '#28a745', ...(backgroundColor && { '--background-color': backgroundColor }), ...(mergedAnimationConfig.duration === 0 && { animation: 'none', @@ -276,16 +305,26 @@ export const MultiPercentageBar: React.FC = ({ {mergedAnimationConfig.enableWave &&
} {/* Segment label inside the bar */} - {showSegmentLabels && segment.percentage >= (minSegmentWidthForLabel || 15) && ( + {(showSegmentLabels || segment.segmentLabel) && segment.percentage >= (minSegmentWidthForLabel || 15) && ( - {mergedLabelConfig.showCount && segment.count ? `${segment.label} ${segment.count}` : segment.label} - {mergedLabelConfig.showPercentage && ` ${segment.percentage}%`} + {segment.segmentLabel || + (mergedLabelConfig.showCount && segment.count + ? `${segment.label} ${segment.count}` + : segment.label) + } + {mergedLabelConfig.showSegmentPercentage && ` ${segment.percentage}%`} )}
diff --git a/src/spaces/mcp/pages/McpPage.tsx b/src/spaces/mcp/pages/McpPage.tsx index bdd84852..7d279e99 100644 --- a/src/spaces/mcp/pages/McpPage.tsx +++ b/src/spaces/mcp/pages/McpPage.tsx @@ -21,12 +21,11 @@ import { NotFoundBanner } from '../../../components/Ui/NotFoundBanner/NotFoundBa import { ManagedResourcesRequest } from '../../../lib/api/types/crossplane/listManagedResources'; import { resourcesInterval } from '../../../lib/shared/constants'; import { useMemo } from 'react'; -import { useMcpBentoLayout } from '../views/McpBentoLayout'; +import { useMcpBentoLayout } from '../views/DefaultBento.tsx'; import { CrossplaneDetailsTable } from '../views/CrossplaneDetailsTable'; -import { GitOpsDetailsTable } from '../views/GitOpsDetailsTable'; +import { GitOpsDetailsTable } from '../views/FluxDetailsTable.tsx'; import { MembersDetailsTable } from '../views/MembersDetailsTable'; - export default function McpPage() { const { projectName, workspaceName, controlPlaneName } = useParams(); const { t } = useTranslation(); @@ -91,7 +90,7 @@ function McpPageContent({ mcp, controlPlaneName }: { mcp: any; controlPlaneName: // Prepare member items from role bindings const memberItems = useMemo( () => (mcp?.spec?.authorization?.roleBindings || []).map((rb: any) => ({ role: rb.role })), - [mcp?.spec?.authorization?.roleBindings] + [mcp?.spec?.authorization?.roleBindings], ); // Use the Bento layout hook which manages expansion state internally diff --git a/src/spaces/mcp/pages/useCardData.ts b/src/spaces/mcp/pages/useCardData.ts deleted file mode 100644 index d35b0cdc..00000000 --- a/src/spaces/mcp/pages/useCardData.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { useMemo } from 'react'; -import { ManagedResourceItem } from '../../../lib/shared/types'; - -// Utility function to flatten managed resources -const flattenManagedResources = (managedResources: any): ManagedResourceItem[] => { - if (!managedResources || !Array.isArray(managedResources)) return []; - - return managedResources - .filter((managedResource) => managedResource?.items) - .flatMap((managedResource) => managedResource.items || []); -}; - -export const useCardData = (managedResources: any, mcp: any) => { - // Flatten all managed resources once and pass to components - const allItems = useMemo( - () => flattenManagedResources(managedResources), - [managedResources], - ); - - // Prepare member items from role bindings - const memberItems = useMemo( - () => (mcp?.spec?.authorization?.roleBindings || []).map((rb: any) => ({ role: rb.role })), - [mcp?.spec?.authorization?.roleBindings] - ); - - return { - allItems, - memberItems, - }; -}; \ No newline at end of file diff --git a/src/spaces/mcp/views/CrossplaneDetailsTable.tsx b/src/spaces/mcp/views/CrossplaneDetailsTable.tsx index 4632ec3f..46b4bbc5 100644 --- a/src/spaces/mcp/views/CrossplaneDetailsTable.tsx +++ b/src/spaces/mcp/views/CrossplaneDetailsTable.tsx @@ -23,4 +23,4 @@ export function CrossplaneDetailsTable() {
); -} \ No newline at end of file +} diff --git a/src/spaces/mcp/views/McpBentoLayout.tsx b/src/spaces/mcp/views/DefaultBento.tsx similarity index 92% rename from src/spaces/mcp/views/McpBentoLayout.tsx rename to src/spaces/mcp/views/DefaultBento.tsx index bf76f3e5..36feb2ff 100644 --- a/src/spaces/mcp/views/McpBentoLayout.tsx +++ b/src/spaces/mcp/views/DefaultBento.tsx @@ -1,5 +1,5 @@ import { useState } from 'react'; -import { BentoGrid, BentoCard } from '../../../components/BentoGrid'; +import { BentoGrid, BentoCard } from '../../../components/BentoGrid/BentoGrid'; import { GraphCard } from '../../../components/BentoGrid/GraphCard/GraphCard'; import { CrossplaneCard } from '../../../components/BentoGrid/ComponentCard/CrossplaneCard/CrossplaneCard'; import { FluxCard } from '../../../components/BentoGrid/ComponentCard/FluxCard/FluxCard'; @@ -56,9 +56,7 @@ export function useMcpBentoLayout({ const bentoGrid = ( {/* Crossplane Card - always rendered but changes size/position */} {(!expandedCard || expandedCard === 'crossplane') && ( @@ -133,13 +131,8 @@ export function useMcpBentoLayout({ {/* Right side cards - only show when collapsed */} {!expandedCard && ( <> - {/* GitOps Card */} - + {/* Flux Card */} + {/* Members Card */} - +
); -} \ No newline at end of file +} diff --git a/src/spaces/mcp/views/MembersDetailsTable.tsx b/src/spaces/mcp/views/MembersDetailsTable.tsx index 9c632d5a..b582cdb5 100644 --- a/src/spaces/mcp/views/MembersDetailsTable.tsx +++ b/src/spaces/mcp/views/MembersDetailsTable.tsx @@ -34,4 +34,4 @@ export function MembersDetailsTable({ mcp }: MembersDetailsTableProps) {
); -} \ No newline at end of file +} diff --git a/src/views/Login.tsx b/src/views/Login.tsx index cb8f3366..4e7a3643 100644 --- a/src/views/Login.tsx +++ b/src/views/Login.tsx @@ -30,8 +30,8 @@ export default function LoginView() {
- - + + Logo
{t('Login.welcomeMessage')}
From 0573f8c99a21a33f120b4965a47d597a83ab5d08 Mon Sep 17 00:00:00 2001 From: Lasserich Date: Fri, 19 Sep 2025 14:32:33 +0200 Subject: [PATCH 37/37] feat: leave fine tuning for now --- public/{eso.png => eso_dark.png} | Bin public/eso_light.png | Bin 0 -> 18711 bytes public/locales/en.json | 6 +- .../ComponentCard/BaseCard/BaseCard.tsx | 41 ++++++-- .../CrossplaneCard/CrossplaneCard.tsx | 69 ++++++------- .../CrossplaneCard/crossplaneCalculations.ts | 12 +++ .../ComponentCard/ESOCard/ESOCard.module.css | 8 ++ .../ComponentCard/ESOCard/ESOCard.tsx | 38 ++++--- .../ComponentCard/FluxCard/FluxCard.tsx | 78 +++++++++++---- .../FluxCard/fluxCalculations.ts | 84 ++++++++++++++++ .../KyvernoCard/KyvernoCard.module.css | 8 ++ .../ComponentCard/KyvernoCard/KyvernoCard.tsx | 30 +++--- .../MembersCard/MembersCard.module.css | 9 ++ .../BentoGrid/MembersCard/MembersCard.tsx | 93 +++++++++++++++--- .../MembersCard/membersCalculations.ts | 31 ++++-- .../MultiPercentageBar.module.css | 46 +++++++++ .../MultiPercentageBar/MultiPercentageBar.tsx | 82 +++++++++++++-- src/components/ControlPlane/FluxList.tsx | 2 +- src/spaces/mcp/views/DefaultBento.tsx | 2 + 19 files changed, 520 insertions(+), 119 deletions(-) rename public/{eso.png => eso_dark.png} (100%) create mode 100644 public/eso_light.png diff --git a/public/eso.png b/public/eso_dark.png similarity index 100% rename from public/eso.png rename to public/eso_dark.png diff --git a/public/eso_light.png b/public/eso_light.png new file mode 100644 index 0000000000000000000000000000000000000000..7cb6bba7c96d77e9a71e89afa3ae3e35c8ad79e5 GIT binary patch literal 18711 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 void; expanded?: boolean; size?: 'small' | 'medium' | 'large' | 'extra-large'; @@ -26,6 +29,7 @@ export const BaseCard = ({ iconStyle, version, enabled, + cardState = 'active', onClick, expanded = false, size = 'medium', @@ -33,12 +37,31 @@ export const BaseCard = ({ }: BaseCardProps) => { const { t } = useTranslation(); + // Determine if card should be interactive + const isInteractive = enabled && cardState === 'active'; + + // Determine version display logic + const shouldShowVersion = enabled && cardState === 'active' && version; + const versionInSubtitle = size === 'small' && shouldShowVersion; + const versionInAdditionalText = !versionInSubtitle && shouldShowVersion; + + // Determine subtitle content + const getSubtitleContent = () => { + if (size === 'small') { + if (cardState === 'inactive') return t('common.inactive'); + if (cardState === 'coming-soon') return t('common.comingSoon'); + if (versionInSubtitle) return `v${version}`; + return undefined; + } + return subtitle; + }; + return (
} titleText={title} - subtitleText={size === 'small' ? undefined : subtitle} - interactive={enabled} + subtitleText={getSubtitleContent()} + interactive={isInteractive} /> } className={cx(styles.card, { - [styles.disabled]: !enabled, - [styles.clickable]: !!onClick && enabled, + [styles.disabled]: !enabled || cardState !== 'active', + [styles.clickable]: !!onClick && isInteractive, })} - onClick={enabled ? onClick : undefined} + onClick={isInteractive ? onClick : undefined} > - {!enabled &&
} + {(!enabled || cardState !== 'active') &&
} - {onClick && enabled && ( + {onClick && isInteractive && (