feat(ws): Notebooks 2.0 // Frontend // Workspace details // Applies MUI Theming (#185)

Signed-off-by: Jenny <32821331+jenny-s51@users.noreply.github.com>

fix tab content padding

apply horizontal variant to description list, add dividers to match KF central UI

update spacer size

Signed-off-by: Jenny <32821331+jenny-s51@users.noreply.github.com>

update font size for description list term
This commit is contained in:
Jenny 2025-01-24 13:46:21 -05:00 committed by GitHub
parent 8ceb835f1e
commit 6fe77160d0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 49 additions and 7 deletions

View File

@ -9,6 +9,8 @@ import {
Tab, Tab,
TabTitleText, TabTitleText,
Title, Title,
TabContentBody,
TabContent,
} from '@patternfly/react-core'; } from '@patternfly/react-core';
import { Workspace } from '~/shared/types'; import { Workspace } from '~/shared/types';
import { WorkspaceDetailsOverview } from '~/app/pages/Workspaces/Details/WorkspaceDetailsOverview'; import { WorkspaceDetailsOverview } from '~/app/pages/Workspaces/Details/WorkspaceDetailsOverview';
@ -37,7 +39,7 @@ export const WorkspaceDetails: React.FunctionComponent<WorkspaceDetailsProps> =
}; };
return ( return (
<DrawerPanelContent isResizable defaultSize="50%"> <DrawerPanelContent>
<DrawerHead> <DrawerHead>
<Title headingLevel="h6">{workspace.name}</Title> <Title headingLevel="h6">{workspace.name}</Title>
<WorkspaceDetailsActions onEditClick={onEditClick} onDeleteClick={onDeleteClick} /> <WorkspaceDetailsActions onEditClick={onEditClick} onDeleteClick={onDeleteClick} />
@ -48,20 +50,30 @@ export const WorkspaceDetails: React.FunctionComponent<WorkspaceDetailsProps> =
<DrawerPanelBody> <DrawerPanelBody>
<Tabs activeKey={activeTabKey} onSelect={handleTabClick}> <Tabs activeKey={activeTabKey} onSelect={handleTabClick}>
<Tab eventKey={0} title={<TabTitleText>Overview</TabTitleText>} aria-label="Overview"> <Tab eventKey={0} title={<TabTitleText>Overview</TabTitleText>} aria-label="Overview">
<TabContent id="overviewSectionBodyPadding">
<TabContentBody hasPadding>
<WorkspaceDetailsOverview workspace={workspace} /> <WorkspaceDetailsOverview workspace={workspace} />
</TabContentBody>
</TabContent>
</Tab> </Tab>
<Tab eventKey={1} title={<TabTitleText>Activity</TabTitleText>} aria-label="Activity"> <Tab eventKey={1} title={<TabTitleText>Activity</TabTitleText>} aria-label="Activity">
Activity <TabContent id="activitySectionBodyPadding">
<TabContentBody hasPadding>Activity</TabContentBody>
</TabContent>
</Tab> </Tab>
<Tab eventKey={2} title={<TabTitleText>Logs</TabTitleText>} aria-label="Logs"> <Tab eventKey={2} title={<TabTitleText>Logs</TabTitleText>} aria-label="Logs">
Logs <TabContent id="logsSectionBodyPadding">
<TabContentBody hasPadding>Logs</TabContentBody>
</TabContent>
</Tab> </Tab>
<Tab <Tab
eventKey={3} eventKey={3}
title={<TabTitleText>Pod template</TabTitleText>} title={<TabTitleText>Pod template</TabTitleText>}
aria-label="Pod template" aria-label="Pod template"
> >
Pod template <TabContent id="podTemplateBodyPadding">
<TabContentBody hasPadding>Pod template</TabContentBody>
</TabContent>
</Tab> </Tab>
</Tabs> </Tabs>
</DrawerPanelBody> </DrawerPanelBody>

View File

@ -4,6 +4,7 @@ import {
DescriptionListTerm, DescriptionListTerm,
DescriptionListGroup, DescriptionListGroup,
DescriptionListDescription, DescriptionListDescription,
Divider,
} from '@patternfly/react-core'; } from '@patternfly/react-core';
import { Workspace } from '~/shared/types'; import { Workspace } from '~/shared/types';
@ -14,24 +15,28 @@ type WorkspaceDetailsOverviewProps = {
export const WorkspaceDetailsOverview: React.FunctionComponent<WorkspaceDetailsOverviewProps> = ({ export const WorkspaceDetailsOverview: React.FunctionComponent<WorkspaceDetailsOverviewProps> = ({
workspace, workspace,
}) => ( }) => (
<DescriptionList> <DescriptionList isHorizontal>
<DescriptionListGroup> <DescriptionListGroup>
<DescriptionListTerm>Name</DescriptionListTerm> <DescriptionListTerm>Name</DescriptionListTerm>
<DescriptionListDescription>{workspace.name}</DescriptionListDescription> <DescriptionListDescription>{workspace.name}</DescriptionListDescription>
</DescriptionListGroup> </DescriptionListGroup>
<Divider />
<DescriptionListGroup> <DescriptionListGroup>
<DescriptionListTerm>Kind</DescriptionListTerm> <DescriptionListTerm>Kind</DescriptionListTerm>
<DescriptionListDescription>{workspace.kind}</DescriptionListDescription> <DescriptionListDescription>{workspace.kind}</DescriptionListDescription>
</DescriptionListGroup> </DescriptionListGroup>
<Divider />
<DescriptionListGroup> <DescriptionListGroup>
<DescriptionListTerm>Labels</DescriptionListTerm> <DescriptionListTerm>Labels</DescriptionListTerm>
<DescriptionListDescription> <DescriptionListDescription>
{workspace.podTemplate.podMetadata.labels.join(', ')} {workspace.podTemplate.podMetadata.labels.join(', ')}
</DescriptionListDescription> </DescriptionListDescription>
</DescriptionListGroup> </DescriptionListGroup>
<Divider />
<DescriptionListGroup> <DescriptionListGroup>
<DescriptionListTerm>Pod config</DescriptionListTerm> <DescriptionListTerm>Pod config</DescriptionListTerm>
<DescriptionListDescription>{workspace.options.podConfig}</DescriptionListDescription> <DescriptionListDescription>{workspace.options.podConfig}</DescriptionListDescription>
</DescriptionListGroup> </DescriptionListGroup>
<Divider />
</DescriptionList> </DescriptionList>
); );

View File

@ -375,7 +375,7 @@ export const Workspaces: React.FunctionComponent = () => {
); );
return ( return (
<Drawer isExpanded={selectedWorkspace != null}> <Drawer isInline isExpanded={selectedWorkspace != null}>
<DrawerContent panelContent={workspaceDetailsContent}> <DrawerContent panelContent={workspaceDetailsContent}>
<DrawerContentBody> <DrawerContentBody>
<PageSection isFilled> <PageSection isFilled>

View File

@ -23,6 +23,9 @@
--mui-button--LineHeight: 1.75; --mui-button--LineHeight: 1.75;
--mui-link-underlineColor: rgba(33, 150, 243, 0.4); --mui-link-underlineColor: rgba(33, 150, 243, 0.4);
// Drawer
--mui-drawer-BorderLeft: var(--mui-palette-grey-300);
// Menu item // Menu item
--mui-menu__item--PaddingBlockStart: 6px; --mui-menu__item--PaddingBlockStart: 6px;
--mui-menu__item--PaddingBlockEnd: 6px; --mui-menu__item--PaddingBlockEnd: 6px;
@ -175,10 +178,24 @@
--pf-v6-c-button--BackgroundColor: rgba(33, 150, 243, 0.04); --pf-v6-c-button--BackgroundColor: rgba(33, 150, 243, 0.04);
} }
.mui-theme .pf-v6-c-description-list {
--pf-v6-c-description-list--RowGap: var(--pf-t--global--spacer--gap--group-to-group--horizontal--compact);
}
.mui-theme .pf-v6-c-description-list__term {
font: var(--mui-font-subtitle2);
}
.mui-theme .pf-v6-c-description-list__text .pf-v6-l-split__item.pf-m-fill { .mui-theme .pf-v6-c-description-list__text .pf-v6-l-split__item.pf-m-fill {
align-content: center; align-content: center;
} }
.mui-theme .pf-v6-c-drawer {
--pf-v6-c-drawer--m-inline--m-expanded__panel--after--BackgroundColor: var(--mui-drawer-BorderLeft);
}
.mui-theme .pf-v6-c-form__group { .mui-theme .pf-v6-c-form__group {
position: relative; position: relative;
} }
@ -669,6 +686,13 @@
--pf-v6-c-tab-content__body--m-padding--PaddingInlineStart: var(--pf-t--global--spacer--lg); --pf-v6-c-tab-content__body--m-padding--PaddingInlineStart: var(--pf-t--global--spacer--lg);
} }
.pf-v6-c-tab-content__body.pf-m-padding {
--pf-v6-c-tab-content__body--PaddingInlineStart: 0px;
--pf-v6-c-tab-content__body--PaddingInlineEnd: 0px;
--pf-v6-c-tab-content__body--PaddingBlockStart: var(--mui-spacing-8px);
--pf-v6-c-tab-content__body--PaddingBlockEnd: var(--mui-spacing-8px);
}
.mui-theme .pf-v6-c-tabs { .mui-theme .pf-v6-c-tabs {
--pf-v6-c-tabs__link--hover--BackgroundColor: var(--mui-tabs__link--hover--BackgroundColor); --pf-v6-c-tabs__link--hover--BackgroundColor: var(--mui-tabs__link--hover--BackgroundColor);
--pf-v6-c-tabs__item--PaddingBlockStart: var(--mui-tabs__item--PaddingBlockStart); --pf-v6-c-tabs__item--PaddingBlockStart: var(--mui-tabs__item--PaddingBlockStart);
@ -760,6 +784,7 @@
} }
.mui-theme .pf-v6-c-page__main-container { .mui-theme .pf-v6-c-page__main-container {
--pf-v6-c-page__main-container--BorderWidth: 0px;
--pf-v6-c-page__main-container--BorderRadius: var(--mui-shape-borderRadius); --pf-v6-c-page__main-container--BorderRadius: var(--mui-shape-borderRadius);
box-shadow: var(--mui-shadows-1); box-shadow: var(--mui-shadows-1);
} }