🚀 release: v3.0.0

This commit is contained in:
Amruth Pillai
2022-03-02 17:44:11 +01:00
parent 2175256310
commit 295172687b
352 changed files with 30932 additions and 0 deletions

View File

@ -0,0 +1,20 @@
export const hexColorPattern = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i;
export const colorOptions: string[] = [
'#f44336',
'#e91e63',
'#9c27b0',
'#673ab7',
'#3f51b5',
'#4896d5',
'#03a9f4',
'#00bcd4',
'#009688',
'#4caf50',
'#8bc34a',
'#cddc39',
'#ffeb3b',
'#ffc107',
'#222222',
'#dddddd',
];

View File

@ -0,0 +1,20 @@
export type Language = {
code: string;
name: string;
localName?: string;
};
export const languages: Language[] = [
{
code: 'en',
name: 'English',
},
];
export const languageMap = languages.reduce(
(acc, lang) => ({
...acc,
[lang.code]: lang,
}),
{}
);

View File

@ -0,0 +1,31 @@
type Screenshot = {
src: string;
alt: string;
};
export const screenshots: Screenshot[] = [
{
src: '/images/screenshots/dashboard.png',
alt: 'Create multiple resumes under one account',
},
{
src: '/images/screenshots/import-external.png',
alt: 'Import your data from LinkedIn, JSON Resume or Reactive Resume',
},
{
src: '/images/screenshots/builder.png',
alt: 'Variety of features to personalize your resume to your liking',
},
{
src: '/images/screenshots/add-section.png',
alt: 'Multiple pre-built sections which can be renamed, or just create your own section',
},
{
src: '/images/screenshots/page-layout.png',
alt: 'Create multiple pages, manage section layouts as easy as dragging them around',
},
{
src: '/images/screenshots/preview.png',
alt: 'Get a unique link to your resume which can be shared with anyone for the latest information',
},
];

View File

@ -0,0 +1,181 @@
import {
Architecture,
CardGiftcard,
Category,
Coffee,
Download,
EmojiEvents,
FontDownload,
Groups,
Language,
Link as LinkIcon,
Map,
Margin,
MenuBook,
Palette,
Person,
Sailing,
School,
Settings as SettingsIcon,
Share,
Style,
Twitter,
VolunteerActivism,
Work,
} from '@mui/icons-material';
import { Section as SectionRecord } from '@reactive-resume/schema';
import isEmpty from 'lodash/isEmpty';
import Basics from '@/components/build/LeftSidebar/sections/Basics';
import Location from '@/components/build/LeftSidebar/sections/Location';
import Profiles from '@/components/build/LeftSidebar/sections/Profiles';
import Section from '@/components/build/LeftSidebar/sections/Section';
import CustomCSS from '@/components/build/RightSidebar/sections/CustomCSS';
import Export from '@/components/build/RightSidebar/sections/Export';
import Layout from '@/components/build/RightSidebar/sections/Layout';
import Links from '@/components/build/RightSidebar/sections/Links';
import Settings from '@/components/build/RightSidebar/sections/Settings';
import Sharing from '@/components/build/RightSidebar/sections/Sharing';
import Templates from '@/components/build/RightSidebar/sections/Templates';
import Theme from '@/components/build/RightSidebar/sections/Theme';
import Typography from '@/components/build/RightSidebar/sections/Typography';
import { SidebarSection } from '@/types/app';
export const left: SidebarSection[] = [
{
id: 'basics',
icon: <Person />,
component: <Basics />,
},
{
id: 'location',
icon: <Map />,
component: <Location />,
},
{
id: 'profiles',
icon: <Twitter />,
component: <Profiles />,
},
{
id: 'work',
icon: <Work />,
component: <Section path="sections.work" titleKey="name" subtitleKey="position" isEditable isHideable />,
},
{
id: 'education',
icon: <School />,
component: <Section path="sections.education" titleKey="institution" subtitleKey="area" isEditable isHideable />,
},
{
id: 'awards',
icon: <EmojiEvents />,
component: <Section path="sections.awards" titleKey="title" subtitleKey="awarder" isEditable isHideable />,
},
{
id: 'certifications',
icon: <CardGiftcard />,
component: <Section path="sections.certifications" titleKey="name" subtitleKey="issuer" isEditable isHideable />,
},
{
id: 'publications',
icon: <MenuBook />,
component: <Section path="sections.publications" titleKey="name" subtitleKey="publisher" isEditable isHideable />,
},
{
id: 'skills',
icon: <Architecture />,
component: <Section path="sections.skills" titleKey="name" subtitleKey="level" isEditable isHideable />,
},
{
id: 'languages',
icon: <Language />,
component: <Section path="sections.languages" titleKey="name" subtitleKey="level" isEditable isHideable />,
},
{
id: 'interests',
icon: <Sailing />,
component: <Section path="sections.interests" titleKey="name" subtitleKey="keywords" isEditable isHideable />,
},
{
id: 'volunteer',
icon: <VolunteerActivism />,
component: (
<Section path="sections.volunteer" titleKey="organization" subtitleKey="position" isEditable isHideable />
),
},
{
id: 'projects',
icon: <Coffee />,
component: <Section path="sections.projects" titleKey="name" subtitleKey="description" isEditable isHideable />,
},
{
id: 'references',
icon: <Groups />,
component: <Section path="sections.references" titleKey="name" subtitleKey="relationship" isEditable isHideable />,
},
];
export const right: SidebarSection[] = [
{
id: 'templates',
icon: <Category />,
component: <Templates />,
},
{
id: 'layout',
icon: <Margin />,
component: <Layout />,
},
{
id: 'typography',
icon: <FontDownload />,
component: <Typography />,
},
{
id: 'theme',
icon: <Palette />,
component: <Theme />,
},
{
id: 'css',
icon: <Style />,
component: <CustomCSS />,
},
{
id: 'sharing',
icon: <Share />,
component: <Sharing />,
},
{
id: 'export',
icon: <Download />,
component: <Export />,
},
{
id: 'settings',
icon: <SettingsIcon />,
component: <Settings />,
},
{
id: 'links',
icon: <LinkIcon />,
component: <Links />,
},
];
export const getCustomSections = (sections: Record<string, SectionRecord>): Array<SectionRecord> => {
if (isEmpty(sections)) return [];
return Object.entries(sections).reduce((acc, [id, section]) => {
if (section.type === 'custom') {
return [...acc, { ...section, id }];
}
return acc;
}, [] as Array<SectionRecord>);
};
const sections = [...left, ...right];
export default sections;

View File

@ -0,0 +1,72 @@
import { createTheme } from '@mui/material';
import { grey } from '@mui/material/colors';
import { teal } from 'tailwindcss/colors';
const theme = createTheme({
typography: {
fontSize: 12,
fontFamily: 'Inter, sans-serif',
},
components: {
MuiButton: {
defaultProps: {
size: 'small',
variant: 'contained',
disableElevation: true,
},
styleOverrides: {
root: {
textTransform: 'none',
padding: '6px 20px',
},
},
},
MuiTextField: {
defaultProps: {
variant: 'outlined',
},
},
MuiAppBar: {
styleOverrides: {
root: {
zIndex: 30,
},
},
},
MuiTooltip: {
styleOverrides: {
tooltip: {
fontSize: 12,
},
},
},
MuiDrawer: {
styleOverrides: {
root: {
zIndex: 40,
},
paper: {
border: 'none',
},
},
},
},
});
export const lightTheme = createTheme({
...theme,
palette: {
mode: 'light',
primary: { main: grey[800] },
secondary: { main: teal[600] },
},
});
export const darkTheme = createTheme({
...theme,
palette: {
mode: 'dark',
primary: { main: grey[100] },
secondary: { main: teal[400] },
},
});