@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 ADDED
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env node
2
+ // `npx because` in an Astro site: the CLI lives in @because-dev/core.
3
+ import { main } from "@because-dev/core/cli";
4
+
5
+ process.exitCode = await main(process.argv.slice(2));
@@ -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
- const { title, homeHref, homeLabel, indexHref, view = "map" } = Astro.props;
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
- /* Wider screens: the map always shows, and the article view opens the text as a sidebar. */
73
- @media (min-width: 768px) {
74
- :where(.has-map .bc-map-root) { display: block; flex: 1; min-width: 0; position: relative; }
75
- :where(.has-map[data-because-view="article"] .bc-side) { flex: none; width: var(--bc-side, 420px); border-left: 1px solid var(--bc-line); }
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
- <div class="bc-shell" data-because-views data-because-view={view}>
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
- <main class="bc-side"><slot /></main>
108
- </div>
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
@@ -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 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.
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 `view` props and three slots: "head"
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
- * 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
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: "map" | "article";
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
- 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
+ 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":"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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.3.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.3.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"
@@ -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>