1- import React , { useState } from 'react' ;
2- import { Card , Space , Typography } from 'antd' ;
1+ import React , { useState , FC } from 'react' ;
2+ import { Space , Typography , Table , TableProps } from 'antd' ;
33import useBlockedPubkeys from '@app/hooks/useBlockedPubkeys' ;
44import { BaseButton } from '@app/components/common/BaseButton/BaseButton' ;
55import { ReloadOutlined } from '@ant-design/icons' ;
66import { BlockedPubkeysTable } from './components/BlockedPubkeysTable' ;
77import { FlaggedPubkeysTable } from './components/FlaggedPubkeysTable' ;
88import { BlockPubkeyForm } from './components/BlockPubkeyForm' ;
99import { useModerationStats } from '@app/hooks/useModerationStats' ;
10+ import { LockFilled } from '@ant-design/icons' ;
11+ import styled from 'styled-components' ;
1012import * as S from './BlockedPubkeys.styles' ;
1113
1214const { Title, Text } = Typography ;
1315
16+ export function createStyledTable < T extends object = any > ( ) {
17+ const GenericTable : FC < TableProps < T > > = ( props ) => < Table { ...props } /> ;
18+
19+ const StyledTable = styled ( GenericTable ) `
20+ border-radius: 12px;
21+
22+ & .ant-table-thead .ant-table-cell {
23+ background-color: var(--secondary-background-color);
24+ }
25+
26+ .ant-table-tbody {
27+ background-color: var(--layout-sider-bg-color);
28+ }
29+ .ant-table-placeholder .ant-table-cell {
30+ background-color: var(--layout-sider-bg-color);
31+ transition: none;
32+ }
33+ .ant-table-placeholder .ant-table-cell:hover {
34+ background-color: var(--layout-sider-bg-color);
35+ }
36+ ` ;
37+ return StyledTable ;
38+ }
1439export const BlockedPubkeys : React . FC = ( ) => {
1540 const [ activeView , setActiveView ] = useState < 'blocked' | 'flagged' > ( 'blocked' ) ;
16- const {
17- blockedPubkeys,
18- count,
19- loading,
20- fetchBlockedPubkeys,
21- addBlockedPubkey,
22- removeBlockedPubkey,
23- } = useBlockedPubkeys ( ) ;
41+ const { blockedPubkeys, count, loading, fetchBlockedPubkeys, addBlockedPubkey, removeBlockedPubkey } =
42+ useBlockedPubkeys ( ) ;
2443 const { fetchStats, loading : statsLoading } = useModerationStats ( ) ;
2544
2645 // Refresh all data
@@ -30,57 +49,41 @@ export const BlockedPubkeys: React.FC = () => {
3049 } ;
3150
3251 return (
33- < Card >
34- < Space direction = "vertical" size = "large" style = { { width : '100%' } } >
35- < div style = { { display : 'flex' , justifyContent : 'space-between' , alignItems : 'center' } } >
36- < div >
37- < Title level = { 4 } > Access Control</ Title >
38- < Text type = "secondary" >
39- Control access to your relay and manage flagged pubkeys
40- </ Text >
52+ < S . BaseColRoot >
53+ < S . CardRoot >
54+ < Space direction = "vertical" size = "large" style = { { width : '100%' } } >
55+ < div style = { { display : 'flex' , justifyContent : 'space-between' , alignItems : 'center' } } >
56+ < div >
57+ < Title level = { 3 } >
58+ Access Control < LockFilled />
59+ </ Title >
60+ < Text style = { { color : 'var(--text-light-color)' } } >
61+ Control access to your relay and manage flagged pubkeys
62+ </ Text >
63+ </ div >
64+ < BaseButton icon = { < ReloadOutlined /> } onClick = { handleRefresh } loading = { loading || statsLoading } >
65+ Refresh
66+ </ BaseButton >
4167 </ div >
42- < BaseButton
43- icon = { < ReloadOutlined /> }
44- onClick = { handleRefresh }
45- loading = { loading || statsLoading }
46- >
47- Refresh
48- </ BaseButton >
49- </ div >
50-
51- { activeView === 'blocked' && (
52- < BlockPubkeyForm onSubmit = { addBlockedPubkey } disabled = { loading } />
53- ) }
54-
55- < S . NavContainer >
56- < S . NavLink
57- active = { activeView === 'blocked' }
58- onClick = { ( ) => setActiveView ( 'blocked' ) }
59- >
60- Blocked Access
61- </ S . NavLink >
62- < S . NavLink
63- active = { activeView === 'flagged' }
64- onClick = { ( ) => setActiveView ( 'flagged' ) }
65- >
66- Flagged Access
67- </ S . NavLink >
68- </ S . NavContainer >
69-
70- { activeView === 'blocked' ? (
71- < BlockedPubkeysTable
72- blockedPubkeys = { blockedPubkeys }
73- loading = { loading }
74- onUnblock = { removeBlockedPubkey }
75- />
76- ) : (
77- < FlaggedPubkeysTable
78- blockedPubkeys = { blockedPubkeys }
79- onBlock = { addBlockedPubkey }
80- disabled = { loading }
81- />
82- ) }
83- </ Space >
84- </ Card >
68+
69+ { activeView === 'blocked' && < BlockPubkeyForm onSubmit = { addBlockedPubkey } disabled = { loading } /> }
70+
71+ < S . NavContainer >
72+ < S . NavLink active = { activeView === 'blocked' } onClick = { ( ) => setActiveView ( 'blocked' ) } >
73+ Blocked Access
74+ </ S . NavLink >
75+ < S . NavLink active = { activeView === 'flagged' } onClick = { ( ) => setActiveView ( 'flagged' ) } >
76+ Flagged Access
77+ </ S . NavLink >
78+ </ S . NavContainer >
79+
80+ { activeView === 'blocked' ? (
81+ < BlockedPubkeysTable blockedPubkeys = { blockedPubkeys } loading = { loading } onUnblock = { removeBlockedPubkey } />
82+ ) : (
83+ < FlaggedPubkeysTable blockedPubkeys = { blockedPubkeys } onBlock = { addBlockedPubkey } disabled = { loading } />
84+ ) }
85+ </ Space >
86+ </ S . CardRoot >
87+ </ S . BaseColRoot >
8588 ) ;
8689} ;
0 commit comments