diff --git a/.vscode/settings.json b/.vscode/settings.json index d5cf962..67a524b 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -4,6 +4,10 @@ "editor.codeActionsOnSave": { "source.fixAll": true }, + "todo-tree.filtering.excludeGlobs": [ + "**/node_modules/**", + "**/content/**", + ], "cSpell.words": [ "dayjs", "dribbble", diff --git a/TODO.md b/TODO.md deleted file mode 100644 index 81edd94..0000000 --- a/TODO.md +++ /dev/null @@ -1,139 +0,0 @@ -- [x] update NPM -- [x] see if new start template has some recommendations -- [x] read docs a little -- [x] repair console errors -- [x] remove deprecated stuff -- [x] check why `-` is a regular file and not `f` -- [x] add eslint -- [x] use Gatsby Link component -- [x] put null/false/true into own component -- [x] this fonts must be loaded in order - - ~~Sync: Abril Fatface~~ - - ~~Sync: IBM Plex Mono~~ - - Async: Inter -- [x] replace package.json with version.txt to reduce size -- [x] add custom slug to all pages -- [x] test `postcss-easing-gradients` with Scss loaded in `/src` -- [x] ~~add schema generator~~ -- [x] new start page: https://labs.semplice.com/s5-vertical-grid -- [x] test purgecss with classes from Markdown files -- [x] add NOW deployment - - [x] Setup Nameserver - - [x] Test - - [x] Everything pushed to master -> marvin.digital - - [x] Everything pushed to development -> dev.marvin.digital -- [x] ~~Setup GitHub workflow to deploy with notification and version alias~~ -- [x] replace React with [Preact][1] (check if it works when finished) -- [x] add version to GraphQL data not as file... -- [x] remove "build brotli from source" with a already finished build -- [x] always use latest NGINX image -- [x] test prod build locally with SSL and brotli compression -- [x] weird lighter background underneath the footer (backdrop-filter issue) -- [x] setup siteUrl as env var to pass to build process so lighthouse will get the correct - canonical url -- [x] remove bundle analyzer from prod builds in NOW -- [x] setup scss linter -- [x] setup smacss to apply css sort order -- [x] fix issue with node env version in prod build -- [x] use gatsby images everywhere (homepage for file savings) -- [x] weird background colors on imprint bottom section -- [x] fix issue with header on prod build -- [ ] MDX pages are not using remark images plugin -- [x] search for new font: - - https://typetype.org/fonts/moons/ -- [ ] style no-script message -- [x] update mobile navigation -- [x] add scroll to top -- [x] check description, keywords and title on all pages -- [x] add md table of contents (~~for whatever reason, this is not working...~~ thanks - MDX) - - [ ] style it 😄 -- [x] use [auto-changelog](https://github.com/CookPete/auto-changelog) for the changelog - page -- [ ] image opening on big vertical images is broken, add max height and width + scrolling - with mouse move - - [ ] optimize image container to be bigger than the rest of the content (-margin?) - - [ ] add buttons download and full screen view -- [ ] new image for start: me while coding -- [ ] new image for start: me while writing -- [x] skip this messy shit with elements wrapped in container tags -- [ ] create page transitions: https://github.com/react-spring/react-spring/issues/894 -- [x] replace markdown remark with mdx - - [x] add checkbox spanner to mdx -- [x] writings no image => small hero -- [x] put scss theme stuff in own mixin for compat. -- [x] Add footer with: version, social-media, imprint, changelog, copyright notice -- [x] test react helmet async -- [x] add "increase version" by script -- [x] add bundle analyzer -- [x] analyze via bundlephobia -- [x] add github bots to auto update dependencies -- [x] add lighthouse from M8FINDER project -- [x] update lighthouse audit - - [x] save HTML - - [x] save JSON - - [x] save Screenshot for mobile and desktop - - [x] open only desktop - - [x] script to open mobile - - [x] ~~open summary view by default~~ -- [x] Make text justified -- [x] ~~use CSS blend modes (overlay)~~ -- [ ] add League of Legends API to show profile and stats - - https://developer.riotgames.com/apis -- [x] add classes to tags https://github.com/gatsbyjs/gatsby/issues/17824 -- [ ] use Inter variable Font: https://rsms.me/inter/var-test.html -- [x] set font feature settings (numbers, dates, etc.): - - https://rsms.me/inter/#features -- [x] Upload all writings - - [x] Grammatical corrections - - [x] ~~Find images on Unsplash~~ -- [x] Update current projects - - [x] More text - - [x] Update images -- [ ] use `useScrollPosition` hook for user scrolling: - https://dev.to/n8tb1t/tracking-scroll-position-with-react-hooks-3bbj -- [ ] update css transitions to use global custom props -- [ ] include reduced motion and transparency everywhere -- [ ] update theme colors with better naming for 4 different states -- [ ] Upload some photos (best off's) -- [ ] Setup SimpleAnalytics or something similar - - [ ] Setup [Guess.js](https://github.com/guess-js/guess/) with `reportProvider` - - https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-plugin-guess-js/src/gatsby-node.js - - https://www.gatsbyjs.org/packages/gatsby-plugin-guess-js/?=guess -- [ ] show GitHub OSS with GitHub API on a separate page -- [ ] display `` stuff somewhere or let it imported by browser XML export -- [ ] upload all content to GraphCMS (...hmm, IDK?!) -- [ ] check pages with Axe -- [ ] setup danger and make sure - - [ ] version is increased before commit/push - - [ ] no push if no audit for current version - - [ ] note about linting or run linter before commit -- [ ] check all pages with screen reader -- [ ] check all pages with reduced motion -- [ ] check all pages with reduced transparency -- [x] remove source maps in production builds (not possible but ok) -- [x] add new theme switch design, current does not work properly with `mix-blend-mode` -- [x] PWA: add service worker for offline usage (`gatsby-plugin-offline`) -- [x] ~~add tests?!~~ -- [x] ~~move from bash script to [Nim][2]~~ -- [ ] (auto) check markdown for ["Vary sentence length"][3] -- [ ] (auto) check markdown for [Readability][4] -- [ ] (auto) generate [rich snippets][5] -- [ ] use [Scheme customizations][6] to map post meta e.g. for authors -- [ ] use new iPad and Apple Pencil to make ["Marvin/Design"-Logo][8] - - [x] current logo is ok! - - [ ] new color profile - - [ ] use better [color system][10] -- [x] light theme -- [ ] ~~Eventually new Font: [ZOOM-PRO][9]~~ (too expensive) -- [x] open source the code 🤫 - -[1]: https://www.gatsbyjs.org/packages/gatsby-plugin-preact/ -[2]: https://nim-lang.org/docs/tut1.html -[3]: https://github.com/wooorm/write-music -[4]: https://wooorm.com/readability/ -[5]: https://www.gatsbyjs.org/docs/seo/ -[6]: https://www.gatsbyjs.org/docs/schema-customization/#foreign-key-fields -[8]: https://cdn.dribbble.com/uploads/2566/original/3b90b34984de0d727ac99e2fc28afda8.png -[9]: https://thedesignersfoundry.com/zoom-pro -[10]: https://stripe.com/de/blog/accessible-color-systems diff --git a/metadata.js b/metadata.js index cf35413..ba068ce 100644 --- a/metadata.js +++ b/metadata.js @@ -49,13 +49,17 @@ module.exports = { link: '/changelog', }, { - name: 'Todo', - link: '/todo', + name: 'Issues', + link: '/issues', }, { name: 'Imprint', link: '/imprint', }, + { + name: 'Privacy', + link: '/privacy', + }, ], social: [ { diff --git a/src/components/Issue.jsx b/src/components/Issue.jsx new file mode 100644 index 0000000..c9b7bb8 --- /dev/null +++ b/src/components/Issue.jsx @@ -0,0 +1,40 @@ +import React from 'react' + +import { Link } from '../elements/Link' +import Time from './Time' +import Label from './Label' +import { MDXRenderer } from 'gatsby-plugin-mdx' +import DataType from './DataType' + +const Issue = ({ + data: { + tag, + ref, + modifiedTime, + line, + text, + value, + file: { relativePath }, + }, +}) => { + const fileUrl = `https://github.com/muuvmuuv/portfolio/blob/master/${relativePath}` + + return ( +
+
+
+
+ {value || text} +
+
+ ) +} + +export default Issue diff --git a/src/components/Label.jsx b/src/components/Label.jsx new file mode 100644 index 0000000..44d55f5 --- /dev/null +++ b/src/components/Label.jsx @@ -0,0 +1,7 @@ +import React from 'react' + +const Label = ({ text, type, className }) => { + return {text} +} + +export default Label diff --git a/src/layouts/Article.jsx b/src/layouts/Article.jsx index e9438e2..64cfc61 100644 --- a/src/layouts/Article.jsx +++ b/src/layouts/Article.jsx @@ -92,7 +92,7 @@ class Article extends React.Component { return (
-
{toc}
+ {toc &&
{toc}
} {this.props.mdx ? ( {this.props.mdx} @@ -100,7 +100,7 @@ class Article extends React.Component { this.props.children )} - + {/* */}
) } diff --git a/src/pages/todo.jsx b/src/pages/issues.jsx similarity index 59% rename from src/pages/todo.jsx rename to src/pages/issues.jsx index c9eb187..fc2e194 100644 --- a/src/pages/todo.jsx +++ b/src/pages/issues.jsx @@ -5,10 +5,11 @@ import { HistoryConsumer } from '../provider/history' import Head from '../components/Head' import Article from '../layouts/Article' import HeroPage from '../components/HeroPage' +import Issue from '../components/Issue' class Page extends React.Component { state = { - pageName: 'Whats next?', + pageName: 'Issues issues tissues', } componentDidMount() { @@ -23,12 +24,7 @@ class Page extends React.Component { render() { const { - singleFile: { - childMdx: { - fields: { slug }, - body, - }, - }, + allLeasot: { edges: leasotData }, } = this.props.data return ( @@ -37,7 +33,14 @@ class Page extends React.Component { -
+
+

+ More issues will come soon. Waiting for an tissue. +

+ {leasotData.map(({ node: { todo } }, index) => { + return + })} +
) } @@ -51,12 +54,20 @@ export default React.forwardRef((props, ref) => ( export const query = graphql` query TodoQuery { - singleFile(name: { eq: "TODO" }) { - childMdx { - fields { - slug + allLeasot(sort: { fields: todo___modifiedTime, order: ASC }) { + edges { + node { + todo { + tag + ref + modifiedTime + line + value + file { + relativePath + } + } } - body } } } diff --git a/src/pages/privacy.mdx b/src/pages/privacy.mdx new file mode 100644 index 0000000..d5832cf --- /dev/null +++ b/src/pages/privacy.mdx @@ -0,0 +1,6 @@ +--- +title: 'Privacy' +--- + +Is in its makink. If you need informations, feel free to contact me via email (go to +imprint). diff --git a/src/styles/app.scss b/src/styles/app.scss index f25b780..27d8408 100644 --- a/src/styles/app.scss +++ b/src/styles/app.scss @@ -46,6 +46,8 @@ @import 'components/footnote'; @import 'components/hidden-content'; @import 'components/icon'; +@import 'components/issue'; +@import 'components/label'; @import 'components/language'; @import 'components/lightbox'; @import 'components/logo'; diff --git a/src/styles/components/_issue.scss b/src/styles/components/_issue.scss new file mode 100644 index 0000000..4a7f55e --- /dev/null +++ b/src/styles/components/_issue.scss @@ -0,0 +1,61 @@ +.issue { + margin-bottom: var(--spacing-sm); + padding-bottom: var(--spacing-sm); + + &:not(:first-of-type) { + border-bottom: 1px solid var(--divider-color); + } + + &__header { + display: grid; + grid-template-areas: + 'label label ref time' + 'sep link link link'; + grid-template-columns: auto auto auto 1fr; + align-items: center; + margin-bottom: var(--spacing-xs); + column-gap: var(--spacing-xxs); + user-select: none; + font-feature-settings: 'case' 1; + + @include breakpoint-up(md) { + grid-template-areas: 'label ref sep link time'; + grid-template-columns: auto auto auto 1fr; + } + } + + &__label { + grid-area: label; + } + + &__ref { + grid-area: ref; + margin-top: 1px; + color: var(--text-color-medium); + font-size: var(--text-sm); + } + + &__separator { + grid-area: sep; + color: var(--text-color-medium); + cursor: default; + } + + &__link { + grid-area: link; + } + + &__modified { + grid-area: time; + + @include breakpoint-up(md) { + justify-self: end; + } + } + + // we need to reset these because we are in an
+ &__body p { + margin-bottom: 0; + text-align: left; + } +} diff --git a/src/styles/components/_label.scss b/src/styles/components/_label.scss new file mode 100644 index 0000000..0be7d0b --- /dev/null +++ b/src/styles/components/_label.scss @@ -0,0 +1,27 @@ +.label { + display: inline-flex; + align-items: center; + padding: var(--spacing-xxs) var(--spacing-xs); + border: 1px solid var(--border-color-normal); + background: var(--background-color-light); + color: var(--text-color-medium); + font-size: var(--text-sm); + line-height: 1; + cursor: default; + user-select: none; + + &--fix, + &--bug { + border: 1px solid var(--color-red); + background: var(--color-red-20); + color: var(--color-red); + } + + &--todo, + &--fixme, + &--issue { + border: 1px solid var(--green-red); + background: var(--green-red-20); + color: var(--green-red); + } +}