Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release #2175

Merged
merged 11 commits into from
Feb 7, 2024
6 changes: 6 additions & 0 deletions .deploy/k8s/k8s-manifest-api.dev.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,12 @@ spec:
containers:
- name: ever-teams-dev-api
image: registry.digitalocean.com/ever/gauzy-api-demo:latest
resources:
requests:
memory: '1536Mi'
cpu: '1000m'
limits:
memory: '2048Mi'
env:
- name: API_HOST
value: 0.0.0.0
Expand Down
2 changes: 1 addition & 1 deletion .deploy/k8s/k8s-manifest-api.prod.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ apiVersion: apps/v1
metadata:
name: ever-teams-prod-api
spec:
replicas: 3
replicas: 6
selector:
matchLabels:
app: ever-teams-prod-api
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,8 @@ Note: Currently WIP, the screenshot is just a temporary picture :)

## 🔗 Links

- **<https://app.ever.team>** - Ever® Teams™ Platform Web Application (not yet in production release).
- **<https://demo.ever.team>** - Ever® Teams™ Platform Demo Web Application (not yet in production release).
- **<https://app.ever.team>** - Ever® Teams™ Platform Web Application.
- **<https://demo.ever.team>** - Ever® Teams™ Platform Demo Web Application.
- **<https://docs.ever.team>** - Ever® Teams™ Platform Documentation (WIP).
- **<https://ever.team>** - Check more information about the Ever® Teams™ platform at the official website (WIP).
- **<https://gauzy.co>** - Check more information about the Ever® Gauzy™ Platform at the official website.
Expand Down
1 change: 0 additions & 1 deletion apps/web/app/[locale]/layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,6 @@ const LocaleLayout = ({ children, params: { locale }, pageProps }: Props) => {

// eslint-disable-next-line @typescript-eslint/no-var-requires
const messages = require(`../../messages/${locale}.json`);
console.log({ pageProps });
return (
<html lang={locale} className={`${poppins.variable} ${jakarta.variable}`}>
{/* <head>
Expand Down
25 changes: 25 additions & 0 deletions apps/web/app/[locale]/next-intl.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import { Languages } from '../constants';

declare module 'next-intl' {
export type Translations = Languages;
type PathsToStringProps<T> = T extends string
? []
: { [K in Extract<keyof T, string>]: [K, ...PathsToStringProps<T[K]>] }[Extract<keyof T, string>];

type Join<T extends string[], D extends string> = T extends []
? never
: T extends [infer F]
? F
: T extends [infer F, ...infer R]
? F extends string
? `${F}${D}${Join<Extract<R, string[]>, D>}`
: never
: string;

export type DottedLanguageObjectStringPaths = Join<PathsToStringProps<Translations>, '.'>;
export type TranslationHooks = (
key: DottedLanguageObjectStringPaths,
value?: any
) => DottedLanguageObjectStringPaths;
export const useTranslations: () => TranslationHooks;
}
8 changes: 8 additions & 0 deletions apps/web/app/[locale]/unauthorized/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import UnauthorizedPage from '@components/pages/unauthorized';
import React from 'react';

const page = () => {
return <UnauthorizedPage />;
};

export default page;
3 changes: 2 additions & 1 deletion apps/web/app/constants.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { JitsuOptions } from '@jitsu/jitsu-react/dist/useJitsu';
import { I_SMTPRequest } from './interfaces/ISmtp';
import { getNextPublicEnv } from './env';
import enLanguage from '../messages/en.json';

export const API_BASE_URL = '/api';
export const DEFAULT_APP_PATH = '/auth/passcode';
Expand Down Expand Up @@ -166,7 +167,7 @@ export const APPLICATION_LANGUAGES_CODE = [
'ru',
'es'
];

export type Languages = typeof enLanguage;
export enum ActivityFilters {
TASKS = 'Tasks',
SCREENSHOOTS = 'Screenshots',
Expand Down
4 changes: 2 additions & 2 deletions apps/web/components/layout/footer/footer.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ const Footer = () => {
className="text-primary dark:text-gray-300"
rel="noreferrer"
>
{t('layout.footer.COPY_RIGHT3')}
{t('layout.footer.COPY_RIGHT4')}
</a>
<div>by</div>
<a
Expand All @@ -29,7 +29,7 @@ const Footer = () => {
<ToggleThemeContainer />
</div>
</div>
<div>{t('layout.footer.RIGHTS_RESERVERD')}</div>
<div>{t('layout.footer.RIGHTS_RESERVED')}</div>
<div className="hidden space-x-2 sm:flex md:hidden">
<ToggleThemeContainer />
</div>
Expand Down
2 changes: 1 addition & 1 deletion apps/web/components/layout/header/profile.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ const Profile = () => {
},
{ name: t('links.common.TEAM'), icon: '/assets/svg/teams-icon.svg', link: '' },
{
name: t('links.common.Settings'),
name: t('links.common.SETTINGS'),
icon: '/assets/svg/settings-icon.svg',
link: ''
}
Expand Down
6 changes: 3 additions & 3 deletions apps/web/components/pages/main/team-member.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -105,12 +105,12 @@ const Header = () => {
<div></div>
<div className="w-[334px] text-center">{t('task.TITLE')}</div>
<div></div>
<div className="w-[122px] text-center">{t('task.TASK_WORK.LABEL')}</div>
<div className="w-[122px] text-center">{t('task.taskTableHead.TASK_WORK.LABEL')}</div>
<div></div>
<div className="w-[245px] text-center">{t('task.TASK_TIME')}</div>
<div className="w-[245px] text-center">{t('task.taskTableHead.TASK_TIME')}</div>
<div></div>
<div className="w-[184px] text-center flex items-center justify-center">
<span className="w-[104px]">{t('task.TOTAL_WORK.LABEL')}</span>
<span className="w-[104px]">{t('task.taskTableHead.TOTAL_WORK.LABEL')}</span>
</div>
</div>
</li>
Expand Down
34 changes: 34 additions & 0 deletions apps/web/components/pages/unauthorized/index.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
'use client';

import { LockClosedIcon } from '@radix-ui/react-icons';
import { Button, Text } from 'lib/components';
import { useTranslations } from 'next-intl';
import Link from 'next/link';
import React from 'react';

function UnauthorizedPage() {
const t = useTranslations();

return (
<div className="mt-28 flex flex-col gap-7 items-center">
<div className="m-auto relative flex justify-center items-center gap-4 text-center ">
<LockClosedIcon width={97} height={97} fill="#8C7AE4" className="text-[#8C7AE4]" />
<Text className="text-[78px] font-semibold text-chetwodeBlue">{t('pages.unauthorized.TITLE')}</Text>
</div>

<Text className="text-[40px] font-bold text-center text-[#282048] dark:text-light--theme">
{t('pages.unauthorized.HEADING_TITLE')}
</Text>
<div className="flex flex-col gap-4">
<Text className="text-[20px] container !max-w-5xl leading-8 font-normal text-center text-gray-400">
{t('pages.unauthorized.HEADING_DESCRIPTION')}
</Text>
<Link href="/auth/passcode">
<Button className="m-auto mt-10 font-normal rounded-lg pl-7 pr-7">Login</Button>
</Link>
</div>
</div>
);
}

export default UnauthorizedPage;
Original file line number Diff line number Diff line change
Expand Up @@ -49,20 +49,20 @@ function OptionPopover({ setEdit, setEstimateEdit, children }: PropsWithChildren
extramenu: true
},
{
name: t('task.UNASSIGN_TASK'),
name: t('task.taskLabel.TASK_UNASSIGNED'),
handleClick: () => {
//
},
extramenu: true
},
{
name: t('task.MAKE_A_MANAGER'),
name: t('task.taskLabel.TASK_ASSIGNED'),
handleClick: () => {
//
}
},
{
name: t('task.MAKE_A_MANAGER'),
name: t('task.taskLabel.WORK_LABEL'),
handleClick: () => {
//
}
Expand Down
44 changes: 25 additions & 19 deletions apps/web/components/ui/svgs/sad-cry.tsx
Original file line number Diff line number Diff line change
@@ -1,21 +1,27 @@
const SadCry = ({ width, height, fill = '#8C7AE4' }: { width: number; height: number; fill?: string }) => {
return (
<>
<svg xmlns="http://www.w3.org/2000/svg" width={width} height={height} viewBox="0 0 97 98" fill="none">
<path
d="M48.5 0.5625C21.7422 0.5625 0.0625 22.2422 0.0625 49C0.0625 66.5977 9.47656 81.9492 23.5 90.4258V55.25C23.5 53.5312 24.9062 52.125 26.625 52.125C28.3438 52.125 29.75 53.5312 29.75 55.25V93.668C35.5117 96.0898 41.8594 97.4375 48.5 97.4375C55.1406 97.4375 61.4883 96.0898 67.25 93.668V55.25C67.25 53.5312 68.6562 52.125 70.375 52.125C72.0938 52.125 73.5 53.5312 73.5 55.25V90.4258C87.5234 81.9492 96.9375 66.5781 96.9375 49C96.9375 22.2422 75.2578 0.5625 48.5 0.5625ZM35.707 42.8477C32.8164 40.2695 26.6836 40.2695 23.793 42.8477L21.9375 44.5078C21.1953 45.1523 20.1211 45.2891 19.2617 44.8203C18.4023 44.3516 17.9141 43.375 18.0703 42.3984C18.8516 37.4766 24.75 34.1758 29.7695 34.1758C34.7891 34.1758 40.6875 37.4766 41.4688 42.3984C41.625 43.375 41.1367 44.3516 40.2773 44.8203C39.1445 45.4258 38.0898 44.957 37.6016 44.5078L35.707 42.8477ZM48.5 80.25C43.3242 80.25 39.125 74.6445 39.125 67.75C39.125 60.8555 43.3242 55.25 48.5 55.25C53.6758 55.25 57.875 60.8555 57.875 67.75C57.875 74.6445 53.6758 80.25 48.5 80.25ZM77.7578 44.8008C76.625 45.4062 75.5703 44.9375 75.082 44.4883L73.2266 42.8281C70.3359 40.25 64.2031 40.25 61.3125 42.8281L59.4375 44.5078C58.6953 45.1523 57.6211 45.2891 56.7617 44.8203C55.9023 44.3516 55.4141 43.375 55.5703 42.3984C56.3516 37.4766 62.25 34.1758 67.2695 34.1758C72.2891 34.1758 78.1875 37.4766 78.9688 42.3984C79.0859 43.3555 78.6172 44.332 77.7578 44.8008Z"
fill={fill}
/>
</svg>
</>
);
};

const SadCry = ({
width,
height,
fill="#8C7AE4"
}:{
width: number,
height: number,
fill?: string,
}) => {
return (
<>
<svg xmlns="http://www.w3.org/2000/svg" width={width} height={height} viewBox="0 0 97 98" fill="none">
<path d="M48.5 0.5625C21.7422 0.5625 0.0625 22.2422 0.0625 49C0.0625 66.5977 9.47656 81.9492 23.5 90.4258V55.25C23.5 53.5312 24.9062 52.125 26.625 52.125C28.3438 52.125 29.75 53.5312 29.75 55.25V93.668C35.5117 96.0898 41.8594 97.4375 48.5 97.4375C55.1406 97.4375 61.4883 96.0898 67.25 93.668V55.25C67.25 53.5312 68.6562 52.125 70.375 52.125C72.0938 52.125 73.5 53.5312 73.5 55.25V90.4258C87.5234 81.9492 96.9375 66.5781 96.9375 49C96.9375 22.2422 75.2578 0.5625 48.5 0.5625ZM35.707 42.8477C32.8164 40.2695 26.6836 40.2695 23.793 42.8477L21.9375 44.5078C21.1953 45.1523 20.1211 45.2891 19.2617 44.8203C18.4023 44.3516 17.9141 43.375 18.0703 42.3984C18.8516 37.4766 24.75 34.1758 29.7695 34.1758C34.7891 34.1758 40.6875 37.4766 41.4688 42.3984C41.625 43.375 41.1367 44.3516 40.2773 44.8203C39.1445 45.4258 38.0898 44.957 37.6016 44.5078L35.707 42.8477ZM48.5 80.25C43.3242 80.25 39.125 74.6445 39.125 67.75C39.125 60.8555 43.3242 55.25 48.5 55.25C53.6758 55.25 57.875 60.8555 57.875 67.75C57.875 74.6445 53.6758 80.25 48.5 80.25ZM77.7578 44.8008C76.625 45.4062 75.5703 44.9375 75.082 44.4883L73.2266 42.8281C70.3359 40.25 64.2031 40.25 61.3125 42.8281L59.4375 44.5078C58.6953 45.1523 57.6211 45.2891 56.7617 44.8203C55.9023 44.3516 55.4141 43.375 55.5703 42.3984C56.3516 37.4766 62.25 34.1758 67.2695 34.1758C72.2891 34.1758 78.1875 37.4766 78.9688 42.3984C79.0859 43.3555 78.6172 44.332 77.7578 44.8008Z"
fill={fill}/>
</svg>
</>
)
}
export const LockIcon = ({ width, height, fill = '#8C7AE4' }: { width: number; height: number; fill?: string }) => {
return (
<>
<svg xmlns="http://www.w3.org/2000/svg" width={width} height={height} viewBox="0 0 97 97" fill="none">
<path
d="M12 21.9q-.175 0-.325-.025t-.3-.075q-3.425-1.125-5.4-4.1T4 11.1V6.375q0-.625.363-1.125t.937-.725l6-2.25q.35-.125.7-.125t.7.125l6 2.25q.575.225.938.725T20 6.375V11.1q0 .25-.012.5t-.038.5q-.25-.05-.475-.075T19 12q-2.075 0-3.538 1.463T14 17v4.25q-.325.175-.675.3l-.7.25q-.15.05-.3.075T12 21.9m4.85.1q-.35 0-.6-.25t-.25-.6v-3.3q0-.35.25-.6t.6-.25H17v-1q0-.825.588-1.412T19 14q.825 0 1.413.588T21 16v1h.15q.35 0 .6.25t.25.6v3.3q0 .35-.25.6t-.6.25zM18 17h2v-1q0-.425-.288-.712T19 15q-.425 0-.712.288T18 16z"
fill={fill}
/>
</svg>
</>
);
};

export default SadCry;
export default SadCry;
2 changes: 1 addition & 1 deletion apps/web/lib/settings/day-dropdown.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import { DayItem, mapDayItems } from './day-items';

export const DayDropdown = ({ setValue, active }: { setValue: UseFormSetValue<FieldValues>; active?: IDay | null }) => {
const t = useTranslations();
const [DayList, setDay] = useState<IDay[]>(JSON.parse(t('timer.DAY_LIST')));
const [DayList, setDay] = useState<IDay[]>(JSON.parse(t('pages.taskDetails.DAYS_REMAINING')));

const items: any = useMemo(() => mapDayItems(DayList), [DayList]);

Expand Down
13 changes: 9 additions & 4 deletions apps/web/messages/ar.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
"REJECT": "رفض",
"REJECTED": "مرفوض",
"VERIFY": "تحقق",
"TOMORROW" : "غدا",
"YESTERDAY" : "أمس",
"TOMORROW": "غدا",
"YESTERDAY": "أمس",
"INVITE": "دعوة",
"INVITED": "مدعو",
"EXPIRE": "انتهاء الصلاحية",
Expand Down Expand Up @@ -192,8 +192,8 @@
"CONFIRM_ACCEPT_INVITATION": "هل أنت متأكد من رغبتك في قبول الدعوة؟",
"CONFIRM_REJECT_INVITATION": "هل أنت متأكد من رغبتك في رفض الدعوة؟"
},
"kanban":{
"KANBAN_BOARD":"لوحة كانبان"
"kanban": {
"KANBAN_BOARD": "لوحة كانبان"
},
"profile": {
"BREADCRUMB": "[\"مهام العضو\"]"
Expand Down Expand Up @@ -425,6 +425,11 @@
"SELECT_ROLES": "تحديد الأدوار"
},

"unauthorized": {
"TITLE": "غير مصرح",
"HEADING_TITLE": "أنت غير مفوض لدخول هذه الصفحة !",
"HEADING_DESCRIPTION": "عتذر عن الإزعاج، لكن غير مسموح لك بالدخول إلى هذه الصفحة. إذا كنت تعتقد أن هذا خطأ. الرجاء تسجيل الدخول."
},
"page404": {
"HEADING_TITLE": "غير موجود",
"HEADING_DESCRIPTION": "المورد الذي تبحث عنه غير موجود!",
Expand Down
13 changes: 9 additions & 4 deletions apps/web/messages/bg.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
"ACCEPT": "Приемам",
"ACCEPTED": "Приет",
"REJECT": "Отхвърлям",
"TOMORROW" : "Утре",
"YESTERDAY" : "Вчера",
"TOMORROW": "Утре",
"YESTERDAY": "Вчера",
"REJECTED": "Отхвърлен",
"VERIFY": "провери",
"INVITE": "Покани",
Expand Down Expand Up @@ -191,8 +191,8 @@
"CONFIRM_ACCEPT_INVITATION": "Сигурни ли сте, че искате да приемете поканата?",
"CONFIRM_REJECT_INVITATION": "Сигурни ли сте, че искате да отхвърлите поканата?"
},
"kanban":{
"KANBAN_BOARD":"Канбан дъска"
"kanban": {
"KANBAN_BOARD": "Канбан дъска"
},
"profile": {
"BREADCRUMB": "[\"Задачи за член\"]"
Expand Down Expand Up @@ -429,6 +429,11 @@
"permissions": {
"SELECT_ROLES": "Избери роли"
},
"unauthorized": {
"TITLE": "Неразрешено",
"HEADING_TITLE": "Нямате право за достъп до тази страница!",
"HEADING_DESCRIPTION": "Извиняваме се за неудобството, но не сте оторизирани за достъп до тази страница. Ако смятате, че това е грешка. Моля влезте."
},
"page404": {
"HEADING_TITLE": "Ненамерено",
"HEADING_DESCRIPTION": "Търсеният ресурс не беше намерен!",
Expand Down
14 changes: 9 additions & 5 deletions apps/web/messages/de.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
"ACCEPT": "Akzeptieren",
"ACCEPTED": "Akzeptiert",
"REJECT": "Ablehnen",
"TOMORROW" : "Morgen",
"YESTERDAY" : "Gestern",
"TOMORROW": "Morgen",
"YESTERDAY": "Gestern",
"REJECTED": "Abgelehnt",
"VERIFY": "Verifizieren",
"INVITE": "Einladen",
Expand Down Expand Up @@ -193,14 +193,13 @@
"CONFIRM_ACCEPT_INVITATION": "Möchten Sie die Einladung wirklich annehmen?",
"CONFIRM_REJECT_INVITATION": "Möchten Sie die Einladung wirklich ablehnen?"
},
"kanban":{
"KANBAN_BOARD":"Kanban-Board"
"kanban": {
"KANBAN_BOARD": "Kanban-Board"
},
"profile": {
"BREADCRUMB": "[\"Aufgaben des Mitglieds\"]"
},


"taskDetails": {
"BREADCRUMB": "[\"Aufgabendetails\"]",
"DESCRIPTION": "Beschreibungen",
Expand Down Expand Up @@ -423,6 +422,11 @@
"permissions": {
"SELECT_ROLES": "Rollen auswählen"
},
"unauthorized": {
"TITLE": "Nicht autorisiert",
"HEADING_TITLE": "Sie sind nicht autorisiert auf diese Seite zuzugreifen !",
"HEADING_DESCRIPTION": "Wir entschuldigen uns für die Unannehmlichkeiten, aber Sie sind nicht berechtigt, auf diese Seite zuzugreifen. Wenn Sie glauben, dass dies ein Fehler ist. Bitte loggen Sie sich ein."
},
"page404": {
"HEADING_TITLE": "Nicht gefunden",
"HEADING_DESCRIPTION": "Die gesuchte Ressource wurde nicht gefunden!",
Expand Down
9 changes: 7 additions & 2 deletions apps/web/messages/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -201,8 +201,8 @@
"profile": {
"BREADCRUMB": "[\"Member Tasks\"]"
},
"kanban":{
"KANBAN_BOARD":"Kanban Board"
"kanban": {
"KANBAN_BOARD": "Kanban Board"
},

"taskDetails": {
Expand Down Expand Up @@ -426,6 +426,11 @@
"permissions": {
"SELECT_ROLES": "Select Roles"
},
"unauthorized": {
"TITLE": "Unauthorized",
"HEADING_TITLE": "You are not authorized to access this page !",
"HEADING_DESCRIPTION": "We apologize for the inconvenience, but you are not authorized to access to this page. If you believe this is an error. Please login."
},
"page404": {
"HEADING_TITLE": "Page not found !",
"HEADING_DESCRIPTION": "We looked, but can't find it .... ",
Expand Down
Loading
Loading