@askewly/design 0.4.5 → 0.5.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.
- package/data/recipes.json +1 -1
- package/data/terms.json +1 -1
- package/dist/index.js +15 -0
- package/dist/mascot.js +43 -0
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -5,6 +5,7 @@ import { Command } from "commander";
|
|
|
5
5
|
import { addRecipe, initProject, InjectError } from "./inject.js";
|
|
6
6
|
import { runKickstart, KickstartError } from "./kickstart.js";
|
|
7
7
|
import { DEFAULT_TYPOGRAPHY_THRESHOLD } from "./typography.js";
|
|
8
|
+
import { MASCOT_POSES, renderMascot } from "./mascot.js";
|
|
8
9
|
import { verifyDir } from "./verify.js";
|
|
9
10
|
import { loadKnowledge, loadRecipes, loadTerms, loadTokens, loadTokensCss, searchKnowledge, searchTerms, tokensForTier, } from "./load.js";
|
|
10
11
|
const pkg = JSON.parse(readFileSync(new URL("../package.json", import.meta.url), "utf8"));
|
|
@@ -316,4 +317,18 @@ recipes
|
|
|
316
317
|
console.log("");
|
|
317
318
|
console.log(recipe.body);
|
|
318
319
|
});
|
|
320
|
+
// 어스큐리 수달 — 브랜드 마스코트. 사람 눈 전용 표면이라 --json 이 없다(기계 소비 출력에
|
|
321
|
+
// 캐릭터를 섞지 않는다 — docs/design-system/mascot.md §3). 색은 TTY 에서만 기본 ON.
|
|
322
|
+
program
|
|
323
|
+
.command("mascot")
|
|
324
|
+
.argument("[pose]", `pose: ${MASCOT_POSES.join(" | ")}`, "lying")
|
|
325
|
+
.option("--no-color", "print without ANSI color (piped output is plain by default)")
|
|
326
|
+
.description("print the Askewly otter mascot (lavender half-block pixel art)")
|
|
327
|
+
.action((pose, options) => {
|
|
328
|
+
if (!MASCOT_POSES.includes(pose)) {
|
|
329
|
+
fail(`unknown pose "${pose}" — expected one of: ${MASCOT_POSES.join(", ")}`);
|
|
330
|
+
}
|
|
331
|
+
const color = options.color && Boolean(process.stdout.isTTY);
|
|
332
|
+
console.log(renderMascot(pose, { color }));
|
|
333
|
+
});
|
|
319
334
|
program.parse();
|
package/dist/mascot.js
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
// 어스큐리 수달 — Askewly 브랜드 마스코트 (M83, 2026-08-28).
|
|
2
|
+
// 정본은 레포 docs/design-system/mascot.md + mascot/*.map.txt (픽셀맵). 아래 문자열은
|
|
3
|
+
// 파생 사본이다 — 손편집 금지, 맵을 고치고 재렌더해서 옮긴다.
|
|
4
|
+
// 사용 규칙(정본 §3): 라벤더 #B298DC 단색 고정 · 등폭 전제 · 기계 소비 출력 금지.
|
|
5
|
+
export const MASCOT_POSES = ["lying", "standing", "sleepy", "mini"];
|
|
6
|
+
const ART = {
|
|
7
|
+
lying: ` ▄██▄ ▄██▄
|
|
8
|
+
█ ██ █ ██
|
|
9
|
+
▄██████████████████▄
|
|
10
|
+
█▄ █████████████████████
|
|
11
|
+
▀█▄ ████ ████ █████████
|
|
12
|
+
▀██▄████ ████ █████████
|
|
13
|
+
▀███████████████████▀
|
|
14
|
+
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀`,
|
|
15
|
+
standing: ` ▄██▄ ▄██▄
|
|
16
|
+
█ ██ █ ██
|
|
17
|
+
▄██████████████▄
|
|
18
|
+
███ ████ █████
|
|
19
|
+
███ ████ █████
|
|
20
|
+
████████████████
|
|
21
|
+
████████████████
|
|
22
|
+
▀████▀▀▀████▀▀██
|
|
23
|
+
████ ████ ▀███▄▄▄`,
|
|
24
|
+
sleepy: ` ▄██▄ ▄██▄
|
|
25
|
+
█ ██ █ ██
|
|
26
|
+
▄██████████████████▄
|
|
27
|
+
█▄ █████████████████████
|
|
28
|
+
▀█▄ █████████████████████
|
|
29
|
+
▀██▄███ ██ ████████
|
|
30
|
+
▀███████████████████▀
|
|
31
|
+
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀`,
|
|
32
|
+
mini: ` ▄██▄▄▄▄██▄
|
|
33
|
+
██████████
|
|
34
|
+
██ ██ ██
|
|
35
|
+
▀████████▀`,
|
|
36
|
+
};
|
|
37
|
+
/** askewly.lavender #B298DC — ANSI 24-bit. */
|
|
38
|
+
const LAVENDER = "[38;2;178;152;220m";
|
|
39
|
+
const RESET = "[0m";
|
|
40
|
+
export function renderMascot(pose, options) {
|
|
41
|
+
const art = ART[pose];
|
|
42
|
+
return options.color ? `${LAVENDER}${art}${RESET}` : art;
|
|
43
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@askewly/design",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"description": "Query, inject, and verify the Askewly Design system (tokens, UI vocabulary, recipes) from your terminal or coding agent.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"homepage": "https://ui.askewly.com",
|