Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
68e962a
refactor(dashboard): clean up DashboardContent component by removing …
sumansaurabh Feb 16, 2025
cc6614e
feat(sidebar): update sidebar navigation and rename dashboard to Git …
sumansaurabh Feb 16, 2025
d7e5fe8
style(sider): update styles for MainSider and SiderMenu with new colo…
sumansaurabh Feb 16, 2025
ffd386c
style(sider): enhance styles for MainSider and SiderMenu with improve…
sumansaurabh Feb 16, 2025
818590a
style(sider): adjust margin for menu items in SiderMenu styles
sumansaurabh Feb 16, 2025
8d865d8
style(header): enhance header styles with new action buttons and impr…
sumansaurabh Feb 16, 2025
492344c
style(breadcrumb): enhance MainBreadcrumb styles with improved layout…
sumansaurabh Feb 16, 2025
0149287
style(layout): enhance MainLayout styles with new background, shadows…
sumansaurabh Feb 16, 2025
10d90f2
style(dashboard): enhance ListAllRepos and SearchDropdown styles with…
sumansaurabh Feb 16, 2025
4fafb2a
style(dashboard): update ListAllRepos styles with improved gradients …
sumansaurabh Feb 16, 2025
5e93d3a
style(dashboard): enhance premium card styles with new border, box-sh…
sumansaurabh Feb 16, 2025
41d3f01
style(buttons, dropdowns): enhance BaseButton and BaseDropdown styles…
sumansaurabh Feb 16, 2025
eeb9abc
style(dashboard): enhance PremiumContainer with new gradient, box-sha…
sumansaurabh Feb 17, 2025
0fd56e2
style(dashboard): update PremiumContainer background color; enhance D…
sumansaurabh Feb 17, 2025
2cc9323
style(dashboard): update PremiumContainer box-shadow dynamically base…
sumansaurabh Feb 17, 2025
ae51cba
style(VendorDropdown): add height to dropdown for improved layout con…
sumansaurabh Feb 17, 2025
b371fcc
style(BaseCard): implement neumorphic design with gradient background…
sumansaurabh Feb 17, 2025
9b2e2a9
style(BaseTable): implement dark-themed neumorphic design with gradie…
sumansaurabh Feb 17, 2025
faa9e71
style(ApiKeys): remove BaseCard wrapper from ApiKeyTable; add delete …
sumansaurabh Feb 17, 2025
56c24fa
style(ApiKeysTable): add ActionRow component for improved action hand…
sumansaurabh Feb 17, 2025
a49b016
style(ApiKeysTable): comment out gradient background and shadow in Ac…
sumansaurabh Feb 17, 2025
e1dbc0b
style(BaseSwitch): update box-shadow and border color to use inputPla…
sumansaurabh Feb 17, 2025
59cae31
style(ApiKeysTable, BaseTable): update inactive record text color for…
sumansaurabh Feb 18, 2025
b1de244
style(BaseFormItem): enhance dark theme styling with neumorphic desig…
sumansaurabh Feb 18, 2025
d91c635
style(PersonalInfo): add neumorphic design section for improved UI; u…
sumansaurabh Feb 18, 2025
6e5fddc
style(ConnectAccountItem): refactor styles for improved layout and re…
sumansaurabh Feb 18, 2025
7f1ae8d
style(ConnectAccountItem): refactor for improved layout and responsiv…
sumansaurabh Feb 18, 2025
780589c
style(PersonalInfo, ConnectAccountItems): refactor layout for improve…
sumansaurabh Feb 18, 2025
0087ad6
style(SearchDropdown, MainLayout): adjust padding for improved layout…
sumansaurabh Feb 18, 2025
56a5846
style(ConnectAccountItem): remove default padding from card body for …
sumansaurabh Feb 19, 2025
3034e2a
style(BaseFormItem, ConnectAccountItem): adjust font size for better …
sumansaurabh Feb 19, 2025
9cd009a
style(ConnectAccountItem): adjust margin-top for IconWrapper; enable …
sumansaurabh Feb 19, 2025
490365e
style(lightTheme): update heading color to improve contrast and reada…
sumansaurabh Feb 19, 2025
0b005d9
style(BaseCard): remove unnecessary comments and improve code clarity
sumansaurabh Feb 19, 2025
1a02b66
style(ListAllRepos): add !important to padding for OuterBaseCard on x…
sumansaurabh Feb 19, 2025
b67a68c
style(ListAllRepos): update OuterBaseCard background and box-shadow f…
sumansaurabh Feb 19, 2025
1de3ece
style(Profile): enhance button and card styles with gradients and sha…
sumansaurabh Feb 19, 2025
7eb810c
style(ProfileLayout): add gradient background and improve card styles…
sumansaurabh Feb 19, 2025
cf27370
style(ProfileInfo): enhance avatar styles with neumorphism and improv…
sumansaurabh Feb 19, 2025
53279a4
style(SecuritySettings): add neumorphic card styles and refactor TwoF…
sumansaurabh Feb 19, 2025
4625059
style(LoginForm): center align login title for improved aesthetics
sumansaurabh Feb 19, 2025
5630cdb
style(SignUpForm): refactor form layout and center align terms of use…
sumansaurabh Feb 19, 2025
de80fd6
style(AuthForms): center align titles and update footer layout for im…
sumansaurabh Feb 19, 2025
6004581
refactor(ProfileNav): remove security settings navigation item for cl…
sumansaurabh Feb 19, 2025
c6c0099
style(BaseFormItem): simplify success text display by removing dynami…
sumansaurabh Feb 19, 2025
2c8bb1e
style(SocialButton): enhance button design with neumorphic shadows an…
sumansaurabh Feb 19, 2025
83d74b1
style(SignUpForm): adjust font size for agreement and policy links fo…
sumansaurabh Feb 19, 2025
703a293
style(InnerBaseCard): enhance design with gradient background, improv…
sumansaurabh Feb 19, 2025
4426ba0
feat(AuthLayout): implement Three.js scene with animated birds for en…
sumansaurabh Feb 19, 2025
be1f656
feat(AuthLayout): replace Three.js scene with PenifyIntroScene for im…
sumansaurabh Feb 19, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added src/assets/images/login.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 0 additions & 2 deletions src/components/apiKeys/ApiKeys.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,7 @@ export const ApiKeys: React.FC = () => {
if (!user) return null;

const content = (
<BaseCard>
<ApiKeyTable />
</BaseCard>
);

return isDesktop ? (
Expand Down
57 changes: 57 additions & 0 deletions src/components/apiKeys/apiKeysTable/ActionRow.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
import { DeleteOutlined, CheckCircleOutlined, StopOutlined } from '@ant-design/icons';
import React from 'react';
import { BaseButton } from '@app/components/common/BaseButton/BaseButton';
import { ActionRowContainer } from './ApiKeysTable.style';
import { ApiTableRow } from '@app/api/apiToken.api';

interface ActionRowProps {
record: ApiTableRow;
handleToggleRow: (id: number) => void;
handleDeleteRow: (id: number) => void;
isCreating?: boolean; // If record.id === -1
t: (key: string) => string;
}

export const ActionRow: React.FC<ActionRowProps> = ({
record,
handleToggleRow,
handleDeleteRow,
isCreating,
t
}) => {
if (isCreating) {
// If your record has id === -1, you might show a "Create" button or something else
return (
<ActionRowContainer>
<BaseButton className="action-btn" onClick={() => handleToggleRow(record.id)}>
{t('apiTable.create')}
</BaseButton>
</ActionRowContainer>
);
}

// Normal row: show activate/deactivate and delete
return (
<ActionRowContainer>
<BaseButton
className="action-btn"
ghost
onClick={() => handleToggleRow(record.id)}
icon={record.isActive ? <StopOutlined /> : <CheckCircleOutlined />}
>
{record.isActive ? t('apiTable.deactivate') : t('apiTable.activate')}
</BaseButton>

<div className="divider" />

<BaseButton
className="action-btn delete-btn"
danger
onClick={() => handleDeleteRow(record.id)}
icon={<DeleteOutlined />}
>
{t('apiTable.delete')}
</BaseButton>
</ActionRowContainer>
);
};
46 changes: 46 additions & 0 deletions src/components/apiKeys/apiKeysTable/ApiKeysTable.style.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
// ApiKeyTable.styles.ts (example filename)
import styled from 'styled-components';

export const ActionRowContainer = styled.div`
display: flex;
align-items: center;
justify-content: center; /* center in the column */
gap: 1rem; /* space between buttons */
padding: 0.5rem 1rem;
border-radius: 8px;

/* Eye-catching gradient for the action area */
// background: unset;

/* Optional subtle shadow for a “raised” look */
// box-shadow: 0 3px 6px rgba(0, 0, 0, 0.15);

Comment on lines +13 to +17
Copy link

Copilot AI Feb 19, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The commented-out code should be removed to keep the code clean and maintainable.

Suggested change
// background: unset;
/* Optional subtle shadow for a “raised” look */
// box-shadow: 0 3px 6px rgba(0, 0, 0, 0.15);
/* Optional subtle shadow for a “raised” look */

Copilot uses AI. Check for mistakes.
/* A small vertical divider between activate/deactivate and delete */
.divider {
width: 1px;
height: 24px;
background-color: rgba(255, 255, 255, 0.5);
}

/* Style the buttons to match the gradient background */
.action-btn {
color: #fff;
border: none;
transition: background-color 0.2s, color 0.2s;

&:hover {
background-color: rgba(255, 255, 255, 0.15);
color: #fff;
}

/* For “danger” or “delete” buttons, you might want a slight
variation in color or an icon. (Example: a red accent.)
*/
&.delete-btn {
background-color: rgba(255, 0, 0, 0.2);
&:hover {
background-color: rgba(255, 0, 0, 0.3);
}
}
}
`;
39 changes: 18 additions & 21 deletions src/components/apiKeys/apiKeysTable/ApiKeysTable.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import { ColumnsType } from 'antd/es/table';
import dayjs from 'dayjs';
import { useCallback, useEffect, useState } from 'react';
import { useTranslation } from 'react-i18next';
import { ActionRow } from './ActionRow';

const initialPagination: Pagination = {
current: 1,
Expand Down Expand Up @@ -127,37 +128,32 @@ export const ApiKeyTable: React.FC = () => {
{
title: t('apiTable.key'),
dataIndex: 'key',
render: (text: string) => <span>{text}</span>,
render: (text: string, record) => {
return !record.isActive ?<span>{text}</span> : <span style={{ color: '#cccccc82' }}>{text}</span>;
},
},
{
title: t('apiTable.createdAt'),
dataIndex: 'createdAt',
render: (text: string, record: ApiTableRow) =>
record.id !== -1 ? <span>{dayjs(text).format('DD-MM-YYYY HH:mm:ss')}</span> : <span></span>,
!record.isActive ?(record.id !== -1 ? <span>{dayjs(text).format('DD-MM-YYYY HH:mm:ss')}</span> : <span></span>): (record.id !== -1 ? <span style={{ color: '#cccccc82' }}>{dayjs(text).format('DD-MM-YYYY HH:mm:ss')}</span> : <span></span>),
},
{
title: t('apiTable.actions'),
dataIndex: 'actions',
width: '15%',
render: (_, record) => (
<BaseSpace>
{record.id === -1 ? (
<BaseButton ghost onClick={() => handleCreateRow()}>
{t('apiTable.create')}
</BaseButton>
) : (
<>
<BaseButton ghost onClick={() => handleToggleRow(record.id)}>
{record.isActive ? t('apiTable.deactivate') : t('apiTable.activate')}
</BaseButton>
<BaseButton type="default" danger onClick={() => handleDeleteRow(record.id)}>
{t('apiTable.delete')}
</BaseButton>
</>
)}
</BaseSpace>
),
},
render: (_, record) => {
const isCreating = record.id === -1;
return (
<ActionRow
record={record}
isCreating={isCreating}
handleToggleRow={handleToggleRow}
handleDeleteRow={handleDeleteRow}
t={t}
/>);
},
}
];

return (
Expand All @@ -169,6 +165,7 @@ export const ApiKeyTable: React.FC = () => {
onChange={handleTableChange}
scroll={{ x: 800 }}
bordered
style={{ padding: '2rem' }}
/>
);
};
39 changes: 2 additions & 37 deletions src/components/auth/LoginForm/LoginForm.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -93,43 +93,8 @@ export const LoginForm: React.FC = () => {
password: '',
}}
>
<Auth.FormTitle>{t('auth.common.login')}</Auth.FormTitle>
<S.LoginDescription>{t('auth.login.loginInfo')}</S.LoginDescription>
<Auth.FormItem
name="email"
label={t('auth.common.email')}
rules={[
{ required: true, message: t('auth.common.requiredField') },
{
type: 'email',
message: t('auth.common.notValidEmail'),
},
]}
>
<Auth.FormInput placeholder={t('auth.common.email')} />
</Auth.FormItem>
<Auth.FormItem
label={t('auth.common.password')}
name="password"
rules={[{ required: true, message: t('auth.common.requiredField') }]}
>
<Auth.FormInputPassword placeholder={t('auth.common.password')} />
</Auth.FormItem>
<Auth.ActionsWrapper>
<BaseForm.Item name="rememberMe" valuePropName="checked" noStyle>
<Auth.FormCheckbox>
<S.RememberMeText>{t('auth.login.rememberMe')}</S.RememberMeText>
</Auth.FormCheckbox>
</BaseForm.Item>
<Link to="/auth/forgot-password">
<S.ForgotPasswordText>{t('auth.common.forgotPass')}</S.ForgotPasswordText>
</Link>
</Auth.ActionsWrapper>
<BaseForm.Item noStyle>
<Auth.SubmitButton type="primary" htmlType="submit" loading={isLoading}>
{t('auth.common.login')}
</Auth.SubmitButton>
</BaseForm.Item>
<Auth.FormTitle style={{textAlign: "center"}}>{t('auth.common.login')}</Auth.FormTitle>
<hr></hr>
<BaseForm.Item noStyle>
<Auth.SocialButton type="default" htmlType="button" onClick={handleGoogleLogin}>
<Auth.SocialIconWrapper>
Expand Down
72 changes: 16 additions & 56 deletions src/components/auth/SignUpForm/SignUpForm.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -95,62 +95,8 @@ export const SignUpForm: React.FC = () => {
requiredMark="optional"
initialValues={initValues}
>
<S.Title>{t('auth.common.signUp')}</S.Title>
<Auth.FormItem
name="firstName"
label={t('common.firstName')}
rules={[{ required: true, message: t('auth.common.requiredField') }]}
>
<Auth.FormInput placeholder={t('common.firstName')} />
</Auth.FormItem>
<Auth.FormItem
name="lastName"
label={t('common.lastName')}
rules={[{ required: true, message: t('auth.common.requiredField') }]}
>
<Auth.FormInput placeholder={t('common.lastName')} />
</Auth.FormItem>
<Auth.FormItem
name="email"
label={t('auth.common.email')}
rules={[
{ required: true, message: t('auth.common.requiredField') },
{
type: 'email',
message: t('auth.common.notValidEmail'),
},
]}
>
<Auth.FormInput placeholder={t('auth.common.email')} />
</Auth.FormItem>
<Auth.FormItem
label={t('auth.common.password')}
name="password"
rules={[{ required: true, message: t('auth.common.requiredField') }]}
>
<Auth.FormInputPassword placeholder={t('auth.common.password')} />
</Auth.FormItem>
<Auth.ActionsWrapper>
<BaseForm.Item name="termOfUse" valuePropName="checked" noStyle>
<Auth.FormCheckbox>
<Auth.Text>
{t('auth.signup.agree')}{' '}
<Link to={tocUrl} target="_blank">
<Auth.LinkText>{t('auth.signup.termOfUse')}</Auth.LinkText>
</Link>{' '}
{t('auth.signup.and')}{' '}
<Link to={privacyPolicyUrl} target="_blank">
<Auth.LinkText>{t('auth.signup.privacyOPolicy')}</Auth.LinkText>
</Link>
</Auth.Text>
</Auth.FormCheckbox>
</BaseForm.Item>
</Auth.ActionsWrapper>
<BaseForm.Item noStyle>
<Auth.SubmitButton type="primary" htmlType="submit" loading={isLoading}>
{t('auth.common.signUp')}
</Auth.SubmitButton>
</BaseForm.Item>
<S.Title style={{textAlign: "center"}}>{t('auth.common.signUp')}</S.Title>
<hr></hr>
<BaseForm.Item noStyle>
<Auth.SocialButton type="default" htmlType="button" onClick={handleGoogleSignUp}>
<Auth.SocialIconWrapper>
Expand All @@ -175,14 +121,28 @@ export const SignUpForm: React.FC = () => {
{t('auth.signup.bitbucketLink')}
</Auth.SocialButton>
</BaseForm.Item>

<Auth.FooterWrapper>

<Auth.Text>
{t('auth.signup.alreadyHaveAccount')}{' '}
<Link to="/auth/login">
<Auth.LinkText>{t('auth.common.here')}</Auth.LinkText>
</Link>
</Auth.Text>
</Auth.FooterWrapper>
<Auth.FooterWrapper>
<Auth.Text style={{fontSize: "11px"}}>
{t('auth.signup.agree')}{' '}
<Link to={tocUrl} target="_blank" >
<Auth.LinkText style={{fontSize: "11px"}}>{t('auth.signup.termOfUse')}</Auth.LinkText>
</Link>{' '}
{t('auth.signup.and')}{' '}
<Link to={privacyPolicyUrl} target="_blank">
<Auth.LinkText style={{fontSize: "11px"}}>{t('auth.signup.privacyOPolicy')}</Auth.LinkText>
</Link>
</Auth.Text>
</Auth.FooterWrapper>
</BaseForm>
</Auth.FormWrapper>
);
Expand Down
Loading