@@ -27,12 +27,8 @@ const EnvironmentsTable: React.FC<EnvironmentsTableProps> = ({
27
27
window . open ( auditUrl , '_blank' ) ;
28
28
} ;
29
29
30
- // Handle row clickwith license check
30
+ // Handle row click- allow navigation to all environments including unlicensed
31
31
const handleRowClick = ( env :Environment ) => {
32
- if ( env . isLicensed === false ) {
33
- // Prevent navigation for unlicensed environments
34
- return ;
35
- }
36
32
onRowClick ( env ) ;
37
33
} ;
38
34
@@ -109,48 +105,53 @@ const EnvironmentsTable: React.FC<EnvironmentsTableProps> = ({
109
105
return (
110
106
< Col xs = { 24 } sm = { 24 } md = { 12 } lg = { 8 } xl = { 8 } key = { env . environmentId } >
111
107
< Card
112
- hoverable = { isAccessible }
108
+ hoverable
113
109
style = { {
114
110
borderRadius :'8px' ,
115
111
overflow :'hidden' ,
116
112
height :'100%' ,
117
- cursor :isAccessible ? 'pointer' : 'not-allowed ',
113
+ cursor :'pointer' ,
118
114
transition :'all 0.3s ease' ,
119
115
boxShadow :'0 1px 3px rgba(0,0,0,0.02)' ,
120
116
border :'1px solid #f0f0f0' ,
121
- opacity :isAccessible ?1 :0.6 ,
122
117
position :'relative'
123
118
} }
124
119
bodyStyle = { { padding :'20px' } }
125
120
onClick = { ( ) => handleRowClick ( env ) }
126
121
>
127
- { /*License status overlay fornon-licensed environments */ }
122
+ { /*Subtle overlay forunlicensed environments */ }
128
123
{ ! isAccessible && (
129
124
< div style = { {
130
125
position :'absolute' ,
131
126
top :0 ,
132
127
left :0 ,
133
128
right :0 ,
134
129
bottom :0 ,
135
- background :'rgba(255, 255, 255, 0.8)' ,
136
- display :'flex' ,
137
- alignItems :'center' ,
138
- justifyContent :'center' ,
130
+ background :'rgba(255, 255, 255, 0.15)' ,
131
+ backdropFilter :'blur(0.5px)' ,
139
132
zIndex :1 ,
140
- flexDirection :'column' ,
141
- gap :'8px'
133
+ display :'flex' ,
134
+ alignItems :'flex-start' ,
135
+ justifyContent :'flex-end' ,
136
+ padding :'12px'
142
137
} } >
143
- < div style = { { fontSize :'24px' , color :licenseDisplay . color } } >
138
+ { /* Not Licensed Badge */ }
139
+ < div style = { {
140
+ background :licenseDisplay . color ,
141
+ color :'white' ,
142
+ padding :'6px 12px' ,
143
+ borderRadius :'16px' ,
144
+ fontSize :'12px' ,
145
+ fontWeight :600 ,
146
+ display :'flex' ,
147
+ alignItems :'center' ,
148
+ gap :'6px' ,
149
+ boxShadow :'0 2px 6px rgba(0,0,0,0.15)' ,
150
+ backdropFilter :'blur(10px)'
151
+ } } >
144
152
{ licenseDisplay . icon }
145
- </ div >
146
- < Text strong style = { { color :licenseDisplay . color } } >
147
153
{ licenseDisplay . text }
148
- </ Text >
149
- { env . licenseError && (
150
- < Text type = "secondary" style = { { fontSize :'12px' , textAlign :'center' , maxWidth :'200px' } } >
151
- { env . licenseError }
152
- </ Text >
153
- ) }
154
+ </ div >
154
155
</ div >
155
156
) }
156
157
@@ -195,46 +196,60 @@ const EnvironmentsTable: React.FC<EnvironmentsTableProps> = ({
195
196
</ Space >
196
197
</ div >
197
198
</ div >
198
- < div >
199
- < Tooltip title = "View Audit Logs" placement = "top" >
200
- < Button
201
- type = "text"
202
- icon = { < AuditOutlined /> }
203
- onClick = { ( e ) => openAuditPage ( env . environmentId , e ) }
204
- size = "small"
205
- disabled = { ! isAccessible }
206
- style = { {
207
- borderRadius :'50%' ,
208
- width :'32px' ,
209
- height :'32px'
210
- } }
211
- />
212
- </ Tooltip >
213
- </ div >
199
+ { /* Only show audit button for licensed environments */ }
200
+ { isAccessible && (
201
+ < div >
202
+ < Tooltip title = "View Audit Logs" placement = "top" >
203
+ < Button
204
+ type = "text"
205
+ icon = { < AuditOutlined /> }
206
+ onClick = { ( e ) => openAuditPage ( env . environmentId , e ) }
207
+ size = "small"
208
+ style = { {
209
+ borderRadius :'50%' ,
210
+ width :'32px' ,
211
+ height :'32px'
212
+ } }
213
+ />
214
+ </ Tooltip >
215
+ </ div >
216
+ ) }
214
217
</ div >
215
218
216
219
< div style = { { padding :'12px 0' , borderTop :'1px solid #f5f5f5' , marginTop :'4px' } } >
217
220
< div style = { { display :'flex' , flexDirection :'column' , gap :'8px' } } >
218
221
< div style = { { display :'flex' , justifyContent :'space-between' } } >
219
222
< Text type = "secondary" style = { { fontSize :'13px' } } > ID:</ Text >
220
- < Text style = { { fontSize :'13px' , fontFamily :'monospace' } } copyable = { { tooltips :[ 'Copy ID' , 'Copied!' ] } } >
221
- { env . environmentId }
222
- </ Text >
223
+ { isAccessible ?(
224
+ < Text style = { { fontSize :'13px' , fontFamily :'monospace' } } copyable = { { tooltips :[ 'Copy ID' , 'Copied!' ] } } >
225
+ { env . environmentId }
226
+ </ Text >
227
+ ) :(
228
+ < Text style = { { fontSize :'13px' , fontFamily :'monospace' } } >
229
+ { env . environmentId }
230
+ </ Text >
231
+ ) }
223
232
</ div >
224
233
225
234
< div style = { { display :'flex' , justifyContent :'space-between' } } >
226
235
< Text type = "secondary" style = { { fontSize :'13px' } } > Domain:</ Text >
227
236
{ env . environmentFrontendUrl ?(
228
- < a
229
- href = { env . environmentFrontendUrl }
230
- target = "_blank"
231
- rel = "noopener noreferrer"
232
- onClick = { ( e ) => e . stopPropagation ( ) }
233
- style = { { fontSize :'13px' } }
234
- >
235
- { env . environmentFrontendUrl . replace ( / ^ h t t p s ? : \/ \/ / , '' ) }
236
- < LinkOutlined style = { { marginLeft :4 , fontSize :'12px' } } />
237
- </ a >
237
+ isAccessible ?(
238
+ < a
239
+ href = { env . environmentFrontendUrl }
240
+ target = "_blank"
241
+ rel = "noopener noreferrer"
242
+ onClick = { ( e ) => e . stopPropagation ( ) }
243
+ style = { { fontSize :'13px' } }
244
+ >
245
+ { env . environmentFrontendUrl . replace ( / ^ h t t p s ? : \/ \/ / , '' ) }
246
+ < LinkOutlined style = { { marginLeft :4 , fontSize :'12px' } } />
247
+ </ a >
248
+ ) :(
249
+ < Text style = { { fontSize :'13px' } } >
250
+ { env . environmentFrontendUrl . replace ( / ^ h t t p s ? : \/ \/ / , '' ) }
251
+ </ Text >
252
+ )
238
253
) :(
239
254
< Text style = { { fontSize :'13px' } } > —</ Text >
240
255
) }