@because-dev/astro 0.2.0 → 0.4.0

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.
@@ -1,6 +1,7 @@
1
1
  ---
2
2
  /** The idea's text: crawlable HTML with each question as an <h2> and its answers as links. */
3
3
  import type { IdeaPage } from "../dist/helpers.js";
4
+ import { renderInline } from "@because-dev/core";
4
5
 
5
6
  interface Props {
6
7
  page: IdeaPage;
@@ -37,7 +38,7 @@ const { idea } = page;
37
38
  {q.answers.map((a) => (
38
39
  <div class="bc-answer">
39
40
  <h3><a href={a.href}>{a.idea.title}</a></h3>
40
- {a.idea.summary && <p>{a.idea.summary}</p>}
41
+ {a.idea.summary && <p set:html={renderInline(a.idea.teaser ?? a.idea.summary)} />}
41
42
  </div>
42
43
  ))}
43
44
  </section>
@@ -1,8 +1,10 @@
1
1
  ---
2
2
  /**
3
- * Full-screen idea page: the map fills the window and the idea's text sits in
4
- * a panel on the right (below the map on phones). Without JavaScript there is
5
- * no map and the text panel becomes an ordinary centred article.
3
+ * Idea page with two views. On phones the map and the article are separate
4
+ * full-screen pages; on wider screens the map always shows and the article view
5
+ * opens the text in a sidebar (--bc-side, default 420px). A floating button
6
+ * switches; the `view` option picks which opens first. Without JavaScript there
7
+ * is no map, only the article.
6
8
  *
7
9
  * The default shell for idea pages. Styles are low-specificity (:where) and
8
10
  * driven by --bc-* tokens, and no fonts are loaded, so a site can restyle it
@@ -11,12 +13,16 @@
11
13
  interface Props {
12
14
  title: string;
13
15
  description?: string;
16
+ /** Which full-screen view opens first: the map or the article. */
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;
14
20
  /** Home link in the top bar. */
15
21
  homeHref: string;
16
22
  homeLabel: string;
17
23
  indexHref: string;
18
24
  }
19
- const { title, homeHref, homeLabel, indexHref } = Astro.props;
25
+ const { title, homeHref, homeLabel, indexHref, view = "map", heading } = Astro.props;
20
26
  ---
21
27
  <!doctype html>
22
28
  <html lang="en">
@@ -29,7 +35,6 @@ const { title, homeHref, homeLabel, indexHref } = Astro.props;
29
35
  :where(:root) {
30
36
  --bc-board: #eef1ef; --bc-card: #ffffff; --bc-ink: #18201d; --bc-muted: #5b6863; --bc-line: #d3dbd6;
31
37
  --bc-accent: #1f5f4a; --bc-bar: rgba(255,255,255,.93);
32
- --bc-side: 420px;
33
38
  color-scheme: light;
34
39
  }
35
40
  @media (prefers-color-scheme: dark) {
@@ -56,33 +61,34 @@ const { title, homeHref, homeLabel, indexHref } = Astro.props;
56
61
  :where(.bc-top .bc-home) { font-family: var(--bc-display, var(--bc-text, inherit)); font-weight: 700; font-size: 19px; letter-spacing: -0.01em; }
57
62
  :where(.bc-top .bc-nav) { font-family: var(--bc-mono, ui-monospace, Menlo, Consolas, monospace); font-size: 12px; color: var(--bc-muted); }
58
63
  :where(.bc-top .bc-nav:hover) { color: var(--bc-ink); }
59
- :where(.bc-top .bc-toggle) { margin-left: auto; font: 12px var(--bc-mono, ui-monospace, Menlo, Consolas, monospace); color: var(--bc-ink); background: var(--bc-card);
60
- border: 1px solid var(--bc-line); border-radius: 6px; padding: 5px 9px; cursor: pointer; display: none; }
61
- :where(.bc-top .bc-toggle:hover) { border-color: var(--bc-muted); }
62
64
 
63
- :where(.bc-shell) { flex: 1; min-height: 0; display: flex; }
65
+ :where(.bc-shell) { flex: 1; min-height: 0; display: flex; --bc-controls-bottom: 72px; }
64
66
  :where(.bc-shell .bc-map-root) { display: none; }
65
- :where(.bc-side) { overflow-y: auto; background: var(--bc-card); }
67
+ :where(.bc-side) { flex: 1; min-width: 0; overflow-y: auto; background: var(--bc-card); }
68
+ :where(.bc-idea) { max-width: 42rem; margin: 0 auto; }
66
69
 
67
- /* Without the map (no JavaScript, or map: false): an ordinary article. */
68
- :where(.bc-shell:not(.has-map) .bc-side) { flex: 1; }
69
- :where(.bc-shell:not(.has-map) .bc-idea) { max-width: 42rem; margin: 0 auto; }
70
+ /* Phones: each view is its own full-screen page; the shell's data-because-view picks which. */
71
+ :where(.has-map[data-because-view="map"] .bc-map-root) { display: block; flex: 1; min-width: 0; position: relative; }
72
+ :where(.has-map[data-because-view="map"] .bc-side) { display: none; }
70
73
 
71
- /* With the map: map fills the window, text in a panel on the right. */
72
- :where(.has-map .bc-map-root) { display: block; flex: 1; min-width: 0; position: relative; }
73
- :where(.has-map .bc-side) { width: var(--bc-side); flex: none; border-left: 1px solid var(--bc-line); }
74
- :where(body:has(.has-map) .bc-toggle) { display: inline-block; }
75
- :where(.bc-shell.has-map.text-hidden .bc-side) { display: none; }
76
-
77
- @media (max-width: 760px) {
78
- :where(body) { height: auto; min-height: 100%; }
79
- :where(.has-map) { flex-direction: column; }
80
- :where(.has-map .bc-map-root) { flex: none; height: 62vh; }
81
- :where(.has-map .bc-side) { width: auto; border-left: 0; border-top: 1px solid var(--bc-line); overflow: visible; }
82
- :where(body:has(.has-map) .bc-toggle) { display: none; }
74
+ /* Wider screens: the map always shows, and the article view opens the text as a sidebar. */
75
+ @media (min-width: 768px) {
76
+ :where(.has-map .bc-map-root) { display: block; flex: 1; min-width: 0; position: relative; }
77
+ :where(.has-map[data-because-view="article"] .bc-side) { flex: none; width: var(--bc-side, 420px); border-left: 1px solid var(--bc-line); }
83
78
  }
84
79
 
85
- :where(.bc-idea) { padding: 22px 24px 48px; font-size: 16.5px; line-height: 1.6; }
80
+ /* While the map hides the article, keep a page heading for screen readers (visually hidden). */
81
+ :where(.bc-maptitle) { display: none; }
82
+ :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; }
83
+
84
+ /* Floating switch between the two views, bottom right (hidden until the map mounts). */
85
+ :where(.bc-viewtoggle) { position: fixed; z-index: 5; right: max(16px, env(safe-area-inset-right)); bottom: max(16px, env(safe-area-inset-bottom));
86
+ min-width: 56px; height: 44px; padding: 0 18px; border-radius: 999px; border: 1px solid var(--bc-line); background: var(--bc-ink); color: var(--bc-card);
87
+ font: 500 13px var(--bc-mono, ui-monospace, Menlo, Consolas, monospace); cursor: pointer; box-shadow: 0 4px 14px rgba(0,0,0,.18); }
88
+ :where(.bc-viewtoggle:hover) { background: var(--bc-accent); }
89
+ :where(.bc-viewtoggle[hidden]) { display: none; }
90
+
91
+ :where(.bc-idea) { padding: 22px 24px 96px; font-size: 16.5px; line-height: 1.6; }
86
92
  :where(.bc-idea h1) { font-family: var(--bc-display, var(--bc-text, inherit)); font-weight: 700; font-size: 28px; line-height: 1.15; letter-spacing: -0.01em; margin: 6px 0 4px; text-wrap: balance; }
87
93
  :where(.bc-idea h2) { font-family: var(--bc-display, var(--bc-text, inherit)); font-weight: 700; font-size: 15px; margin: 28px 0 6px; color: var(--qc, var(--bc-ink)); }
88
94
  :where(.bc-idea h3) { font-family: var(--bc-display, var(--bc-text, inherit)); font-weight: 500; font-size: 16px; margin: 10px 0 0; }
@@ -101,25 +107,12 @@ const { title, homeHref, homeLabel, indexHref } = Astro.props;
101
107
  <header class="bc-top">
102
108
  <a class="bc-home" href={homeHref}>{homeLabel}</a>
103
109
  <a class="bc-nav" href={indexHref}>All ideas</a>
104
- <button type="button" class="bc-toggle" aria-pressed="false">Hide text</button>
105
110
  </header>
106
- <div class="bc-shell">
111
+ <main class="bc-shell" data-because-views data-because-view={view}>
112
+ <h1 class="bc-maptitle">{heading ?? title}</h1>
107
113
  <slot name="map" />
108
- <aside class="bc-side" aria-label="Idea text"><slot /></aside>
109
- </div>
110
- <script>
111
- const shell = document.querySelector(".bc-shell");
112
- const toggle = document.querySelector<HTMLButtonElement>(".bc-toggle");
113
- const set = (hidden: boolean) => {
114
- shell?.classList.toggle("text-hidden", hidden);
115
- if (toggle) {
116
- toggle.textContent = hidden ? "Show text" : "Hide text";
117
- toggle.setAttribute("aria-pressed", String(hidden));
118
- }
119
- try { localStorage.setItem("bc-text-hidden", hidden ? "1" : ""); } catch {}
120
- };
121
- try { if (localStorage.getItem("bc-text-hidden")) set(true); } catch {}
122
- toggle?.addEventListener("click", () => set(!shell?.classList.contains("text-hidden")));
123
- </script>
114
+ <div class="bc-side"><slot /></div>
115
+ </main>
116
+ <button type="button" class="bc-viewtoggle" data-because-view-toggle hidden></button>
124
117
  </body>
125
118
  </html>
@@ -6,7 +6,7 @@
6
6
  import Layout from "virtual:because/layout";
7
7
  import { graph } from "virtual:because/data";
8
8
  import { config } from "virtual:because/config";
9
- import { paginate, sortedIdeas, sortedPosts } from "@because-dev/core";
9
+ import { paginate, renderInline, sortedIdeas, sortedPosts } from "@because-dev/core";
10
10
  import { ideaHref, joinPath, pageTitle } from "../dist/helpers.js";
11
11
  import Head from "./Head.astro";
12
12
 
@@ -37,7 +37,7 @@ const description = `${posts.length} posts and ${graph.ideas.length} linked idea
37
37
  {pagePosts.map((p) => (
38
38
  <div class="bc-answer">
39
39
  <h3><a href={ideaHref(ctx, p)}>{p.title}</a></h3>
40
- {p.summary && <p>{p.summary}</p>}
40
+ {p.summary && <p set:html={renderInline(p.teaser ?? p.summary)} />}
41
41
  </div>
42
42
  ))}
43
43
  </section>
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Browser-side entry for sites that start the map themselves (`mount: false`).
3
+ * Because doesn't decide how the view is stored; for example, to keep the
4
+ * article view in the address as `?article=1`:
5
+ *
6
+ * import { mountAll } from "@because-dev/astro/client";
7
+ *
8
+ * const isArticle = () => new URLSearchParams(location.search).get("article") === "1";
9
+ * const { views } = mountAll({
10
+ * view: isArticle() ? "article" : "map",
11
+ * onViewChange: (view) => {
12
+ * const url = new URL(location.href);
13
+ * if (view === "article") url.searchParams.set("article", "1");
14
+ * else url.searchParams.delete("article");
15
+ * history.replaceState(history.state, "", url);
16
+ * },
17
+ * href: (href) => (isArticle() ? `${href}?article=1` : href),
18
+ * });
19
+ * addEventListener("popstate", () => views.forEach((v) => v.set(isArticle() ? "article" : "map")));
20
+ */
21
+ export { mountAll, mount, type MountOptions, type Mounted } from "@because-dev/core/map/mount";
22
+ export type { BecauseView, ViewSwitcher } from "@because-dev/core/map";
package/dist/client.js ADDED
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Browser-side entry for sites that start the map themselves (`mount: false`).
3
+ * Because doesn't decide how the view is stored; for example, to keep the
4
+ * article view in the address as `?article=1`:
5
+ *
6
+ * import { mountAll } from "@because-dev/astro/client";
7
+ *
8
+ * const isArticle = () => new URLSearchParams(location.search).get("article") === "1";
9
+ * const { views } = mountAll({
10
+ * view: isArticle() ? "article" : "map",
11
+ * onViewChange: (view) => {
12
+ * const url = new URL(location.href);
13
+ * if (view === "article") url.searchParams.set("article", "1");
14
+ * else url.searchParams.delete("article");
15
+ * history.replaceState(history.state, "", url);
16
+ * },
17
+ * href: (href) => (isArticle() ? `${href}?article=1` : href),
18
+ * });
19
+ * addEventListener("popstate", () => views.forEach((v) => v.set(isArticle() ? "article" : "map")));
20
+ */
21
+ export { mountAll, mount } from "@because-dev/core/map/mount";
22
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAmC,MAAM,6BAA6B,CAAC"}
package/dist/helpers.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { type Graph, type Idea, type IdeaSummary } from "@because-dev/core";
2
- export { paginate, type Page } from "@because-dev/core";
2
+ export { paginate, renderInline, type Page } from "@because-dev/core";
3
3
  /** Join URL path segments with single slashes; keeps a trailing slash if the last segment has one. */
4
4
  export declare function joinPath(...parts: string[]): string;
5
5
  export interface PageContext {
@@ -69,6 +69,8 @@ export interface PostEntry {
69
69
  slug: string;
70
70
  title: string;
71
71
  summary: string;
72
+ /** Excerpt keeping inline emphasis; render with renderInline. */
73
+ teaser?: string;
72
74
  /** ISO date from front matter, if any; format it however your site likes. */
73
75
  date?: string;
74
76
  updated?: string;
@@ -82,6 +84,8 @@ export interface IdeaEntry {
82
84
  slug: string;
83
85
  title: string;
84
86
  summary: string;
87
+ /** Excerpt keeping inline emphasis; render with renderInline. */
88
+ teaser?: string;
85
89
  href: string;
86
90
  }
87
91
  /** Posts newest first (undated last), and every other idea by title. */
package/dist/helpers.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { indexGraph, reachableFrom, neighbourhoodPath, questionLabel, summarizeIdea, trailTo, } from "@because-dev/core";
2
2
  import { createRenderer } from "@because-dev/core/parser";
3
3
  // For sites building their own paged lists from virtual:because/data.
4
- export { paginate } from "@because-dev/core";
4
+ export { paginate, renderInline } from "@because-dev/core";
5
5
  /** Join URL path segments with single slashes; keeps a trailing slash if the last segment has one. */
6
6
  export function joinPath(...parts) {
7
7
  const joined = parts.filter(Boolean).join("/").replace(/\/{2,}/g, "/");
@@ -108,7 +108,7 @@ export function ideaHead(page, siteName, site) {
108
108
  /** Posts newest first (undated last), and every other idea by title. */
109
109
  export function listings(graph, ctx) {
110
110
  const index = indexGraph(graph);
111
- const entry = (i) => ({ id: i.id, slug: i.slug, title: i.title, summary: i.summary, href: ideaHref(ctx, i) });
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
113
113
  .filter((i) => i.kind === "post")
114
114
  .sort((a, b) => (b.date ?? "").localeCompare(a.date ?? ""))
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,aAAa,EACb,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,OAAO,GAIR,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,sEAAsE;AACtE,OAAO,EAAE,QAAQ,EAAa,MAAM,mBAAmB,CAAC;AAExD,sGAAsG;AACtG,MAAM,UAAU,QAAQ,CAAC,GAAG,KAAe;IACzC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IACvE,OAAO,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,EAAE,CAAC;AACxD,CAAC;AASD,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,GAAgB,EAAE,IAAwB,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACzH,4EAA4E;AAC5E,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,GAAgB,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACpG,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,GAAgB,EAAE,EAAU,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,EAAE,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAAC;AAuB3H,MAAM,KAAK,GAAG,IAAI,OAAO,EAA4B,CAAC;AAEtD;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,KAAY,EAAE,GAAgB;IACvD,IAAI,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC7B,IAAI,CAAC,KAAK;QAAE,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,KAAK,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC;IAClD,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,QAAQ,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC;IAC3C,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC1B,IAAI,CAAC,IAAI;QAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,GAAG,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IAC1D,OAAO,IAAI,CAAC;AACd,CAAC;AAOD,SAAS,SAAS,CAAC,KAAY,EAAE,GAAgB;IAC/C,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IAChC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5D,MAAM,IAAI,GAAG,CAAC,EAAU,EAA0B,EAAE;QAClD,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACjC,OAAO,IAAI,IAAI,EAAE,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC;IAC1E,CAAC,CAAC;IACF,MAAM,KAAK,GAAG,CAAC,GAAa,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;IACrE,yEAAyE;IACzE,MAAM,MAAM,GAAG,cAAc,CAAC;QAC5B,IAAI,EAAE,CAAC,MAAM,EAAE,EAAE;YACf,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACpC,OAAO,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9C,CAAC;KACF,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,CAAC,IAAY,EAAwB,EAAE;QAClD,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC9B,IAAI,CAAC,IAAI;YAAE,OAAO,SAAS,CAAC;QAC5B,MAAM,SAAS,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAChE,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC;YACvC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC;SAC1B,CAAC,CAAC,CAAC;QACJ,MAAM,SAAS,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YAClE,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACvB,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACtE,CAAC,CAAC,CAAC;QACH,OAAO;YACL,IAAI;YACJ,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;YACvB,SAAS;YACT,SAAS;YACT,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;SACtC,CAAC;IACJ,CAAC,CAAC;IAEF,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,EAAE,CAAC;AACvE,CAAC;AAED,gEAAgE;AAChE,MAAM,UAAU,SAAS,CAAC,OAAe,EAAE,QAAiB;IAC1D,OAAO,QAAQ,CAAC,CAAC,CAAC,GAAG,OAAO,MAAM,QAAQ,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;AACzD,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,QAAQ,CAAC,IAAiB;IACxC,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAmB,EAAE,IAAqB;IACzE,OAAO;QACL,UAAU,EAAE,oBAAoB;QAChC,OAAO,EAAE,gBAAgB;QACzB,eAAe,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YACpC,OAAO,EAAE,UAAU;YACnB,QAAQ,EAAE,CAAC,GAAG,CAAC;YACf,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK;YAClB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACtD,CAAC,CAAC;KACJ,CAAC;AACJ,CAAC;AAED,2GAA2G;AAC3G,MAAM,UAAU,QAAQ,CAAC,IAAc,EAAE,QAA4B,EAAE,IAAqB;IAC1F,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IACtB,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,MAAM,GAAc,EAAE,CAAC;IAC7B,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;IAC3E,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC;QAC3C,MAAM,CAAC,IAAI,CAAC;YACV,UAAU,EAAE,oBAAoB;YAChC,OAAO,EAAE,SAAS;YAClB,QAAQ,EAAE,IAAI,CAAC,KAAK;YACpB,WAAW;YACX,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAClD,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAChD,CAAC,CAAC;IACL,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;AACzE,CAAC;AAyBD,wEAAwE;AACxE,MAAM,UAAU,QAAQ,CAAC,KAAY,EAAE,GAAgB;IACrD,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IAChC,MAAM,KAAK,GAAG,CAAC,CAAO,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IACpH,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK;SACtB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC;SAChC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;SAC1D,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACX,GAAG,KAAK,CAAC,CAAC,CAAC;QACX,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5C,SAAS,EAAE,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM;KAC7C,CAAC,CAAC,CAAC;IACN,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK;SACtB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC;SAChC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;SAC9C,GAAG,CAAC,KAAK,CAAC,CAAC;IACd,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AAC1B,CAAC"}
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -13,8 +13,21 @@ export interface BecauseOptions {
13
13
  layout?: string;
14
14
  /** Appended to page titles: "Idea title · <siteName>". */
15
15
  siteName?: string;
16
- /** Make each idea page the full-screen map, with the text in a side panel. Default true. */
16
+ /** Give idea pages the interactive map (a full-screen map view beside the article view). Default true. */
17
17
  map?: boolean;
18
+ /**
19
+ * Which full-screen view an idea page opens in: "map" (default) or "article".
20
+ * Readers switch with the floating button. Because doesn't remember the
21
+ * choice; to keep it (e.g. in the URL), set `mount: false` and pass
22
+ * `view` / `onViewChange` to `mountAll()` yourself.
23
+ */
24
+ view?: "map" | "article";
25
+ /**
26
+ * Start the map on idea pages automatically. Default true. Set false to call
27
+ * `mountAll()` from "@because-dev/astro/client" in your own script, e.g. to
28
+ * pick the starting view, store view changes or rewrite history URLs yourself.
29
+ */
30
+ mount?: boolean;
18
31
  /**
19
32
  * Add the list page at `base`. Default true. Set false to write your own page
20
33
  * there; it can read the graph from `virtual:because/data` (types:
@@ -24,9 +37,12 @@ export interface BecauseOptions {
24
37
  /**
25
38
  * Your own shell for idea pages (with the map on), relative to the project root,
26
39
  * e.g. "./src/layouts/IdeaShell.astro". It receives `title`, `description`,
27
- * `homeHref`, `homeLabel` and `indexHref` props and three slots: "head" (meta
28
- * tags; render it in <head>), "map" (the map's root element; give it a size) and
29
- * the default slot (the idea's article). Defaults to the built-in full-screen shell.
40
+ * `homeHref`, `homeLabel`, `indexHref`, `view` and `heading` (the idea's title) props and three slots: "head"
41
+ * (meta tags; render it in <head>), "map" (the map's root element; give it a
42
+ * size) and the default slot (the idea's article). For map/article switching,
43
+ * wrap both in an element with `data-because-views data-because-view={view}`
44
+ * and add a `<button data-because-view-toggle hidden>`. Defaults to the
45
+ * built-in full-screen shell.
30
46
  */
31
47
  shell?: string;
32
48
  /**
@@ -49,6 +65,8 @@ export interface ResolvedBecauseConfig {
49
65
  base: string;
50
66
  siteName?: string;
51
67
  map: boolean;
68
+ view: "map" | "article";
69
+ mount: boolean;
52
70
  styles: boolean;
53
71
  pageSize: number;
54
72
  }
package/dist/index.js CHANGED
@@ -26,7 +26,7 @@ export default function because(options = {}) {
26
26
  const drafts = options.drafts ?? command === "dev";
27
27
  // Resolve now so a typo or bad custom strategy fails at startup with a clear message.
28
28
  const strategy = resolveStrategy(options.strategy);
29
- const resolved = { base, siteName: options.siteName, map: options.map ?? true, styles: options.styles ?? true, pageSize: options.pageSize ?? DEFAULT_PAGE_SIZE };
29
+ const resolved = { base, siteName: options.siteName, map: options.map ?? true, view: options.view ?? "map", mount: options.mount ?? true, styles: options.styles ?? true, pageSize: options.pageSize ?? DEFAULT_PAGE_SIZE };
30
30
  const read = async () => {
31
31
  const { graph, issues } = await loadVault(contentDir, { drafts, strategy });
32
32
  const checks = checkGraph(graph);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
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.2.0",
3
+ "version": "0.4.0",
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",
@@ -26,6 +26,10 @@
26
26
  "./helpers": {
27
27
  "types": "./dist/helpers.d.ts",
28
28
  "import": "./dist/helpers.js"
29
+ },
30
+ "./client": {
31
+ "types": "./dist/client.d.ts",
32
+ "import": "./dist/client.js"
29
33
  }
30
34
  },
31
35
  "files": [
@@ -35,7 +39,7 @@
35
39
  "virtual.d.ts"
36
40
  ],
37
41
  "dependencies": {
38
- "@because-dev/core": "0.2.0"
42
+ "@because-dev/core": "0.4.0"
39
43
  },
40
44
  "peerDependencies": {
41
45
  "astro": "^5.0.0 || ^6.0.0 || ^7.0.0"
package/routes/idea.astro CHANGED
@@ -16,16 +16,17 @@ 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, homeHref: ctx.siteBase, homeLabel: config.siteName ?? "Home", indexHref: joinPath(ctx.siteBase, config.base, "/") };
19
+ const shellProps = { title, description, heading: idea.title, view: config.view, homeHref: ctx.siteBase, homeLabel: config.siteName ?? "Home", indexHref: joinPath(ctx.siteBase, config.base, "/") };
20
20
  ---
21
- <!-- The full-screen map, with the idea's text in a side panel (or the site's own shell). -->
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"}></div>
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
25
  <IdeaArticle page={page} neighbourhood={neighbourhoodHref(ctx, idea.id)} />
26
26
  </Shell>
27
27
 
28
28
  <script>
29
29
  import { mountAll } from "@because-dev/core/map/mount";
30
- mountAll();
30
+ // With mount: false the site starts the map itself (see @because-dev/astro/client).
31
+ if (!document.querySelector('[data-because-mount="manual"]')) mountAll();
31
32
  </script>