diff --git a/.eleventy.js b/.eleventy.js index e6a57d0..55bbc16 100644 --- a/.eleventy.js +++ b/.eleventy.js @@ -1,4 +1,5 @@ const pluginRss = require('@11ty/eleventy-plugin-rss') +require('dotenv').config() module.exports = function (eleventyConfig) { const { DateTime } = require('luxon') @@ -36,6 +37,9 @@ module.exports = function (eleventyConfig) { eleventyConfig.setLibrary('md', markdownIt) + const isDevelopment = process.env.NODE_ENV === 'development'; + eleventyConfig.addGlobalData("isDevelopment", isDevelopment); + eleventyConfig.addPlugin(pluginRss, { posthtmlRenderOptions: { closingSingleTag: 'default', @@ -85,10 +89,15 @@ module.exports = function (eleventyConfig) { const [year, ...title] = titleParts const titleInitials = title.map(title => title.split('')[0]).join('') const yearSuffix = year.slice(-yearSplice) - + return `${yearSuffix}-${titleInitials}` }) + eleventyConfig.addFilter("development", (link) => { + console.log(isDevelopment) + return isDevelopment ? "/" : link; + }); + eleventyConfig.addFilter('breakLine', (string, cutAt = 3, maxSize = 30) => { const titleWords = string.split(' ') const titleLength = string.length @@ -97,7 +106,7 @@ module.exports = function (eleventyConfig) { const hasTitleRemaining = !!titleRemaining const formattedTitleWithBreak = hasTitleRemaining ? `${titlePreview}
${titleRemaining}` : titlePreview - + const returnTitle = titleLength <= maxSize || !hasTitleRemaining ? string : formattedTitleWithBreak return returnTitle }) diff --git a/.gitignore b/.gitignore index 110ebec..427103d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ # dependencies /node_modules +.env # public files /public diff --git a/archives/error.scss b/archives/error.scss new file mode 100644 index 0000000..9780e4e --- /dev/null +++ b/archives/error.scss @@ -0,0 +1,14 @@ +@import './modules/vars'; +@import './modules/mixin'; +@import './modules/global'; + +@import './modules/component/preload'; + +@import './modules/header'; +@import './modules/component/nav'; +@import './modules/component/title'; +@import './modules/main'; +@import './modules/footer'; + +@import './modules/component/contact'; +@import './modules/component/error'; diff --git a/src/assets/scss/modules/_footer.scss b/archives/modules/_footer.scss similarity index 94% rename from src/assets/scss/modules/_footer.scss rename to archives/modules/_footer.scss index bc5dc42..0c2cf20 100644 --- a/src/assets/scss/modules/_footer.scss +++ b/archives/modules/_footer.scss @@ -1,70 +1,70 @@ -.footer { - background-color: var(--clr-background); - color: var(--clr-foreground); - padding: 0.8rem; - - .brand { - display: flex; - gap: 0.5rem; - width: max-content; - - &-title { - font-size: 1.3rem; - font-weight: 700; - } - - &-logo { - display: flex; - align-items: center; - } - } - - &-top { - padding: 0.8rem; - padding-top: 3rem; - font-size: 2rem; - max-width: 35ch; - line-height: 1.2; - position: relative; - isolation: isolate; - - &::before { - content: '"'; - position: absolute; - font-size: 4em; - left: 0; - top: 0; - color: var(--clr-background-800); - font-weight: 600; - user-select: none; - z-index: -1; - } - } - - &-bottom { - padding: 0.8rem; - text-align: left; - display: flex; - flex-direction: column; - gap: 0.3em; - } - - &-container { - max-width: 64rem; - margin: 0 auto; - } - - .copyright { - font-size: 0.9rem; - margin: 1rem auto; - text-align: left; - border: 0.0625rem solid var(--clr-foreground); - width: 100%; - max-width: max-content; - padding: 0.2rem 2rem; - - @include breakpoint-up('medium') { - flex-direction: row; - } - } -} +.footer { + background-color: var(--clr-background); + color: var(--clr-foreground); + padding: 0.8rem; + + .brand { + display: flex; + gap: 0.5rem; + width: max-content; + + &-title { + font-size: 1.3rem; + font-weight: 700; + } + + &-logo { + display: flex; + align-items: center; + } + } + + &-top { + padding: 0.8rem; + padding-top: 3rem; + font-size: 2rem; + max-width: 35ch; + line-height: 1.2; + position: relative; + isolation: isolate; + + &::before { + content: '"'; + position: absolute; + font-size: 4em; + left: 0; + top: 0; + color: var(--clr-background-800); + font-weight: 600; + user-select: none; + z-index: -1; + } + } + + &-bottom { + padding: 0.8rem; + text-align: left; + display: flex; + flex-direction: column; + gap: 0.3em; + } + + &-container { + max-width: 64rem; + margin: 0 auto; + } + + .copyright { + font-size: 0.9rem; + margin: 1rem auto; + text-align: left; + border: 0.0625rem solid var(--clr-foreground); + width: 100%; + max-width: max-content; + padding: 0.2rem 2rem; + + @include breakpoint-up('medium') { + flex-direction: row; + } + } +} diff --git a/src/assets/scss/modules/_global.scss b/archives/modules/_global.scss similarity index 94% rename from src/assets/scss/modules/_global.scss rename to archives/modules/_global.scss index 67e40a1..93455cf 100644 --- a/src/assets/scss/modules/_global.scss +++ b/archives/modules/_global.scss @@ -1,163 +1,163 @@ -html { - scroll-behavior: smooth; - scroll-padding-top: 10rem; - scroll-padding-bottom: 10rem; -} - -html:root { - .themes { - background-color: #ffc107; - color: #7e620e; - } - - [data-moon] { - display: none; - } - - [data-sun] { - display: block; - } - - &[data-theme="dark"] { - .themes { - background-color: var(--clr-accent); - color: var(--clr-accent-dark); - } - - [data-sun] { - display: none; - } - - [data-moon] { - display: block; - } - } -} - -*, -*:is(::after, ::before) { - box-sizing: border-box; - margin: 0; - padding: 0; -} - -body { - display: flex; - flex-direction: column; - min-height: 100vh; - background-color: var(--clr-background-900); - font-family: 'Montserrat', sans-serif; - color: var(--clr-foreground); - line-height: 1.6; - overflow-x: hidden; -} - -a, -a:is(:active, :hover, :focus-visible) { - color: inherit; - text-decoration: none; -} - -a:is(:hover, :focus-visible) { - color: var(--clr-accent); -} - -a[href] { - position: relative; - - .new-tab-warning { - position: absolute; - width: max-content; - background-color: hsl(0, 0%, 13%); - font-weight: normal; - letter-spacing: normal; - color: var(--clr-white) !important; - padding: 0.3rem; - font-size: 0.7rem; - border-radius: 0.3rem; - margin-top: 0.5rem; - top: 100%; - left: 0; - visibility: hidden; - pointer-events: none; - text-transform: capitalize; - transition: all 300ms ease-out; - translate: 0 -0.3rem; - z-index: 90; - user-select: none; - } - - &:focus-visible { - .new-tab-warning { - visibility: visible; - translate: 0 0; - } - } -} - -::selection { - background-color: var(--clr-accent); - color: var(--clr-white); -} - -.t-all { - transition: all 300ms ease-in; -} - -.no-scroll { - @include breakpoint-down('small') { - overflow: hidden !important; - - :is(header, main, footer) { - visibility: hidden; - user-select: none; - } - } -} - -.not-loaded { - overflow: hidden; - - :is(header, main, footer, nav) { - visibility: hidden; - user-select: none; - } -} - -:is(ul, li) { - margin: 0; - padding: 0; -} - -li { - list-style: none; -} - -*:focus-visible { - outline: 0.125rem solid var(--clr-accent-dark); -} - -.highlight { - background-color: var(--clr-black); - padding: 0.2rem 0.6rem; - color: var(--clr-white); - - &:is(:hover, :focus) { - color: var(--clr-white); - } -} - -.header-link__access { - text-decoration: none !important; -} - -.sr-only { - border: 0; - clip: rect(0 0 0 0); - height: 0.0625rem; - margin: -0.0625rem; - overflow: hidden; - padding: 0; - position: absolute; - width: 0.0625rem; +html { + scroll-behavior: smooth; + scroll-padding-top: 10rem; + scroll-padding-bottom: 10rem; +} + +html:root { + .themes { + background-color: #ffc107; + color: #7e620e; + } + + [data-moon] { + display: none; + } + + [data-sun] { + display: block; + } + + &[data-theme="dark"] { + .themes { + background-color: var(--clr-accent); + color: var(--clr-accent-dark); + } + + [data-sun] { + display: none; + } + + [data-moon] { + display: block; + } + } +} + +*, +*:is(::after, ::before) { + box-sizing: border-box; + margin: 0; + padding: 0; +} + +body { + display: flex; + flex-direction: column; + min-height: 100vh; + background-color: var(--clr-background-900); + font-family: 'Montserrat', sans-serif; + color: var(--clr-foreground); + line-height: 1.6; + overflow-x: hidden; +} + +a, +a:is(:active, :hover, :focus-visible) { + color: inherit; + text-decoration: none; +} + +a:is(:hover, :focus-visible) { + color: var(--clr-accent); +} + +a[href] { + position: relative; + + .new-tab-warning { + position: absolute; + width: max-content; + background-color: hsl(0, 0%, 13%); + font-weight: normal; + letter-spacing: normal; + color: var(--clr-white) !important; + padding: 0.3rem; + font-size: 0.7rem; + border-radius: 0.3rem; + margin-top: 0.5rem; + top: 100%; + left: 0; + visibility: hidden; + pointer-events: none; + text-transform: capitalize; + transition: all 300ms ease-out; + translate: 0 -0.3rem; + z-index: 90; + user-select: none; + } + + &:focus-visible { + .new-tab-warning { + visibility: visible; + translate: 0 0; + } + } +} + +::selection { + background-color: var(--clr-accent); + color: var(--clr-white); +} + +.t-all { + transition: all 300ms ease-in; +} + +.no-scroll { + @include breakpoint-down('small') { + overflow: hidden !important; + + :is(header, main, footer) { + visibility: hidden; + user-select: none; + } + } +} + +.not-loaded { + overflow: hidden; + + :is(header, main, footer, nav) { + visibility: hidden; + user-select: none; + } +} + +:is(ul, li) { + margin: 0; + padding: 0; +} + +li { + list-style: none; +} + +*:focus-visible { + outline: 0.125rem solid var(--clr-accent-dark); +} + +.highlight { + background-color: var(--clr-black); + padding: 0.2rem 0.6rem; + color: var(--clr-white); + + &:is(:hover, :focus) { + color: var(--clr-white); + } +} + +.header-link__access { + text-decoration: none !important; +} + +.sr-only { + border: 0; + clip: rect(0 0 0 0); + height: 0.0625rem; + margin: -0.0625rem; + overflow: hidden; + padding: 0; + position: absolute; + width: 0.0625rem; } \ No newline at end of file diff --git a/src/assets/scss/modules/_header.scss b/archives/modules/_header.scss similarity index 94% rename from src/assets/scss/modules/_header.scss rename to archives/modules/_header.scss index 89ba20b..d86013c 100644 --- a/src/assets/scss/modules/_header.scss +++ b/archives/modules/_header.scss @@ -1,21 +1,21 @@ -.header { - &_article { - all: unset; - position: relative; - width: 100vw; - aspect-ratio: 16/9; - height: fit-content; - max-height: 60vh; - overflow: hidden; - margin: 0 auto; - - img { - top: 50%; - translate: 0 -50%; - position: absolute; - aspect-ratio: 16 / 9; - width: 100%; - height: auto; - } - } -} +.header { + &_article { + all: unset; + position: relative; + width: 100vw; + aspect-ratio: 16/9; + height: fit-content; + max-height: 60vh; + overflow: hidden; + margin: 0 auto; + + img { + top: 50%; + translate: 0 -50%; + position: absolute; + aspect-ratio: 16 / 9; + width: 100%; + height: auto; + } + } +} diff --git a/src/assets/scss/modules/_main.scss b/archives/modules/_main.scss similarity index 100% rename from src/assets/scss/modules/_main.scss rename to archives/modules/_main.scss diff --git a/src/assets/scss/modules/_mixin.scss b/archives/modules/_mixin.scss similarity index 94% rename from src/assets/scss/modules/_mixin.scss rename to archives/modules/_mixin.scss index bff6692..c081666 100644 --- a/src/assets/scss/modules/_mixin.scss +++ b/archives/modules/_mixin.scss @@ -1,23 +1,23 @@ -$breakpoints-up: ( - 'medium': '40em', - 'large': '64em', - 'xlarge': '87.5em', -); - -$breakpoints-down: ( - 'small': '39.9375em', - 'medium': '63.9375em', - 'large': '87.4375em', -); - -@mixin breakpoint-up($size) { - @media screen and (min-width: map-get($breakpoints-up, $size)) { - @content; - } -} - -@mixin breakpoint-down($size) { - @media screen and (max-width: map-get($breakpoints-down, $size)) { - @content; - } -} +$breakpoints-up: ( + 'medium': '40em', + 'large': '64em', + 'xlarge': '87.5em', +); + +$breakpoints-down: ( + 'small': '39.9375em', + 'medium': '63.9375em', + 'large': '87.4375em', +); + +@mixin breakpoint-up($size) { + @media screen and (min-width: map-get($breakpoints-up, $size)) { + @content; + } +} + +@mixin breakpoint-down($size) { + @media screen and (max-width: map-get($breakpoints-down, $size)) { + @content; + } +} diff --git a/src/assets/scss/modules/_vars.scss b/archives/modules/_vars.scss similarity index 100% rename from src/assets/scss/modules/_vars.scss rename to archives/modules/_vars.scss diff --git a/src/assets/scss/modules/component/_aboutme.scss b/archives/modules/component/_aboutme.scss similarity index 94% rename from src/assets/scss/modules/component/_aboutme.scss rename to archives/modules/component/_aboutme.scss index 6ae7a74..169e393 100644 --- a/src/assets/scss/modules/component/_aboutme.scss +++ b/archives/modules/component/_aboutme.scss @@ -1,305 +1,305 @@ -.aboutme { - background-color: var(--clr-accent); - color: var(--clr-white); - - .adds { - font-size: 0.9rem; - padding: 1rem; - - .new-line { - margin-top: 0.5em; - } - } - - a { - text-decoration: underline; - text-underline-offset: 0.4rem; - } - - a:hover, - a:focus-visible { - color: #d0d0d0; - } - - ::selection { - background-color: #333333; - } - - .extra { - text-transform: uppercase; - letter-spacing: 0.1rem; - } - - .main-container { - display: flex; - flex-direction: column; - } - - .flex { - display: flex; - flex-direction: row; - border-radius: 0.3rem; - margin-top: 1rem; - - &-header { - display: flex; - padding: 0.5rem 1rem; - width: 100%; - justify-content: space-between; - box-shadow: 0 0.3125rem 0.625rem hsla(0, 0%, 0%, 0.4); - flex: 0 0 auto; - - span[aria-hidden=true] { - display: block; - margin-top: 0.3rem; - } - - div { - display: flex; - align-items: center; - font-weight: 600; - gap: 0.2rem; - - .dot { - height: 0.9375rem; - width: 0.9375rem; - background-color: hsl(0, 100%, 43%); - border-radius: 50%; - - &:first-of-type { - background-color: green; - } - - &:nth-of-type(2) { - background-color: yellow; - } - } - } - } - - .lists { - display: flex; - justify-content: space-around; - width: 100%; - } - - &.tools { - background-color: hsl(0, 0%, 13%); - box-shadow: 0 0.3125rem 0.625rem hsla(0, 0%, 0%, 0.4); - margin-bottom: -9rem; - z-index: 2; - - h2 { - padding: 1rem; - } - - .lists { - background-color: hsl(0, 0%, 11%); - border-radius: 0.3rem; - padding: 2rem; - } - } - - &.languages { - filter: brightness(110%); - box-shadow: inset 0 0.3125rem 0.625rem hsla(0, 0%, 0%, 0.4); - background-color: var(--clr-accent-dark); - padding: 2rem; - - .header-title { - gap: 1em; - display: flex; - } - - h2 { - padding: 1rem 0; - } - - ul { - margin-top: 0.2rem; - } - - .lists { - overflow: unset; - height: fit-content; - } - } - - &:not(:first-of-type) { - margin-top: 5rem; - justify-content: space-around; - flex-direction: column; - - ul { - font-size: 1.1rem; - font-weight: 600; - - li { - font-weight: 500; - font-size: 1rem; - margin-top: 0.5rem; - - &:first-of-type { - font-weight: 600; - } - - &:nth-child(2) { - margin-top: 0.5rem; - } - } - } - - @include breakpoint-down('medium') { - align-items: flex-start; - - .lists { - flex-direction: column; - } - - ul>li { - display: inline-block; - margin-top: 0; - } - } - } - - @include breakpoint-down('medium') { - flex-direction: column; - align-items: center; - } - } - - .data { - position: relative; - min-width: 25rem; - height: 20rem; - - @include breakpoint-down('medium') { - width: 100%; - max-width: 25rem; - min-width: unset; - } - - &:hover { - .note { - scale: 1.1; - } - } - - &::before { - content: ''; - position: absolute; - width: 100%; - height: 100%; - background-color: hsl(0, 100%, 43%); - left: -0.7rem; - border-radius: 40% 20% / 10%; - } - } - - .explain { - display: flex; - align-items: center; - margin-top: 1rem; - padding: 1rem; - font-size: 1.2rem; - - @include breakpoint-up('large') { - padding-left: 3rem; - } - } - - .note { - rotate: -3deg; - } -} - -.note { - color: var(--clr-white); - display: flex; - flex: 0 0 auto; - position: relative; - width: min(25rem, 100%); - flex-direction: column; - background-color: hsl(0, 0%, 13%); - border-radius: 0.6rem; - box-shadow: 0 0.3125rem 0.625rem hsla(0, 0%, 0%, 0.4); - height: max(20rem, 100%); - transition: all 300ms ease-in-out; - - article { - padding: 1rem; - z-index: 80; - } - - &>svg { - position: absolute; - right: 0.1rem; - bottom: 0.1rem; - color: hsl(0, 0%, 11%); - } - - article { - padding: 1rem; - height: 100%; - overflow-y: auto; - - scrollbar-width: none; - - &::-webkit-scrollbar { - width: 0; - } - - li { - padding-left: 0.6rem; - } - } - - &-heading { - font-weight: 600; - display: block; - text-transform: uppercase; - letter-spacing: 0.1em; - line-height: 1.2; - } - - &-subheading { - font-style: italic; - } - - li { - font-size: 0.85em; - } - - &-header { - display: flex; - height: 2.5rem; - padding: 0 1rem; - width: 100%; - justify-content: space-between; - box-shadow: 0 0.3125rem 0.625rem hsla(0, 0%, 0%, 0.4); - flex: 0 0 auto; - - div { - display: flex; - align-items: center; - font-weight: 600; - gap: 0.2rem; - - .dot { - height: 0.9375rem; - width: 0.9375rem; - background-color: hsl(0, 100%, 43%); - border-radius: 50%; - - &:first-of-type { - background-color: green; - } - - &:nth-of-type(2) { - background-color: yellow; - } - } - } - } +.aboutme { + background-color: var(--clr-accent); + color: var(--clr-white); + + .adds { + font-size: 0.9rem; + padding: 1rem; + + .new-line { + margin-top: 0.5em; + } + } + + a { + text-decoration: underline; + text-underline-offset: 0.4rem; + } + + a:hover, + a:focus-visible { + color: #d0d0d0; + } + + ::selection { + background-color: #333333; + } + + .extra { + text-transform: uppercase; + letter-spacing: 0.1rem; + } + + .main-container { + display: flex; + flex-direction: column; + } + + .flex { + display: flex; + flex-direction: row; + border-radius: 0.3rem; + margin-top: 1rem; + + &-header { + display: flex; + padding: 0.5rem 1rem; + width: 100%; + justify-content: space-between; + box-shadow: 0 0.3125rem 0.625rem hsla(0, 0%, 0%, 0.4); + flex: 0 0 auto; + + span[aria-hidden=true] { + display: block; + margin-top: 0.3rem; + } + + div { + display: flex; + align-items: center; + font-weight: 600; + gap: 0.2rem; + + .dot { + height: 0.9375rem; + width: 0.9375rem; + background-color: hsl(0, 100%, 43%); + border-radius: 50%; + + &:first-of-type { + background-color: green; + } + + &:nth-of-type(2) { + background-color: yellow; + } + } + } + } + + .lists { + display: flex; + justify-content: space-around; + width: 100%; + } + + &.tools { + background-color: hsl(0, 0%, 13%); + box-shadow: 0 0.3125rem 0.625rem hsla(0, 0%, 0%, 0.4); + margin-bottom: -9rem; + z-index: 2; + + h2 { + padding: 1rem; + } + + .lists { + background-color: hsl(0, 0%, 11%); + border-radius: 0.3rem; + padding: 2rem; + } + } + + &.languages { + filter: brightness(110%); + box-shadow: inset 0 0.3125rem 0.625rem hsla(0, 0%, 0%, 0.4); + background-color: var(--clr-accent-dark); + padding: 2rem; + + .header-title { + gap: 1em; + display: flex; + } + + h2 { + padding: 1rem 0; + } + + ul { + margin-top: 0.2rem; + } + + .lists { + overflow: unset; + height: fit-content; + } + } + + &:not(:first-of-type) { + margin-top: 5rem; + justify-content: space-around; + flex-direction: column; + + ul { + font-size: 1.1rem; + font-weight: 600; + + li { + font-weight: 500; + font-size: 1rem; + margin-top: 0.5rem; + + &:first-of-type { + font-weight: 600; + } + + &:nth-child(2) { + margin-top: 0.5rem; + } + } + } + + @include breakpoint-down('medium') { + align-items: flex-start; + + .lists { + flex-direction: column; + } + + ul>li { + display: inline-block; + margin-top: 0; + } + } + } + + @include breakpoint-down('medium') { + flex-direction: column; + align-items: center; + } + } + + .data { + position: relative; + min-width: 25rem; + height: 20rem; + + @include breakpoint-down('medium') { + width: 100%; + max-width: 25rem; + min-width: unset; + } + + &:hover { + .note { + scale: 1.1; + } + } + + &::before { + content: ''; + position: absolute; + width: 100%; + height: 100%; + background-color: hsl(0, 100%, 43%); + left: -0.7rem; + border-radius: 40% 20% / 10%; + } + } + + .explain { + display: flex; + align-items: center; + margin-top: 1rem; + padding: 1rem; + font-size: 1.2rem; + + @include breakpoint-up('large') { + padding-left: 3rem; + } + } + + .note { + rotate: -3deg; + } +} + +.note { + color: var(--clr-white); + display: flex; + flex: 0 0 auto; + position: relative; + width: min(25rem, 100%); + flex-direction: column; + background-color: hsl(0, 0%, 13%); + border-radius: 0.6rem; + box-shadow: 0 0.3125rem 0.625rem hsla(0, 0%, 0%, 0.4); + height: max(20rem, 100%); + transition: all 300ms ease-in-out; + + article { + padding: 1rem; + z-index: 80; + } + + &>svg { + position: absolute; + right: 0.1rem; + bottom: 0.1rem; + color: hsl(0, 0%, 11%); + } + + article { + padding: 1rem; + height: 100%; + overflow-y: auto; + + scrollbar-width: none; + + &::-webkit-scrollbar { + width: 0; + } + + li { + padding-left: 0.6rem; + } + } + + &-heading { + font-weight: 600; + display: block; + text-transform: uppercase; + letter-spacing: 0.1em; + line-height: 1.2; + } + + &-subheading { + font-style: italic; + } + + li { + font-size: 0.85em; + } + + &-header { + display: flex; + height: 2.5rem; + padding: 0 1rem; + width: 100%; + justify-content: space-between; + box-shadow: 0 0.3125rem 0.625rem hsla(0, 0%, 0%, 0.4); + flex: 0 0 auto; + + div { + display: flex; + align-items: center; + font-weight: 600; + gap: 0.2rem; + + .dot { + height: 0.9375rem; + width: 0.9375rem; + background-color: hsl(0, 100%, 43%); + border-radius: 50%; + + &:first-of-type { + background-color: green; + } + + &:nth-of-type(2) { + background-color: yellow; + } + } + } + } } \ No newline at end of file diff --git a/src/assets/scss/modules/component/_animation.scss b/archives/modules/component/_animation.scss similarity index 94% rename from src/assets/scss/modules/component/_animation.scss rename to archives/modules/component/_animation.scss index c44d465..5b19ab2 100644 --- a/src/assets/scss/modules/component/_animation.scss +++ b/archives/modules/component/_animation.scss @@ -1,59 +1,59 @@ -[data-animation] { - opacity: 0; - transition: translate var(--_translate, 1s) ease-in-out, scale var(--_scale, 1s) ease-in-out, rotate var(--_rotate, 1s) ease-in-out, opacity var(--_opacity, 1s) ease-in-out; -} - -[data-animation='fade-in'] { - translate: 0 4em; -} - -[data-animation='right-show'] { - translate: -5em 0; -} - -[data-animation='top-show'] { - translate: 0 -5em; -} - -[data-animation='bottom-show'] { - translate: 0 5em; -} - -[data-animation='left-show'] { - translate: 5em 0; -} - -[data-animation='prototype-card'] { - translate: -5em 0; - - &:nth-of-type(odd) { - translate: 5em 0; - } -} - -.has-been-animated { - opacity: unset; - scale: unset; - rotate: unset; - translate: unset !important; -} - -@media (prefers-reduced-motion) { - .prototype-reader, - .data { - transform: unset !important; - } - - *, - *::after, - *::before { - animation: unset !important; - rotate: 0deg !important; - translate: 0em 0em !important; - } - - [data-animation] { - translate: unset !important; - opacity: 1 !important; - } +[data-animation] { + opacity: 0; + transition: translate var(--_translate, 1s) ease-in-out, scale var(--_scale, 1s) ease-in-out, rotate var(--_rotate, 1s) ease-in-out, opacity var(--_opacity, 1s) ease-in-out; +} + +[data-animation='fade-in'] { + translate: 0 4em; +} + +[data-animation='right-show'] { + translate: -5em 0; +} + +[data-animation='top-show'] { + translate: 0 -5em; +} + +[data-animation='bottom-show'] { + translate: 0 5em; +} + +[data-animation='left-show'] { + translate: 5em 0; +} + +[data-animation='prototype-card'] { + translate: -5em 0; + + &:nth-of-type(odd) { + translate: 5em 0; + } +} + +.has-been-animated { + opacity: unset; + scale: unset; + rotate: unset; + translate: unset !important; +} + +@media (prefers-reduced-motion) { + .prototype-reader, + .data { + transform: unset !important; + } + + *, + *::after, + *::before { + animation: unset !important; + rotate: 0deg !important; + translate: 0em 0em !important; + } + + [data-animation] { + translate: unset !important; + opacity: 1 !important; + } } \ No newline at end of file diff --git a/src/assets/scss/modules/component/_article.scss b/archives/modules/component/_article.scss similarity index 94% rename from src/assets/scss/modules/component/_article.scss rename to archives/modules/component/_article.scss index 619b350..6db37d7 100644 --- a/src/assets/scss/modules/component/_article.scss +++ b/archives/modules/component/_article.scss @@ -1,432 +1,432 @@ -.article { - --_article-color: hsla(270, 50%, 40%, 0.5); - -webkit-text-size-adjust: 100%; - -ms-text-size-adjust: 100%; - color: var(--clr-foreground-900); - background-color: var(--clr-background-900); - line-height: 2; - margin: auto; - - main { - position: relative; - - .table-of-contents { - position: absolute; - top: 0; - right: 0; - - @include breakpoint-down('medium') { - position: unset; - } - } - } - - - a { - font-weight: 600; - color: var(--clr-href); - - &:not(.header-anchor, .breadcrumb) { - text-decoration: 0.0625em underline var(--clr-href); - text-underline-offset: 0.35em; - } - - &:hover { - color: var(--clr-href-visited); - } - - &:focus-visible { - outline: thin dotted; - } - - &:hover, - &:active { - outline: 0; - } - } - - span { - - a:hover, - a:visited, - a:active, - a:focus-visible { - color: var(--clr-href); - } - } - - ::selection { - background: var(--clr-accent-dark); - color: var(--clr-white); - } - - a::selection { - background: var(--clr-accent-dark); - color: var(--clr-white); - } - - :is(p:not(:first-of-type), table, blockquote) { - max-width: 60ch; - } - - p { - margin: 1rem 0; - } - - img { - max-width: 100%; - } - - h1, - h2, - h3, - h4, - h5, - h6 { - font-weight: 600; - color: var(--clr-foreground-900); - padding: 1rem 0; - line-height: 1.1em; - } - - h4, - h5, - h6 { - font-weight: bold; - } - - h1 { - font-size: 2.5rem; - } - - h2 { - font-size: 2rem; - } - - h3 { - font-size: 1.5rem; - } - - h4 { - font-size: 1.2rem; - } - - h5 { - font-size: 1rem; - } - - h6 { - font-size: 0.9rem; - } - - blockquote { - color: var(--clr-foreground-900); - margin: 0; - padding-left: 2em; - border-left: 0.5em var(--clr-accent) solid; - } - - hr { - display: block; - height: 0.15em; - border: 0; - border-top: 0.0625em solid var(--clr-accent); - border-bottom: 0.0625em solid var(--clr-accent-light); - margin: 1em 0; - padding: 0; - } - - pre, - code, - kbd, - samp { - padding: 0 0.3em; - font-family: monospace, "Trebuchet MS", "Lucida Sans Unicode", "Lucida Grande", "Lucida Sans", Arial, sans-serif; - // font-size: 0.8rem; - // line-height: 1.4; - } - - pre { - border: 0.1rem solid var(--_article-color); - // background-color: var(--_article-color); - border-radius: 0.5rem; - padding: 1rem; - white-space: pre; - white-space: pre-wrap; - word-wrap: break-word; - - code { - box-shadow: none; - background-color: transparent; - } - } - - b, - strong { - font-weight: bold; - color: var(--clr-foreground-900); - } - - dfn { - font-style: italic; - } - - ins { - background: #ff9; - color: #000; - text-decoration: none; - } - - mark { - background-color: var(--clr-black); - color: var(--clr-white); - - &:is(:hover, :focus) { - color: var(--clr-white); - } - } - - sub, - sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; - - >a { - text-decoration: none !important; - } - } - - sup { - top: -0.5rem; - } - - sub { - bottom: -0.25rem; - } - - ul, - ol { - margin: 1em 0; - padding: 0 0 0 2rem; - } - - ul li { - list-style-type: disc; - } - - ol li { - list-style-type: decimal; - } - - li p:last-child { - margin: 0; - } - - dd { - margin: 0 0 0 2rem; - } - - img { - border: 0; - vertical-align: middle; - } - - table { - border-collapse: collapse; - overflow-x: scroll; - border-spacing: 0; - width: 100%; - background-color: var(--clr-background); - border-radius: 0.5rem; - overflow: hidden; - - td, - th { - padding: 0.4rem 0.8rem; - } - - tr { - :is(td, th):first-child { - text-align: center; - } - } - - th { - background-color: var(--_article-color); - color: var(--table-header); - // border-bottom: 0.25rem solid var(--clr-accent); - } - - td { - vertical-align: top; - } - - &.properties { - th { - border-bottom: 0.0625rem solid var(--clr-background-800); - border-left: 0.25rem solid var(--clr-accent); - } - } - } - - .table-of-contents { - .toc-container-header { - font-weight: 700; - } - - ul { - margin: 0; - - li { - margin-top: 0.15em; - list-style: circle; - } - } - } - - @media print { - * { - background: transparent !important; - color: var(--clr-accent-dark) !important; - filter: none !important; - -ms-filter: none !important; - } - - body { - font-size: 12pt; - max-width: 100%; - } - - a, - a:visited { - text-decoration: underline; - } - - hr { - height: 0.0625em; - border: 0; - border-bottom: 0.0625em solid var(--clr-accent-dark); - } - - a[href]:after { - content: ' (' attr(href) ')'; - } - - abbr[title]:after { - content: ' (' attr(title) ')'; - } - - .ir a:after, - a[href^='javascript:']:after, - a[href^='#']:after { - content: ''; - } - - pre, - blockquote { - border: 0.0625em solid #999; - padding-right: 1em; - page-break-inside: avoid; - } - - tr, - img { - page-break-inside: avoid; - } - - img { - max-width: 100% !important; - } - - @page :left { - margin: 15mm 20mm 15mm 10mm; - } - - @page :right { - margin: 15mm 10mm 15mm 20mm; - } - - p, - h2, - h3 { - orphans: 3; - widows: 3; - } - - h2, - h3 { - page-break-after: avoid; - } - } - - &-flex_list { - flex-wrap: wrap; - gap: 0.5em; - display: flex; - margin: unset !important; - padding: unset !important; - } - - &-detail { - &_list { - flex-wrap: wrap; - gap: 0.5em; - display: flex; - margin: unset !important; - padding: unset !important; - } - - &_item { - font-size: 0.9rem; - gap: 0.5em; - border-radius: 0.3em; - padding: 0.4em; - display: flex; - color: var(--clr-foreground); - border: 0.0625em solid var(--clr-foreground); - align-items: center; - - &:first-of-type { - border: none; - color: var(--clr-white); - box-shadow: 0 0.3125rem 0.625rem hsla(0, 0%, 0%, 0.4); - background-color: var(--clr-accent-light); - background-image: linear-gradient(45deg, - var(--clr-accent-dark), - var(--clr-accent)); - } - - &_svg { - width: 1.2rem; - } - } - } - - &-summary { - font-style: italic; - font-size: 1.2rem; - color: var(--clr-foreground-700); - } - - .more { - display: grid; - grid-template-columns: repeat(auto-fit, minmax(min(20em, 60ch), 29.5rem)); - margin-top: 1em; - gap: 1em; - - div { - padding: 1rem; - background: var(--clr-background); - - a { - display: block; - text-overflow: ellipsis; - overflow: hidden; - white-space: nowrap; - } - } - - } +.article { + --_article-color: hsla(270, 50%, 40%, 0.5); + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; + color: var(--clr-foreground-900); + background-color: var(--clr-background-900); + line-height: 2; + margin: auto; + + main { + position: relative; + + .table-of-contents { + position: absolute; + top: 0; + right: 0; + + @include breakpoint-down('medium') { + position: unset; + } + } + } + + + a { + font-weight: 600; + color: var(--clr-href); + + &:not(.header-anchor, .breadcrumb) { + text-decoration: 0.0625em underline var(--clr-href); + text-underline-offset: 0.35em; + } + + &:hover { + color: var(--clr-href-visited); + } + + &:focus-visible { + outline: thin dotted; + } + + &:hover, + &:active { + outline: 0; + } + } + + span { + + a:hover, + a:visited, + a:active, + a:focus-visible { + color: var(--clr-href); + } + } + + ::selection { + background: var(--clr-accent-dark); + color: var(--clr-white); + } + + a::selection { + background: var(--clr-accent-dark); + color: var(--clr-white); + } + + :is(p:not(:first-of-type), table, blockquote) { + max-width: 60ch; + } + + p { + margin: 1rem 0; + } + + img { + max-width: 100%; + } + + h1, + h2, + h3, + h4, + h5, + h6 { + font-weight: 600; + color: var(--clr-foreground-900); + padding: 1rem 0; + line-height: 1.1em; + } + + h4, + h5, + h6 { + font-weight: bold; + } + + h1 { + font-size: 2.5rem; + } + + h2 { + font-size: 2rem; + } + + h3 { + font-size: 1.5rem; + } + + h4 { + font-size: 1.2rem; + } + + h5 { + font-size: 1rem; + } + + h6 { + font-size: 0.9rem; + } + + blockquote { + color: var(--clr-foreground-900); + margin: 0; + padding-left: 2em; + border-left: 0.5em var(--clr-accent) solid; + } + + hr { + display: block; + height: 0.15em; + border: 0; + border-top: 0.0625em solid var(--clr-accent); + border-bottom: 0.0625em solid var(--clr-accent-light); + margin: 1em 0; + padding: 0; + } + + pre, + code, + kbd, + samp { + padding: 0 0.3em; + font-family: monospace, "Trebuchet MS", "Lucida Sans Unicode", "Lucida Grande", "Lucida Sans", Arial, sans-serif; + // font-size: 0.8rem; + // line-height: 1.4; + } + + pre { + border: 0.1rem solid var(--_article-color); + // background-color: var(--_article-color); + border-radius: 0.5rem; + padding: 1rem; + white-space: pre; + white-space: pre-wrap; + word-wrap: break-word; + + code { + box-shadow: none; + background-color: transparent; + } + } + + b, + strong { + font-weight: bold; + color: var(--clr-foreground-900); + } + + dfn { + font-style: italic; + } + + ins { + background: #ff9; + color: #000; + text-decoration: none; + } + + mark { + background-color: var(--clr-black); + color: var(--clr-white); + + &:is(:hover, :focus) { + color: var(--clr-white); + } + } + + sub, + sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; + + >a { + text-decoration: none !important; + } + } + + sup { + top: -0.5rem; + } + + sub { + bottom: -0.25rem; + } + + ul, + ol { + margin: 1em 0; + padding: 0 0 0 2rem; + } + + ul li { + list-style-type: disc; + } + + ol li { + list-style-type: decimal; + } + + li p:last-child { + margin: 0; + } + + dd { + margin: 0 0 0 2rem; + } + + img { + border: 0; + vertical-align: middle; + } + + table { + border-collapse: collapse; + overflow-x: scroll; + border-spacing: 0; + width: 100%; + background-color: var(--clr-background); + border-radius: 0.5rem; + overflow: hidden; + + td, + th { + padding: 0.4rem 0.8rem; + } + + tr { + :is(td, th):first-child { + text-align: center; + } + } + + th { + background-color: var(--_article-color); + color: var(--table-header); + // border-bottom: 0.25rem solid var(--clr-accent); + } + + td { + vertical-align: top; + } + + &.properties { + th { + border-bottom: 0.0625rem solid var(--clr-background-800); + border-left: 0.25rem solid var(--clr-accent); + } + } + } + + .table-of-contents { + .toc-container-header { + font-weight: 700; + } + + ul { + margin: 0; + + li { + margin-top: 0.15em; + list-style: circle; + } + } + } + + @media print { + * { + background: transparent !important; + color: var(--clr-accent-dark) !important; + filter: none !important; + -ms-filter: none !important; + } + + body { + font-size: 12pt; + max-width: 100%; + } + + a, + a:visited { + text-decoration: underline; + } + + hr { + height: 0.0625em; + border: 0; + border-bottom: 0.0625em solid var(--clr-accent-dark); + } + + a[href]:after { + content: ' (' attr(href) ')'; + } + + abbr[title]:after { + content: ' (' attr(title) ')'; + } + + .ir a:after, + a[href^='javascript:']:after, + a[href^='#']:after { + content: ''; + } + + pre, + blockquote { + border: 0.0625em solid #999; + padding-right: 1em; + page-break-inside: avoid; + } + + tr, + img { + page-break-inside: avoid; + } + + img { + max-width: 100% !important; + } + + @page :left { + margin: 15mm 20mm 15mm 10mm; + } + + @page :right { + margin: 15mm 10mm 15mm 20mm; + } + + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + + h2, + h3 { + page-break-after: avoid; + } + } + + &-flex_list { + flex-wrap: wrap; + gap: 0.5em; + display: flex; + margin: unset !important; + padding: unset !important; + } + + &-detail { + &_list { + flex-wrap: wrap; + gap: 0.5em; + display: flex; + margin: unset !important; + padding: unset !important; + } + + &_item { + font-size: 0.9rem; + gap: 0.5em; + border-radius: 0.3em; + padding: 0.4em; + display: flex; + color: var(--clr-foreground); + border: 0.0625em solid var(--clr-foreground); + align-items: center; + + &:first-of-type { + border: none; + color: var(--clr-white); + box-shadow: 0 0.3125rem 0.625rem hsla(0, 0%, 0%, 0.4); + background-color: var(--clr-accent-light); + background-image: linear-gradient(45deg, + var(--clr-accent-dark), + var(--clr-accent)); + } + + &_svg { + width: 1.2rem; + } + } + } + + &-summary { + font-style: italic; + font-size: 1.2rem; + color: var(--clr-foreground-700); + } + + .more { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(min(20em, 60ch), 29.5rem)); + margin-top: 1em; + gap: 1em; + + div { + padding: 1rem; + background: var(--clr-background); + + a { + display: block; + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; + } + } + + } } \ No newline at end of file diff --git a/src/assets/scss/modules/component/_card.scss b/archives/modules/component/_card.scss similarity index 100% rename from src/assets/scss/modules/component/_card.scss rename to archives/modules/component/_card.scss diff --git a/src/assets/scss/modules/component/_clients.scss b/archives/modules/component/_clients.scss similarity index 93% rename from src/assets/scss/modules/component/_clients.scss rename to archives/modules/component/_clients.scss index 77bfd82..ca00cd8 100644 --- a/src/assets/scss/modules/component/_clients.scss +++ b/archives/modules/component/_clients.scss @@ -1,17 +1,17 @@ -.clients { - background-color: var(--clr-background); - margin-bottom: -6em; - - &-list { - padding: 2em; - display: flex; - flex-wrap: wrap; - align-items: center; - justify-content: center; - gap: 2em; - - svg { - max-height: 5em; - } - } -} +.clients { + background-color: var(--clr-background); + margin-bottom: -6em; + + &-list { + padding: 2em; + display: flex; + flex-wrap: wrap; + align-items: center; + justify-content: center; + gap: 2em; + + svg { + max-height: 5em; + } + } +} diff --git a/src/assets/scss/modules/component/_contact.scss b/archives/modules/component/_contact.scss similarity index 100% rename from src/assets/scss/modules/component/_contact.scss rename to archives/modules/component/_contact.scss diff --git a/src/assets/scss/modules/component/_error.scss b/archives/modules/component/_error.scss similarity index 100% rename from src/assets/scss/modules/component/_error.scss rename to archives/modules/component/_error.scss diff --git a/src/assets/scss/modules/component/_featured.scss b/archives/modules/component/_featured.scss similarity index 95% rename from src/assets/scss/modules/component/_featured.scss rename to archives/modules/component/_featured.scss index 66f0683..cde7a6a 100644 --- a/src/assets/scss/modules/component/_featured.scss +++ b/archives/modules/component/_featured.scss @@ -1,204 +1,204 @@ -.featured { - --clr-variant: var(--clr-accent); - --clr-variant-dark: var(--clr-accent-dark); - - &.red { - --clr-variant: var(--clr-red); - --clr-variant-dark: var(--clr-red-dark); - } - - &-container { - display: flex; - flex-direction: column; - position: relative; - justify-content: space-between; - overflow: hidden; - margin: 2em auto; - margin-top: 5em; - border-radius: 0.3em; - padding: 0; - background-color: transparent; - min-height: 20rem; - margin-bottom: -5rem; - // border: 0.0625em solid var(--clr-background); - // box-shadow: 0 0.3125rem 0.625rem rgb(0 0 0 / 40%) - box-shadow: 0 0.625rem 1.25rem hsla(0, 0%, 0%, 0.4); - - @include breakpoint-down('medium') { - width: calc(100% - 2em); - } - } - - &-right { - display: flex; - padding: 2em; - background-color: var(--clr-variant); - flex: 1 auto; - position: relative; - justify-content: center; - align-items: center; - - @include breakpoint-down('small') { - min-height: 10em; - } - - img { - all: unset; - overflow: clip !important; - width: min(100%, 26.1875rem); - aspect-ratio: 1/1; - } - - #svg { - position: absolute; - bottom: 0; - left: 0; - } - } - - &-left { - color: var(--clr-white); - padding: 2em; - width: min(90ch, 100%); - background-color: var(--clr-variant-dark); - - >.featured-header { - display: flex; - flex-direction: column; - margin-bottom: 1em; - gap: 0.5em; - align-items: flex-start; - } - } - - &-header { - &_project-name { - border-radius: 0.3em; - background-color: var(--clr-variant); - background-image: linear-gradient(90deg, - var(--clr-variant-dark), - var(--clr-variant)); - padding: 1em; - width: 100%; - - p:last-of-type { - font-size: 0.8em; - } - } - } - - &-main { - &>* { - max-width: 45ch; - } - - &_tag { - border-radius: 0.3em; - padding: 0.5em 1.5em; - color: var(--clr-white); - border: 0.0625em solid var(--clr-white); - user-select: none; - pointer-events: none; - width: fit-content; - font-size: 0.7rem; - - &-area { - display: flex; - margin-top: 2em; - gap: 0.5em; - flex-wrap: wrap; - } - } - } - - &-body { - display: flex; - position: relative; - flex: 1 1 auto; - - @include breakpoint-down('small') { - flex-direction: column-reverse; - } - } - - &-footer { - padding: 1em 2em; - display: flex; - justify-content: flex-end; - background-color: var(--clr-black-light); - gap: 0.4rem; - flex-wrap: wrap; - - p { - border-radius: 0.3em; - padding: 0.5em 1.5em; - color: var(--clr-white); - border: 0.0625em solid var(--clr-white); - user-select: none; - pointer-events: none; - width: fit-content; - font-size: 0.9rem; - - &:first-of-type { - border: none; - color: var(--clr-white); - background: var(--clr-variant-dark); - background-image: linear-gradient(-90deg, - var(--clr-variant), - var(--clr-variant-dark)); - } - - @include breakpoint-down('small') { - width: 100%; - } - } - } - - &-background { - position: absolute; - left: 0; - bottom: 0; - right: 0; - width: 100%; - user-select: none; - pointer-events: none; - } - - &-external { - &_link { - display: flex; - align-items: center; - gap: 0.5em; - padding: 0.5em; - margin-top: 1em; - border-radius: 0.3em; - font-size: 1.2rem; - color: var(--clr-white); - border: none; - background: var(--clr-black-light); - - svg { - width: 1.2em; - height: 1.2em; - } - - &:is(:hover, :focus) { - color: var(--clr-white); - outline: 0.0625em solid var(--clr-background); - } - } - } - - &-tag { - border-radius: 0.3em; - position: absolute; - right: 1em; - top: 1em; - padding: 0.2em 0.5em; - z-index: 10; - font-weight: 500; - background-color: var(--clr-black-light); - color: var(--clr-white); - // box-shadow: 0 0.625rem 1.25rem hsla(270, 71%, 22%, 0.2); - } +.featured { + --clr-variant: var(--clr-accent); + --clr-variant-dark: var(--clr-accent-dark); + + &.red { + --clr-variant: var(--clr-red); + --clr-variant-dark: var(--clr-red-dark); + } + + &-container { + display: flex; + flex-direction: column; + position: relative; + justify-content: space-between; + overflow: hidden; + margin: 2em auto; + margin-top: 5em; + border-radius: 0.3em; + padding: 0; + background-color: transparent; + min-height: 20rem; + margin-bottom: -5rem; + // border: 0.0625em solid var(--clr-background); + // box-shadow: 0 0.3125rem 0.625rem rgb(0 0 0 / 40%) + box-shadow: 0 0.625rem 1.25rem hsla(0, 0%, 0%, 0.4); + + @include breakpoint-down('medium') { + width: calc(100% - 2em); + } + } + + &-right { + display: flex; + padding: 2em; + background-color: var(--clr-variant); + flex: 1 auto; + position: relative; + justify-content: center; + align-items: center; + + @include breakpoint-down('small') { + min-height: 10em; + } + + img { + all: unset; + overflow: clip !important; + width: min(100%, 26.1875rem); + aspect-ratio: 1/1; + } + + #svg { + position: absolute; + bottom: 0; + left: 0; + } + } + + &-left { + color: var(--clr-white); + padding: 2em; + width: min(90ch, 100%); + background-color: var(--clr-variant-dark); + + >.featured-header { + display: flex; + flex-direction: column; + margin-bottom: 1em; + gap: 0.5em; + align-items: flex-start; + } + } + + &-header { + &_project-name { + border-radius: 0.3em; + background-color: var(--clr-variant); + background-image: linear-gradient(90deg, + var(--clr-variant-dark), + var(--clr-variant)); + padding: 1em; + width: 100%; + + p:last-of-type { + font-size: 0.8em; + } + } + } + + &-main { + &>* { + max-width: 45ch; + } + + &_tag { + border-radius: 0.3em; + padding: 0.5em 1.5em; + color: var(--clr-white); + border: 0.0625em solid var(--clr-white); + user-select: none; + pointer-events: none; + width: fit-content; + font-size: 0.7rem; + + &-area { + display: flex; + margin-top: 2em; + gap: 0.5em; + flex-wrap: wrap; + } + } + } + + &-body { + display: flex; + position: relative; + flex: 1 1 auto; + + @include breakpoint-down('small') { + flex-direction: column-reverse; + } + } + + &-footer { + padding: 1em 2em; + display: flex; + justify-content: flex-end; + background-color: var(--clr-black-light); + gap: 0.4rem; + flex-wrap: wrap; + + p { + border-radius: 0.3em; + padding: 0.5em 1.5em; + color: var(--clr-white); + border: 0.0625em solid var(--clr-white); + user-select: none; + pointer-events: none; + width: fit-content; + font-size: 0.9rem; + + &:first-of-type { + border: none; + color: var(--clr-white); + background: var(--clr-variant-dark); + background-image: linear-gradient(-90deg, + var(--clr-variant), + var(--clr-variant-dark)); + } + + @include breakpoint-down('small') { + width: 100%; + } + } + } + + &-background { + position: absolute; + left: 0; + bottom: 0; + right: 0; + width: 100%; + user-select: none; + pointer-events: none; + } + + &-external { + &_link { + display: flex; + align-items: center; + gap: 0.5em; + padding: 0.5em; + margin-top: 1em; + border-radius: 0.3em; + font-size: 1.2rem; + color: var(--clr-white); + border: none; + background: var(--clr-black-light); + + svg { + width: 1.2em; + height: 1.2em; + } + + &:is(:hover, :focus) { + color: var(--clr-white); + outline: 0.0625em solid var(--clr-background); + } + } + } + + &-tag { + border-radius: 0.3em; + position: absolute; + right: 1em; + top: 1em; + padding: 0.2em 0.5em; + z-index: 10; + font-weight: 500; + background-color: var(--clr-black-light); + color: var(--clr-white); + // box-shadow: 0 0.625rem 1.25rem hsla(270, 71%, 22%, 0.2); + } } \ No newline at end of file diff --git a/src/assets/scss/modules/component/_hero.scss b/archives/modules/component/_hero.scss similarity index 100% rename from src/assets/scss/modules/component/_hero.scss rename to archives/modules/component/_hero.scss diff --git a/src/assets/scss/modules/component/_nav.scss b/archives/modules/component/_nav.scss similarity index 94% rename from src/assets/scss/modules/component/_nav.scss rename to archives/modules/component/_nav.scss index 57b5630..f8ff033 100644 --- a/src/assets/scss/modules/component/_nav.scss +++ b/archives/modules/component/_nav.scss @@ -1,191 +1,191 @@ -.nav { - background-color: var(--clr-background); - flex-grow: 0; - flex-shrink: 0; - position: sticky; - top: 0; - padding: 0.8rem; - z-index: 20; - - &-container { - width: 100%; - max-width: 64rem; - margin: 0 auto; - gap: 1rem; - display: flex; - flex-wrap: wrap; - align-items: center; - justify-content: space-between; - - .menubar { - font-weight: 600; - flex: 1; - justify-content: flex-end; - } - } - - &-skipto { - background-color: var(--clr-accent); - color: var(--clr-white); - display: flex; - padding: 0 0.3rem; - align-self: center; - scale: 0 1; - order: 2; - transform-origin: left; - transition: scale 200ms ease; - - &:focus { - color: var(--clr-white); - scale: 1; - } - } - - .leftside { - display: flex; - gap: 1rem; - } - - .rightside { - display: flex; - gap: 0.2rem; - } - - .brand { - display: flex; - gap: 0.5rem; - flex: 1 0 auto; - order: 1; - - &-title { - font-size: 1.3rem; - font-weight: 700; - } - - &-logo { - display: flex; - align-items: center; - } - } - - .themes { - transition: background-color 200ms ease-in; - border-radius: 50%; - } - - .themes, - &-mobile { - cursor: pointer; - background: none; - border: none; - display: block; - height: 2rem; - width: 2rem; - padding: 0.4rem; - color: inherit; - - svg { - width: 100%; - height: 100%; - } - - &__section { - margin-top: 3.605625rem; - right: 0; - position: fixed; - top: 0; - left: 0; - height: calc(100% - 3.605625rem); - background-color: var(--clr-background); - color: var(--clr-foreground); - z-index: 20; - display: flex; - flex-direction: column; - align-items: center; - gap: 2rem; - justify-content: center; - - &.not-showing { - height: 0%; - overflow-y: hidden; - visibility: hidden; - } - - @include breakpoint-up('medium') { - height: 0%; - overflow-y: hidden; - visibility: hidden; - } - - li { - width: 100%; - list-style: none; - - a { - display: block; - text-transform: uppercase; - height: 5em; - - div { - position: absolute; - left: 50%; - top: 50%; - translate: -50% -50%; - } - - &:is(:hover, :focus) { - font-weight: 700; - } - } - } - } - } - - &-mobile { - @include breakpoint-up('medium') { - display: none; - } - } - - ul { - display: none; - gap: 1rem; - align-items: center; - - @include breakpoint-up('medium') { - display: flex; - } - - li { - list-style: none; - text-transform: uppercase; - letter-spacing: 0rem; - - a { - position: relative; - z-index: 1; - transition: color 300ms 150ms ease-in; - - &:hover, - &:focus-visible { - color: var(--clr-white); - z-index: 1; - - &::before { - width: 100%; - } - } - - &::before { - content: ''; - position: absolute; - width: 0%; - background-color: var(--clr-accent); - height: 110%; - transition: all 150ms ease-in; - z-index: -1; - } - } - } - } +.nav { + background-color: var(--clr-background); + flex-grow: 0; + flex-shrink: 0; + position: sticky; + top: 0; + padding: 0.8rem; + z-index: 20; + + &-container { + width: 100%; + max-width: 64rem; + margin: 0 auto; + gap: 1rem; + display: flex; + flex-wrap: wrap; + align-items: center; + justify-content: space-between; + + .menubar { + font-weight: 600; + flex: 1; + justify-content: flex-end; + } + } + + &-skipto { + background-color: var(--clr-accent); + color: var(--clr-white); + display: flex; + padding: 0 0.3rem; + align-self: center; + scale: 0 1; + order: 2; + transform-origin: left; + transition: scale 200ms ease; + + &:focus { + color: var(--clr-white); + scale: 1; + } + } + + .leftside { + display: flex; + gap: 1rem; + } + + .rightside { + display: flex; + gap: 0.2rem; + } + + .brand { + display: flex; + gap: 0.5rem; + flex: 1 0 auto; + order: 1; + + &-title { + font-size: 1.3rem; + font-weight: 700; + } + + &-logo { + display: flex; + align-items: center; + } + } + + .themes { + transition: background-color 200ms ease-in; + border-radius: 50%; + } + + .themes, + &-mobile { + cursor: pointer; + background: none; + border: none; + display: block; + height: 2rem; + width: 2rem; + padding: 0.4rem; + color: inherit; + + svg { + width: 100%; + height: 100%; + } + + &__section { + margin-top: 3.605625rem; + right: 0; + position: fixed; + top: 0; + left: 0; + height: calc(100% - 3.605625rem); + background-color: var(--clr-background); + color: var(--clr-foreground); + z-index: 20; + display: flex; + flex-direction: column; + align-items: center; + gap: 2rem; + justify-content: center; + + &.not-showing { + height: 0%; + overflow-y: hidden; + visibility: hidden; + } + + @include breakpoint-up('medium') { + height: 0%; + overflow-y: hidden; + visibility: hidden; + } + + li { + width: 100%; + list-style: none; + + a { + display: block; + text-transform: uppercase; + height: 5em; + + div { + position: absolute; + left: 50%; + top: 50%; + translate: -50% -50%; + } + + &:is(:hover, :focus) { + font-weight: 700; + } + } + } + } + } + + &-mobile { + @include breakpoint-up('medium') { + display: none; + } + } + + ul { + display: none; + gap: 1rem; + align-items: center; + + @include breakpoint-up('medium') { + display: flex; + } + + li { + list-style: none; + text-transform: uppercase; + letter-spacing: 0rem; + + a { + position: relative; + z-index: 1; + transition: color 300ms 150ms ease-in; + + &:hover, + &:focus-visible { + color: var(--clr-white); + z-index: 1; + + &::before { + width: 100%; + } + } + + &::before { + content: ''; + position: absolute; + width: 0%; + background-color: var(--clr-accent); + height: 110%; + transition: all 150ms ease-in; + z-index: -1; + } + } + } + } } \ No newline at end of file diff --git a/src/assets/scss/modules/component/_partof.scss b/archives/modules/component/_partof.scss similarity index 95% rename from src/assets/scss/modules/component/_partof.scss rename to archives/modules/component/_partof.scss index 7f44956..6cc1e54 100644 --- a/src/assets/scss/modules/component/_partof.scss +++ b/archives/modules/component/_partof.scss @@ -1,168 +1,168 @@ -.part-of { - background-color: var(--clr-background); - width: 100%; - margin-bottom: -6em; - padding-bottom: 4em; - position: relative; - isolation: isolate; - - .description { - font-size: 0.9rem; - } - - &-more { - display: block; - width: 100%; - padding: 1em; - background-color: var(--clr-background); - border: 0.0625em solid var(--clr-background-900); - margin-top: 1em; - border-radius: 0.3em; - - &:is(:hover, :focus) { - background-color: var(--clr-accent); - border-color: var(--clr-accent-light); - color: var(--clr-white); - } - } - - &-container { - max-width: 64rem; - margin: 0 auto; - padding: 3em 2em 2em 2em; - width: 100%; - - h2 { - text-transform: uppercase; - letter-spacing: 0.1em; - - @include breakpoint-down('medium') { - margin-bottom: 0.5em; - } - } - - .organization { - &-container { - margin-top: 1em; - display: grid; - gap: 1em; - grid-template-columns: repeat(auto-fit, minmax(min(20rem, 100%), 1fr)); - - svg { - max-height: 8em; - - @include breakpoint-down('medium') { - max-width: 100%; - margin-top: 2em; - } - } - } - - &-item { - border: 0.0625em solid var(--clr-background-900); - border-radius: 0.3em; - padding: 1em; - position: relative; - background: var(--clr-background); - - &.full { - grid-column: 1 / -1; - display: flex; - align-items: center; - gap: 1em; - - svg { - flex: 0 0 auto; - } - - .organization-content { - flex: 1 auto; - margin-top: 2em; - } - - @include breakpoint-down('medium') { - flex-direction: column; - } - } - } - - &-desc { - margin-bottom: 1em; - } - - &-position { - display: flex; - flex-direction: row; - flex-wrap: wrap; - gap: 0.5em; - - span { - border-radius: 0.3em; - padding: 0.5em 1.5em; - color: var(--clr-foreground); - border: 0.0625em solid var(--clr-foreground); - align-items: center; - gap: 0.4rem; - user-select: none; - pointer-events: none; - - &:first-of-type { - border: none; - color: var(--clr-white); - background: var(--clr-accent-dark); - background-image: linear-gradient( - -90deg, - var(--clr-accent), - var(--clr-accent-dark) - ); - background-size: 400%; - animation: positionanimate 1s infinite alternate; - } - } - } - - &-join { - display: flex; - flex-direction: row; - color: var(--clr-foreground); - border: 0.0625em solid var(--clr-foreground); - border-radius: 0.3em; - padding: 0.5em 1.5em; - align-items: center; - width: fit-content; - position: absolute; - right: 1em; - font-size: 0.8rem; - top: 1em; - user-select: none; - pointer-events: none; - } - } - } - - &-svg { - &_bottom { - position: absolute; - bottom: -0.0625em; - z-index: -1; - color: var(--clr-accent); - - @include breakpoint-up('medium') { - bottom: -4.0625em; - } - - @include breakpoint-up('large') { - bottom: -8.0625em; - } - } - } -} - -@keyframes positionanimate { - 0% { - background-position: left; - } - 100% { - background-position: right; - } -} +.part-of { + background-color: var(--clr-background); + width: 100%; + margin-bottom: -6em; + padding-bottom: 4em; + position: relative; + isolation: isolate; + + .description { + font-size: 0.9rem; + } + + &-more { + display: block; + width: 100%; + padding: 1em; + background-color: var(--clr-background); + border: 0.0625em solid var(--clr-background-900); + margin-top: 1em; + border-radius: 0.3em; + + &:is(:hover, :focus) { + background-color: var(--clr-accent); + border-color: var(--clr-accent-light); + color: var(--clr-white); + } + } + + &-container { + max-width: 64rem; + margin: 0 auto; + padding: 3em 2em 2em 2em; + width: 100%; + + h2 { + text-transform: uppercase; + letter-spacing: 0.1em; + + @include breakpoint-down('medium') { + margin-bottom: 0.5em; + } + } + + .organization { + &-container { + margin-top: 1em; + display: grid; + gap: 1em; + grid-template-columns: repeat(auto-fit, minmax(min(20rem, 100%), 1fr)); + + svg { + max-height: 8em; + + @include breakpoint-down('medium') { + max-width: 100%; + margin-top: 2em; + } + } + } + + &-item { + border: 0.0625em solid var(--clr-background-900); + border-radius: 0.3em; + padding: 1em; + position: relative; + background: var(--clr-background); + + &.full { + grid-column: 1 / -1; + display: flex; + align-items: center; + gap: 1em; + + svg { + flex: 0 0 auto; + } + + .organization-content { + flex: 1 auto; + margin-top: 2em; + } + + @include breakpoint-down('medium') { + flex-direction: column; + } + } + } + + &-desc { + margin-bottom: 1em; + } + + &-position { + display: flex; + flex-direction: row; + flex-wrap: wrap; + gap: 0.5em; + + span { + border-radius: 0.3em; + padding: 0.5em 1.5em; + color: var(--clr-foreground); + border: 0.0625em solid var(--clr-foreground); + align-items: center; + gap: 0.4rem; + user-select: none; + pointer-events: none; + + &:first-of-type { + border: none; + color: var(--clr-white); + background: var(--clr-accent-dark); + background-image: linear-gradient( + -90deg, + var(--clr-accent), + var(--clr-accent-dark) + ); + background-size: 400%; + animation: positionanimate 1s infinite alternate; + } + } + } + + &-join { + display: flex; + flex-direction: row; + color: var(--clr-foreground); + border: 0.0625em solid var(--clr-foreground); + border-radius: 0.3em; + padding: 0.5em 1.5em; + align-items: center; + width: fit-content; + position: absolute; + right: 1em; + font-size: 0.8rem; + top: 1em; + user-select: none; + pointer-events: none; + } + } + } + + &-svg { + &_bottom { + position: absolute; + bottom: -0.0625em; + z-index: -1; + color: var(--clr-accent); + + @include breakpoint-up('medium') { + bottom: -4.0625em; + } + + @include breakpoint-up('large') { + bottom: -8.0625em; + } + } + } +} + +@keyframes positionanimate { + 0% { + background-position: left; + } + 100% { + background-position: right; + } +} diff --git a/src/assets/scss/modules/component/_post.scss b/archives/modules/component/_post.scss similarity index 95% rename from src/assets/scss/modules/component/_post.scss rename to archives/modules/component/_post.scss index 304b0db..5c8d496 100644 --- a/src/assets/scss/modules/component/_post.scss +++ b/archives/modules/component/_post.scss @@ -1,79 +1,79 @@ -.post { - &s { - margin-top: 2.5rem; - - &-yeargroup { - margin-bottom: 0.5em; - } - - &-detail { - margin-top: 1rem; - margin-left: 2rem; - background-color: var(--clr-background); - color: var(--clr-foreground-700); - border: 0.0625em solid var(--clr-background-900); - padding: 1rem; - border-radius: 0.3rem; - - @include breakpoint-down('small') { - margin-inline: 0; - } - - &_header { - font-size: 1.6rem; - line-height: 1.1; - margin-bottom: 0.5em; - display: block; - font-weight: 600; - color: var(--clr-foreground); - } - - &_accent { - color: var(--clr-white); - margin-bottom: 1em; - width: fit-content; - flex-wrap: wrap; - gap: 0.5em; - display: flex; - - &-item { - font-size: 0.9rem; - gap: 0.5em; - border-radius: 0.3em; - padding: 0.4em; - display: flex; - color: var(--clr-foreground); - border: 0.0625em solid var(--clr-foreground); - align-items: center; - - &_filled { - border: none; - color: var(--clr-white); - box-shadow: 0 0.3125rem 0.625rem hsla(0, 0%, 0%, 0.4); - background-color: var(--clr-accent-light); - background-image: linear-gradient(45deg, - var(--clr-accent-dark), - var(--clr-accent)); - } - } - } - - &_svg { - width: 1.5em; - height: fit-content; - } - } - - &-list { - margin: 0; - } - - &:not(:first-of-type) { - margin-top: 1.5rem; - } - - &:is(:last-of-type) { - margin-bottom: 1.5rem; - } - } +.post { + &s { + margin-top: 2.5rem; + + &-yeargroup { + margin-bottom: 0.5em; + } + + &-detail { + margin-top: 1rem; + margin-left: 2rem; + background-color: var(--clr-background); + color: var(--clr-foreground-700); + border: 0.0625em solid var(--clr-background-900); + padding: 1rem; + border-radius: 0.3rem; + + @include breakpoint-down('small') { + margin-inline: 0; + } + + &_header { + font-size: 1.6rem; + line-height: 1.1; + margin-bottom: 0.5em; + display: block; + font-weight: 600; + color: var(--clr-foreground); + } + + &_accent { + color: var(--clr-white); + margin-bottom: 1em; + width: fit-content; + flex-wrap: wrap; + gap: 0.5em; + display: flex; + + &-item { + font-size: 0.9rem; + gap: 0.5em; + border-radius: 0.3em; + padding: 0.4em; + display: flex; + color: var(--clr-foreground); + border: 0.0625em solid var(--clr-foreground); + align-items: center; + + &_filled { + border: none; + color: var(--clr-white); + box-shadow: 0 0.3125rem 0.625rem hsla(0, 0%, 0%, 0.4); + background-color: var(--clr-accent-light); + background-image: linear-gradient(45deg, + var(--clr-accent-dark), + var(--clr-accent)); + } + } + } + + &_svg { + width: 1.5em; + height: fit-content; + } + } + + &-list { + margin: 0; + } + + &:not(:first-of-type) { + margin-top: 1.5rem; + } + + &:is(:last-of-type) { + margin-bottom: 1.5rem; + } + } } \ No newline at end of file diff --git a/src/assets/scss/modules/component/_preload.scss b/archives/modules/component/_preload.scss similarity index 92% rename from src/assets/scss/modules/component/_preload.scss rename to archives/modules/component/_preload.scss index 0a749ff..485b280 100644 --- a/src/assets/scss/modules/component/_preload.scss +++ b/archives/modules/component/_preload.scss @@ -1,55 +1,55 @@ -.preload { - position: fixed; - display: flex; - align-items: center; - justify-content: center; - background-color: var(--clr-background); - top: 0; - left: 0; - right: 0; - bottom: 0; - height: 100dvh; - z-index: 999; - flex-direction: column; - translate: 0 0; - opacity: 1; - transition: transform 1s ease-in-out; - - svg { - rotate: 0deg; - max-width: 10em; - animation: preload 2s infinite; - } - - &-text { - margin-top: 1em; - max-width: 30ch; - text-align: center; - } - - &.hidden { - translate: 0 -100vh; - } - - &.disabled { - display: none; - } -} - -@keyframes preload { - 25% { - rotate: 15deg; - } - - 50% { - rotate: 0deg; - } - - 75% { - rotate: -15deg; - } - - 100% { - rotate: 0deg; - } -} +.preload { + position: fixed; + display: flex; + align-items: center; + justify-content: center; + background-color: var(--clr-background); + top: 0; + left: 0; + right: 0; + bottom: 0; + height: 100dvh; + z-index: 999; + flex-direction: column; + translate: 0 0; + opacity: 1; + transition: transform 1s ease-in-out; + + svg { + rotate: 0deg; + max-width: 10em; + animation: preload 2s infinite; + } + + &-text { + margin-top: 1em; + max-width: 30ch; + text-align: center; + } + + &.hidden { + translate: 0 -100vh; + } + + &.disabled { + display: none; + } +} + +@keyframes preload { + 25% { + rotate: 15deg; + } + + 50% { + rotate: 0deg; + } + + 75% { + rotate: -15deg; + } + + 100% { + rotate: 0deg; + } +} diff --git a/src/assets/scss/modules/component/_prototype.scss b/archives/modules/component/_prototype.scss similarity index 94% rename from src/assets/scss/modules/component/_prototype.scss rename to archives/modules/component/_prototype.scss index bc4496c..777d4e3 100644 --- a/src/assets/scss/modules/component/_prototype.scss +++ b/archives/modules/component/_prototype.scss @@ -1,259 +1,259 @@ -.prototype { - margin-top: 4rem; - position: relative; - isolation: isolate; - - &s { - display: flex; - flex-direction: column; - align-items: center; - flex-wrap: wrap; - justify-content: center; - gap: 7rem; - - @include breakpoint-up('large') { - margin: 3rem; - } - - @include breakpoint-down('medium') { - flex-direction: row; - } - } - - &-header { - margin-bottom: 1rem; - } - - &-card { - align-items: center; - display: flex; - border-radius: 0.3rem; - width: 100%; - - &:first-of-type { - @include breakpoint-down('medium') { - margin-top: 2em; - } - } - - @include breakpoint-down('medium') { - flex-direction: column; - } - - &:nth-of-type(odd) { - .prototype-header { - order: 2; - - &::before { - background-color: var(--clr-accent-dark); - rotate: -6deg; - } - - @include breakpoint-down('medium') { - order: 0; - } - } - - .prototype-description { - .text { - padding: 1rem; - padding-right: 2rem; - } - - .links { - justify-content: flex-start; - padding-left: 1rem; - } - } - } - } - - &-description { - flex: 1 1 auto; - z-index: 5; - - ul { - li { - margin-top: 0.3rem; - } - } - - .text { - padding: 1rem; - padding-left: 2rem; - - .language { - display: inline-block; - padding: 0 0.1rem; - background-color: var(--clr-accent-dark); - color: var(--clr-white); - border-radius: 0.3rem; - user-select: none; - font-size: 0.8rem; - } - - @include breakpoint-down('medium') { - padding-left: 0; - } - - ul { - margin-top: 0.8rem; - border-radius: 0.3rem; - background-color: hsl(0, 0%, 10%); - padding: 1rem; - box-shadow: inset 0 0.3125rem 0.625rem hsla(0, 0%, 0%, 0.4); - } - } - - .links { - display: flex; - align-items: flex-end; - justify-content: flex-end; - padding-right: 1rem; - - a { - background-color: var(--clr-accent); - color: var(--clr-white); - padding: 0.5rem 1rem; - border-radius: 0.3rem; - transition: all 300ms ease-out; - display: flex; - - svg { - flex: 0 0 auto; - height: 1.5rem; - } - - &:hover { - filter: brightness(120%); - } - } - } - - &_header { - display: flex; - margin-bottom: 1em; - gap: 0.5em; - font-weight: 700; - align-items: center; - line-height: 1.2; - } - } - - &-more { - display: flex; - flex-wrap: wrap; - gap: 0.4rem; - - i { - display: inline-block; - font-style: normal; - padding: 0.2rem 0.7rem; - background-color: var(--clr-background-900); - border-radius: 0.3rem; - - &.error { - background-color: hsl(0, 100%, 43%); - color: var(--clr-white); - } - - &.active { - background-color: #067e06; - color: var(--clr-white); - } - } - - .status { - background-image: linear-gradient( - -90deg, - var(--clr-accent), - var(--clr-accent-dark) - ); - padding: 0 0.7rem; - display: flex; - align-items: center; - border-radius: 0.3rem; - color: white; - margin-right: 0.3rem; - } - } - - &-header { - flex: 0 0 auto; - position: relative; - width: 25rem; - height: 20rem; - color: var(--clr-white); - - @include breakpoint-down('medium') { - width: 100%; - max-width: 25rem; - } - - &:hover { - .note { - scale: 1.1; - } - } - - &::before { - content: ''; - position: absolute; - width: 100%; - height: 100%; - rotate: 6deg; - background: var(--clr-accent); - left: -0.7rem; - border-radius: 40% 20% / 10%; - } - } - - .note { - article { - padding: 1rem; - height: 100%; - overflow-y: auto; - scrollbar-width: none; - position: relative; - - &::-webkit-scrollbar { - width: 0; - } - } - - pre { - overflow: scroll; - &::-webkit-scrollbar { - width: 0; - } - } - } - - &-svg { - &_top { - position: absolute; - top: -16.0625em; - z-index: -1; - color: var(--clr-accent); - - @include breakpoint-up('large') { - top: -20.0625em; - } - - @include breakpoint-down('small') { - top: -10em; - } - - @include breakpoint-up('xlarge') { - top: -25em; - } - } - - &_bottom { - position: absolute; - bottom: -0.0625em; - z-index: -1; - color: var(--clr-background); - } - } -} +.prototype { + margin-top: 4rem; + position: relative; + isolation: isolate; + + &s { + display: flex; + flex-direction: column; + align-items: center; + flex-wrap: wrap; + justify-content: center; + gap: 7rem; + + @include breakpoint-up('large') { + margin: 3rem; + } + + @include breakpoint-down('medium') { + flex-direction: row; + } + } + + &-header { + margin-bottom: 1rem; + } + + &-card { + align-items: center; + display: flex; + border-radius: 0.3rem; + width: 100%; + + &:first-of-type { + @include breakpoint-down('medium') { + margin-top: 2em; + } + } + + @include breakpoint-down('medium') { + flex-direction: column; + } + + &:nth-of-type(odd) { + .prototype-header { + order: 2; + + &::before { + background-color: var(--clr-accent-dark); + rotate: -6deg; + } + + @include breakpoint-down('medium') { + order: 0; + } + } + + .prototype-description { + .text { + padding: 1rem; + padding-right: 2rem; + } + + .links { + justify-content: flex-start; + padding-left: 1rem; + } + } + } + } + + &-description { + flex: 1 1 auto; + z-index: 5; + + ul { + li { + margin-top: 0.3rem; + } + } + + .text { + padding: 1rem; + padding-left: 2rem; + + .language { + display: inline-block; + padding: 0 0.1rem; + background-color: var(--clr-accent-dark); + color: var(--clr-white); + border-radius: 0.3rem; + user-select: none; + font-size: 0.8rem; + } + + @include breakpoint-down('medium') { + padding-left: 0; + } + + ul { + margin-top: 0.8rem; + border-radius: 0.3rem; + background-color: hsl(0, 0%, 10%); + padding: 1rem; + box-shadow: inset 0 0.3125rem 0.625rem hsla(0, 0%, 0%, 0.4); + } + } + + .links { + display: flex; + align-items: flex-end; + justify-content: flex-end; + padding-right: 1rem; + + a { + background-color: var(--clr-accent); + color: var(--clr-white); + padding: 0.5rem 1rem; + border-radius: 0.3rem; + transition: all 300ms ease-out; + display: flex; + + svg { + flex: 0 0 auto; + height: 1.5rem; + } + + &:hover { + filter: brightness(120%); + } + } + } + + &_header { + display: flex; + margin-bottom: 1em; + gap: 0.5em; + font-weight: 700; + align-items: center; + line-height: 1.2; + } + } + + &-more { + display: flex; + flex-wrap: wrap; + gap: 0.4rem; + + i { + display: inline-block; + font-style: normal; + padding: 0.2rem 0.7rem; + background-color: var(--clr-background-900); + border-radius: 0.3rem; + + &.error { + background-color: hsl(0, 100%, 43%); + color: var(--clr-white); + } + + &.active { + background-color: #067e06; + color: var(--clr-white); + } + } + + .status { + background-image: linear-gradient( + -90deg, + var(--clr-accent), + var(--clr-accent-dark) + ); + padding: 0 0.7rem; + display: flex; + align-items: center; + border-radius: 0.3rem; + color: white; + margin-right: 0.3rem; + } + } + + &-header { + flex: 0 0 auto; + position: relative; + width: 25rem; + height: 20rem; + color: var(--clr-white); + + @include breakpoint-down('medium') { + width: 100%; + max-width: 25rem; + } + + &:hover { + .note { + scale: 1.1; + } + } + + &::before { + content: ''; + position: absolute; + width: 100%; + height: 100%; + rotate: 6deg; + background: var(--clr-accent); + left: -0.7rem; + border-radius: 40% 20% / 10%; + } + } + + .note { + article { + padding: 1rem; + height: 100%; + overflow-y: auto; + scrollbar-width: none; + position: relative; + + &::-webkit-scrollbar { + width: 0; + } + } + + pre { + overflow: scroll; + &::-webkit-scrollbar { + width: 0; + } + } + } + + &-svg { + &_top { + position: absolute; + top: -16.0625em; + z-index: -1; + color: var(--clr-accent); + + @include breakpoint-up('large') { + top: -20.0625em; + } + + @include breakpoint-down('small') { + top: -10em; + } + + @include breakpoint-up('xlarge') { + top: -25em; + } + } + + &_bottom { + position: absolute; + bottom: -0.0625em; + z-index: -1; + color: var(--clr-background); + } + } +} diff --git a/src/assets/scss/modules/component/_title.scss b/archives/modules/component/_title.scss similarity index 100% rename from src/assets/scss/modules/component/_title.scss rename to archives/modules/component/_title.scss diff --git a/archives/style.scss b/archives/style.scss new file mode 100644 index 0000000..5dec5b8 --- /dev/null +++ b/archives/style.scss @@ -0,0 +1,25 @@ +@import './modules/vars'; +@import './modules/mixin'; +@import './modules/global'; + +@import './modules/header'; +@import './modules/component/nav'; +@import './modules/component/title'; +@import './modules/main'; +@import './modules/footer'; + +@import './modules/component/prototype'; +@import './modules/component/card'; +@import './modules/component/partof'; +@import './modules/component/preload'; + +@import './modules/component/aboutme'; +@import './modules/component/hero'; +@import './modules/component/featured'; +@import './modules/component/post'; +@import './modules/component/article'; +@import './modules/component/clients'; +@import './modules/component/animation'; +@import './modules/component/contact'; + +@import './modules/component/error'; \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 74413c3..963379b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,6 +9,7 @@ "version": "1.0.0", "license": "MIT", "dependencies": { + "dotenv": "^16.5.0", "highlight.js": "^11.5.1", "markdown-it-anchor": "^8.6.2", "markdown-it-attrs": "^4.1.4", @@ -1353,6 +1354,18 @@ "url": "https://github.com/fb55/domutils?sponsor=1" } }, + "node_modules/dotenv": { + "version": "16.5.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.5.0.tgz", + "integrity": "sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, "node_modules/dunder-proto": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", diff --git a/package.json b/package.json index d0fae63..613cea2 100644 --- a/package.json +++ b/package.json @@ -29,6 +29,7 @@ "@11ty/eleventy-plugin-rss": "^1.2.0" }, "dependencies": { + "dotenv": "^16.5.0", "highlight.js": "^11.5.1", "markdown-it-anchor": "^8.6.2", "markdown-it-attrs": "^4.1.4", diff --git a/src/_includes/article.njk b/src/_includes/article.njk index 8c9d23a..264109c 100644 --- a/src/_includes/article.njk +++ b/src/_includes/article.njk @@ -1,5 +1,6 @@ --- layout: 'layouts/secondary.njk' +style: 'use/article.css' --- {% set previousPost = collections.post | getPreviousCollectionItem(page) %} {% set nextPost = collections.post | getNextCollectionItem(page) %} diff --git a/src/_includes/components/nav.njk b/src/_includes/components/nav.njk index ad8ba34..3fbef25 100644 --- a/src/_includes/components/nav.njk +++ b/src/_includes/components/nav.njk @@ -2,7 +2,7 @@