Updated
|
|
@ -1,4 +1,5 @@
|
||||||
import type { JSXElement } from 'solid-js'
|
import type { JSXElement } from 'solid-js'
|
||||||
|
import '../styles/Padding.sass'
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
left: number
|
left: number
|
||||||
|
|
@ -9,5 +10,5 @@ interface Props {
|
||||||
}
|
}
|
||||||
|
|
||||||
export default (props: Props) => {
|
export default (props: Props) => {
|
||||||
return <div style={{ padding: `${props.top || 0}rem ${props.right}rem ${props.bottom || 0}rem ${props.left}rem` }}>{props.children}</div>
|
return <div class='padding' style={{ padding: `${props.top || 0}rem ${props.right}rem ${props.bottom || 0}rem ${props.left}rem` }}>{props.children}</div>
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 4.3 KiB After Width: | Height: | Size: 6.3 KiB |
|
Before Width: | Height: | Size: 5.6 KiB After Width: | Height: | Size: 6.3 KiB |
2
@dasig/styles/Padding.sass
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
.padding
|
||||||
|
width: 100%
|
||||||
|
|
@ -5,6 +5,7 @@
|
||||||
justify-content: flex-start
|
justify-content: flex-start
|
||||||
align-items: center
|
align-items: center
|
||||||
align-content: center
|
align-content: center
|
||||||
|
width: 100%
|
||||||
|
|
||||||
.dasig-row-center
|
.dasig-row-center
|
||||||
display: flex
|
display: flex
|
||||||
|
|
@ -13,6 +14,7 @@
|
||||||
justify-content: center
|
justify-content: center
|
||||||
align-items: center
|
align-items: center
|
||||||
align-content: center
|
align-content: center
|
||||||
|
width: 100%
|
||||||
|
|
||||||
.dasig-row-right
|
.dasig-row-right
|
||||||
display: flex
|
display: flex
|
||||||
|
|
@ -21,6 +23,7 @@
|
||||||
justify-content: flex-end
|
justify-content: flex-end
|
||||||
align-items: center
|
align-items: center
|
||||||
align-content: center
|
align-content: center
|
||||||
|
width: 100%
|
||||||
|
|
||||||
.dasig-row-split
|
.dasig-row-split
|
||||||
display: flex
|
display: flex
|
||||||
|
|
@ -29,6 +32,7 @@
|
||||||
justify-content: space-between
|
justify-content: space-between
|
||||||
align-items: center
|
align-items: center
|
||||||
align-content: center
|
align-content: center
|
||||||
|
width: 100%
|
||||||
|
|
||||||
.dasig-row-spaced
|
.dasig-row-spaced
|
||||||
display: flex
|
display: flex
|
||||||
|
|
@ -37,6 +41,7 @@
|
||||||
justify-content: space-around
|
justify-content: space-around
|
||||||
align-items: center
|
align-items: center
|
||||||
align-content: center
|
align-content: center
|
||||||
|
width: 100%
|
||||||
|
|
||||||
.dasig-row-even
|
.dasig-row-even
|
||||||
display: flex
|
display: flex
|
||||||
|
|
@ -45,3 +50,4 @@
|
||||||
justify-content: space-evenly
|
justify-content: space-evenly
|
||||||
align-items: center
|
align-items: center
|
||||||
align-content: center
|
align-content: center
|
||||||
|
width: 100%
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 4.5 KiB After Width: | Height: | Size: 8.9 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 38 KiB |
|
Before Width: | Height: | Size: 4.4 KiB After Width: | Height: | Size: 8 KiB |
|
Before Width: | Height: | Size: 373 B After Width: | Height: | Size: 583 B |
|
Before Width: | Height: | Size: 888 B After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.7 KiB |
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "Dasig",
|
"name": "Articles",
|
||||||
"short_name": "Dasig",
|
"short_name": "Articles",
|
||||||
"start_url": "/",
|
"start_url": "/",
|
||||||
"display": "standalone",
|
"display": "standalone",
|
||||||
"background_color": "#ffffff",
|
"background_color": "#ffffff",
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,11 @@ const { title, subtitle, category, date, minutes, content } = Astro.props
|
||||||
---
|
---
|
||||||
|
|
||||||
<section>
|
<section>
|
||||||
<span>{category.toUpperCase()}</span>
|
<span>{category}</span>
|
||||||
<h1>{title}</h1>
|
<h1>{title}</h1>
|
||||||
<h3>{subtitle}</h3>
|
<h3>{subtitle}</h3>
|
||||||
|
|
||||||
|
<div class="content">
|
||||||
|
<p set:html={content} />
|
||||||
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
---
|
---
|
||||||
import { Row, Column } from '../../@dasig'
|
import { Row, Column, Padding } from '../../@dasig'
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
title: string
|
title: string
|
||||||
|
|
@ -10,10 +10,11 @@ interface Props {
|
||||||
alt: string
|
alt: string
|
||||||
minutes: number
|
minutes: number
|
||||||
url: string
|
url: string
|
||||||
content: string
|
category: string
|
||||||
|
categoryColor: string
|
||||||
}
|
}
|
||||||
|
|
||||||
const { title, subtitle, date, imageA, imageW, alt, minutes, url, content } = Astro.props
|
const { title, subtitle, date, imageA, imageW, alt, minutes, url, category, categoryColor } = Astro.props
|
||||||
---
|
---
|
||||||
|
|
||||||
<section class="article">
|
<section class="article">
|
||||||
|
|
@ -22,25 +23,29 @@ const { title, subtitle, date, imageA, imageW, alt, minutes, url, content } = As
|
||||||
<picture>
|
<picture>
|
||||||
<source srcset={imageA} type="image/avif" />
|
<source srcset={imageA} type="image/avif" />
|
||||||
<source srcset={imageW} type="image/webp" />
|
<source srcset={imageW} type="image/webp" />
|
||||||
<img style={`border-radius: 0.75rem`} width="100%" height="auto" decoding="async" loading="lazy" alt={alt} />
|
<img class="picture" width="100%" height="auto" decoding="async" loading="lazy" alt={alt} />
|
||||||
</picture>
|
</picture>
|
||||||
<Row gap={1}>
|
<Row content="left">
|
||||||
<div>
|
<Padding top={0} bottom={1} left={1} right={1}>
|
||||||
|
<Padding top={0} bottom={1} left={0} right={0}>
|
||||||
|
<Row content="left" gap={0.5}>
|
||||||
|
<span class=`category--${categoryColor}`>{category}</span>
|
||||||
|
<span class="minutes">{minutes} min read</span>
|
||||||
|
</Row>
|
||||||
|
</Padding>
|
||||||
|
<Row gap={1} content="left">
|
||||||
|
<div class="article__titles">
|
||||||
<span class="article__title">{title}</span>
|
<span class="article__title">{title}</span>
|
||||||
<h2 class="article__subtitle">{subtitle}</h2>
|
<h2 class="article__subtitle">{subtitle}</h2>
|
||||||
</div>
|
</div>
|
||||||
</Row>
|
</Row>
|
||||||
<div class="dateandtime" style="width: 100%">
|
<div class="dateandtime">
|
||||||
<Row gap={1} content="right">
|
<Row content="right">
|
||||||
<span>{date}</span>
|
<span>{date}</span>
|
||||||
<span>:</span>
|
|
||||||
<span>{minutes} min read</span>
|
|
||||||
|
|
||||||
<div class="content">
|
|
||||||
<p set:html={content} />
|
|
||||||
</div>
|
|
||||||
</Row>
|
</Row>
|
||||||
</div>
|
</div>
|
||||||
|
</Padding>
|
||||||
|
</Row>
|
||||||
</Column>
|
</Column>
|
||||||
</a>
|
</a>
|
||||||
</section>
|
</section>
|
||||||
|
|
@ -49,14 +54,20 @@ const { title, subtitle, date, imageA, imageW, alt, minutes, url, content } = As
|
||||||
@use '../styles/fonts' as fonts
|
@use '../styles/fonts' as fonts
|
||||||
@use 'sass:color'
|
@use 'sass:color'
|
||||||
|
|
||||||
|
$blue: #1d3b52
|
||||||
|
$yellow: #4f521d
|
||||||
|
$red: #521d2c
|
||||||
|
|
||||||
.article
|
.article
|
||||||
max-width: 30rem
|
max-width: 30rem
|
||||||
height: auto
|
height: auto
|
||||||
background-color: color.adjust(#0A0A0A, $lightness: 9%)
|
background-color: color.adjust(#0A0A0A, $lightness: 9%)
|
||||||
padding: 1.25rem
|
|
||||||
border-radius: 1rem
|
border-radius: 1rem
|
||||||
cursor: pointer
|
cursor: pointer
|
||||||
|
|
||||||
|
&__titles
|
||||||
|
height: auto
|
||||||
|
|
||||||
&__title
|
&__title
|
||||||
font-size: 1rem
|
font-size: 1rem
|
||||||
font-weight: 700
|
font-weight: 700
|
||||||
|
|
@ -68,6 +79,34 @@ const { title, subtitle, date, imageA, imageW, alt, minutes, url, content } = As
|
||||||
opacity: 0.8
|
opacity: 0.8
|
||||||
|
|
||||||
.dateandtime
|
.dateandtime
|
||||||
|
width: 100%
|
||||||
|
padding: 0.5rem 0 0 0
|
||||||
font-size: 0.75rem
|
font-size: 0.75rem
|
||||||
opacity: 0.6
|
opacity: 0.6
|
||||||
|
|
||||||
|
.picture
|
||||||
|
border-radius: 1rem 1rem 0 0
|
||||||
|
|
||||||
|
.minutes
|
||||||
|
font-size: 10px
|
||||||
|
|
||||||
|
.category
|
||||||
|
@extend .minutes
|
||||||
|
border-radius: 1rem
|
||||||
|
padding: 0.5rem
|
||||||
|
|
||||||
|
&--blue
|
||||||
|
@extend .category
|
||||||
|
color: $blue
|
||||||
|
background-color: color.adjust($blue, $lightness: 65%)
|
||||||
|
|
||||||
|
&--yellow
|
||||||
|
@extend .category
|
||||||
|
color: $yellow
|
||||||
|
background-color: color.adjust($yellow, $lightness: 65%)
|
||||||
|
|
||||||
|
&--red
|
||||||
|
@extend .category
|
||||||
|
color: $red
|
||||||
|
background-color: color.adjust($red, $lightness: 65%)
|
||||||
</style>
|
</style>
|
||||||
|
|
|
||||||
|
|
@ -1,19 +1,17 @@
|
||||||
---
|
---
|
||||||
|
slug: "5-tech-icons"
|
||||||
title: "5 Tech Icons And Their Meaning"
|
title: "5 Tech Icons And Their Meaning"
|
||||||
subtitle: "The meaning behind these technology icons"
|
subtitle: "The meaning behind these technology icons"
|
||||||
date: "Dec 9, 2024"
|
date: "Dec 9, 2024"
|
||||||
minutes: 5
|
minutes: 5
|
||||||
|
url: "read/5-tech-icons"
|
||||||
---
|
---
|
||||||
|
|
||||||
<style>
|
<!--<style>
|
||||||
p {
|
p {
|
||||||
color: red;
|
color: red;
|
||||||
}
|
}
|
||||||
</style>
|
</style>-->
|
||||||
|
|
||||||
## 5 Tech Icons And Their Meaning
|
|
||||||
|
|
||||||
## The meaning behind these technology icons
|
|
||||||
|
|
||||||
An icon is a small image or symbol used to represent a concept, idea, or, in this case, a function or a technological indication. And digital icons are found everywhere, especially on software and website designs. Thanks to online resources like Material Fonts, Flaticon, Font Awesome, and many more.
|
An icon is a small image or symbol used to represent a concept, idea, or, in this case, a function or a technological indication. And digital icons are found everywhere, especially on software and website designs. Thanks to online resources like Material Fonts, Flaticon, Font Awesome, and many more.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,9 @@
|
||||||
---
|
---
|
||||||
|
slug: "lets-make-this"
|
||||||
title: "Let’s Make This Hello World Joke More Interesting"
|
title: "Let’s Make This Hello World Joke More Interesting"
|
||||||
slug: "5-tech-icons"
|
|
||||||
subtitle: "hello_world(“print”)"
|
subtitle: "hello_world(“print”)"
|
||||||
date: "2024-01-01"
|
date: "Sep 23, 2024"
|
||||||
minutes: 8
|
minutes: 8
|
||||||
|
url: "read/lets-make-this.astro"
|
||||||
---
|
---
|
||||||
|
|
||||||
## 5 Tech Icons And Their Meaning
|
|
||||||
|
|
||||||
### The meaning behind these technology icons
|
|
||||||
|
|
|
||||||
BIN
src/images/A.png
|
Before Width: | Height: | Size: 1.1 MiB |
|
Before Width: | Height: | Size: 23 MiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 6.6 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 55 KiB |
|
Before Width: | Height: | Size: 47 KiB |
|
|
@ -1,23 +1,26 @@
|
||||||
---
|
---
|
||||||
import Layout from '../layouts/Layout.astro'
|
import Layout from '../layouts/Layout.astro'
|
||||||
import { Page, Row } from '../../@dasig'
|
import { Page, Row, Image, Logo } from '../../@dasig'
|
||||||
import ArticleCard from '../components/ArticleCard.astro'
|
import ArticleCard from '../components/ArticleCard.astro'
|
||||||
|
|
||||||
import TechA from '../../@dasig/images/5-tech.avif'
|
import TechA from '../../@dasig/images/5-tech.avif'
|
||||||
import TechW from '../../@dasig/images/5-tech.webp'
|
import TechW from '../../@dasig/images/5-tech.webp'
|
||||||
|
import logoA from '../../@dasig/images/logo.avif'
|
||||||
|
import logoW from '../../@dasig/images/logo.webp'
|
||||||
|
|
||||||
const articles = Object.values(import.meta.glob('../content/articles/*.md', { eager: true }))
|
const articles = Object.values(import.meta.glob('../content/articles/*.md', { eager: true }))
|
||||||
---
|
---
|
||||||
|
|
||||||
<Layout title="Articles - Pat Alcala">
|
<Layout title="Articles - Pat Alcala">
|
||||||
<Page alignment="column">
|
<Page alignment="column">
|
||||||
<Row wrap gap={0} content="left">
|
<Row wrap gap={1} content="left">
|
||||||
|
<Logo size={90} />
|
||||||
<h1 class="title">Pat's Articles</h1>
|
<h1 class="title">Pat's Articles</h1>
|
||||||
</Row>
|
</Row>
|
||||||
|
|
||||||
<div class="articles">
|
<div class="articles">
|
||||||
<Row wrap gap={1}>
|
<Row wrap gap={1}>
|
||||||
{articles.map((post: any) => <ArticleCard url={post.frontmatter.url} title={post.frontmatter.title} subtitle={post.frontmatter.subtitle} imageA={TechA.src} imageW={TechW.src} alt="5-tech" minutes={post.frontmatter.minutes} date={post.frontmatter.date} />)}
|
{articles.map((post: any) => <ArticleCard category="Technology" categoryColor="blue" url={post.frontmatter.url} title={post.frontmatter.title} subtitle={post.frontmatter.subtitle} imageA={TechA.src} imageW={TechW.src} alt="5-tech" minutes={post.frontmatter.minutes} date={post.frontmatter.date} />)}
|
||||||
</Row>
|
</Row>
|
||||||
</div>
|
</div>
|
||||||
</Page>
|
</Page>
|
||||||
|
|
|
||||||
20
src/pages/read/5-tech-icons.astro
Normal file
|
|
@ -0,0 +1,20 @@
|
||||||
|
---
|
||||||
|
import Layout from '../../layouts/Layout.astro'
|
||||||
|
import * as fiveTech from '../../content/articles/5-tech-icons.md'
|
||||||
|
import Article from '../../components/Article.astro'
|
||||||
|
|
||||||
|
const title = fiveTech.frontmatter.title
|
||||||
|
const content = await fiveTech.compiledContent()
|
||||||
|
---
|
||||||
|
|
||||||
|
<Layout title={title}>
|
||||||
|
<main class="page">
|
||||||
|
<Article title={fiveTech.frontmatter.title} subtitle={fiveTech.frontmatter.subtitle} category={fiveTech.frontmatter.category} date={fiveTech.frontmatter.date} minutes={fiveTech.frontmatter.minutes} content={content} />
|
||||||
|
</main>
|
||||||
|
</Layout>
|
||||||
|
|
||||||
|
<style lang="sass">
|
||||||
|
@media only screen and (max-width: 767px)
|
||||||
|
.title
|
||||||
|
font-size: 3rem
|
||||||
|
</style>
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
---
|
---
|
||||||
import Layout from '../../layouts/Layout.astro'
|
import Layout from '../../layouts/Layout.astro'
|
||||||
import Article from '../../components/Article.astro'
|
// import Article from '../../components/Article.astro'
|
||||||
|
|
||||||
import { Picture } from 'astro:assets'
|
import { Picture } from 'astro:assets'
|
||||||
|
|
||||||
|
|
@ -8,39 +8,40 @@ import * as fiveTech from '../../content/articles/5-tech-icons.md'
|
||||||
import * as letsMake from '../../content/articles/lets-make-this.md'
|
import * as letsMake from '../../content/articles/lets-make-this.md'
|
||||||
|
|
||||||
export async function getStaticPaths() {
|
export async function getStaticPaths() {
|
||||||
const articles = await Astro.glob('../../content/articles/*.md')
|
// const articles: any = await Astro.glob('../../content/articles/*.md')
|
||||||
const paths = articles.map((article: any) => ({ params: { story: article.frontmatter.slug } }))
|
// const paths = articles.map((article: any) => ({ params: { story: article.frontmatter.slug } }))
|
||||||
return paths
|
// return paths
|
||||||
|
return [{ params: { article: '5-tech-icons' } }, { params: { article: 'lets-make-this' } }]
|
||||||
}
|
}
|
||||||
const { story } = Astro.params
|
const { article } = Astro.params
|
||||||
|
|
||||||
let title = ''
|
let title = ''
|
||||||
let content = ''
|
let content = ''
|
||||||
|
|
||||||
if (story === fiveTech.frontmatter.slug) {
|
if (article === fiveTech.frontmatter.slug) {
|
||||||
title = fiveTech.frontmatter.title
|
title = fiveTech.frontmatter.title
|
||||||
content = await fiveTech.compiledContent()
|
content = await fiveTech.compiledContent()
|
||||||
} else if (story === letsMake.frontmatter.slug) {
|
} else if (article === letsMake.frontmatter.slug) {
|
||||||
title = letsMake.frontmatter.title
|
title = letsMake.frontmatter.title
|
||||||
content = await letsMake.compiledContent()
|
content = await letsMake.compiledContent()
|
||||||
}
|
}
|
||||||
---
|
---
|
||||||
|
|
||||||
<Layout title="Read" description="Story Page - <story>">
|
<Layout title={title}>
|
||||||
<main class="page">
|
<main class="page">
|
||||||
<section class="toolbar">
|
<!-- <section class="toolbar">
|
||||||
<a href="/" style="text-decoration: none; color: inherit;" aria-label="Go to index page">
|
<a href="/" style="text-decoration: none; color: inherit;" aria-label="Go to index page">
|
||||||
<div class="toolbar--title" style="text-decoration: none; color: inherit;">Snuffverse</div>
|
<div class="toolbar--title" style="text-decoration: none; color: inherit;">Snuffverse</div>
|
||||||
</a>
|
</a>
|
||||||
</section>
|
</section> -->
|
||||||
|
|
||||||
<Article title={title} />
|
<!-- <Article title={title} /> -->
|
||||||
<p set:html={content} />
|
<!-- <p set:html={content} /> -->
|
||||||
</main>
|
</main>
|
||||||
|
</Layout>
|
||||||
|
|
||||||
<style lang="sass">
|
<style lang="sass">
|
||||||
@media only screen and (max-width: 767px)
|
@media only screen and (max-width: 767px)
|
||||||
.title
|
.title
|
||||||
font-size: 3rem
|
font-size: 3rem
|
||||||
</style>
|
</style>
|
||||||
</Layout>
|
|
||||||
|
|
|
||||||