contrib-aquarium 0.1.0 → 0.1.2

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/README.md CHANGED
@@ -1,41 +1,61 @@
1
1
  # contrib-aquarium
2
2
 
3
3
  <p align="center">
4
- <img src="docs/aquarium.svg" width="860" alt="Living SVG aquarium generated from webywz's GitHub contributions" />
4
+ <img src="docs/aquarium.svg" width="860" alt="Living SVG aquarium from webywz GitHub contributions" />
5
5
  </p>
6
6
 
7
7
  <p align="center">
8
8
  <a href="https://github.com/webywz/contrib-aquarium/actions/workflows/ci.yml"><img src="https://github.com/webywz/contrib-aquarium/actions/workflows/ci.yml/badge.svg" alt="CI" /></a>
9
9
  <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-c4a35a?labelColor=1b2a2e" alt="MIT" /></a>
10
+ <a href="https://www.npmjs.com/package/contrib-aquarium"><img src="https://img.shields.io/npm/v/contrib-aquarium?color=2a7a5c&labelColor=1b2a2e" alt="npm version" /></a>
10
11
  <a href="https://www.npmjs.com/package/contrib-aquarium"><img src="https://img.shields.io/badge/npx-contrib--aquarium-2a7a5c?labelColor=1b2a2e" alt="npx contrib-aquarium" /></a>
11
12
  </p>
12
13
 
13
14
  <p align="center">
14
15
  <strong>A living SVG aquarium driven by a GitHub contribution graph.</strong><br/>
15
- Drop one image URL into a profile README. Activity becomes fish, kelp, bubbles, and water.
16
+ Drop one image into a profile README. Activity becomes fish, kelp, bubbles, and water.
16
17
  </p>
17
18
 
18
19
  <p align="center">
19
- 由 GitHub 贡献日历驱动的活体 SVG 鱼缸。把一张图放进 README,提交就变成鱼、海藻、气泡和水纹。
20
+ <strong>由 GitHub 贡献日历驱动的活体 SVG 鱼缸。</strong><br/>
21
+ 把一张图放进 README,提交就变成鱼、海藻、气泡和水纹。
20
22
  </p>
21
23
 
22
- The tank is pure SVG (CSS + SMIL). No JavaScript in the embed, so GitHub READMEs can host it as a regular image. Dark water, brass rim — readable on both GitHub light and dark.
24
+ Self-contained SVG (CSS + SMIL) — no JavaScript in the embed, so GitHub can host it as a normal image. Dark water, brass rim; readable on light and dark themes.
23
25
 
24
- 鱼缸是自包含 SVG(CSS + SMIL),嵌入时不需要 JS,可当普通图片用。暗水色 + 铜框,在 GitHub 浅色 / 深色主题下都站得住。
26
+ 自包含 SVG(CSS + SMIL),嵌入不需要 JS,可当普通图片用。暗水色 + 铜框,浅色 / 深色主题都站得住。
25
27
 
26
- > v0.1.0 is the first cut. `npx contrib-aquarium` is the published entry; until the package is on npm, clone this repo and run `npm run generate`.
27
- >
28
- > v0.1.0 是第一版。发布到 npm 之前请 clone 本仓库,用 `npm run generate`。
28
+ `npx contrib-aquarium` · package `contrib-aquarium` · v0.1.1 · Node.js 18.18+
29
29
 
30
30
  ---
31
31
 
32
- ## Quick start · 快速开始
32
+ ## Features · 特性
33
+
34
+ | | EN | 中文 |
35
+ | --- | --- | --- |
36
+ | Mapping | Year total → fish count; streaks → kelp; last 14 days → bubbles | 全年总数 → 鱼数;连续打卡 → 海藻;近两周 → 气泡 |
37
+ | Sources | GraphQL calendar, public events, or deterministic mock | GraphQL 日历 / 公开 Events / 确定性 mock |
38
+ | Themes | `deep` · `reef` · `midnight` (palette only) | 三种配色,布局与映射不变 |
39
+ | Embed | Commit SVG, or refresh daily via composite Action | 提交 SVG,或用 Action 每日重画 |
40
+ | API | CLI + TypeScript library | CLI + 库 |
41
+
42
+ ---
43
+
44
+ ## Install · 安装
33
45
 
34
46
  ```bash
35
47
  npx contrib-aquarium generate --user YOUR_LOGIN --out aquarium.svg
48
+
49
+ # or globally
50
+ npm i -g contrib-aquarium
51
+ contrib-aquarium generate --user YOUR_LOGIN --out aquarium.svg
36
52
  ```
37
53
 
38
- From this repo (until the package is published):
54
+ Token optional. Without one, public events or a username-hash mock still render — demos never go blank.
55
+
56
+ 没有 token 也能跑:公开 Events 或按用户名哈希的演示日历会顶上,预览不会空。
57
+
58
+ From source:
39
59
 
40
60
  ```bash
41
61
  git clone https://github.com/webywz/contrib-aquarium.git
@@ -44,97 +64,116 @@ npm install
44
64
  npm run generate -- --user YOUR_LOGIN --out aquarium.svg
45
65
  ```
46
66
 
47
- Then in a README:
67
+ ---
68
+
69
+ ## Quick start · 快速开始
70
+
71
+ ```bash
72
+ # real calendar (needs token)
73
+ export GITHUB_TOKEN=ghp_...
74
+ npx contrib-aquarium generate --user webywz --out aquarium.svg
75
+
76
+ # recent public events only
77
+ npx contrib-aquarium generate --user webywz --source events --out aquarium.svg
78
+
79
+ # offline demo (byte-stable for a given UTC day)
80
+ npx contrib-aquarium generate --user webywz --source mock --out aquarium.svg
81
+
82
+ # theme
83
+ npx contrib-aquarium generate --user webywz --theme reef --out aquarium.svg
84
+ ```
85
+
86
+ In a README:
48
87
 
49
88
  ```markdown
50
- ![contrib-aquarium](aquarium.svg)
89
+ <p align="center">
90
+ <img src="aquarium.svg" width="860" alt="My contribution aquarium" />
91
+ </p>
51
92
  ```
52
93
 
53
- A GitHub token is optional. Without one, generation still succeeds via public events or a deterministic mock — demos never go blank.
94
+ Or a raw URL from another repo:
54
95
 
55
- 没有 token 也能跑:公开 Events 或按用户名哈希生成的演示日历会顶上,预览不会空。
96
+ ```markdown
97
+ ![aquarium](https://raw.githubusercontent.com/USER/REPO/main/aquarium.svg)
98
+ ```
56
99
 
57
100
  ---
58
101
 
59
102
  ## Data sources · 数据来源
60
103
 
61
- `--source auto` (default) tries the following in order:
104
+ `--source auto` (default) tries in order:
62
105
 
63
- | Priority | Source | Needs token | What you get |
106
+ | Priority | Source | Token | Result |
64
107
  | --- | --- | --- | --- |
65
- | 1 | **GraphQL** `contributionsCollection` | yes (`--token`, `GITHUB_TOKEN`, or `GH_TOKEN`) | Full last-year calendar — this is the real heatmap |
66
- | 2 | **Public events** `GET /users/{login}/events/public` | no | Recent activity only (GitHub keeps ~90 days of events) |
67
- | 3 | **Mock** from the username hash | no | A stable, contribution-like year so CI, demos, and offline use always render |
68
-
69
- `--source graphql|events|mock` pins a single path.
108
+ | 1 | GraphQL `contributionsCollection` | yes (`--token`, `GITHUB_TOKEN`, or `GH_TOKEN`) | Full last-year calendar |
109
+ | 2 | Public events `GET /users/{login}/events/public` | no | Recent activity (~90 days retained) |
110
+ | 3 | Mock from username hash | no | Stable fake year for CI / demos / offline |
70
111
 
71
- `--source auto` 默认按上表回退。GraphQL 需要 token,拿到的是完整贡献日历;公开 Events 不需要 token,但只有最近活动;mock 用用户名哈希生成确定的假日历,离线 / CI / 演示保证出图。
112
+ Pin a path with `--source graphql|events|mock`.
72
113
 
73
- ```bash
74
- # real calendar
75
- export GITHUB_TOKEN=ghp_...
76
- npx contrib-aquarium generate --user webywz --out docs/aquarium.svg
77
-
78
- # recent public events only
79
- npx contrib-aquarium generate --user webywz --source events --out aquarium.svg
80
-
81
- # offline demo (byte-stable for a given UTC day)
82
- npx contrib-aquarium generate --user webywz --source mock --out aquarium.svg
83
- ```
114
+ `--source auto` 按上表回退。GraphQL 要 token,拿完整贡献日历;公开 Events 不要 token,只有最近活动;mock 用用户名哈希生成确定假日历,保证离线 / CI / 演示出图。
84
115
 
85
- GraphQL is a fine-grained or classic PAT with permission to read public user data. In GitHub Actions, `secrets.GITHUB_TOKEN` is enough for public calendars.
116
+ Fine-grained or classic PAT that can read public user data is enough. In Actions, `secrets.GITHUB_TOKEN` covers public calendars.
86
117
 
87
118
  ---
88
119
 
89
120
  ## How activity becomes an aquarium · 贡献如何变成鱼缸
90
121
 
91
- | Signal | Becomes |
122
+ | Signal | Becomes · 变成 |
92
123
  | --- | --- |
93
- | Yearly contribution total | School size (3–18 fish). `round(3 + sqrt(total) × 0.48)` |
94
- | Busiest weeks | Larger koi / a centerpiece angelfish |
95
- | Current streak | Kelp height and count |
96
- | Last 14 days | Bubble density |
97
- | Each week's total | Pebble / reef bed along the sand |
98
- | Activity density | How much the water and plants move |
124
+ | Yearly contribution total | School size 3–18 fish · 鱼数量 `round(3 + sqrt(total) × 0.48)` |
125
+ | Busiest weeks | Larger koi / centerpiece angelfish · 更大锦鲤 / 主鱼 |
126
+ | Current streak | Kelp height and count · 海藻高度与簇数 |
127
+ | Last 14 days | Bubble density · 气泡密度 |
128
+ | Each week's total | Pebble / reef bed · 沙地礁石起伏 |
129
+ | Activity density | Water and plant motion · 水纹与海藻摆动 |
99
130
 
100
- Empty years still get a few wanderers. The same username + calendar snapshot always draws the same tank.
131
+ Empty years still get a few wanderers. Same username + calendar snapshot → same tank.
101
132
 
102
- | 信号 | 变成 |
103
- | --- | --- |
104
- | 全年贡献总数 | 鱼的数量(3–18)。`round(3 + sqrt(total) × 0.48)` |
105
- | 最忙的几周 | 更大的锦鲤 / 一条主鱼(神仙鱼) |
106
- | 当前连续提交 | 海藻高度与簇数 |
107
- | 近 14 天 | 气泡密度 |
108
- | 每周合计 | 沙地上的礁石起伏 |
109
- | 活跃密度 | 水纹与海藻摆动幅度 |
133
+ 空年份仍有几条游鱼。同一用户名 + 同一日历快照,画出同一座缸。
110
134
 
111
135
  ---
112
136
 
113
- ## Embed in a README · 嵌入 README
137
+ ## Themes · 主题
114
138
 
115
- ### 1. Commit a raw SVG
139
+ `--theme` changes palette only — layout and activity mapping stay the same.
116
140
 
117
- Generate once, commit `aquarium.svg`, reference it:
141
+ | Name | Feel · 观感 |
142
+ | --- | --- |
143
+ | `deep` (default) | Classic dark teal · 默认深青 |
144
+ | `reef` | Warmer tropical water · 暖色珊瑚 |
145
+ | `midnight` | Violet night, neon accents · 午夜紫 |
118
146
 
119
- ```markdown
120
- <p align="center">
121
- <img src="aquarium.svg" width="860" alt="My contribution aquarium" />
122
- </p>
147
+ ```bash
148
+ npx contrib-aquarium generate --user YOUR_LOGIN --theme midnight --out aquarium.svg
123
149
  ```
124
150
 
125
- Same-repo relative paths work. For another repo use the raw URL:
151
+ ---
126
152
 
127
- ```markdown
128
- ![aquarium](https://raw.githubusercontent.com/USER/REPO/main/aquarium.svg)
153
+ ## Embed size · 嵌入尺寸
154
+
155
+ `--width` sets the SVG **display** width for README embeds. The internal `viewBox` stays `0 0 860 300`, so fish and layout scale proportionally — never squash.
156
+
157
+ `--width` 只改 SVG 的展示宽;内部 `viewBox` 仍是 `0 0 860 300`,鱼和构图等比缩放,不会挤扁。
158
+
159
+ | Flag | Default | |
160
+ | --- | --- | --- |
161
+ | `--width` | `860` | Display width in px · 展示宽度 |
162
+ | `--height` | proportional · 等比 | Display height; omit to keep aspect · 省略则保持比例 |
163
+
164
+ ```bash
165
+ # Narrower card for a profile README · 主页 README 窄卡
166
+ npx contrib-aquarium generate --user YOUR_LOGIN --width 640 --out aquarium.svg
167
+
168
+ # Then embed without an extra HTML width attribute · 嵌入时不必再写 HTML width
169
+ # <img src="aquarium.svg" alt="My contribution aquarium" />
129
170
  ```
130
171
 
131
- ### 2. Regenerate daily with GitHub Actions
172
+ ---
132
173
 
133
- Copy [`examples/github-action.yml`](examples/github-action.yml) into your **profile repository** (the `USER/USER` repo) as `.github/workflows/aquarium.yml`. It:
174
+ ## Embed daily · 每日嵌入
134
175
 
135
- 1. Runs on a daily cron and `workflow_dispatch`
136
- 2. Uses this repo as a composite action
137
- 3. Commits `aquarium.svg` when the tank actually changed
176
+ Copy [`examples/github-action.yml`](examples/github-action.yml) into your **profile** repo (`USER/USER`) as `.github/workflows/aquarium.yml`. It runs on a daily cron + `workflow_dispatch`, uses this repo as a composite action, and commits `aquarium.svg` when the tank changed.
138
177
 
139
178
  ```yaml
140
179
  - uses: webywz/contrib-aquarium@main
@@ -143,13 +182,11 @@ Copy [`examples/github-action.yml`](examples/github-action.yml) into your **prof
143
182
  out: aquarium.svg
144
183
  ```
145
184
 
146
- This project's own demo is refreshed the same way: [`.github/workflows/daily-aquarium.yml`](.github/workflows/daily-aquarium.yml) generates [`docs/aquarium.svg`](docs/aquarium.svg) for `webywz` every day.
185
+ This project's demo refreshes the same way: [`.github/workflows/daily-aquarium.yml`](.github/workflows/daily-aquarium.yml) updates [`docs/aquarium.svg`](docs/aquarium.svg) for `webywz`.
147
186
 
148
- 把 [`examples/github-action.yml`](examples/github-action.yml) 拷到个人主页仓库,每天会重画并提交 `aquarium.svg`。本仓库的 Action 则给 `webywz` 更新 [`docs/aquarium.svg`](docs/aquarium.svg)。
187
+ 把示例 workflow 拷到个人主页仓库即可每天重画。GitHub Camo may cache the README thumbnail briefly after a push; the file in the repo is current.
149
188
 
150
- GitHub's image proxy (Camo) may cache the SVG for a short while after a push. The file in the repo is current; the README thumbnail can lag a few hours.
151
-
152
- GitHub 的 Camo 代理可能短暂缓存图片;仓库里的文件是新的,README 缩略图有时会晚几个小时。
189
+ GitHub 的 Camo 代理可能短暂缓存缩略图;仓库里的文件是新的。
153
190
 
154
191
  ---
155
192
 
@@ -158,14 +195,19 @@ GitHub 的 Camo 代理可能短暂缓存图片;仓库里的文件是新的,R
158
195
  ```
159
196
  contrib-aquarium generate --user <login> [--out aquarium.svg]
160
197
  [--source auto|graphql|events|mock]
198
+ [--theme deep|reef|midnight]
199
+ [--width <px>] [--height <px>]
161
200
  [--token <gh_token>]
162
201
  ```
163
202
 
164
203
  | Flag | Default | |
165
204
  | --- | --- | --- |
166
205
  | `--user` | required | GitHub login |
167
- | `--out` | `aquarium.svg` | Output path (directories are created) |
168
- | `--source` | `auto` | See data sources above |
206
+ | `--out` | `aquarium.svg` | Output path (dirs created) |
207
+ | `--source` | `auto` | See data sources |
208
+ | `--theme` | `deep` | `deep` · `reef` · `midnight` |
209
+ | `--width` | `860` | Display width (viewBox fixed) · 展示宽 |
210
+ | `--height` | proportional · 等比 | Display height · 展示高 |
169
211
  | `--token` | `$GITHUB_TOKEN` / `$GH_TOKEN` | GraphQL auth |
170
212
 
171
213
  ```bash
@@ -177,7 +219,7 @@ npm run lint
177
219
 
178
220
  ---
179
221
 
180
- ## Library
222
+ ## Library · 库
181
223
 
182
224
  ```ts
183
225
  import { generateAquarium, renderAquarium, mockActivity } from "contrib-aquarium";
@@ -185,16 +227,23 @@ import { generateAquarium, renderAquarium, mockActivity } from "contrib-aquarium
185
227
  const { svg, activity } = await generateAquarium({
186
228
  user: "webywz",
187
229
  source: "auto",
230
+ theme: "reef",
188
231
  });
189
232
 
190
- // or draw a fixture
191
233
  const svgFromMock = renderAquarium(mockActivity("webywz", new Date("2026-10-29")));
234
+
235
+ // Narrower embed · 窄嵌入(viewBox 仍 860×300)
236
+ const narrow = renderAquarium(mockActivity("webywz"), "deep", { width: 640 });
192
237
  ```
193
238
 
194
- Node.js 18.18+ (native `fetch`). TypeScript types ship with the package.
239
+ Also exported: `loadActivity`, `fetchGraphqlActivity`, `fetchEventsActivity`, `getTheme`, `parseTheme`, `THEME_NAMES`, `resolveSvgDisplaySize`, and size helpers. Types ship with the package.
240
+
241
+ 另导出活动加载、主题解析、`resolveSvgDisplaySize` 与尺寸常量;TypeScript 类型随包发布。
195
242
 
196
243
  ---
197
244
 
198
- ## License
245
+ ## Links · 链接
199
246
 
200
- [MIT](LICENSE)
247
+ - npm: [contrib-aquarium](https://www.npmjs.com/package/contrib-aquarium)
248
+ - Live on profile: [webywz/webywz](https://github.com/webywz/webywz)
249
+ - License: [MIT](LICENSE)
package/dist/cli.js CHANGED
@@ -2,6 +2,7 @@
2
2
  import { mkdir, writeFile } from "node:fs/promises";
3
3
  import { dirname, resolve } from "node:path";
4
4
  import { generateAquarium } from "./generate.js";
5
+ import { parseTheme } from "./theme.js";
5
6
  import { readPackageVersion } from "./util.js";
6
7
  function parseArgs(argv) {
7
8
  const args = argv.slice(2);
@@ -40,12 +41,17 @@ Turn a GitHub year into a living SVG aquarium.
40
41
  Usage:
41
42
  contrib-aquarium generate --user <login> [--out aquarium.svg]
42
43
  [--source auto|graphql|events|mock]
44
+ [--theme deep|reef|midnight]
45
+ [--width <px>] [--height <px>]
43
46
  [--token <gh_token>]
44
47
 
45
48
  Options:
46
49
  --user GitHub login (required)
47
50
  --out Output path (default: aquarium.svg)
48
51
  --source auto (default), graphql, events, or mock
52
+ --theme Color theme: deep (default), reef, or midnight
53
+ --width SVG display width in px (default: 860); viewBox stays 860×300
54
+ --height SVG display height in px (default: proportional to --width)
49
55
  --token GitHub token; falls back to GITHUB_TOKEN / GH_TOKEN
50
56
  --help Show this message
51
57
  --version Print version
@@ -56,6 +62,7 @@ Data sources (auto):
56
62
  3. Deterministic mock from username always works; offline demos
57
63
 
58
64
  The SVG is self-contained (CSS + SMIL). Drop it in a README as an image.
65
+ Use --width for narrower README embeds without squashing the fish.
59
66
  `;
60
67
  }
61
68
  function asString(value) {
@@ -69,6 +76,18 @@ function parseSource(value) {
69
76
  }
70
77
  throw new Error(`Unknown --source "${value}". Use auto, graphql, events, or mock.`);
71
78
  }
79
+ function parsePositiveNumber(flag, value) {
80
+ if (value === undefined)
81
+ return undefined;
82
+ if (typeof value !== "string") {
83
+ throw new Error(`Missing value for --${flag}`);
84
+ }
85
+ const n = Number(value);
86
+ if (!Number.isFinite(n) || n <= 0) {
87
+ throw new Error(`Invalid --${flag} "${value}". Use a positive number.`);
88
+ }
89
+ return n;
90
+ }
72
91
  async function run(argv) {
73
92
  let parsed;
74
93
  try {
@@ -98,14 +117,20 @@ async function run(argv) {
98
117
  }
99
118
  const out = resolve(asString(flags.out) ?? "aquarium.svg");
100
119
  try {
120
+ const theme = parseTheme(asString(flags.theme));
121
+ const width = parsePositiveNumber("width", flags.width);
122
+ const height = parsePositiveNumber("height", flags.height);
101
123
  const { svg, activity } = await generateAquarium({
102
124
  user,
103
125
  token: asString(flags.token),
104
126
  source: parseSource(flags.source),
127
+ theme,
128
+ width,
129
+ height,
105
130
  });
106
131
  await mkdir(dirname(out), { recursive: true });
107
132
  await writeFile(out, svg, "utf8");
108
- console.error(`contrib-aquarium · ${activity.login} · source=${activity.source} · ${activity.totalContributions} contributions`);
133
+ console.error(`contrib-aquarium · ${activity.login} · source=${activity.source} · theme=${theme} · ${activity.totalContributions} contributions`);
109
134
  console.error(`wrote ${out}`);
110
135
  return 0;
111
136
  }
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAElE,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,cAAc,CAAC,CAIzB"}
1
+ {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAElE,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,cAAc,CAAC,CAOzB"}
package/dist/generate.js CHANGED
@@ -2,7 +2,10 @@ import { loadActivity } from "./activity.js";
2
2
  import { renderAquarium } from "./render.js";
3
3
  export async function generateAquarium(options) {
4
4
  const activity = await loadActivity(options);
5
- const svg = renderAquarium(activity);
5
+ const svg = renderAquarium(activity, options.theme ?? "deep", {
6
+ width: options.width,
7
+ height: options.height,
8
+ });
6
9
  return { svg, activity };
7
10
  }
8
11
  //# sourceMappingURL=generate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"generate.js","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAG7C,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,OAAwB;IAExB,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;IAC7C,MAAM,GAAG,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;IACrC,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;AAC3B,CAAC"}
1
+ {"version":3,"file":"generate.js","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAG7C,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,OAAwB;IAExB,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;IAC7C,MAAM,GAAG,GAAG,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAK,IAAI,MAAM,EAAE;QAC5D,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CAAC;IACH,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;AAC3B,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,7 +1,9 @@
1
1
  export { generateAquarium } from "./generate.js";
2
2
  export { loadActivity, mockActivity, fetchGraphqlActivity, fetchEventsActivity, ActivityError } from "./activity.js";
3
- export { renderAquarium, SVG_WIDTH, SVG_HEIGHT, countSvgElements } from "./render.js";
3
+ export { renderAquarium, resolveSvgDisplaySize, SVG_WIDTH, SVG_HEIGHT, countSvgElements } from "./render.js";
4
4
  export { mapAquarium, mapFishCount, mapPlantCount, mapBubbleCount, currentStreak, recentTotal, flattenDays, } from "./mapping.js";
5
- export type { Activity, AquariumModel, ContributionDay, ContributionWeek, DataSource, GenerateOptions, GenerateResult, LoadOptions, LoadSource, } from "./types.js";
5
+ export type { Activity, AquariumModel, ContributionDay, ContributionWeek, DataSource, GenerateOptions, GenerateResult, LoadOptions, LoadSource, SvgSizeOptions, } from "./types.js";
6
6
  export { FISH_MIN, FISH_MAX, PLANT_MIN, PLANT_MAX, BUBBLE_MIN, BUBBLE_MAX } from "./types.js";
7
+ export { getTheme, parseTheme, THEME_NAMES } from "./theme.js";
8
+ export type { Theme, ThemeName } from "./theme.js";
7
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACrH,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACtF,OAAO,EACL,WAAW,EACX,YAAY,EACZ,aAAa,EACb,cAAc,EACd,aAAa,EACb,WAAW,EACX,WAAW,GACZ,MAAM,cAAc,CAAC;AACtB,YAAY,EACV,QAAQ,EACR,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,UAAU,EACV,eAAe,EACf,cAAc,EACd,WAAW,EACX,UAAU,GACX,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACrH,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,SAAS,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC7G,OAAO,EACL,WAAW,EACX,YAAY,EACZ,aAAa,EACb,cAAc,EACd,aAAa,EACb,WAAW,EACX,WAAW,GACZ,MAAM,cAAc,CAAC;AACtB,YAAY,EACV,QAAQ,EACR,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,UAAU,EACV,eAAe,EACf,cAAc,EACd,WAAW,EACX,UAAU,EACV,cAAc,GACf,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC9F,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC/D,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC"}
package/dist/index.js CHANGED
@@ -1,6 +1,7 @@
1
1
  export { generateAquarium } from "./generate.js";
2
2
  export { loadActivity, mockActivity, fetchGraphqlActivity, fetchEventsActivity, ActivityError } from "./activity.js";
3
- export { renderAquarium, SVG_WIDTH, SVG_HEIGHT, countSvgElements } from "./render.js";
3
+ export { renderAquarium, resolveSvgDisplaySize, SVG_WIDTH, SVG_HEIGHT, countSvgElements } from "./render.js";
4
4
  export { mapAquarium, mapFishCount, mapPlantCount, mapBubbleCount, currentStreak, recentTotal, flattenDays, } from "./mapping.js";
5
5
  export { FISH_MIN, FISH_MAX, PLANT_MIN, PLANT_MAX, BUBBLE_MIN, BUBBLE_MAX } from "./types.js";
6
+ export { getTheme, parseTheme, THEME_NAMES } from "./theme.js";
6
7
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACrH,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACtF,OAAO,EACL,WAAW,EACX,YAAY,EACZ,aAAa,EACb,cAAc,EACd,aAAa,EACb,WAAW,EACX,WAAW,GACZ,MAAM,cAAc,CAAC;AAYtB,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACrH,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,SAAS,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC7G,OAAO,EACL,WAAW,EACX,YAAY,EACZ,aAAa,EACb,cAAc,EACd,aAAa,EACb,WAAW,EACX,WAAW,GACZ,MAAM,cAAc,CAAC;AAatB,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC9F,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC"}
package/dist/mapping.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import { type Activity, type AquariumModel, type ContributionDay } from "./types.js";
2
+ import { type ThemeName } from "./theme.js";
2
3
  export declare function flattenDays(activity: Activity): ContributionDay[];
3
4
  /**
4
5
  * Map yearly totals onto a readable school size.
@@ -15,5 +16,5 @@ export declare function mapBubbleCount(recent14Total: number): number;
15
16
  */
16
17
  export declare function currentStreak(days: ContributionDay[], todayIso?: string): number;
17
18
  export declare function recentTotal(days: ContributionDay[], window?: number): number;
18
- export declare function mapAquarium(activity: Activity): AquariumModel;
19
+ export declare function mapAquarium(activity: Activity, themeName?: ThemeName): AquariumModel;
19
20
  //# sourceMappingURL=mapping.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mapping.d.ts","sourceRoot":"","sources":["../src/mapping.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,QAAQ,EACb,KAAK,aAAa,EAElB,KAAK,eAAe,EAKrB,MAAM,YAAY,CAAC;AAYpB,wBAAgB,WAAW,CAAC,QAAQ,EAAE,QAAQ,GAAG,eAAe,EAAE,CAEjE;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,kBAAkB,EAAE,MAAM,GAAG,MAAM,CAS/D;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,CAU5E;AAED,wBAAgB,cAAc,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAG5D;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,eAAe,EAAE,EACvB,QAAQ,CAAC,EAAE,MAAM,GAChB,MAAM,CAeR;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,eAAe,EAAE,EAAE,MAAM,SAAK,GAAG,MAAM,CAGxE;AAYD,wBAAgB,WAAW,CAAC,QAAQ,EAAE,QAAQ,GAAG,aAAa,CAkH7D"}
1
+ {"version":3,"file":"mapping.d.ts","sourceRoot":"","sources":["../src/mapping.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,QAAQ,EACb,KAAK,aAAa,EAElB,KAAK,eAAe,EAKrB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAwB,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAGlE,wBAAgB,WAAW,CAAC,QAAQ,EAAE,QAAQ,GAAG,eAAe,EAAE,CAEjE;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,kBAAkB,EAAE,MAAM,GAAG,MAAM,CAS/D;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,CAU5E;AAED,wBAAgB,cAAc,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAG5D;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,eAAe,EAAE,EACvB,QAAQ,CAAC,EAAE,MAAM,GAChB,MAAM,CAeR;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,eAAe,EAAE,EAAE,MAAM,SAAK,GAAG,MAAM,CAGxE;AAYD,wBAAgB,WAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,GAAE,SAAkB,GAAG,aAAa,CAmH5F"}
package/dist/mapping.js CHANGED
@@ -1,13 +1,6 @@
1
1
  import { BUBBLE_MAX, BUBBLE_MIN, FISH_MAX, FISH_MIN, PLANT_MAX, PLANT_MIN, } from "./types.js";
2
+ import { getTheme } from "./theme.js";
2
3
  import { clamp, hashString, lerp, mulberry32, pick } from "./util.js";
3
- const PALETTES = [
4
- { body: "#e6c07b", accent: "#c46b4a" },
5
- { body: "#d9a441", accent: "#b87333" },
6
- { body: "#5fa8a3", accent: "#2f6f74" },
7
- { body: "#c5d4d1", accent: "#7f9996" },
8
- { body: "#d4896a", accent: "#9e4d3c" },
9
- { body: "#7eb3c9", accent: "#3d6f88" },
10
- ];
11
4
  export function flattenDays(activity) {
12
5
  return activity.weeks.flatMap((week) => week.days);
13
6
  }
@@ -70,7 +63,8 @@ function speciesForRank(rank, intensity, rng) {
70
63
  return "koi";
71
64
  return "tetra";
72
65
  }
73
- export function mapAquarium(activity) {
66
+ export function mapAquarium(activity, themeName = "deep") {
67
+ const theme = getTheme(themeName);
74
68
  const days = flattenDays(activity);
75
69
  const dayCount = Math.max(days.length, 1);
76
70
  const activeDays = days.filter((day) => day.count > 0).length;
@@ -106,7 +100,7 @@ export function mapAquarium(activity) {
106
100
  y = 56 + rng() * 168;
107
101
  }
108
102
  usedY.push(y);
109
- const palette = pick(rng, PALETTES);
103
+ const palette = pick(rng, theme.fish);
110
104
  const duration = lerp(18, 9, turbulence) + rng() * 8 + size * 0.18;
111
105
  fish.push({
112
106
  id: i,
@@ -1 +1 @@
1
- {"version":3,"file":"mapping.js","sourceRoot":"","sources":["../src/mapping.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mapping.js","sourceRoot":"","sources":["../src/mapping.ts"],"names":[],"mappings":"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"}
package/dist/render.d.ts CHANGED
@@ -1,6 +1,12 @@
1
- import type { Activity } from "./types.js";
1
+ import { type ThemeName } from "./theme.js";
2
+ import type { Activity, SvgSizeOptions } from "./types.js";
2
3
  export declare const SVG_WIDTH = 860;
3
4
  export declare const SVG_HEIGHT = 300;
4
- export declare function renderAquarium(activity: Activity): string;
5
+ /** Resolve SVG presentation size. viewBox stays SVG_WIDTH×SVG_HEIGHT so fish never stretch. */
6
+ export declare function resolveSvgDisplaySize(size?: SvgSizeOptions): {
7
+ width: number;
8
+ height: number;
9
+ };
10
+ export declare function renderAquarium(activity: Activity, themeName?: ThemeName, size?: SvgSizeOptions): string;
5
11
  export declare function countSvgElements(svg: string, kind: "fish" | "plant" | "bubble"): number;
6
12
  //# sourceMappingURL=render.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,QAAQ,EAMT,MAAM,YAAY,CAAC;AAGpB,eAAO,MAAM,SAAS,MAAM,CAAC;AAC7B,eAAO,MAAM,UAAU,MAAM,CAAC;AA6Q9B,wBAAgB,cAAc,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CA4CzD;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAGvF"}
1
+ {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"AACA,OAAO,EAAwB,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,KAAK,EACV,QAAQ,EAMR,cAAc,EACf,MAAM,YAAY,CAAC;AAGpB,eAAO,MAAM,SAAS,MAAM,CAAC;AAC7B,eAAO,MAAM,UAAU,MAAM,CAAC;AAG9B,+FAA+F;AAC/F,wBAAgB,qBAAqB,CAAC,IAAI,CAAC,EAAE,cAAc,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAY9F;AAgRD,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,QAAQ,EAClB,SAAS,GAAE,SAAkB,EAC7B,IAAI,CAAC,EAAE,cAAc,GACpB,MAAM,CA8CR;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAGvF"}
package/dist/render.js CHANGED
@@ -1,8 +1,22 @@
1
1
  import { mapAquarium } from "./mapping.js";
2
+ import { getTheme } from "./theme.js";
2
3
  import { escapeXml, formatRange } from "./util.js";
3
4
  export const SVG_WIDTH = 860;
4
5
  export const SVG_HEIGHT = 300;
5
- const KELP = ["#1a4f40", "#227056", "#163e34", "#2a7a5c"];
6
+ /** Resolve SVG presentation size. viewBox stays SVG_WIDTH×SVG_HEIGHT so fish never stretch. */
7
+ export function resolveSvgDisplaySize(size) {
8
+ const aspect = SVG_HEIGHT / SVG_WIDTH;
9
+ if (size?.width !== undefined && size?.height !== undefined) {
10
+ return { width: size.width, height: size.height };
11
+ }
12
+ if (size?.width !== undefined) {
13
+ return { width: size.width, height: Math.round(size.width * aspect) };
14
+ }
15
+ if (size?.height !== undefined) {
16
+ return { width: Math.round(size.height / aspect), height: size.height };
17
+ }
18
+ return { width: SVG_WIDTH, height: SVG_HEIGHT };
19
+ }
6
20
  function fmt(n, digits = 2) {
7
21
  return n.toFixed(digits).replace(/\.?0+$/, "");
8
22
  }
@@ -75,8 +89,8 @@ function bladePath(x, height, lean, width) {
75
89
  Q ${fmt(x + lean, 1)} ${fmt(top + 8, 1)} ${fmt(x + lean * 0.2, 1)} ${fmt(top, 1)}
76
90
  Q ${fmt(x + lean * 0.55 + width, 1)} ${fmt(268 - height * 0.62, 1)} ${fmt(x + width * 0.35, 1)} 268 Z`;
77
91
  }
78
- function drawPlant(plant) {
79
- const color = KELP[plant.palette % KELP.length];
92
+ function drawPlant(plant, theme) {
93
+ const color = theme.kelp[plant.palette % theme.kelp.length];
80
94
  const blades = [];
81
95
  for (let i = 0; i < plant.blades; i++) {
82
96
  const lean = (i - (plant.blades - 1) / 2) * 16 + (i % 2 === 0 ? 6 : -4);
@@ -92,16 +106,16 @@ function drawBubble(bubble) {
92
106
  <circle cx="${fmt(bubble.x - bubble.r * 0.28, 1)}" cy="${fmt(bubble.startY - bubble.r * 0.3, 1)}" r="${fmt(Math.max(0.4, bubble.r * 0.28), 2)}" fill="rgba(255,255,255,0.45)"/>
93
107
  </g>`;
94
108
  }
95
- function drawReef(columns) {
109
+ function drawReef(columns, theme) {
96
110
  return columns
97
111
  .map((col) => {
98
112
  const cx = col.x + col.width / 2;
99
113
  const pebbles = [
100
- `<ellipse cx="${fmt(cx, 2)}" cy="264.5" rx="${fmt(Math.max(2.2, col.width * 0.72), 2)}" ry="${fmt(Math.max(2, col.height * 0.34), 2)}" fill="#6a5844"/>`,
101
- `<ellipse cx="${fmt(cx + col.width * 0.18, 2)}" cy="${fmt(263.2 - col.height * 0.22, 2)}" rx="${fmt(Math.max(1.4, col.width * 0.4), 2)}" ry="${fmt(Math.max(1.5, col.height * 0.28), 2)}" fill="#8d7860"/>`,
114
+ `<ellipse cx="${fmt(cx, 2)}" cy="264.5" rx="${fmt(Math.max(2.2, col.width * 0.72), 2)}" ry="${fmt(Math.max(2, col.height * 0.34), 2)}" fill="${theme.reef[0]}"/>`,
115
+ `<ellipse cx="${fmt(cx + col.width * 0.18, 2)}" cy="${fmt(263.2 - col.height * 0.22, 2)}" rx="${fmt(Math.max(1.4, col.width * 0.4), 2)}" ry="${fmt(Math.max(1.5, col.height * 0.28), 2)}" fill="${theme.reef[1]}"/>`,
102
116
  ];
103
117
  if (col.height > 12) {
104
- pebbles.push(`<ellipse cx="${fmt(cx - col.width * 0.12, 2)}" cy="${fmt(261.5 - col.height * 0.42, 2)}" rx="${fmt(col.width * 0.28, 2)}" ry="${fmt(col.height * 0.22, 2)}" fill="#a89070"/>`);
118
+ pebbles.push(`<ellipse cx="${fmt(cx - col.width * 0.12, 2)}" cy="${fmt(261.5 - col.height * 0.42, 2)}" rx="${fmt(col.width * 0.28, 2)}" ry="${fmt(col.height * 0.22, 2)}" fill="${theme.reef[2]}"/>`);
105
119
  }
106
120
  return `<g opacity="${fmt(col.opacity, 2)}">${pebbles.join("")}</g>`;
107
121
  })
@@ -114,7 +128,7 @@ function sourceNote(source) {
114
128
  return "seeded from public events";
115
129
  return "demo pattern from username";
116
130
  }
117
- function caption(activity, model) {
131
+ function caption(activity, model, theme) {
118
132
  const login = escapeXml(activity.login.toUpperCase());
119
133
  const tracking = activity.login.length > 16 ? "0.08em" : "0.22em";
120
134
  const total = activity.totalContributions.toLocaleString("en-US");
@@ -123,37 +137,39 @@ function caption(activity, model) {
123
137
  const extras = model.streak > 1 ? ` · ${model.streak}-day streak` : "";
124
138
  const sourceLabel = activity.source === "graphql"
125
139
  ? ""
126
- : `<text x="828" y="32" fill="rgba(186,214,208,0.55)" font-size="8" font-family="Georgia, serif" text-anchor="end">${note}</text>`;
140
+ : `<text x="828" y="32" fill="${theme.caption.note}" font-size="8" font-family="Georgia, serif" text-anchor="end">${note}</text>`;
127
141
  return `
128
- <text x="32" y="268" fill="#d5e6df" font-size="13" font-family="Palatino, 'Palatino Linotype', 'Book Antiqua', Georgia, serif" letter-spacing="${tracking}">${login}</text>
129
- <text x="32" y="282" fill="#9bb8b0" font-size="9.5" font-family="Georgia, 'Iowan Old Style', serif">${total} contributions · ${range}${extras}</text>
142
+ <text x="32" y="268" fill="${theme.caption.title}" font-size="13" font-family="Palatino, 'Palatino Linotype', 'Book Antiqua', Georgia, serif" letter-spacing="${tracking}">${login}</text>
143
+ <text x="32" y="282" fill="${theme.caption.meta}" font-size="9.5" font-family="Georgia, 'Iowan Old Style', serif">${total} contributions · ${range}${extras}</text>
130
144
  ${sourceLabel}`;
131
145
  }
132
- function defs() {
146
+ function defs(theme) {
147
+ const [w0, w1, w2] = theme.water;
148
+ const [s0, s1] = theme.sand;
133
149
  return `<defs>
134
150
  <linearGradient id="water" x1="0" y1="0" x2="0" y2="1">
135
- <stop offset="0%" stop-color="#163e4c"/>
136
- <stop offset="38%" stop-color="#0c2c38"/>
137
- <stop offset="100%" stop-color="#07141c"/>
151
+ <stop offset="0%" stop-color="${w0}"/>
152
+ <stop offset="38%" stop-color="${w1}"/>
153
+ <stop offset="100%" stop-color="${w2}"/>
138
154
  </linearGradient>
139
155
  <radialGradient id="glow" cx="46%" cy="8%" r="72%">
140
- <stop offset="0%" stop-color="#2a7a86" stop-opacity="0.38"/>
141
- <stop offset="42%" stop-color="#123844" stop-opacity="0.12"/>
156
+ <stop offset="0%" stop-color="${theme.glow.color}" stop-opacity="0.38"/>
157
+ <stop offset="42%" stop-color="${theme.glow.mid}" stop-opacity="0.12"/>
142
158
  <stop offset="100%" stop-color="#061018" stop-opacity="0"/>
143
159
  </radialGradient>
144
160
  <linearGradient id="sand" x1="0" y1="0" x2="0" y2="1">
145
- <stop offset="0%" stop-color="#5a4a36"/>
146
- <stop offset="100%" stop-color="#2c241a"/>
161
+ <stop offset="0%" stop-color="${s0}"/>
162
+ <stop offset="100%" stop-color="${s1}"/>
147
163
  </linearGradient>
148
164
  <linearGradient id="film" x1="0" y1="0" x2="0" y2="1">
149
- <stop offset="0%" stop-color="#8fd0d4" stop-opacity="0.28"/>
150
- <stop offset="100%" stop-color="#8fd0d4" stop-opacity="0"/>
165
+ <stop offset="0%" stop-color="${theme.film}" stop-opacity="0.28"/>
166
+ <stop offset="100%" stop-color="${theme.film}" stop-opacity="0"/>
151
167
  </linearGradient>
152
168
  <linearGradient id="glass" x1="0" y1="0" x2="1" y2="0">
153
- <stop offset="0%" stop-color="#d4f0f2" stop-opacity="0.16"/>
154
- <stop offset="18%" stop-color="#d4f0f2" stop-opacity="0"/>
155
- <stop offset="82%" stop-color="#d4f0f2" stop-opacity="0"/>
156
- <stop offset="100%" stop-color="#d4f0f2" stop-opacity="0.12"/>
169
+ <stop offset="0%" stop-color="${theme.glass}" stop-opacity="0.16"/>
170
+ <stop offset="18%" stop-color="${theme.glass}" stop-opacity="0"/>
171
+ <stop offset="82%" stop-color="${theme.glass}" stop-opacity="0"/>
172
+ <stop offset="100%" stop-color="${theme.glass}" stop-opacity="0.12"/>
157
173
  </linearGradient>
158
174
  <filter id="soft" x="-8%" y="-8%" width="116%" height="116%">
159
175
  <feGaussianBlur stdDeviation="0.4" result="b"/>
@@ -216,26 +232,28 @@ function styles(model) {
216
232
  }
217
233
  </style>`;
218
234
  }
219
- function rocks() {
235
+ function rocks(theme) {
236
+ const [a, b, c] = theme.rock;
220
237
  return `
221
- <ellipse cx="118" cy="266" rx="38" ry="11" fill="#2a241c" opacity="0.85"/>
222
- <ellipse cx="108" cy="258" rx="22" ry="14" fill="#3a3228"/>
223
- <ellipse cx="132" cy="260" rx="14" ry="9" fill="#4a4034"/>
224
- <ellipse cx="742" cy="268" rx="46" ry="12" fill="#2a241c" opacity="0.8"/>
225
- <ellipse cx="728" cy="258" rx="20" ry="13" fill="#3d352c"/>
226
- <ellipse cx="758" cy="261" rx="16" ry="10" fill="#4e4538"/>
227
- <ellipse cx="430" cy="270" rx="18" ry="6" fill="#3a3226" opacity="0.7"/>`;
238
+ <ellipse cx="118" cy="266" rx="38" ry="11" fill="${a}" opacity="0.85"/>
239
+ <ellipse cx="108" cy="258" rx="22" ry="14" fill="${b}"/>
240
+ <ellipse cx="132" cy="260" rx="14" ry="9" fill="${c}"/>
241
+ <ellipse cx="742" cy="268" rx="46" ry="12" fill="${a}" opacity="0.8"/>
242
+ <ellipse cx="728" cy="258" rx="20" ry="13" fill="${b}"/>
243
+ <ellipse cx="758" cy="261" rx="16" ry="10" fill="${c}"/>
244
+ <ellipse cx="430" cy="270" rx="18" ry="6" fill="${b}" opacity="0.7"/>`;
228
245
  }
229
- function rays() {
246
+ function rays(theme) {
247
+ const [r0, r1, r2] = theme.ray;
230
248
  return `
231
249
  <g class="ray" opacity="0.14">
232
- <polygon points="210,12 268,12 318,268 168,268" fill="#7ec8c4"/>
250
+ <polygon points="210,12 268,12 318,268 168,268" fill="${r0}"/>
233
251
  </g>
234
252
  <g class="ray" opacity="0.1" style="animation-delay:-2.4s">
235
- <polygon points="470,12 510,12 548,268 430,268" fill="#9ad4c8"/>
253
+ <polygon points="470,12 510,12 548,268 430,268" fill="${r1}"/>
236
254
  </g>
237
255
  <g class="ray" opacity="0.08" style="animation-delay:-4.1s">
238
- <polygon points="620,12 648,12 700,268 560,268" fill="#7eb8c2"/>
256
+ <polygon points="620,12 648,12 700,268 560,268" fill="${r2}"/>
239
257
  </g>`;
240
258
  }
241
259
  function surface() {
@@ -248,33 +266,35 @@ function surface() {
248
266
  </path>
249
267
  <path class="shimmer" fill="none" stroke="rgba(186,232,228,0.45)" stroke-width="1.1" d="M24,22 Q140,14 250,24 T480,20 T836,26"/>`;
250
268
  }
251
- export function renderAquarium(activity) {
252
- const model = mapAquarium(activity);
269
+ export function renderAquarium(activity, themeName = "deep", size) {
270
+ const theme = getTheme(themeName);
271
+ const model = mapAquarium(activity, themeName);
272
+ const { width: displayW, height: displayH } = resolveSvgDisplaySize(size);
253
273
  const label = escapeXml(`GitHub contribution aquarium for ${activity.login} — ${activity.totalContributions} contributions`);
254
274
  const plantsBack = model.plants
255
275
  .filter((_, i) => i % 2 === 0)
256
- .map(drawPlant)
276
+ .map((p) => drawPlant(p, theme))
257
277
  .join("");
258
278
  const plantsFront = model.plants
259
279
  .filter((_, i) => i % 2 === 1)
260
- .map(drawPlant)
280
+ .map((p) => drawPlant(p, theme))
261
281
  .join("");
262
282
  return `<?xml version="1.0" encoding="UTF-8"?>
263
- <svg xmlns="http://www.w3.org/2000/svg" width="${SVG_WIDTH}" height="${SVG_HEIGHT}" viewBox="0 0 ${SVG_WIDTH} ${SVG_HEIGHT}" role="img" aria-label="${label}" data-user="${escapeXml(activity.login)}" data-source="${activity.source}" data-total="${activity.totalContributions}">
283
+ <svg xmlns="http://www.w3.org/2000/svg" width="${displayW}" height="${displayH}" viewBox="0 0 ${SVG_WIDTH} ${SVG_HEIGHT}" preserveAspectRatio="xMidYMid meet" role="img" aria-label="${label}" data-user="${escapeXml(activity.login)}" data-source="${activity.source}" data-total="${activity.totalContributions}" data-theme="${theme.name}">
264
284
  <title>${label}</title>
265
- ${defs()}
285
+ ${defs(theme)}
266
286
  ${styles(model)}
267
- <rect width="${SVG_WIDTH}" height="${SVG_HEIGHT}" rx="24" fill="#0a1418"/>
287
+ <rect width="${SVG_WIDTH}" height="${SVG_HEIGHT}" rx="24" fill="${theme.water[2]}"/>
268
288
  <g clip-path="url(#tank)">
269
289
  <rect x="10" y="10" width="840" height="280" fill="url(#water)"/>
270
290
  <rect x="10" y="10" width="840" height="280" fill="url(#glow)"/>
271
- ${rays()}
291
+ ${rays(theme)}
272
292
  <rect x="10" y="10" width="840" height="280" filter="url(#haze)" opacity="0.55"/>
273
293
  ${plantsBack}
274
294
  <path d="M10,252 C80,246 160,258 250,250 C360,240 470,258 560,249 C670,238 760,256 850,248 L850,290 L10,290 Z" fill="url(#sand)"/>
275
295
  <path d="M10,252 C80,246 160,258 250,250 C360,240 470,258 560,249 C670,238 760,256 850,248" fill="none" stroke="rgba(210,190,150,0.22)" stroke-width="1.2"/>
276
- ${drawReef(model.reef)}
277
- ${rocks()}
296
+ ${drawReef(model.reef, theme)}
297
+ ${rocks(theme)}
278
298
  <g filter="url(#soft)">
279
299
  ${model.fish.map(drawFish).join("")}
280
300
  </g>
@@ -282,7 +302,7 @@ export function renderAquarium(activity) {
282
302
  ${model.bubbles.map(drawBubble).join("")}
283
303
  ${surface()}
284
304
  <rect x="10" y="10" width="840" height="280" fill="url(#glass)"/>
285
- ${caption(activity, model)}
305
+ ${caption(activity, model, theme)}
286
306
  </g>
287
307
  <rect x="10.6" y="10.6" width="838.8" height="278.8" rx="21" fill="none" stroke="rgba(198,176,122,0.55)" stroke-width="1.4"/>
288
308
  <rect x="13" y="13" width="834" height="274" rx="19" fill="none" stroke="rgba(214,236,232,0.16)" stroke-width="0.8"/>
@@ -1 +1 @@
1
- {"version":3,"file":"render.js","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"render.js","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ export declare const THEME_NAMES: readonly ["deep", "reef", "midnight"];
2
+ export type ThemeName = (typeof THEME_NAMES)[number];
3
+ export type Theme = {
4
+ name: ThemeName;
5
+ /** Water gradient stops top → bottom */
6
+ water: [string, string, string];
7
+ glow: {
8
+ color: string;
9
+ mid: string;
10
+ };
11
+ sand: [string, string];
12
+ film: string;
13
+ glass: string;
14
+ kelp: readonly [string, string, string, string];
15
+ fish: readonly {
16
+ body: string;
17
+ accent: string;
18
+ }[];
19
+ caption: {
20
+ title: string;
21
+ meta: string;
22
+ note: string;
23
+ };
24
+ ray: readonly [string, string, string];
25
+ rock: readonly [string, string, string];
26
+ reef: readonly [string, string, string];
27
+ };
28
+ export declare function parseTheme(value: string | undefined): ThemeName;
29
+ export declare function getTheme(name?: ThemeName): Theme;
30
+ //# sourceMappingURL=theme.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../src/theme.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,uCAAwC,CAAC;AACjE,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAErD,MAAM,MAAM,KAAK,GAAG;IAClB,IAAI,EAAE,SAAS,CAAC;IAChB,wCAAwC;IACxC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IACrC,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAChD,IAAI,EAAE,SAAS;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAClD,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACvD,GAAG,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,IAAI,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,IAAI,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CACzC,CAAC;AA0EF,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAQ/D;AAED,wBAAgB,QAAQ,CAAC,IAAI,GAAE,SAAkB,GAAG,KAAK,CAExD"}
package/dist/theme.js ADDED
@@ -0,0 +1,80 @@
1
+ export const THEME_NAMES = ["deep", "reef", "midnight"];
2
+ const DEEP = {
3
+ name: "deep",
4
+ water: ["#163e4c", "#0c2c38", "#07141c"],
5
+ glow: { color: "#2a7a86", mid: "#123844" },
6
+ sand: ["#5a4a36", "#2c241a"],
7
+ film: "#8fd0d4",
8
+ glass: "#d4f0f2",
9
+ kelp: ["#1a4f40", "#227056", "#163e34", "#2a7a5c"],
10
+ fish: [
11
+ { body: "#e6c07b", accent: "#c46b4a" },
12
+ { body: "#d9a441", accent: "#b87333" },
13
+ { body: "#5fa8a3", accent: "#2f6f74" },
14
+ { body: "#c5d4d1", accent: "#7f9996" },
15
+ { body: "#d4896a", accent: "#9e4d3c" },
16
+ { body: "#7eb3c9", accent: "#3d6f88" },
17
+ ],
18
+ caption: { title: "#d5e6df", meta: "#9bb8b0", note: "rgba(186,214,208,0.55)" },
19
+ ray: ["#7ec8c4", "#9ad4c8", "#7eb8c2"],
20
+ rock: ["#2a241c", "#3a3228", "#4a4034"],
21
+ reef: ["#6a5844", "#8d7860", "#a89070"],
22
+ };
23
+ const REEF = {
24
+ name: "reef",
25
+ water: ["#1a5f6e", "#0e3d4a", "#082028"],
26
+ glow: { color: "#3cb8a8", mid: "#1a5a58" },
27
+ sand: ["#c4a574", "#6b5338"],
28
+ film: "#a8e8e0",
29
+ glass: "#e8fff8",
30
+ kelp: ["#1f6b4a", "#2d8f62", "#145238", "#3aa870"],
31
+ fish: [
32
+ { body: "#ff8f6b", accent: "#e04870" },
33
+ { body: "#ffd166", accent: "#f08a24" },
34
+ { body: "#06d6a0", accent: "#118ab2" },
35
+ { body: "#ef476f", accent: "#9b2226" },
36
+ { body: "#4cc9f0", accent: "#4361ee" },
37
+ { body: "#f4a261", accent: "#e76f51" },
38
+ ],
39
+ caption: { title: "#e8fff6", meta: "#a8d4c8", note: "rgba(168,232,220,0.6)" },
40
+ ray: ["#7ef0d8", "#ffe08a", "#ff9eb5"],
41
+ rock: ["#5c4030", "#7a5640", "#9a7050"],
42
+ reef: ["#8b6914", "#b8860b", "#daa520"],
43
+ };
44
+ const MIDNIGHT = {
45
+ name: "midnight",
46
+ water: ["#1a1430", "#0e0a1c", "#05040c"],
47
+ glow: { color: "#6b5b95", mid: "#2a2048" },
48
+ sand: ["#2a2438", "#12101a"],
49
+ film: "#a89cc8",
50
+ glass: "#d4c8f0",
51
+ kelp: ["#2a3850", "#3a4a68", "#1e2838", "#4a6080"],
52
+ fish: [
53
+ { body: "#c9b6e4", accent: "#7b5ea7" },
54
+ { body: "#90e0ef", accent: "#48bfe3" },
55
+ { body: "#f72585", accent: "#b5179e" },
56
+ { body: "#e0aaff", accent: "#9d4edd" },
57
+ { body: "#80ffdb", accent: "#56cfe1" },
58
+ { body: "#ffd6a5", accent: "#ffadad" },
59
+ ],
60
+ caption: { title: "#e8e0f8", meta: "#a898c0", note: "rgba(200,190,230,0.55)" },
61
+ ray: ["#9b8ec4", "#7ec8e8", "#e0a0d0"],
62
+ rock: ["#1a1624", "#2a2438", "#3a3450"],
63
+ reef: ["#3a3550", "#524a70", "#6a6090"],
64
+ };
65
+ const THEMES = {
66
+ deep: DEEP,
67
+ reef: REEF,
68
+ midnight: MIDNIGHT,
69
+ };
70
+ export function parseTheme(value) {
71
+ const raw = (value ?? "deep").trim().toLowerCase();
72
+ if (THEME_NAMES.includes(raw)) {
73
+ return raw;
74
+ }
75
+ throw new Error(`Unknown --theme "${value}". Use: ${THEME_NAMES.join(", ")}`);
76
+ }
77
+ export function getTheme(name = "deep") {
78
+ return THEMES[name];
79
+ }
80
+ //# sourceMappingURL=theme.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme.js","sourceRoot":"","sources":["../src/theme.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -19,6 +19,7 @@ export type Activity = {
19
19
  };
20
20
  };
21
21
  export type LoadSource = "auto" | DataSource;
22
+ export type { ThemeName } from "./theme.js";
22
23
  export type LoadOptions = {
23
24
  user: string;
24
25
  token?: string;
@@ -26,7 +27,15 @@ export type LoadOptions = {
26
27
  now?: Date;
27
28
  fetchImpl?: typeof fetch;
28
29
  };
29
- export type GenerateOptions = LoadOptions;
30
+ export type SvgSizeOptions = {
31
+ /** Display width in px (viewBox stays 860×300). */
32
+ width?: number;
33
+ /** Display height in px; defaults to proportional when only width is set. */
34
+ height?: number;
35
+ };
36
+ export type GenerateOptions = LoadOptions & {
37
+ theme?: import("./theme.js").ThemeName;
38
+ } & SvgSizeOptions;
30
39
  export type GenerateResult = {
31
40
  svg: string;
32
41
  activity: Activity;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEvD,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,eAAe,EAAE,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,MAAM,EAAE,UAAU,CAAC;IACnB,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,UAAU,CAAC;AAE7C,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,GAAG,CAAC,EAAE,IAAI,CAAC;IACX,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,WAAW,CAAC;AAE1C,MAAM,MAAM,cAAc,GAAG;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,QAAQ,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,OAAO,GAAG,OAAO,GAAG,KAAK,GAAG,OAAO,CAAC;AAEhD,MAAM,MAAM,SAAS,GAAG;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,CAAC,EAAE,MAAM,CAAC;IACV,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,CAAC,EAAE,MAAM,CAAC;IACV,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,SAAS,EAAE,CAAC;IAClB,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,IAAI,EAAE,UAAU,EAAE,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,eAAO,MAAM,QAAQ,IAAI,CAAC;AAC1B,eAAO,MAAM,QAAQ,KAAK,CAAC;AAC3B,eAAO,MAAM,SAAS,IAAI,CAAC;AAC3B,eAAO,MAAM,SAAS,KAAK,CAAC;AAC5B,eAAO,MAAM,UAAU,IAAI,CAAC;AAC5B,eAAO,MAAM,UAAU,KAAK,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AA4FA,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAC;AAC1B,MAAM,CAAC,MAAM,QAAQ,GAAG,EAAE,CAAC;AAC3B,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAC;AAC3B,MAAM,CAAC,MAAM,SAAS,GAAG,EAAE,CAAC;AAC5B,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC;AAC5B,MAAM,CAAC,MAAM,UAAU,GAAG,EAAE,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAuGA,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAC;AAC1B,MAAM,CAAC,MAAM,QAAQ,GAAG,EAAE,CAAC;AAC3B,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAC;AAC3B,MAAM,CAAC,MAAM,SAAS,GAAG,EAAE,CAAC;AAC5B,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC;AAC5B,MAAM,CAAC,MAAM,UAAU,GAAG,EAAE,CAAC"}
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "contrib-aquarium",
3
- "version": "0.1.0",
4
- "description": "A living SVG aquarium driven by a GitHub contribution graph — embeddable in profile READMEs.",
3
+ "version": "0.1.2",
4
+ "description": "A living SVG aquarium driven by a GitHub contribution graph \u2014 embeddable in profile READMEs.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
7
7
  "types": "./dist/index.d.ts",
8
8
  "bin": {
9
- "contrib-aquarium": "./dist/cli.js"
9
+ "contrib-aquarium": "dist/cli.js"
10
10
  },
11
11
  "exports": {
12
12
  ".": {