style: page styles

This commit is contained in:
jialin
2024-06-26 10:39:03 +08:00
parent 2e30eb7012
commit 1fc415b6e6
24 changed files with 294 additions and 124 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 101 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 867 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 896 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 144 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 140 KiB

+5
View File
@@ -0,0 +1,5 @@
.cardWrapper {
border-radius: 20px;
background-color: var(--color-white-1);
box-shadow: var(--box-shadow-base);
}
+8
View File
@@ -0,0 +1,8 @@
import styles from './index.less';
const CardWrapper = (props: any) => {
const { children } = props;
return <div className={styles.cardWrapper}>{children}</div>;
};
export default CardWrapper;
+15 -4
View File
@@ -17,6 +17,12 @@ const BarChart: React.FC<BarChartProps> = (props) => {
direction: 'vertical', direction: 'vertical',
height, height,
group: true, group: true,
scale: {
x: {
type: 'band',
padding: 0.5
}
},
legend: { legend: {
color: { color: {
position: 'top', position: 'top',
@@ -27,7 +33,11 @@ const BarChart: React.FC<BarChartProps> = (props) => {
}, },
axis: { axis: {
x: { x: {
xAxis: true xAxis: true,
tick: false
},
y: {
tick: false
} }
}, },
title: { title: {
@@ -48,9 +58,10 @@ const BarChart: React.FC<BarChartProps> = (props) => {
}, },
style: { style: {
fill: '#54cc98', fill: 'linear-gradient(90deg,rgba(84, 204, 152,0.8) 0%,rgb(0, 168, 143,.7) 100%)',
radiusTopLeft: 8, radiusTopLeft: 12,
radiusTopRight: 8, radiusTopRight: 12,
align: 'center',
width: 30 width: 30
} }
}; };
+13
View File
@@ -16,6 +16,19 @@ const GaugeChart: React.FC<GaugeChartProps> = (props) => {
const config = { const config = {
width, width,
height, height,
box: {
padding: [0, 0, 0, 0],
style: {
padding: [0, 0, 0, 0]
}
},
guide: {
arc: {
style: {
lineWidth: 30
}
}
},
autoFit: true, autoFit: true,
data: { data: {
target, target,
+16 -8
View File
@@ -8,7 +8,7 @@ interface BarChartProps {
height?: number; height?: number;
} }
const BarChart: React.FC<BarChartProps> = (props) => { const BarChart: React.FC<BarChartProps> = (props) => {
const { data, xField, yField, title, height = 300 } = props; const { data, xField, yField, title, height } = props;
const config = { const config = {
data, data,
xField, xField,
@@ -25,9 +25,19 @@ const BarChart: React.FC<BarChartProps> = (props) => {
} }
} }
}, },
scale: {
x: {
type: 'band',
padding: 0.5
}
},
axis: { axis: {
x: { x: {
xAxis: true xAxis: true,
tick: false
},
y: {
tick: false
} }
}, },
title: { title: {
@@ -39,18 +49,16 @@ const BarChart: React.FC<BarChartProps> = (props) => {
split: { split: {
type: 'line', type: 'line',
line: { line: {
color: 'red',
style: { style: {
color: 'red',
lineDash: [4, 5] lineDash: [4, 5]
} }
} }
}, },
markBackground: {},
style: { style: {
fill: '#54cc98', fill: 'linear-gradient(180deg,rgba(84, 204, 152,0.8) 0%,rgb(0, 168, 143,.7) 100%)',
radiusTopLeft: 8, radiusTopLeft: 12,
radiusTopRight: 8, radiusTopRight: 12,
height: 30 height: 30
} }
}; };
+8 -5
View File
@@ -16,7 +16,7 @@ const LineChart: React.FC<LineChartProps> = (props) => {
height, height,
xField: xField || 'time', xField: xField || 'time',
yField: yField || 'value', yField: yField || 'value',
color: color || ['red', 'blue', 'green'], color: color || ['red', 'blue', 'green', 'yellow'],
colorField: 'type', colorField: 'type',
autoFit: true, autoFit: true,
slider, slider,
@@ -26,12 +26,15 @@ const LineChart: React.FC<LineChartProps> = (props) => {
textStyle: { textStyle: {
autoRoate: true autoRoate: true
} }
},
y: {
tick: false
} }
}, },
point: { // point: {
shapeField: 'circle', // shapeField: 'circle',
sizeField: 2 // sizeField: 2
}, // },
style: { style: {
lineWidth: 1.5 lineWidth: 1.5
}, },
+39
View File
@@ -0,0 +1,39 @@
.g-polygon {
position: absolute;
opacity: 0.5;
}
.g-polygon-1 {
// 定位代码,容器高宽随意
background: #fe5;
clip-path: polygon(0 10%, 30% 0, 100% 40%, 70% 100%, 20% 90%);
width: 50%;
height: 50%;
}
.g-polygon-2 {
// 定位代码,容器高宽随意
background: #e950d1;
clip-path: polygon(10% 0, 100% 70%, 100% 100%, 20% 90%);
width: 50%;
height: 50%;
}
.g-polygon-3 {
// 定位代码,容器高宽随意
background: rgba(87, 80, 233);
clip-path: polygon(80% 0, 100% 70%, 100% 100%, 20% 90%);
width: 50%;
height: 50%;
}
.g-bg::before {
content: '';
position: fixed;
top: 0;
left: 0;
bottom: 0;
right: 0;
backdrop-filter: blur(150px);
z-index: 1;
}
+13
View File
@@ -0,0 +1,13 @@
import './index.less';
const GlassBg = () => {
return (
<div className="g-bg">
<div className="g-polygon g-polygon-1"></div>
<div className="g-polygon g-polygon-2"></div>
<div className="g-polygon g-polygon-3"></div>
</div>
);
};
export default GlassBg;
+71 -22
View File
@@ -7,10 +7,11 @@ html {
// --color-fill-1: #f3f6fa; // --color-fill-1: #f3f6fa;
--color-fill-2: #fff; --color-fill-2: #fff;
--color-fill-3: #f3f6fa; --color-fill-3: #f3f6fa;
--menu-border-radius-base: 32px; --menu-border-radius-base: 20px;
--border-radius-base: 16px; --border-radius-base: 16px;
--border-radius-middle: 20px;
--border-radius-small: 8px; --border-radius-small: 8px;
--color-white-1: #fff; --color-white-1: rgba(255, 255, 255, 75%);
--font-weight-normal: 500; --font-weight-normal: 500;
--font-weight-bold: 700; --font-weight-bold: 700;
--color-text-1: var(--ant-color-text); --color-text-1: var(--ant-color-text);
@@ -19,7 +20,7 @@ html {
--font-size-large: 16px; --font-size-large: 16px;
--font-size-middle: 14px; --font-size-middle: 14px;
--ant-color-fill-secondary: rgba(0, 0, 0, 6%); --ant-color-fill-secondary: rgba(0, 0, 0, 6%);
--table-td-radius: 24px; --table-td-radius: 20px;
--checkbox-border-radius: 4px; --checkbox-border-radius: 4px;
--ant-table-cell-padding-inline: 16px; --ant-table-cell-padding-inline: 16px;
--ant-table-cell-padding-block: 16px; --ant-table-cell-padding-block: 16px;
@@ -36,6 +37,7 @@ html {
--ant-input-active-shadow: 0 0 0 2px rgba(5, 255, 105, 6%); --ant-input-active-shadow: 0 0 0 2px rgba(5, 255, 105, 6%);
--ant-input-active-border-color: #2fbf85; --ant-input-active-border-color: #2fbf85;
--ant-input-hover-border-color: #54cc98; --ant-input-hover-border-color: #54cc98;
--box-shadow-base: 0 4px 12px rgb(227, 232, 240);
.css-var-rf { .css-var-rf {
--ant-font-size: var(--font-size-base); --ant-font-size: var(--font-size-base);
@@ -67,6 +69,7 @@ html {
--ant-border-radius-lg: 16px; --ant-border-radius-lg: 16px;
--ant-color-error: #ff4d4f; --ant-color-error: #ff4d4f;
--ant-color-bg-mask: rgba(0, 0, 0, 35%); --ant-color-bg-mask: rgba(0, 0, 0, 35%);
--ant-color-border: rgb(217 217 217 / 50%);
&.ant-popover { &.ant-popover {
--ant-popover-inner-padding: 26px; --ant-popover-inner-padding: 26px;
@@ -222,12 +225,43 @@ body {
font-size: 16px; font-size: 16px;
} }
} }
// ============== new theme style start ===============
.ant-pro-layout {
background-color: var(--color-fill-1);
height: 100%;
.ant-pro-sider .ant-layout-sider-children {
background-color: var(--color-white-1);
box-shadow: var(--box-shadow-base);
}
}
.ant-table-wrapper .ant-table {
background-color: unset;
}
.ant-table-content table {
.ant-table-thead > tr > th {
background-color: unset;
}
.ant-table-tbody {
.ant-table-row {
border-radius: var(--table-td-radius);
background-color: var(--color-white-1);
box-shadow: var(--box-shadow-base);
> td {
background-color: unset;
}
}
}
}
// ============== new theme style end =================
} }
// ======== basic layout style start============
// ======== basic layout style end ============
// ======== menu style start ============ // ======== menu style start ============
.ant-pro-sider-collapsed-button { .ant-pro-sider-collapsed-button {
display: none; display: none;
@@ -250,7 +284,7 @@ body {
} }
.ant-pro-layout-container { .ant-pro-layout-container {
background-color: var(--color-fill-2); // background-color: var(--color-fill-2);
} }
.ant-pro-sider { .ant-pro-sider {
@@ -275,20 +309,35 @@ body {
.monaco-editor { .monaco-editor {
border-radius: 16px; border-radius: 16px;
} }
// .background {
// position: fixed; .background {
// top: 0; position: fixed;
// left: 0; top: 0;
// bottom: 0; left: 0;
// right: 0; bottom: 0;
// background: radial-gradient( right: 0;
// circle, // background: radial-gradient(
// rgba(47, 191, 133, 0.02), // circle,
// rgba(55, 125, 184, 0.2) // rgba(47, 191, 133, 0.02),
// ); // rgba(55, 125, 184, 0.2)
// filter: blur(100px); // );
// height: 100%; background: url('./assets/images/bg.png') center center no-repeat;
// } background-size: cover;
&::after {
content: '';
position: fixed;
top: 0;
left: 0;
bottom: 0;
right: 0;
z-index: 1;
backdrop-filter: blur(100px);
filter: blur(100px);
height: 100%;
}
}
.ant-pro-page-container { .ant-pro-page-container {
background: transparent; background: transparent;
} }
@@ -1,4 +1,4 @@
import ContentWrapper from '@/components/content-wrapper'; // import div from '@/components/content-wrapper';
import PageTools from '@/components/page-tools'; import PageTools from '@/components/page-tools';
import { Col, Row, Table } from 'antd'; import { Col, Row, Table } from 'antd';
@@ -131,7 +131,7 @@ const projectData = [
]; ];
const ActiveTable = () => { const ActiveTable = () => {
return ( return (
<Row> <Row gutter={[20, 0]}>
<Col span={12}> <Col span={12}>
<PageTools <PageTools
style={{ margin: '32px 40px' }} style={{ margin: '32px 40px' }}
@@ -144,14 +144,14 @@ const ActiveTable = () => {
} }
right={false} right={false}
/> />
<ContentWrapper contentStyle={{ paddingRight: 0 }} title={false}> <div>
<Table <Table
columns={modelColumns} columns={modelColumns}
dataSource={modelData} dataSource={modelData}
pagination={false} pagination={false}
rowKey="id" rowKey="id"
/> />
</ContentWrapper> </div>
</Col> </Col>
<Col span={12}> <Col span={12}>
<PageTools <PageTools
@@ -165,14 +165,14 @@ const ActiveTable = () => {
} }
right={false} right={false}
/> />
<ContentWrapper title={false}> <div>
<Table <Table
columns={projectColumns} columns={projectColumns}
dataSource={projectData} dataSource={projectData}
pagination={false} pagination={false}
rowKey="id" rowKey="id"
/> />
</ContentWrapper> </div>
</Col> </Col>
</Row> </Row>
); );
@@ -3,6 +3,8 @@
height: 110px; height: 110px;
display: flex; display: flex;
justify-content: space-around; justify-content: space-around;
box-shadow: var(--box-shadow-base);
border-radius: var(--ant-border-radius-lg);
} }
} }
+2 -3
View File
@@ -1,4 +1,3 @@
import ContentWrapper from '@/components/content-wrapper';
import { Card, Col, Row, Space } from 'antd'; import { Card, Col, Row, Space } from 'antd';
import React from 'react'; import React from 'react';
import { overviewConfigs } from '../config'; import { overviewConfigs } from '../config';
@@ -63,7 +62,7 @@ const Overview: React.FC = (props) => {
); );
}; };
return ( return (
<ContentWrapper contentStyle={{ paddingBlockStart: '32px' }} title={false}> <div>
<Row gutter={[24, 20]} className={styles.row}> <Row gutter={[24, 20]} className={styles.row}>
{overviewConfigs.map((config, index) => ( {overviewConfigs.map((config, index) => (
<Col span={5} key={config.key}> <Col span={5} key={config.key}>
@@ -75,7 +74,7 @@ const Overview: React.FC = (props) => {
</Col> </Col>
))} ))}
</Row> </Row>
</ContentWrapper> </div>
); );
}; };
@@ -52,6 +52,7 @@ const UtilizationOvertime: React.FC = () => {
data.push({ data.push({
time: timeList[i], time: timeList[i],
type: typeList[j], type: typeList[j],
color: 'red',
value: _.get(mockData, typeList[j])[i] value: _.get(mockData, typeList[j])[i]
}); });
} }
+57 -43
View File
@@ -1,20 +1,24 @@
import CardWrapper from '@/components/card-wrapper';
import GaugeChart from '@/components/charts/gauge'; import GaugeChart from '@/components/charts/gauge';
import PageTools from '@/components/page-tools'; import PageTools from '@/components/page-tools';
import { PageContainer } from '@ant-design/pro-components';
import { Col, DatePicker, Row } from 'antd'; import { Col, DatePicker, Row } from 'antd';
import ResourceUtilization from './resource-utilization'; import ResourceUtilization from './resource-utilization';
const SystemLoad = () => { const SystemLoad = () => {
const colors = [
'rgba(84, 204, 152,.8)',
'rgba(255, 214, 102,.8)',
'rgba(255, 120, 117,.8)'
];
const handleSelectDate = (date: string) => { const handleSelectDate = (date: string) => {
console.log('dateString============', date); console.log('dateString============', date);
}; };
return ( return (
<PageContainer ghost title={false}> <div>
<div className="system-load"> <div className="system-load">
<PageTools <PageTools
marginBottom={10} style={{ margin: '32px 40px' }}
marginTop={0}
left={ left={
<span style={{ fontSize: 'var(--font-size-large)' }}> <span style={{ fontSize: 'var(--font-size-large)' }}>
System Load System Load
@@ -24,51 +28,61 @@ const SystemLoad = () => {
<DatePicker onChange={handleSelectDate} style={{ width: 300 }} /> <DatePicker onChange={handleSelectDate} style={{ width: 300 }} />
} }
/> />
<ResourceUtilization /> <CardWrapper>
<Row style={{ width: '100%', marginTop: '32px' }}> <ResourceUtilization />
<Col xs={24} sm={24} md={12} lg={6} xl={6}> </CardWrapper>
<GaugeChart <Row style={{ width: '100%', marginTop: '40px' }} gutter={[20, 20]}>
title="GPU Compute Utilization" <Col xs={24} sm={24} md={12} lg={12} xl={12}>
total={100} <CardWrapper>
target={20} <GaugeChart
// height={320} title="GPU Compute Utilization"
thresholds={[50, 70, 100]} total={100}
rangColor={['#54cc98', '#ffd666', '#ff7875']} target={20}
></GaugeChart> // height={320}
thresholds={[50, 70, 100]}
rangColor={colors}
></GaugeChart>
</CardWrapper>
</Col> </Col>
<Col xs={24} sm={24} md={12} lg={6} xl={6}> <Col xs={24} sm={24} md={12} lg={12} xl={12}>
<GaugeChart <CardWrapper>
title="GPU Memory Utilization" <GaugeChart
total={100} title="GPU Memory Utilization"
target={30} total={100}
// height={320} target={30}
thresholds={[50, 70, 100]} // height={320}
rangColor={['#54cc98', '#ffd666', '#ff7875']} thresholds={[50, 70, 100]}
></GaugeChart> rangColor={colors}
></GaugeChart>
</CardWrapper>
</Col> </Col>
<Col xs={24} sm={24} md={12} lg={6} xl={6}> <Col xs={24} sm={24} md={12} lg={12} xl={12}>
<GaugeChart <CardWrapper>
title="CPU Compute Utilization" <GaugeChart
total={100} title="CPU Compute Utilization"
target={40} total={100}
// height={320} target={40}
thresholds={[50, 70, 100]} // height={320}
rangColor={['#54cc98', '#ffd666', '#ff7875']} thresholds={[50, 70, 100]}
></GaugeChart> rangColor={colors}
></GaugeChart>
</CardWrapper>
</Col> </Col>
<Col xs={24} sm={24} md={12} lg={6} xl={6}> <Col xs={24} sm={24} md={12} lg={12} xl={12}>
<GaugeChart <CardWrapper>
title="CPU Memory Utilization" <GaugeChart
total={100} title="CPU Memory Utilization"
target={70} total={100}
// height={320} target={70}
thresholds={[50, 70, 100]} // height={320}
rangColor={['#54cc98', '#ffd666', '#ff7875']} thresholds={[50, 70, 100]}
></GaugeChart> rangColor={colors}
></GaugeChart>
</CardWrapper>
</Col> </Col>
</Row> </Row>
</div> </div>
</PageContainer> </div>
); );
}; };
+20 -15
View File
@@ -1,6 +1,6 @@
import CardWrapper from '@/components/card-wrapper';
import ColumnBar from '@/components/charts/column-bar'; import ColumnBar from '@/components/charts/column-bar';
import HBar from '@/components/charts/h-bar'; import HBar from '@/components/charts/h-bar';
import ContentWrapper from '@/components/content-wrapper';
import PageTools from '@/components/page-tools'; import PageTools from '@/components/page-tools';
import { generateRandomArray } from '@/utils'; import { generateRandomArray } from '@/utils';
import { Col, DatePicker, Row } from 'antd'; import { Col, DatePicker, Row } from 'antd';
@@ -86,9 +86,11 @@ const tokenUsage = TokensData.map((val, i) => {
}); });
const Usage = () => { const Usage = () => {
const bgColor = '#fff';
const handleSelectDate = (dateString: string) => { const handleSelectDate = (dateString: string) => {
console.log('dateString============', dateString); console.log('dateString============', dateString);
}; };
return ( return (
<> <>
<PageTools <PageTools
@@ -98,9 +100,9 @@ const Usage = () => {
<DatePicker onChange={handleSelectDate} style={{ width: 300 }} /> <DatePicker onChange={handleSelectDate} style={{ width: 300 }} />
} }
/> />
<Row style={{ width: '100%' }} gutter={[20, 0]}> <Row style={{ width: '100%' }} gutter={[0, 20]}>
<Col span={12}> <Col span={12} style={{ paddingRight: '20px' }}>
<ContentWrapper title={false} contentStyle={{ paddingRight: 0 }}> <CardWrapper>
<ColumnBar <ColumnBar
title="API Request" title="API Request"
data={dataList} data={dataList}
@@ -108,10 +110,10 @@ const Usage = () => {
yField="value" yField="value"
height={360} height={360}
></ColumnBar> ></ColumnBar>
</ContentWrapper> </CardWrapper>
</Col> </Col>
<Col span={12}> <Col span={12}>
<ContentWrapper title={false} contentStyle={{ paddingLeft: 0 }}> <CardWrapper>
<ColumnBar <ColumnBar
title="Tokens" title="Tokens"
data={tokenUsage} data={tokenUsage}
@@ -119,31 +121,34 @@ const Usage = () => {
yField="value" yField="value"
height={360} height={360}
></ColumnBar> ></ColumnBar>
</ContentWrapper> </CardWrapper>
</Col> </Col>
</Row> </Row>
<Row style={{ width: '100%' }} gutter={[20, 0]}> <Row style={{ width: '100%', marginTop: '20px' }} gutter={[0, 20]}>
<Col span={12}> <Col span={12} style={{ paddingRight: '20px' }}>
<ContentWrapper title={false} contentStyle={{ paddingRight: 0 }}> <CardWrapper>
<HBar <HBar
title="Top Users" title="Top Users"
data={userDataList} data={userDataList}
xField="time" xField="time"
yField="value" yField="value"
height={400}
></HBar> ></HBar>
</ContentWrapper> </CardWrapper>
</Col> </Col>
<Col span={12}> <Col span={12}>
<ContentWrapper title={false} contentStyle={{ paddingLeft: 0 }}> <CardWrapper
style={{
background: bgColor,
borderRadius: 'var(--border-radius-base)'
}}
>
<HBar <HBar
title="Top Projects" title="Top Projects"
data={projectDataList} data={projectDataList}
xField="time" xField="time"
yField="value" yField="value"
height={400}
></HBar> ></HBar>
</ContentWrapper> </CardWrapper>
</Col> </Col>
</Row> </Row>
</> </>
+10 -10
View File
@@ -2,31 +2,31 @@ export const overviewConfigs = [
{ {
key: 'workers', key: 'workers',
label: 'Workers', label: 'Workers',
backgroundColor: // backgroundColor: 'linear-gradient(135deg, #ffffff, rgb(232 249 240 / 60%))'
'linear-gradient(180deg, rgb(0 139 188 / 20%) 0%, rgba(40,207,181,.2) 100%)' backgroundColor: 'var(--color-white-1)'
}, },
{ {
key: 'gpus', key: 'gpus',
label: 'Total GPUs', label: 'Total GPUs',
backgroundColor: backgroundColor: 'var(--color-white-1)'
'linear-gradient(180deg, rgb(0 139 188 / 20%) 0%, rgba(40,207,181,.2) 100%)' // backgroundColor: 'linear-gradient(135deg, #ffffff, rgb(232 249 240 / 60%))'
}, },
{ {
key: 'allocatedGpus', key: 'allocatedGpus',
label: 'Allocated GPUs', label: 'Allocated GPUs',
backgroundColor: backgroundColor: 'var(--color-white-1)'
'linear-gradient(180deg, rgb(0 139 188 / 20%) 0%, rgba(40,207,181,.2) 100%)' // backgroundColor: 'linear-gradient(135deg, #ffffff, rgb(232 249 240 / 60%))'
}, },
{ {
key: 'models', key: 'models',
label: 'Models', label: 'Models',
backgroundColor: backgroundColor: 'var(--color-white-1)'
'linear-gradient(180deg, rgb(0 139 188 / 20%) 0%, rgba(40,207,181,.2) 100%)' // backgroundColor: 'linear-gradient(135deg, #ffffff, rgb(232 249 240 / 60%))'
}, },
{ {
key: 'instances', key: 'instances',
label: 'Instances', label: 'Instances',
backgroundColor: backgroundColor: 'var(--color-white-1)'
'linear-gradient(180deg, rgb(0 139 188 / 20%) 0%, rgba(40,207,181,.2) 100%)' // backgroundColor: 'linear-gradient(135deg, #ffffff, rgb(232 249 240 / 60%))'
} }
]; ];
+3 -4
View File
@@ -1,4 +1,3 @@
import DividerLine from '@/components/divider-line';
import ActiveTable from './components/active-table'; import ActiveTable from './components/active-table';
import Overview from './components/over-view'; import Overview from './components/over-view';
import SystemLoad from './components/system-load'; import SystemLoad from './components/system-load';
@@ -8,11 +7,11 @@ const Dashboard: React.FC = () => {
return ( return (
<> <>
<Overview></Overview> <Overview></Overview>
<DividerLine></DividerLine> {/* <DividerLine></DividerLine> */}
<SystemLoad></SystemLoad> <SystemLoad></SystemLoad>
<DividerLine></DividerLine> {/* <DividerLine></DividerLine> */}
<Usage></Usage> <Usage></Usage>
<DividerLine></DividerLine> {/* <DividerLine></DividerLine> */}
<ActiveTable></ActiveTable> <ActiveTable></ActiveTable>
</> </>
); );
+1 -4
View File
@@ -1,5 +1,4 @@
import { useSearchParams } from '@umijs/max'; import { useSearchParams } from '@umijs/max';
import { Divider } from 'antd';
import { useState } from 'react'; import { useState } from 'react';
import GroundLeft from './components/ground-left'; import GroundLeft from './components/ground-left';
import ParamsSettings from './components/params-settings'; import ParamsSettings from './components/params-settings';
@@ -30,9 +29,7 @@ const Playground: React.FC = () => {
<div className="chat"> <div className="chat">
<GroundLeft parameters={params}></GroundLeft> <GroundLeft parameters={params}></GroundLeft>
</div> </div>
<div className="divider-line"> <div className="divider-line">{/* <Divider type="vertical" /> */}</div>
<Divider type="vertical" />
</div>
<div className="params"> <div className="params">
<ParamsSettings <ParamsSettings
onClose={handleClosePopover} onClose={handleClosePopover}
@@ -2,10 +2,14 @@
position: relative; position: relative;
height: 100vh; height: 100vh;
padding-bottom: 120px; padding-bottom: 120px;
background-color: var(--color-white-1);
border-radius: 24px;
.message-list-wrap { .message-list-wrap {
max-height: calc(100vh - 152px); max-height: calc(100vh - 152px);
overflow-y: auto; overflow-y: auto;
} }
.ground-left-footer { .ground-left-footer {
position: absolute; position: absolute;
bottom: 20px; bottom: 20px;