@because-dev/astro 0.3.0 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/because.js +5 -0
- package/components/IdeaArticle.astro +4 -2
- package/components/IdeaShell.astro +25 -9
- package/components/ViewInit.astro +9 -0
- package/dist/helpers.d.ts +20 -1
- package/dist/helpers.js +21 -2
- package/dist/helpers.js.map +1 -1
- package/dist/index.d.ts +53 -9
- package/dist/index.js +16 -4
- package/dist/index.js.map +1 -1
- package/package.json +7 -3
- package/routes/idea-plain.astro +2 -2
- package/routes/idea.astro +4 -4
package/bin/because.js
ADDED
|
@@ -7,8 +7,10 @@ interface Props {
|
|
|
7
7
|
page: IdeaPage;
|
|
8
8
|
/** URL of the idea's neighbourhood file, for scripts that want it. */
|
|
9
9
|
neighbourhood: string;
|
|
10
|
+
/** How to show the date (already formatted); defaults to the ISO date. */
|
|
11
|
+
dateText?: string;
|
|
10
12
|
}
|
|
11
|
-
const { page, neighbourhood } = Astro.props;
|
|
13
|
+
const { page, neighbourhood, dateText } = Astro.props;
|
|
12
14
|
const { idea } = page;
|
|
13
15
|
---
|
|
14
16
|
<article
|
|
@@ -29,7 +31,7 @@ const { idea } = page;
|
|
|
29
31
|
</nav>
|
|
30
32
|
)}
|
|
31
33
|
<h1>{idea.title}</h1>
|
|
32
|
-
{idea.date && <p class="bc-meta"><time datetime={idea.date}>{idea.date}</time></p>}
|
|
34
|
+
{idea.date && <p class="bc-meta"><time datetime={idea.date}>{dateText ?? idea.date}</time></p>}
|
|
33
35
|
<div class="bc-body" set:html={page.html} />
|
|
34
36
|
|
|
35
37
|
{page.questions.map((q) => (
|
|
@@ -15,12 +15,26 @@ interface Props {
|
|
|
15
15
|
description?: string;
|
|
16
16
|
/** Which full-screen view opens first: the map or the article. */
|
|
17
17
|
view?: "map" | "article";
|
|
18
|
+
/** The idea's title, announced as the page heading while the article is hidden behind the map. */
|
|
19
|
+
heading?: string;
|
|
20
|
+
/** Data attributes for the views container (defaults per screen size, breakpoint, view parameter). */
|
|
21
|
+
viewAttrs?: Record<string, string>;
|
|
22
|
+
/** Width in px from which the article view becomes a sidebar. */
|
|
23
|
+
breakpoint?: number;
|
|
18
24
|
/** Home link in the top bar. */
|
|
19
25
|
homeHref: string;
|
|
20
26
|
homeLabel: string;
|
|
21
27
|
indexHref: string;
|
|
22
28
|
}
|
|
23
|
-
|
|
29
|
+
import ViewInit from "./ViewInit.astro";
|
|
30
|
+
|
|
31
|
+
const { title, homeHref, homeLabel, indexHref, view = "map", heading, viewAttrs, breakpoint = 768 } = Astro.props;
|
|
32
|
+
const attrs = viewAttrs ?? { "data-because-views": "", "data-because-view": view };
|
|
33
|
+
// Wider screens (from the breakpoint): the map always shows, and the article view opens the text as a sidebar.
|
|
34
|
+
const wideRules = `@media (min-width: ${breakpoint}px) {
|
|
35
|
+
:where(.has-map .bc-map-root) { display: block; flex: 1; min-width: 0; position: relative; }
|
|
36
|
+
:where(.has-map[data-because-view="article"] .bc-side) { display: block; flex: none; width: var(--bc-side, 420px); border-left: 1px solid var(--bc-line); }
|
|
37
|
+
}`;
|
|
24
38
|
---
|
|
25
39
|
<!doctype html>
|
|
26
40
|
<html lang="en">
|
|
@@ -69,11 +83,10 @@ const { title, homeHref, homeLabel, indexHref, view = "map" } = Astro.props;
|
|
|
69
83
|
:where(.has-map[data-because-view="map"] .bc-map-root) { display: block; flex: 1; min-width: 0; position: relative; }
|
|
70
84
|
:where(.has-map[data-because-view="map"] .bc-side) { display: none; }
|
|
71
85
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
}
|
|
86
|
+
|
|
87
|
+
/* While the map hides the article, keep a page heading for screen readers (visually hidden). */
|
|
88
|
+
:where(.bc-maptitle) { display: none; }
|
|
89
|
+
:where(.has-map[data-because-view="map"] .bc-maptitle) { display: block; position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
|
|
77
90
|
|
|
78
91
|
/* Floating switch between the two views, bottom right (hidden until the map mounts). */
|
|
79
92
|
:where(.bc-viewtoggle) { position: fixed; z-index: 5; right: max(16px, env(safe-area-inset-right)); bottom: max(16px, env(safe-area-inset-bottom));
|
|
@@ -102,10 +115,13 @@ const { title, homeHref, homeLabel, indexHref, view = "map" } = Astro.props;
|
|
|
102
115
|
<a class="bc-home" href={homeHref}>{homeLabel}</a>
|
|
103
116
|
<a class="bc-nav" href={indexHref}>All ideas</a>
|
|
104
117
|
</header>
|
|
105
|
-
<
|
|
118
|
+
<style is:inline set:html={wideRules}></style>
|
|
119
|
+
<main class="bc-shell" {...attrs}>
|
|
120
|
+
<ViewInit />
|
|
121
|
+
<h1 class="bc-maptitle">{heading ?? title}</h1>
|
|
106
122
|
<slot name="map" />
|
|
107
|
-
<
|
|
108
|
-
</
|
|
123
|
+
<div class="bc-side"><slot /></div>
|
|
124
|
+
</main>
|
|
109
125
|
<button type="button" class="bc-viewtoggle" data-because-view-toggle hidden></button>
|
|
110
126
|
</body>
|
|
111
127
|
</html>
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
---
|
|
2
|
+
/**
|
|
3
|
+
* Put this first inside the element that carries a shell's view attributes.
|
|
4
|
+
* It picks the starting view for the screen size (and the view parameter, if
|
|
5
|
+
* any) before the page paints, so a wide screen doesn't flash the wrong view.
|
|
6
|
+
*/
|
|
7
|
+
import { viewInitScript } from "@because-dev/core/map";
|
|
8
|
+
---
|
|
9
|
+
<script is:inline set:html={viewInitScript}></script>
|
package/dist/helpers.d.ts
CHANGED
|
@@ -73,6 +73,8 @@ export interface PostEntry {
|
|
|
73
73
|
teaser?: string;
|
|
74
74
|
/** ISO date from front matter, if any; format it however your site likes. */
|
|
75
75
|
date?: string;
|
|
76
|
+
/** `date` formatted with the integration's dateFormat, when one is set. */
|
|
77
|
+
dateText?: string;
|
|
76
78
|
updated?: string;
|
|
77
79
|
href: string;
|
|
78
80
|
/** Ideas reachable from the post by following its questions, the post included. */
|
|
@@ -89,7 +91,24 @@ export interface IdeaEntry {
|
|
|
89
91
|
href: string;
|
|
90
92
|
}
|
|
91
93
|
/** Posts newest first (undated last), and every other idea by title. */
|
|
92
|
-
export declare function listings(graph: Graph, ctx: PageContext
|
|
94
|
+
export declare function listings(graph: Graph, ctx: PageContext, options?: {
|
|
95
|
+
dateFormat?: Intl.DateTimeFormatOptions & {
|
|
96
|
+
locale?: string;
|
|
97
|
+
};
|
|
98
|
+
}): {
|
|
93
99
|
posts: PostEntry[];
|
|
94
100
|
ideas: IdeaEntry[];
|
|
95
101
|
};
|
|
102
|
+
/** Format an ISO date with the integration's dateFormat, or return it unchanged. */
|
|
103
|
+
export declare function formatDate(iso: string, format?: Intl.DateTimeFormatOptions & {
|
|
104
|
+
locale?: string;
|
|
105
|
+
}): string;
|
|
106
|
+
/** Data attributes for a shell's views container (spread them on the element wrapping the map and the article). */
|
|
107
|
+
export declare function viewAttrs(config: {
|
|
108
|
+
view: {
|
|
109
|
+
narrow: string;
|
|
110
|
+
wide: string;
|
|
111
|
+
};
|
|
112
|
+
breakpoint: number;
|
|
113
|
+
viewParam?: string;
|
|
114
|
+
}): Record<string, string>;
|
package/dist/helpers.js
CHANGED
|
@@ -106,7 +106,7 @@ export function ideaHead(page, siteName, site) {
|
|
|
106
106
|
return { title: pageTitle(idea.title, siteName), description, jsonLd };
|
|
107
107
|
}
|
|
108
108
|
/** Posts newest first (undated last), and every other idea by title. */
|
|
109
|
-
export function listings(graph, ctx) {
|
|
109
|
+
export function listings(graph, ctx, options = {}) {
|
|
110
110
|
const index = indexGraph(graph);
|
|
111
111
|
const entry = (i) => ({ id: i.id, slug: i.slug, title: i.title, summary: i.summary, ...(i.teaser ? { teaser: i.teaser } : {}), href: ideaHref(ctx, i) });
|
|
112
112
|
const posts = graph.ideas
|
|
@@ -114,7 +114,7 @@ export function listings(graph, ctx) {
|
|
|
114
114
|
.sort((a, b) => (b.date ?? "").localeCompare(a.date ?? ""))
|
|
115
115
|
.map((p) => ({
|
|
116
116
|
...entry(p),
|
|
117
|
-
...(p.date ? { date: p.date } : {}),
|
|
117
|
+
...(p.date ? { date: p.date, ...(options.dateFormat ? { dateText: formatDate(p.date, options.dateFormat) } : {}) } : {}),
|
|
118
118
|
...(p.updated ? { updated: p.updated } : {}),
|
|
119
119
|
ideaCount: reachableFrom(index, p.id).length,
|
|
120
120
|
}));
|
|
@@ -124,4 +124,23 @@ export function listings(graph, ctx) {
|
|
|
124
124
|
.map(entry);
|
|
125
125
|
return { posts, ideas };
|
|
126
126
|
}
|
|
127
|
+
/** Format an ISO date with the integration's dateFormat, or return it unchanged. */
|
|
128
|
+
export function formatDate(iso, format) {
|
|
129
|
+
if (!format)
|
|
130
|
+
return iso;
|
|
131
|
+
const { locale, ...options } = format;
|
|
132
|
+
const date = new Date(iso);
|
|
133
|
+
return Number.isNaN(date.getTime()) ? iso : date.toLocaleDateString(locale, options);
|
|
134
|
+
}
|
|
135
|
+
/** Data attributes for a shell's views container (spread them on the element wrapping the map and the article). */
|
|
136
|
+
export function viewAttrs(config) {
|
|
137
|
+
return {
|
|
138
|
+
"data-because-views": "",
|
|
139
|
+
"data-because-view": config.view.narrow,
|
|
140
|
+
"data-because-view-narrow": config.view.narrow,
|
|
141
|
+
"data-because-view-wide": config.view.wide,
|
|
142
|
+
"data-because-breakpoint": String(config.breakpoint),
|
|
143
|
+
...(config.viewParam ? { "data-because-view-param": config.viewParam } : {}),
|
|
144
|
+
};
|
|
145
|
+
}
|
|
127
146
|
//# sourceMappingURL=helpers.js.map
|
package/dist/helpers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -16,12 +16,37 @@ export interface BecauseOptions {
|
|
|
16
16
|
/** Give idea pages the interactive map (a full-screen map view beside the article view). Default true. */
|
|
17
17
|
map?: boolean;
|
|
18
18
|
/**
|
|
19
|
-
* Which
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
* `
|
|
19
|
+
* Which view an idea page opens in: "map" (default), "article", or one per
|
|
20
|
+
* screen size, e.g. `{ narrow: "map", wide: "article" }`. It's set before the
|
|
21
|
+
* page paints, and resets to that size's default when the width crosses
|
|
22
|
+
* `breakpoint`. Readers switch with the floating button.
|
|
23
23
|
*/
|
|
24
|
-
view?: "map" | "article"
|
|
24
|
+
view?: "map" | "article" | {
|
|
25
|
+
narrow: "map" | "article";
|
|
26
|
+
wide: "map" | "article";
|
|
27
|
+
};
|
|
28
|
+
/** Width in px from which a screen counts as wide (views, legend, default shell layout). Default 768. */
|
|
29
|
+
breakpoint?: number;
|
|
30
|
+
/**
|
|
31
|
+
* Keep the reader's view in this query parameter, e.g. "article" → `?article=1`
|
|
32
|
+
* (or `=0` for the map), only when it differs from the default; carried on idea
|
|
33
|
+
* links and followed on back/forward. Off by default: Because doesn't store
|
|
34
|
+
* the view unless asked. With `mount: false`, pass `viewParam` to `mountAll()` instead.
|
|
35
|
+
*/
|
|
36
|
+
viewParam?: string;
|
|
37
|
+
/** The map's question key: "toggle" (default, behind the Key button), "open", or `{ narrow, wide }`. */
|
|
38
|
+
legend?: "open" | "toggle" | {
|
|
39
|
+
narrow: "open" | "toggle";
|
|
40
|
+
wide: "open" | "toggle";
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* How idea pages show dates, applied at build time, e.g.
|
|
44
|
+
* `{ locale: "en-US", month: "short", day: "numeric", year: "numeric", timeZone: "UTC" }`.
|
|
45
|
+
* Default: the ISO date as written. Also adds `dateText` to the ready-made `posts`.
|
|
46
|
+
*/
|
|
47
|
+
dateFormat?: Intl.DateTimeFormatOptions & {
|
|
48
|
+
locale?: string;
|
|
49
|
+
};
|
|
25
50
|
/**
|
|
26
51
|
* Start the map on idea pages automatically. Default true. Set false to call
|
|
27
52
|
* `mountAll()` from "@because-dev/astro/client" in your own script, e.g. to
|
|
@@ -37,11 +62,12 @@ export interface BecauseOptions {
|
|
|
37
62
|
/**
|
|
38
63
|
* Your own shell for idea pages (with the map on), relative to the project root,
|
|
39
64
|
* e.g. "./src/layouts/IdeaShell.astro". It receives `title`, `description`,
|
|
40
|
-
* `homeHref`, `homeLabel`, `indexHref` and `
|
|
65
|
+
* `homeHref`, `homeLabel`, `indexHref`, `view`, `heading` (the idea's title) and `viewAttrs` props and three slots: "head"
|
|
41
66
|
* (meta tags; render it in <head>), "map" (the map's root element; give it a
|
|
42
67
|
* size) and the default slot (the idea's article). For map/article switching,
|
|
43
|
-
*
|
|
44
|
-
*
|
|
68
|
+
* spread `{...viewAttrs}` on an element wrapping both, put `<ViewInit />` (from
|
|
69
|
+
* "@because-dev/astro/components/ViewInit.astro") first inside it, and add a
|
|
70
|
+
* `<button data-because-view-toggle hidden>`. Defaults to the
|
|
45
71
|
* built-in full-screen shell.
|
|
46
72
|
*/
|
|
47
73
|
shell?: string;
|
|
@@ -50,6 +76,12 @@ export interface BecauseOptions {
|
|
|
50
76
|
* "six-hats", or your own `Strategy` object (see defineStrategy). One per site.
|
|
51
77
|
*/
|
|
52
78
|
strategy?: string | Strategy;
|
|
79
|
+
/**
|
|
80
|
+
* Write an agent guide into the project on every dev/build run: a Claude skill
|
|
81
|
+
* (.claude/skills/because/) and AGENTS.md in the notes folder, describing this
|
|
82
|
+
* site's note format, strategy and the `because` command. Default true.
|
|
83
|
+
*/
|
|
84
|
+
skill?: boolean;
|
|
53
85
|
/** Items per page for the list page and the paged list files. Default 50. */
|
|
54
86
|
pageSize?: number;
|
|
55
87
|
/** Inject the map's built-in styles. Default true. Set false to style the map yourself. */
|
|
@@ -65,7 +97,19 @@ export interface ResolvedBecauseConfig {
|
|
|
65
97
|
base: string;
|
|
66
98
|
siteName?: string;
|
|
67
99
|
map: boolean;
|
|
68
|
-
view:
|
|
100
|
+
view: {
|
|
101
|
+
narrow: "map" | "article";
|
|
102
|
+
wide: "map" | "article";
|
|
103
|
+
};
|
|
104
|
+
breakpoint: number;
|
|
105
|
+
viewParam?: string;
|
|
106
|
+
legend: "open" | "toggle" | {
|
|
107
|
+
narrow: "open" | "toggle";
|
|
108
|
+
wide: "open" | "toggle";
|
|
109
|
+
};
|
|
110
|
+
dateFormat?: Intl.DateTimeFormatOptions & {
|
|
111
|
+
locale?: string;
|
|
112
|
+
};
|
|
69
113
|
mount: boolean;
|
|
70
114
|
styles: boolean;
|
|
71
115
|
pageSize: number;
|
package/dist/index.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { fileURLToPath } from "node:url";
|
|
2
|
-
import { isAbsolute, resolve } from "node:path";
|
|
2
|
+
import { isAbsolute, relative, resolve } from "node:path";
|
|
3
3
|
import { checkGraph, DEFAULT_PAGE_SIZE, graphPath, indexGraph, resolveStrategy, staticFile } from "@because-dev/core";
|
|
4
4
|
import { joinPath, listings } from "./helpers.js";
|
|
5
5
|
import { loadVault } from "@because-dev/core/parser/fs";
|
|
6
|
+
import { writeSkill } from "@because-dev/core/cli";
|
|
6
7
|
const DATA = "virtual:because/data";
|
|
7
8
|
const CONFIG = "virtual:because/config";
|
|
8
9
|
const LAYOUT = "virtual:because/layout";
|
|
@@ -17,7 +18,7 @@ export default function because(options = {}) {
|
|
|
17
18
|
return {
|
|
18
19
|
name: "@because-dev/astro",
|
|
19
20
|
hooks: {
|
|
20
|
-
"astro:config:setup": ({ config, command, injectRoute, updateConfig, logger }) => {
|
|
21
|
+
"astro:config:setup": async ({ config, command, injectRoute, updateConfig, logger }) => {
|
|
21
22
|
const root = fileURLToPath(config.root);
|
|
22
23
|
const abs = (p) => (isAbsolute(p) ? p : resolve(root, p));
|
|
23
24
|
const contentDir = abs(options.content ?? "./ideas");
|
|
@@ -26,7 +27,18 @@ export default function because(options = {}) {
|
|
|
26
27
|
const drafts = options.drafts ?? command === "dev";
|
|
27
28
|
// Resolve now so a typo or bad custom strategy fails at startup with a clear message.
|
|
28
29
|
const strategy = resolveStrategy(options.strategy);
|
|
29
|
-
|
|
30
|
+
if (options.skill ?? true) {
|
|
31
|
+
// Keep the agent guide for this site's notes up to date; never fail the build over it.
|
|
32
|
+
try {
|
|
33
|
+
const written = await writeSkill(root, { content: options.content ?? "./ideas", base: joinPath(config.base, base), strategy });
|
|
34
|
+
if (written.length)
|
|
35
|
+
logger.info(`Agent guide updated: ${written.map((f) => relative(root, f)).join(", ")}`);
|
|
36
|
+
}
|
|
37
|
+
catch (e) {
|
|
38
|
+
logger.warn(`Couldn't write the agent guide: ${e.message}`);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
const resolved = { base, siteName: options.siteName, map: options.map ?? true, view: typeof options.view === "object" ? options.view : { narrow: options.view ?? "map", wide: options.view ?? "map" }, breakpoint: options.breakpoint ?? 768, ...(options.viewParam ? { viewParam: options.viewParam } : {}), legend: options.legend ?? "toggle", ...(options.dateFormat ? { dateFormat: options.dateFormat } : {}), mount: options.mount ?? true, styles: options.styles ?? true, pageSize: options.pageSize ?? DEFAULT_PAGE_SIZE };
|
|
30
42
|
const read = async () => {
|
|
31
43
|
const { graph, issues } = await loadVault(contentDir, { drafts, strategy });
|
|
32
44
|
const checks = checkGraph(graph);
|
|
@@ -59,7 +71,7 @@ export default function because(options = {}) {
|
|
|
59
71
|
async load(id) {
|
|
60
72
|
if (id === `\0${DATA}`) {
|
|
61
73
|
const graph = await load();
|
|
62
|
-
const { posts, ideas } = listings(graph, { siteBase: config.base, base });
|
|
74
|
+
const { posts, ideas } = listings(graph, { siteBase: config.base, base }, { dateFormat: resolved.dateFormat });
|
|
63
75
|
return [
|
|
64
76
|
`export const graph = ${JSON.stringify(graph)};`,
|
|
65
77
|
`export const posts = ${JSON.stringify(posts)};`,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@because-dev/astro",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.1",
|
|
4
4
|
"description": "Astro integration: one static page per Because idea, the interactive map, and per-idea neighbourhood JSON.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -33,13 +33,14 @@
|
|
|
33
33
|
}
|
|
34
34
|
},
|
|
35
35
|
"files": [
|
|
36
|
+
"bin",
|
|
37
|
+
"components",
|
|
36
38
|
"dist",
|
|
37
39
|
"routes",
|
|
38
|
-
"components",
|
|
39
40
|
"virtual.d.ts"
|
|
40
41
|
],
|
|
41
42
|
"dependencies": {
|
|
42
|
-
"@because-dev/core": "0.
|
|
43
|
+
"@because-dev/core": "0.4.1"
|
|
43
44
|
},
|
|
44
45
|
"peerDependencies": {
|
|
45
46
|
"astro": "^5.0.0 || ^6.0.0 || ^7.0.0"
|
|
@@ -59,6 +60,9 @@
|
|
|
59
60
|
"publishConfig": {
|
|
60
61
|
"access": "public"
|
|
61
62
|
},
|
|
63
|
+
"bin": {
|
|
64
|
+
"because": "./bin/because.js"
|
|
65
|
+
},
|
|
62
66
|
"scripts": {
|
|
63
67
|
"build": "tsc -p tsconfig.json",
|
|
64
68
|
"typecheck": "tsc -p tsconfig.json --noEmit"
|
package/routes/idea-plain.astro
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import type { GetStaticPaths } from "astro";
|
|
3
3
|
import { graph } from "virtual:because/data";
|
|
4
4
|
import { config } from "virtual:because/config";
|
|
5
|
-
import { createSite, ideaHead, neighbourhoodHref } from "../dist/helpers.js";
|
|
5
|
+
import { createSite, formatDate, ideaHead, neighbourhoodHref } from "../dist/helpers.js";
|
|
6
6
|
import Layout from "virtual:because/layout";
|
|
7
7
|
import Head from "../components/Head.astro";
|
|
8
8
|
import IdeaArticle from "../components/IdeaArticle.astro";
|
|
@@ -20,5 +20,5 @@ const { title, description, jsonLd } = ideaHead(page, config.siteName, Astro.sit
|
|
|
20
20
|
<!-- Used when the integration's map option is false: the idea as an article in the site's own layout. -->
|
|
21
21
|
<Layout title={title} description={description}>
|
|
22
22
|
<Head slot="head" title={idea.title} description={description} jsonLd={jsonLd} />
|
|
23
|
-
<IdeaArticle page={page} neighbourhood={neighbourhoodHref(ctx, idea.id)} />
|
|
23
|
+
<IdeaArticle page={page} neighbourhood={neighbourhoodHref(ctx, idea.id)} dateText={idea.date ? formatDate(idea.date, config.dateFormat) : undefined} />
|
|
24
24
|
</Layout>
|
package/routes/idea.astro
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import type { GetStaticPaths } from "astro";
|
|
3
3
|
import { graph } from "virtual:because/data";
|
|
4
4
|
import { config } from "virtual:because/config";
|
|
5
|
-
import { createSite, graphBase, ideaHead, joinPath, neighbourhoodHref } from "../dist/helpers.js";
|
|
5
|
+
import { createSite, formatDate, graphBase, ideaHead, joinPath, neighbourhoodHref, viewAttrs } from "../dist/helpers.js";
|
|
6
6
|
import Head from "../components/Head.astro";
|
|
7
7
|
import Shell from "virtual:because/shell";
|
|
8
8
|
import IdeaArticle from "../components/IdeaArticle.astro";
|
|
@@ -16,13 +16,13 @@ const site = createSite(graph, ctx);
|
|
|
16
16
|
const page = site.page(Astro.params.slug!)!;
|
|
17
17
|
const { idea } = page;
|
|
18
18
|
const { title, description, jsonLd } = ideaHead(page, config.siteName, Astro.site);
|
|
19
|
-
const shellProps = { title, description, view: config.view, homeHref: ctx.siteBase, homeLabel: config.siteName ?? "Home", indexHref: joinPath(ctx.siteBase, config.base, "/") };
|
|
19
|
+
const shellProps = { title, description, heading: idea.title, view: config.view.narrow, viewAttrs: viewAttrs(config), breakpoint: config.breakpoint, homeHref: ctx.siteBase, homeLabel: config.siteName ?? "Home", indexHref: joinPath(ctx.siteBase, config.base, "/") };
|
|
20
20
|
---
|
|
21
21
|
<!-- The full-screen map view and article view (or the site's own shell). -->
|
|
22
22
|
<Shell {...shellProps}>
|
|
23
23
|
<Head slot="head" title={idea.title} description={description} jsonLd={jsonLd} />
|
|
24
|
-
<div slot="map" class="bc-map-root" data-because-map data-because-base={graphBase(ctx)} data-because-focus={idea.id} data-because-styles={config.styles ? undefined : "false"} data-because-mount={config.mount ? undefined : "manual"}></div>
|
|
25
|
-
<IdeaArticle page={page} neighbourhood={neighbourhoodHref(ctx, idea.id)} />
|
|
24
|
+
<div slot="map" class="bc-map-root" data-because-map data-because-base={graphBase(ctx)} data-because-focus={idea.id} data-because-styles={config.styles ? undefined : "false"} data-because-mount={config.mount ? undefined : "manual"} data-because-legend={typeof config.legend === "string" ? config.legend : JSON.stringify(config.legend)} data-because-breakpoint={config.breakpoint}></div>
|
|
25
|
+
<IdeaArticle page={page} neighbourhood={neighbourhoodHref(ctx, idea.id)} dateText={idea.date ? formatDate(idea.date, config.dateFormat) : undefined} />
|
|
26
26
|
</Shell>
|
|
27
27
|
|
|
28
28
|
<script>
|