update logo and fix routes
This commit is contained in:
parent
ce33d8a886
commit
2c89086299
|
@ -11,7 +11,25 @@
|
|||
</component>
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="4b1db503-490b-4f06-812d-6b9b94d2764a" name="Default Changelist" comment="">
|
||||
<change afterPath="$PROJECT_DIR$/public/logo.png" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/public/logo.svg" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/public/index.html" beforeDir="false" afterPath="$PROJECT_DIR$/public/index.html" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/public/logo192.png" beforeDir="false" afterPath="$PROJECT_DIR$/public/logo192_2.png" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/App.js" beforeDir="false" afterPath="$PROJECT_DIR$/src/App.js" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/components/elements/about.jsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/components/elements/about.jsx" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/components/elements/contacts.jsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/components/elements/contacts.jsx" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/components/elements/homepage/recent-block.jsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/components/elements/homepage/recent-block.jsx" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/components/elements/homepage/recent-list.jsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/components/elements/homepage/recent-list.jsx" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/components/pages/blog.jsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/components/pages/blog.jsx" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/components/pages/portfolio.jsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/components/pages/portfolio.jsx" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/constants/link-types.js" beforeDir="false" afterPath="$PROJECT_DIR$/src/constants/link-types.js" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/constants/routes.js" beforeDir="false" afterPath="$PROJECT_DIR$/src/constants/routes.js" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/index.js" beforeDir="false" afterPath="$PROJECT_DIR$/src/index.js" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/reducers/client-reducer.js" beforeDir="false" afterPath="$PROJECT_DIR$/src/reducers/client-reducer.js" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/reducers/site-content-reducer.js" beforeDir="false" afterPath="$PROJECT_DIR$/src/reducers/site-content-reducer.js" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/serviceWorker.js" beforeDir="false" afterPath="$PROJECT_DIR$/src/serviceWorker.js" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/store.js" beforeDir="false" afterPath="$PROJECT_DIR$/src/store.js" afterDir="false" />
|
||||
</list>
|
||||
<option name="SHOW_DIALOG" value="false" />
|
||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||
|
@ -36,27 +54,28 @@
|
|||
<property name="RunOnceActivity.ShowReadmeOnStart" value="true" />
|
||||
<property name="SHARE_PROJECT_CONFIGURATION_FILES" value="true" />
|
||||
<property name="WebServerToolWindowFactoryState" value="false" />
|
||||
<property name="dart.analysis.tool.window.visible" value="false" />
|
||||
<property name="last_opened_file_path" value="$PROJECT_DIR$/public" />
|
||||
<property name="node.js.detected.package.eslint" value="true" />
|
||||
<property name="node.js.path.for.package.eslint" value="project" />
|
||||
<property name="node.js.selected.package.eslint" value="(autodetect)" />
|
||||
<property name="nodejs_package_manager_path" value="yarn" />
|
||||
<property name="run.prettier.on.save" value="true" />
|
||||
<property name="settings.editor.selected.configurable" value="project.propVCSSupport.Mappings" />
|
||||
<property name="settings.editor.selected.configurable" value="reference.settingsdialog.IDE.editor.colors.Color Scheme Font" />
|
||||
</component>
|
||||
<component name="RecentsManager">
|
||||
<key name="CopyFile.RECENT_KEYS">
|
||||
<recent name="$PROJECT_DIR$/public" />
|
||||
<recent name="$PROJECT_DIR$/src/reducers" />
|
||||
<recent name="$PROJECT_DIR$/src/components/elements/homepage" />
|
||||
<recent name="$PROJECT_DIR$/src/ascii" />
|
||||
</key>
|
||||
<key name="MoveFile.RECENT_KEYS">
|
||||
<recent name="$PROJECT_DIR$/src/components/navigation" />
|
||||
<recent name="$PROJECT_DIR$/src/components/elements/homepage" />
|
||||
<recent name="$PROJECT_DIR$/src" />
|
||||
<recent name="$PROJECT_DIR$/src/css" />
|
||||
</key>
|
||||
<key name="CopyFile.RECENT_KEYS">
|
||||
<recent name="$PROJECT_DIR$/public" />
|
||||
<recent name="$PROJECT_DIR$/src/reducers" />
|
||||
<recent name="$PROJECT_DIR$/src/components/elements/homepage" />
|
||||
<recent name="$PROJECT_DIR$/src/ascii" />
|
||||
</key>
|
||||
</component>
|
||||
<component name="SvnConfiguration">
|
||||
<configuration />
|
||||
|
@ -77,6 +96,12 @@
|
|||
<workItem from="1590359928462" duration="4688000" />
|
||||
<workItem from="1590372993882" duration="19190000" />
|
||||
<workItem from="1590539117687" duration="5804000" />
|
||||
<workItem from="1591990547157" duration="817000" />
|
||||
<workItem from="1592031143821" duration="48000" />
|
||||
<workItem from="1592033216416" duration="71000" />
|
||||
<workItem from="1592033332932" duration="312000" />
|
||||
<workItem from="1592033666352" duration="776000" />
|
||||
<workItem from="1592131255026" duration="2989000" />
|
||||
</task>
|
||||
<servers />
|
||||
</component>
|
||||
|
@ -131,15 +156,17 @@
|
|||
<screen x="0" y="0" width="1920" height="1080" />
|
||||
</state>
|
||||
<state width="1918" height="298" key="GridCell.Tab.0.right/0.0.1920.1080/1920.0.1280.1024@0.0.1920.1080" timestamp="1589199973836" />
|
||||
<state x="391" y="182" key="SettingsEditor" timestamp="1590389869850">
|
||||
<screen x="0" y="0" width="1920" height="1080" />
|
||||
<state x="1653" y="2" key="SettingsEditor" timestamp="1592033800617">
|
||||
<screen x="1280" y="0" width="1920" height="1080" />
|
||||
</state>
|
||||
<state x="391" y="182" key="SettingsEditor/0.0.1920.1080/1920.0.1280.1024@0.0.1920.1080" timestamp="1590389869850" />
|
||||
<state x="534" y="-210" width="774" height="774" key="com.intellij.openapi.editor.actions.MultiplePasteAction$ClipboardContentChooser" timestamp="1590540625923">
|
||||
<screen x="0" y="0" width="1920" height="1080" />
|
||||
<state x="1653" y="2" key="SettingsEditor/1280.0.1920.1080/0.0.1280.1024@1280.0.1920.1080" timestamp="1592033800617" />
|
||||
<state x="1808" y="-270" width="774" height="774" key="com.intellij.openapi.editor.actions.MultiplePasteAction$ClipboardContentChooser" timestamp="1592136178449">
|
||||
<screen x="1280" y="0" width="1920" height="1080" />
|
||||
</state>
|
||||
<state x="538" y="-170" width="774" height="774" key="com.intellij.openapi.editor.actions.MultiplePasteAction$ClipboardContentChooser/0.0.1920.1080/1920.0.1280.1024@0.0.1920.1080" timestamp="1590396787684" />
|
||||
<state x="534" y="-210" key="com.intellij.openapi.editor.actions.MultiplePasteAction$ClipboardContentChooser/0.0.1920.1080@0.0.1920.1080" timestamp="1590540625923" />
|
||||
<state x="1808" y="-270" key="com.intellij.openapi.editor.actions.MultiplePasteAction$ClipboardContentChooser/1280.0.1920.1080/0.0.1280.1024@1280.0.1920.1080" timestamp="1592136178449" />
|
||||
<state x="1710" y="11" width="99" height="1060" key="dock-window-1" timestamp="1590395037402">
|
||||
<screen x="0" y="0" width="1920" height="1080" />
|
||||
</state>
|
||||
|
@ -288,9 +315,10 @@
|
|||
<screen x="0" y="0" width="1920" height="1080" />
|
||||
</state>
|
||||
<state x="622" y="249" key="run.anything.popup/0.0.1920.1080/1920.0.1280.1024@0.0.1920.1080" timestamp="1590363963127" />
|
||||
<state x="623" y="240" width="672" height="678" key="search.everywhere.popup" timestamp="1590395597621">
|
||||
<screen x="0" y="0" width="1920" height="1080" />
|
||||
<state x="1903" y="240" width="672" height="678" key="search.everywhere.popup" timestamp="1592033634952">
|
||||
<screen x="1280" y="0" width="1920" height="1080" />
|
||||
</state>
|
||||
<state x="623" y="240" width="672" height="678" key="search.everywhere.popup/0.0.1920.1080/1920.0.1280.1024@0.0.1920.1080" timestamp="1590395597621" />
|
||||
<state x="1903" y="240" width="672" height="678" key="search.everywhere.popup/1280.0.1920.1080/0.0.1280.1024@1280.0.1920.1080" timestamp="1592033634952" />
|
||||
</component>
|
||||
</project>
|
|
@ -10,9 +10,9 @@
|
|||
content="O. George's portfolio and blog"
|
||||
/>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Cuprum:ital,wght@0,400;1,400;1,700&display=swap" rel="stylesheet">
|
||||
<link rel="apple-touch-icon" href="%PUBLIC_URL%/logo192.png" />
|
||||
<link rel="apple-touch-icon" href="%PUBLIC_URL%/logo.png" />
|
||||
<link rel="manifest" href="%PUBLIC_URL%/manifest.json" />
|
||||
<link rel="icon" type="image/svg+xml" href="app-page.svg">
|
||||
<link rel="icon" type="image/svg+xml" href="logo.png">
|
||||
<title>Horhik.xyz</title>
|
||||
</head>
|
||||
<body>
|
||||
|
|
BIN
public/logo.png
Normal file
BIN
public/logo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 15 KiB |
116
public/logo.svg
Normal file
116
public/logo.svg
Normal file
|
@ -0,0 +1,116 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
id="svg8"
|
||||
version="1.1"
|
||||
viewBox="0 0 210 297"
|
||||
height="297mm"
|
||||
width="210mm">
|
||||
<defs
|
||||
id="defs2">
|
||||
<rect
|
||||
id="rect849"
|
||||
height="42.032764"
|
||||
width="55.861077"
|
||||
y="181.22374"
|
||||
x="157.3882" />
|
||||
<rect
|
||||
id="rect835"
|
||||
height="103.7479"
|
||||
width="127.15798"
|
||||
y="110.29623"
|
||||
x="53.174042" />
|
||||
</defs>
|
||||
<metadata
|
||||
id="metadata5">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
id="layer1">
|
||||
<text
|
||||
style="line-height:1.125;font-family:sans-serif;font-size:10.58333333px;white-space:pre;shape-inside:url(#rect835);"
|
||||
id="text833"
|
||||
xml:space="preserve" />
|
||||
<text
|
||||
style="line-height:1.125;font-family:sans-serif;font-size:10.58333333px;white-space:pre;shape-inside:url(#rect849);"
|
||||
id="text847"
|
||||
xml:space="preserve" />
|
||||
<g
|
||||
transform="translate(-6.665638,53.583117)"
|
||||
id="g899">
|
||||
<rect
|
||||
rx="0"
|
||||
style="fill:#282a36;fill-opacity:1;stroke-width:9.465;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
id="rect873"
|
||||
width="102.57725"
|
||||
height="129.46489"
|
||||
x="59.264179"
|
||||
y="46.933193"
|
||||
transform="matrix(0,1,1,0,0,0)"
|
||||
ry="18.287838" />
|
||||
<rect
|
||||
ry="0"
|
||||
transform="matrix(0,1,1,0,0,0)"
|
||||
y="46.933201"
|
||||
x="26.202042"
|
||||
height="129.46487"
|
||||
width="63.873825"
|
||||
id="rect873-6"
|
||||
style="fill:#44475a;fill-opacity:1;stroke-width:9.46499;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
rx="0" />
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
id="layer2">
|
||||
<text
|
||||
id="text841"
|
||||
y="123.47272"
|
||||
x="61.213528"
|
||||
style="font-size:31.1912px;line-height:1.11;font-family:sans-serif;fill:#ffb86c;fill-opacity:1;stroke-width:0.77978"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'mononoki Nerd Font';-inkscape-font-specification:'mononoki Nerd Font';fill:#ffb86c;fill-opacity:1;stroke-width:0.77978"
|
||||
y="123.47272"
|
||||
x="61.213528"
|
||||
id="tspan839">░█░█░</tspan><tspan
|
||||
id="tspan843"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'mononoki Nerd Font';-inkscape-font-specification:'mononoki Nerd Font';fill:#ffb86c;fill-opacity:1;stroke-width:0.77978"
|
||||
y="158.39955"
|
||||
x="61.213528">░█▀█░</tspan><tspan
|
||||
id="tspan845"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'mononoki Nerd Font';-inkscape-font-specification:'mononoki Nerd Font';fill:#ffb86c;fill-opacity:1;stroke-width:0.77978"
|
||||
y="193.32639"
|
||||
x="61.213528">░▀░▀░</tspan></text>
|
||||
<text
|
||||
id="text862"
|
||||
y="152.56528"
|
||||
x="104.05653"
|
||||
style="font-size:10.5833px;line-height:1.125;font-family:sans-serif;stroke-width:0.264583"
|
||||
xml:space="preserve"><tspan
|
||||
style="stroke-width:0.264583"
|
||||
y="152.56528"
|
||||
x="104.05653"
|
||||
id="tspan860" /></text>
|
||||
<text
|
||||
id="text871"
|
||||
y="139.71835"
|
||||
x="164.71696"
|
||||
style="font-size:10.5833px;line-height:1.125;font-family:sans-serif;stroke-width:0.264583"
|
||||
xml:space="preserve"><tspan
|
||||
style="stroke-width:0.264583"
|
||||
y="139.71835"
|
||||
x="164.71696"
|
||||
id="tspan869"></tspan></text>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 3.9 KiB |
Before Width: | Height: | Size: 8.2 KiB After Width: | Height: | Size: 8.2 KiB |
34
src/App.js
34
src/App.js
|
@ -1,9 +1,9 @@
|
|||
import React from "react";
|
||||
import "./css/basic.scss";
|
||||
import HomePage from "./components/pages/homepage";
|
||||
import {connect} from 'react-redux'
|
||||
import { connect } from "react-redux";
|
||||
import NavHeader from "./components/navigation/nav-header";
|
||||
import {BrowserRouter, Route, Switch} from 'react-router-dom'
|
||||
import { BrowserRouter, Route, Switch } from "react-router-dom";
|
||||
import PageLinks from "./components/navigation/page-links";
|
||||
import Logo from "./components/elements/logo";
|
||||
import PortfolioPage from "./components/pages/portfolio";
|
||||
|
@ -16,24 +16,30 @@ function App(props) {
|
|||
<Logo child={props.pageQuote} header={props.currentPageName} />
|
||||
<PageLinks />
|
||||
<Switch>
|
||||
{
|
||||
pages.map(page => {
|
||||
return(
|
||||
<Route exact path={page.src} component={page.page} key={page.src}/>
|
||||
)
|
||||
})
|
||||
}
|
||||
<Route
|
||||
exact
|
||||
path={'/'}
|
||||
component={HomePage}
|
||||
/>
|
||||
<Route
|
||||
exact
|
||||
path={'/blog'}
|
||||
component={BlogPage}
|
||||
/>
|
||||
<Route
|
||||
exact
|
||||
path={'/portfolio'}
|
||||
component={PortfolioPage}
|
||||
/>
|
||||
</Switch>
|
||||
</BrowserRouter>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default connect(
|
||||
state => ({
|
||||
export default connect((state) => ({
|
||||
currentPath: state.client.currentPath,
|
||||
currentPage: state.client.currentPage,
|
||||
currentPageName: state.client.currentPageName,
|
||||
pageQuote: state.client.pageQuote
|
||||
})
|
||||
)(App);
|
||||
pageQuote: state.client.pageQuote,
|
||||
}))(App);
|
||||
|
|
|
@ -1,23 +1,20 @@
|
|||
import React from 'react'
|
||||
import {connect} from 'react-redux'
|
||||
import React from "react";
|
||||
import { connect } from "react-redux";
|
||||
|
||||
const About = props => {
|
||||
const About = (props) => {
|
||||
return (
|
||||
<section>
|
||||
<h2>
|
||||
About me
|
||||
</h2>
|
||||
<h2>About me</h2>
|
||||
<section>
|
||||
<div>
|
||||
<h3>Who I am?</h3>
|
||||
|
||||
</div>
|
||||
<div>
|
||||
<h3>What I can?</h3>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
)
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
export default connect()(About)
|
||||
export default connect()(About);
|
||||
|
|
|
@ -29,11 +29,11 @@ const Contacts = (props) => {
|
|||
<ul className={"contacts"}>
|
||||
{links.map((link) => (
|
||||
<li key={link.url}>
|
||||
{link.mail ?
|
||||
{link.mail ? (
|
||||
<SocialLink url={`mailto:${link.mail}`} site={link.site} />
|
||||
:
|
||||
) : (
|
||||
<SocialLink url={link.url} site={link.site} />
|
||||
}
|
||||
)}
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
import React from "react";
|
||||
import { connect } from "react-redux";
|
||||
import { Link } from "react-router-dom/cjs/react-router-dom.min";
|
||||
|
||||
/*
|
||||
* props: {
|
||||
|
@ -12,12 +13,13 @@ import { connect } from "react-redux";
|
|||
|
||||
const RecentBlock = (props) => {
|
||||
return (
|
||||
<a
|
||||
href={props.link}
|
||||
className={`recent-block recent-block--${props.pos || "right"}`}
|
||||
<Link
|
||||
to={props.src}
|
||||
className={`recent-block recent-block--${props.pos === ('github') ? 'right' : "left"}`}
|
||||
>
|
||||
{props.header || "no content loaded..."}
|
||||
</a>
|
||||
</Link>
|
||||
|
||||
);
|
||||
};
|
||||
|
||||
|
|
|
@ -3,29 +3,24 @@ import { connect } from "react-redux";
|
|||
import RecentBlock from "./recent-block";
|
||||
import Contacts from "../contacts";
|
||||
|
||||
const Recent = (props) => {
|
||||
const Recent = ({recent}) => {
|
||||
return (
|
||||
<section className={"recent"}>
|
||||
<h1 className={"h1 recent-header"}>Recent</h1>
|
||||
<ul className="recent-list">
|
||||
<li>
|
||||
<RecentBlock link={"/portfolio"} header={'Added "TaSquare" project to portfolio '} pos={"right"} />
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<RecentBlock link={"/portfolio"} header={'Added Snake game to portfolio'} pos={"right"} />
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<RecentBlock
|
||||
link={"/portfolio"}
|
||||
header={'Added "AnkiLan" project to portfolio'}
|
||||
pos="right"
|
||||
/>
|
||||
{recent.map((page) => {
|
||||
return (
|
||||
<li key={page.src} >
|
||||
<RecentBlock src={page.src} header={page.content} pos={page.type}>
|
||||
</RecentBlock>
|
||||
</li>
|
||||
);
|
||||
})}
|
||||
</ul>
|
||||
</section>
|
||||
);
|
||||
};
|
||||
|
||||
export default connect()(Recent);
|
||||
export default connect(state => ({
|
||||
recent: state.content.recentNews
|
||||
}))(Recent);
|
||||
|
|
|
@ -12,8 +12,12 @@ const BlogArticlePreview = (props) => {
|
|||
</h2>
|
||||
<p>{props.post.description}</p>
|
||||
<ul className={"blog-info__list"}>
|
||||
<li className={"blog-info__item blog-info__item--created"}>{props.post.created}</li>
|
||||
<li className={"blog-info__item blog-info__item--reading-time"}>{props.post.readingTime}</li>
|
||||
<li className={"blog-info__item blog-info__item--created"}>
|
||||
{props.post.created}
|
||||
</li>
|
||||
<li className={"blog-info__item blog-info__item--reading-time"}>
|
||||
{props.post.readingTime}
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
);
|
||||
|
@ -22,7 +26,7 @@ const BlogArticlePreview = (props) => {
|
|||
const BlogPage = (props) => {
|
||||
return (
|
||||
<div>
|
||||
<h2 className={'nothing'} >There's nothing here yet</h2>
|
||||
<h2 className={"nothing"}>There's nothing here yet</h2>
|
||||
|
||||
{/*<ul className={"blog-posts"}>*/}
|
||||
{/* {props.posts.map((post, index) => {*/}
|
||||
|
|
|
@ -24,7 +24,15 @@ const PortfolioItem = (props) => {
|
|||
key={link.src}
|
||||
className={`project-link project-link--${link.type}`}
|
||||
>
|
||||
{link.type === APP && link.logo ? <img className={'project-link__logo'} src={link.logo} alt="TaSquare logo"/>: ''}
|
||||
{link.type === APP && link.logo ? (
|
||||
<img
|
||||
className={"project-link__logo"}
|
||||
src={link.logo}
|
||||
alt="TaSquare logo"
|
||||
/>
|
||||
) : (
|
||||
""
|
||||
)}
|
||||
|
||||
<a className={"link"} href={link.src}>
|
||||
{link.name}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
export const APP = "app"
|
||||
export const GITHUB = "github"
|
||||
export const IPHONE = "iphone"
|
||||
export const ANDROID = "android"
|
||||
export const APP_PAGE = "app-page"
|
||||
export const DEFAULT_DOMAIN = "horhik.xyz"
|
||||
export const APP = "app";
|
||||
export const GITHUB = "github";
|
||||
export const IPHONE = "iphone";
|
||||
export const ANDROID = "android";
|
||||
export const APP_PAGE = "app-page";
|
||||
export const DEFAULT_DOMAIN = "horhik.xyz";
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
import BlogPage from "../components/pages/blog";
|
||||
import PortfolioPage from "../components/pages/portfolio";
|
||||
import HomePage from "../components/pages/homepage";
|
||||
import {DEFAULT_DOMAIN} from '../constants/link-types'
|
||||
import { DEFAULT_DOMAIN } from "../constants/link-types";
|
||||
|
||||
const pages = [
|
||||
{
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import { SET_CURRENT_PAGE } from "../constants/routes";
|
||||
import HomePage from "../components/pages/homepage";
|
||||
import {DEFAULT_DOMAIN} from "../constants/link-types"
|
||||
import { DEFAULT_DOMAIN } from "../constants/link-types";
|
||||
|
||||
const initialState = {
|
||||
lang: "en",
|
||||
|
|
|
@ -1,19 +1,35 @@
|
|||
import { DEFAULT_DOMAIN, APP, APP_PAGE, GITHUB } from "../constants/link-types";
|
||||
|
||||
|
||||
const initialState = {
|
||||
recentNews: ["nope"],
|
||||
recentNews: [
|
||||
{
|
||||
src: '/portfolio',
|
||||
type: 'github',
|
||||
content: 'Added "TaSquare" project to portfolio ',
|
||||
},
|
||||
{
|
||||
src: '/portfolio',
|
||||
type: 'github',
|
||||
content: 'Added Snake game to portfolio',
|
||||
},
|
||||
{
|
||||
src: '/portfolio',
|
||||
type: 'github',
|
||||
content: 'Added "AnkiLan" project to portfolio',
|
||||
},
|
||||
],
|
||||
portfolioItems: [
|
||||
{
|
||||
name: 'AnkiLan',
|
||||
description: 'The app created for pushing cards with english words and their definitions to Anki',
|
||||
name: "AnkiLan",
|
||||
description:
|
||||
"The app created for pushing cards with english words and their definitions to Anki",
|
||||
gallery: [],
|
||||
pageLink: '',
|
||||
pageLink: "",
|
||||
links: [
|
||||
{
|
||||
name: 'GitHub page',
|
||||
name: "GitHub page",
|
||||
type: GITHUB,
|
||||
src: 'https://github.com/horhik/ankilan'
|
||||
src: "https://github.com/horhik/ankilan",
|
||||
},
|
||||
/*{
|
||||
name: 'App page',
|
||||
|
@ -21,74 +37,76 @@ const initialState = {
|
|||
src: 'https://github.com'
|
||||
},
|
||||
*/
|
||||
]
|
||||
],
|
||||
},
|
||||
{
|
||||
name: 'Snake Game',
|
||||
name: "Snake Game",
|
||||
description: 'Just the "Snake" game with smooth graphics',
|
||||
gallery: [],
|
||||
pageLink: '',
|
||||
pageLink: "",
|
||||
links: [
|
||||
{
|
||||
name: 'GitHub page',
|
||||
name: "GitHub page",
|
||||
type: GITHUB,
|
||||
src: 'https://github.com/horhik/snake'
|
||||
src: "https://github.com/horhik/snake",
|
||||
},
|
||||
|
||||
{
|
||||
name: 'Game page',
|
||||
name: "Game page",
|
||||
type: APP,
|
||||
src: 'https://smoothsnake.netlify.app',
|
||||
src: "https://smoothsnake.netlify.app",
|
||||
// logo: 'https://raw.githubusercontent.com/Horhik/tasquare/master/src/svg/logo.svg'
|
||||
}
|
||||
|
||||
]
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
name: 'TaSquare',
|
||||
description: 'TODO app for mobile',
|
||||
name: "TaSquare",
|
||||
description: "TODO app for mobile",
|
||||
gallery: [],
|
||||
pageLink: '',
|
||||
pageLink: "",
|
||||
links: [
|
||||
{
|
||||
name: 'GitHub page',
|
||||
name: "GitHub page",
|
||||
type: GITHUB,
|
||||
src: 'https://github.com/horhik/tasquare'
|
||||
src: "https://github.com/horhik/tasquare",
|
||||
},
|
||||
{
|
||||
name: 'App page',
|
||||
name: "App page",
|
||||
type: APP,
|
||||
src: 'https://tasquare.netlify.app',
|
||||
logo: 'https://raw.githubusercontent.com/Horhik/tasquare/master/src/svg/logo.svg'
|
||||
}
|
||||
|
||||
]
|
||||
}
|
||||
src: "https://tasquare.netlify.app",
|
||||
logo:
|
||||
"https://raw.githubusercontent.com/Horhik/tasquare/master/src/svg/logo.svg",
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
blogPageContent: [
|
||||
{
|
||||
name: 'The point of life by Linus Torvalds',
|
||||
description: 'Some about OpenSource philosophy and “just for fun” by Linus Torvalds',
|
||||
created: '02.04.2021',
|
||||
readingTime: '8min read',
|
||||
src: `https://${DEFAULT_DOMAIN}`
|
||||
name: "The point of life by Linus Torvalds",
|
||||
description:
|
||||
"Some about OpenSource philosophy and “just for fun” by Linus Torvalds",
|
||||
created: "02.04.2021",
|
||||
readingTime: "8min read",
|
||||
src: `https://${DEFAULT_DOMAIN}`,
|
||||
},
|
||||
{
|
||||
name: 'Haskell on Back-end, how it is?',
|
||||
description: 'This site’s back-end written on haskell, let’s talks about privileges of haskell on backend',
|
||||
created: '11.03.2020',
|
||||
readingTime: '11min read',
|
||||
src: `https://${DEFAULT_DOMAIN}`
|
||||
name: "Haskell on Back-end, how it is?",
|
||||
description:
|
||||
"This site’s back-end written on haskell, let’s talks about privileges of haskell on backend",
|
||||
created: "11.03.2020",
|
||||
readingTime: "11min read",
|
||||
src: `https://${DEFAULT_DOMAIN}`,
|
||||
},
|
||||
{
|
||||
name: 'ArchLinux and a lot of tiling window managers',
|
||||
description: 'Did you try something another than floating windows, like in windows?',
|
||||
created: '01.09.2020',
|
||||
readingTime: '4min read',
|
||||
src: `https://${DEFAULT_DOMAIN}`
|
||||
}
|
||||
]
|
||||
}
|
||||
name: "ArchLinux and a lot of tiling window managers",
|
||||
description:
|
||||
"Did you try something another than floating windows, like in windows?",
|
||||
created: "01.09.2020",
|
||||
readingTime: "4min read",
|
||||
src: `https://${DEFAULT_DOMAIN}`,
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
const siteContentReducer = (state = initialState, action) => {
|
||||
switch (action.type) {
|
||||
|
|
|
@ -11,9 +11,9 @@
|
|||
// opt-in, read https://bit.ly/CRA-PWA
|
||||
|
||||
const isLocalhost = Boolean(
|
||||
window.location.hostname === 'localhost' ||
|
||||
window.location.hostname === "localhost" ||
|
||||
// [::1] is the IPv6 localhost address.
|
||||
window.location.hostname === '[::1]' ||
|
||||
window.location.hostname === "[::1]" ||
|
||||
// 127.0.0.0/8 are considered localhost for IPv4.
|
||||
window.location.hostname.match(
|
||||
/^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/
|
||||
|
@ -21,7 +21,7 @@ const isLocalhost = Boolean(
|
|||
);
|
||||
|
||||
export function register(config) {
|
||||
if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {
|
||||
if (process.env.NODE_ENV === "production" && "serviceWorker" in navigator) {
|
||||
// The URL constructor is available in all browsers that support SW.
|
||||
const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);
|
||||
if (publicUrl.origin !== window.location.origin) {
|
||||
|
@ -31,7 +31,7 @@ export function register(config) {
|
|||
return;
|
||||
}
|
||||
|
||||
window.addEventListener('load', () => {
|
||||
window.addEventListener("load", () => {
|
||||
const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;
|
||||
|
||||
if (isLocalhost) {
|
||||
|
@ -42,8 +42,8 @@ export function register(config) {
|
|||
// service worker/PWA documentation.
|
||||
navigator.serviceWorker.ready.then(() => {
|
||||
console.log(
|
||||
'This web app is being served cache-first by a service ' +
|
||||
'worker. To learn more, visit https://bit.ly/CRA-PWA'
|
||||
"This web app is being served cache-first by a service " +
|
||||
"worker. To learn more, visit https://bit.ly/CRA-PWA"
|
||||
);
|
||||
});
|
||||
} else {
|
||||
|
@ -57,21 +57,21 @@ export function register(config) {
|
|||
function registerValidSW(swUrl, config) {
|
||||
navigator.serviceWorker
|
||||
.register(swUrl)
|
||||
.then(registration => {
|
||||
.then((registration) => {
|
||||
registration.onupdatefound = () => {
|
||||
const installingWorker = registration.installing;
|
||||
if (installingWorker == null) {
|
||||
return;
|
||||
}
|
||||
installingWorker.onstatechange = () => {
|
||||
if (installingWorker.state === 'installed') {
|
||||
if (installingWorker.state === "installed") {
|
||||
if (navigator.serviceWorker.controller) {
|
||||
// At this point, the updated precached content has been fetched,
|
||||
// but the previous service worker will still serve the older
|
||||
// content until all client tabs are closed.
|
||||
console.log(
|
||||
'New content is available and will be used when all ' +
|
||||
'tabs for this page are closed. See https://bit.ly/CRA-PWA.'
|
||||
"New content is available and will be used when all " +
|
||||
"tabs for this page are closed. See https://bit.ly/CRA-PWA."
|
||||
);
|
||||
|
||||
// Execute callback
|
||||
|
@ -82,7 +82,7 @@ function registerValidSW(swUrl, config) {
|
|||
// At this point, everything has been precached.
|
||||
// It's the perfect time to display a
|
||||
// "Content is cached for offline use." message.
|
||||
console.log('Content is cached for offline use.');
|
||||
console.log("Content is cached for offline use.");
|
||||
|
||||
// Execute callback
|
||||
if (config && config.onSuccess) {
|
||||
|
@ -93,25 +93,25 @@ function registerValidSW(swUrl, config) {
|
|||
};
|
||||
};
|
||||
})
|
||||
.catch(error => {
|
||||
console.error('Error during service worker registration:', error);
|
||||
.catch((error) => {
|
||||
console.error("Error during service worker registration:", error);
|
||||
});
|
||||
}
|
||||
|
||||
function checkValidServiceWorker(swUrl, config) {
|
||||
// Check if the service worker can be found. If it can't reload the page.
|
||||
fetch(swUrl, {
|
||||
headers: { 'Service-Worker': 'script' },
|
||||
headers: { "Service-Worker": "script" },
|
||||
})
|
||||
.then(response => {
|
||||
.then((response) => {
|
||||
// Ensure service worker exists, and that we really are getting a JS file.
|
||||
const contentType = response.headers.get('content-type');
|
||||
const contentType = response.headers.get("content-type");
|
||||
if (
|
||||
response.status === 404 ||
|
||||
(contentType != null && contentType.indexOf('javascript') === -1)
|
||||
(contentType != null && contentType.indexOf("javascript") === -1)
|
||||
) {
|
||||
// No service worker found. Probably a different app. Reload the page.
|
||||
navigator.serviceWorker.ready.then(registration => {
|
||||
navigator.serviceWorker.ready.then((registration) => {
|
||||
registration.unregister().then(() => {
|
||||
window.location.reload();
|
||||
});
|
||||
|
@ -123,18 +123,18 @@ function checkValidServiceWorker(swUrl, config) {
|
|||
})
|
||||
.catch(() => {
|
||||
console.log(
|
||||
'No internet connection found. App is running in offline mode.'
|
||||
"No internet connection found. App is running in offline mode."
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
export function unregister() {
|
||||
if ('serviceWorker' in navigator) {
|
||||
if ("serviceWorker" in navigator) {
|
||||
navigator.serviceWorker.ready
|
||||
.then(registration => {
|
||||
.then((registration) => {
|
||||
registration.unregister();
|
||||
})
|
||||
.catch(error => {
|
||||
.catch((error) => {
|
||||
console.error(error.message);
|
||||
});
|
||||
}
|
||||
|
|
|
@ -1,6 +1,9 @@
|
|||
import { createStore } from 'redux'
|
||||
import { createStore } from "redux";
|
||||
import rootReducer from "./reducers/all-reducers";
|
||||
|
||||
const store = createStore(rootReducer, window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__())
|
||||
const store = createStore(
|
||||
rootReducer,
|
||||
window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__()
|
||||
);
|
||||
|
||||
export default store
|
||||
export default store;
|
||||
|
|
Loading…
Reference in a new issue