summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJoe Carstairs <jcarstairs@scottlogic.com>2023-08-08 20:43:00 +0100
committerJoe Carstairs <jcarstairs@scottlogic.com>2023-08-08 20:43:09 +0100
commitc09ab868d42a5c15f36e2ba9f55a9668da46e157 (patch)
tree5816ce5138a30a6c887ea947a3f572e5a150139f /src
parenta2d76427279e15fa0bd46faa64f3e417f33aaa4a (diff)
Nicifies Lallans issues
Diffstat (limited to 'src')
-rw-r--r--src/components/LallansIssue.astro37
-rw-r--r--src/components/LallansIssueContributions.astro29
-rw-r--r--src/components/LallansIssueContributors.astro18
-rw-r--r--src/i18n/translations/site.ts6
-rw-r--r--src/pages/[locale]/furthsettins/lallans/[issueNumber].astro5
-rw-r--r--src/types/LallansIssue.d.ts4
6 files changed, 93 insertions, 6 deletions
diff --git a/src/components/LallansIssue.astro b/src/components/LallansIssue.astro
new file mode 100644
index 0000000..e57a33c
--- /dev/null
+++ b/src/components/LallansIssue.astro
@@ -0,0 +1,37 @@
+---
+import translate from "../i18n/translate";
+import tSite from '../i18n/translations/site';
+import type LallansIssue from "../types/LallansIssue";
+import type Locale from "../types/Locale";
+import LallansIssueContributions from "./LallansIssueContributions.astro";
+import LallansIssueContributors from "./LallansIssueContributors.astro";
+
+interface Props {
+ issue: LallansIssue;
+ locale: Locale;
+}
+
+const { issue, locale } = Astro.props;
+const t = translate(locale);
+---
+
+<div class="lallans-issue__header-block">
+ <header>
+ <h1>{ t(tSite, 'lallans') } { issue.issueNumber }</h1>
+ <p class="italic">{ issue.description[locale] }</p>
+ </header>
+
+ <div class="lallans-issue__header-block-end">
+ <img alt="" src={`/images/lallans/issue${issue.issueNumber}.jpg`} />
+ <!-- TODO: payment buttons -->
+ </div>
+</div>
+
+{ 'contributions' in issue ? (
+ <LallansIssueContributions contributions={issue.contributions} locale={locale} />
+ ) : (
+ 'contributors' in issue ? (
+ <LallansIssueContributors contributors={issue.contributors} />
+ ) : (<></>)
+ )
+} \ No newline at end of file
diff --git a/src/components/LallansIssueContributions.astro b/src/components/LallansIssueContributions.astro
new file mode 100644
index 0000000..73634a2
--- /dev/null
+++ b/src/components/LallansIssueContributions.astro
@@ -0,0 +1,29 @@
+---
+import translate from "../i18n/translate";
+import tSite from '../i18n/translations/site';
+import type { Contribution } from '../types/LallansIssue';
+import type Locale from '../types/Locale';
+
+interface Props {
+ contributions: Contribution[];
+ locale: Locale;
+}
+
+const { contributions, locale } = Astro.props;
+const t = translate(locale);
+---
+
+<section>
+ <h2>Contributions</h2>
+ <ul class="lallans-issue__contributions">
+ { contributions.map(contribution => (
+ <li>
+ <span class="italic">{ contribution.title }</span>
+ { 'author' in contribution ? (
+ <span> { t(tSite, 'by') } { contribution.author }</span>
+ ) : (<></>)
+ }
+ </li>
+ ))}
+ </ul>
+</section> \ No newline at end of file
diff --git a/src/components/LallansIssueContributors.astro b/src/components/LallansIssueContributors.astro
new file mode 100644
index 0000000..4149e11
--- /dev/null
+++ b/src/components/LallansIssueContributors.astro
@@ -0,0 +1,18 @@
+---
+import type { Contributor } from '../types/LallansIssue';
+
+interface Props {
+ contributors: Contributor[];
+}
+
+const { contributors } = Astro.props;
+---
+
+<section class="lallans-contributors">
+ <h2>Contributors</h2>
+ <ul>
+ { contributors.map(contributor => (
+ <li>{ contributor }</li>
+ ))}
+ </ul>
+</section> \ No newline at end of file
diff --git a/src/i18n/translations/site.ts b/src/i18n/translations/site.ts
index 6699619..726f22c 100644
--- a/src/i18n/translations/site.ts
+++ b/src/i18n/translations/site.ts
@@ -12,7 +12,11 @@ const siteTranslations = {
'lallans': {
'sco': 'Lallans',
'en-GB': 'Lallans',
- }
+ },
+ 'by': {
+ 'sco': 'bi',
+ 'en-GB': 'by',
+ },
};
type Keys = keyof typeof siteTranslations;
diff --git a/src/pages/[locale]/furthsettins/lallans/[issueNumber].astro b/src/pages/[locale]/furthsettins/lallans/[issueNumber].astro
index 78afe1f..d6d7257 100644
--- a/src/pages/[locale]/furthsettins/lallans/[issueNumber].astro
+++ b/src/pages/[locale]/furthsettins/lallans/[issueNumber].astro
@@ -3,10 +3,10 @@ import Page from '../../../../layouts/Page.astro';
import localeStaticPaths from '../../../../lib/localeStaticPaths';
import translate from '../../../../i18n/translate';
import tFurthsettins from '../../../../i18n/translations/pages/furthsettins';
-import tSite from '../../../../i18n/translations/site';
import type Locale from '../../../../types/Locale';
import { getLallansIssue } from '../../../../data/lallans';
import type LallansIssueNumber from '../../../../types/LallansIssueNumber';
+import LallansIssue from '../../../../components/LallansIssue.astro';
export async function getStaticPaths() {
const lallansIssueNumbers = Object.keys(getLallansIssue) as `${LallansIssueNumber}`[];
@@ -24,6 +24,5 @@ const issue = await getLallansIssue[issueNumber]();
---
<Page locale={locale} title={ t(tFurthsettins, 'title') }>
- <h1>{ t(tSite, 'lallans') } { issueNumber }</h1>
- <p>{ issue.description[locale] }</p>
+ <LallansIssue issue={issue} locale={locale} />
</Page> \ No newline at end of file
diff --git a/src/types/LallansIssue.d.ts b/src/types/LallansIssue.d.ts
index 2f6355d..d8339b1 100644
--- a/src/types/LallansIssue.d.ts
+++ b/src/types/LallansIssue.d.ts
@@ -17,7 +17,7 @@ type LallansIssue = {
Record<string, never>
);
-type Contributor = string;
-type Contribution = { author?: string, title: string };
+export type Contributor = string;
+export type Contribution = { author?: string, title: string };
export default LallansIssue; \ No newline at end of file