kakaotalk-chat-analyzer 0.9.0 → 0.10.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/README.md +3 -0
- package/THIRD_PARTY_NOTICES.md +7 -0
- package/dist/src/report-charts.d.ts +3 -3
- package/dist/src/report-charts.js +2 -95
- package/dist/src/report-charts.js.map +1 -1
- package/dist/src/report-head.d.ts +2 -0
- package/dist/src/report-head.js +6 -0
- package/dist/src/report-head.js.map +1 -0
- package/dist/src/report-story.d.ts +0 -1
- package/dist/src/report-story.js +1 -325
- package/dist/src/report-story.js.map +1 -1
- package/dist/src/report-styles.d.ts +2 -0
- package/dist/src/report-styles.js +1338 -0
- package/dist/src/report-styles.js.map +1 -0
- package/dist/src/report-ux.d.ts +7 -0
- package/dist/src/report-ux.js +81 -0
- package/dist/src/report-ux.js.map +1 -0
- package/dist/src/report.js +27 -774
- package/dist/src/report.js.map +1 -1
- package/dist/src/version.d.ts +2 -2
- package/dist/src/version.js +1 -1
- package/dist/src/version.js.map +1 -1
- package/package.json +5 -2
package/README.md
CHANGED
|
@@ -116,6 +116,9 @@ npm run bench:stream -- 100000
|
|
|
116
116
|
|
|
117
117
|
| 버전 | 요약 |
|
|
118
118
|
|------|------|
|
|
119
|
+
| **0.10.1** | Pretendard 서브셋 CDN·`--kca-font-sans` 순환 참조 수정·카드 radius 토큰 |
|
|
120
|
+
| **0.10.0** | 리포트 CSS **Open Props** 토큰·6레이어 번들(`report-styles.ts`)·시맨틱 컬러 리워크 |
|
|
121
|
+
| **0.9.1** | 리포트 UX: 읽기 진행률·스크롤 스파이 네비·모바일 섹션 메뉴·히어로 바로가기·키워드 CSS 접기 |
|
|
119
122
|
| **0.9.0** | 시맨틱 기본 **`Xenova/multilingual-e5-small`** (한국어 NDCG ~+68% vs MiniLM)·E5 `query:` 접두사 |
|
|
120
123
|
| **0.8.1** | 키워드 랭킹 **메시지 등장 수 우선** (BM25 dl 버그 수정)·떨림 2-gram 제거 |
|
|
121
124
|
| **0.8.0** | **한국어 우선**: 다국어 임베딩·한국어 방 **자동 시맨틱**·userWords 완화 |
|
package/THIRD_PARTY_NOTICES.md
CHANGED
|
@@ -16,4 +16,11 @@ This project (`kakaotalk-chat-analyzer`) is distributed under the **MIT License*
|
|
|
16
16
|
- **Use in kca:** Korean-primary chats use multilingual sentence embeddings for semantic keyword clusters by default. Default model `Xenova/multilingual-e5-small` (E5 `query:` prefix; override with `KCA_SEMANTIC_MODEL`, legacy MiniLM: `Xenova/paraphrase-multilingual-MiniLM-L12-v2`). Downloaded at runtime (free).
|
|
17
17
|
- **Source:** https://github.com/xenova/transformers.js
|
|
18
18
|
|
|
19
|
+
## Open Props (report CSS, build-time bundle)
|
|
20
|
+
|
|
21
|
+
- **Package:** [open-props](https://www.npmjs.com/package/open-props) v1.7.x
|
|
22
|
+
- **License:** MIT
|
|
23
|
+
- **Use in kca:** Design tokens and gradients are bundled into the standalone HTML report at build time (`scripts/bundle-report-css.mjs`). Not a runtime npm dependency for end users.
|
|
24
|
+
- **Source:** https://github.com/argyleink/open-props
|
|
25
|
+
|
|
19
26
|
Other runtime dependencies: `commander` (MIT), `csv-parse` (MIT), `iconv-lite` (MIT).
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import type { ReportData } from "./types.js";
|
|
2
|
-
/**
|
|
3
|
-
export declare const CHART_CDN_HEAD = "
|
|
2
|
+
/** @deprecated preconnect는 report-head.ts REPORT_HEAD_LINKS 사용 */
|
|
3
|
+
export declare const CHART_CDN_HEAD = "";
|
|
4
4
|
/** body 끝: 차트 라이브러리 — defer 금지(인라인 init보다 반드시 먼저 실행) */
|
|
5
5
|
export declare const CHART_CDN_BODY = "\n <script src=\"https://cdn.jsdelivr.net/npm/echarts@5.6.0/dist/echarts.min.js\"></script>\n <script src=\"https://cdn.jsdelivr.net/npm/echarts-wordcloud@2.1.0/dist/echarts-wordcloud.min.js\"></script>\n";
|
|
6
|
-
|
|
6
|
+
/** @deprecated styles live in src/report/css — bundled via report-styles.ts */
|
|
7
7
|
export interface ChartPayload {
|
|
8
8
|
hourly: number[];
|
|
9
9
|
weekdays: {
|
|
@@ -1,104 +1,11 @@
|
|
|
1
1
|
import { escapeHtml, formatNumber } from "./report-util.js";
|
|
2
|
-
/**
|
|
3
|
-
export const CHART_CDN_HEAD =
|
|
4
|
-
<link rel="preconnect" href="https://cdn.jsdelivr.net" crossorigin>
|
|
5
|
-
`;
|
|
2
|
+
/** @deprecated preconnect는 report-head.ts REPORT_HEAD_LINKS 사용 */
|
|
3
|
+
export const CHART_CDN_HEAD = ``;
|
|
6
4
|
/** body 끝: 차트 라이브러리 — defer 금지(인라인 init보다 반드시 먼저 실행) */
|
|
7
5
|
export const CHART_CDN_BODY = `
|
|
8
6
|
<script src="https://cdn.jsdelivr.net/npm/echarts@5.6.0/dist/echarts.min.js"></script>
|
|
9
7
|
<script src="https://cdn.jsdelivr.net/npm/echarts-wordcloud@2.1.0/dist/echarts-wordcloud.min.js"></script>
|
|
10
8
|
`;
|
|
11
|
-
export const REPORT_VIZ_CSS = `
|
|
12
|
-
.viz-hero {
|
|
13
|
-
margin: 0 0 18px;
|
|
14
|
-
padding: 20px 22px;
|
|
15
|
-
border-radius: 20px;
|
|
16
|
-
border: 1px solid var(--glass-border);
|
|
17
|
-
background: var(--glass);
|
|
18
|
-
backdrop-filter: blur(14px);
|
|
19
|
-
-webkit-backdrop-filter: blur(14px);
|
|
20
|
-
box-shadow: var(--shadow);
|
|
21
|
-
}
|
|
22
|
-
.viz-hero h2 {
|
|
23
|
-
margin: 0 0 6px;
|
|
24
|
-
font-size: 22px;
|
|
25
|
-
font-weight: 850;
|
|
26
|
-
letter-spacing: -0.03em;
|
|
27
|
-
background: var(--accent-grad);
|
|
28
|
-
-webkit-background-clip: text;
|
|
29
|
-
background-clip: text;
|
|
30
|
-
color: transparent;
|
|
31
|
-
}
|
|
32
|
-
.viz-hero p { margin: 0; font-size: 13px; color: var(--muted); line-height: 1.55; }
|
|
33
|
-
.viz-grid {
|
|
34
|
-
display: grid;
|
|
35
|
-
gap: 14px;
|
|
36
|
-
grid-template-columns: repeat(12, 1fr);
|
|
37
|
-
}
|
|
38
|
-
.viz-card {
|
|
39
|
-
grid-column: span 12;
|
|
40
|
-
border-radius: 18px;
|
|
41
|
-
border: 1px solid var(--glass-border);
|
|
42
|
-
background: var(--glass);
|
|
43
|
-
backdrop-filter: blur(12px);
|
|
44
|
-
-webkit-backdrop-filter: blur(12px);
|
|
45
|
-
padding: 16px 16px 12px;
|
|
46
|
-
box-shadow: var(--shadow);
|
|
47
|
-
}
|
|
48
|
-
@media (min-width: 900px) {
|
|
49
|
-
.viz-card.span-6 { grid-column: span 6; }
|
|
50
|
-
.viz-card.span-8 { grid-column: span 8; }
|
|
51
|
-
.viz-card.span-4 { grid-column: span 4; }
|
|
52
|
-
}
|
|
53
|
-
.viz-card h3 {
|
|
54
|
-
margin: 0 0 4px;
|
|
55
|
-
font-size: 15px;
|
|
56
|
-
font-weight: 800;
|
|
57
|
-
letter-spacing: -0.02em;
|
|
58
|
-
}
|
|
59
|
-
.viz-card .viz-hint {
|
|
60
|
-
margin: 0 0 10px;
|
|
61
|
-
font-size: 11px;
|
|
62
|
-
color: var(--muted);
|
|
63
|
-
line-height: 1.45;
|
|
64
|
-
}
|
|
65
|
-
.chart-box {
|
|
66
|
-
width: 100%;
|
|
67
|
-
min-height: 280px;
|
|
68
|
-
height: min(42vh, 360px);
|
|
69
|
-
}
|
|
70
|
-
.chart-box.tall { height: min(52vh, 440px); min-height: 320px; }
|
|
71
|
-
.chart-box.compact { height: 240px; min-height: 220px; }
|
|
72
|
-
.kw-table-wrap {
|
|
73
|
-
max-height: 520px;
|
|
74
|
-
overflow: auto;
|
|
75
|
-
border: 1px solid var(--line);
|
|
76
|
-
border-radius: 12px;
|
|
77
|
-
}
|
|
78
|
-
.kw-table {
|
|
79
|
-
width: 100%;
|
|
80
|
-
border-collapse: collapse;
|
|
81
|
-
font-size: 12px;
|
|
82
|
-
}
|
|
83
|
-
.kw-table thead th {
|
|
84
|
-
position: sticky;
|
|
85
|
-
top: 0;
|
|
86
|
-
z-index: 1;
|
|
87
|
-
background: var(--panel-solid);
|
|
88
|
-
text-align: left;
|
|
89
|
-
padding: 8px 10px;
|
|
90
|
-
font-size: 11px;
|
|
91
|
-
color: var(--muted);
|
|
92
|
-
border-bottom: 1px solid var(--line);
|
|
93
|
-
}
|
|
94
|
-
.kw-table td {
|
|
95
|
-
padding: 7px 10px;
|
|
96
|
-
border-bottom: 1px solid var(--line);
|
|
97
|
-
}
|
|
98
|
-
.kw-table tbody tr:nth-child(even) { background: rgba(94, 234, 212, 0.04); }
|
|
99
|
-
.kw-table .num { text-align: right; font-variant-numeric: tabular-nums; font-weight: 650; }
|
|
100
|
-
.kw-rank { color: var(--muted); width: 2.5rem; }
|
|
101
|
-
`;
|
|
102
9
|
export function serializeChartPayload(data) {
|
|
103
10
|
return JSON.stringify(buildChartPayload(data))
|
|
104
11
|
.replace(/</g, "\\u003c")
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"report-charts.js","sourceRoot":"","sources":["../../src/report-charts.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAE5D,
|
|
1
|
+
{"version":3,"file":"report-charts.js","sourceRoot":"","sources":["../../src/report-charts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/** 리포트 `<head>` 외부 리소스 — 단일 HTML 오프라인 우선, 폰트·차트 CDN만 허용 */
|
|
2
|
+
export declare const REPORT_HEAD_LINKS = "\n <link rel=\"preconnect\" href=\"https://cdn.jsdelivr.net\" crossorigin>\n <link rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/gh/orioncactus/pretendard@v1.3.9/dist/web/variable/pretendardvariable-dynamic-subset.min.css\">\n";
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/** 리포트 `<head>` 외부 리소스 — 단일 HTML 오프라인 우선, 폰트·차트 CDN만 허용 */
|
|
2
|
+
export const REPORT_HEAD_LINKS = `
|
|
3
|
+
<link rel="preconnect" href="https://cdn.jsdelivr.net" crossorigin>
|
|
4
|
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard@v1.3.9/dist/web/variable/pretendardvariable-dynamic-subset.min.css">
|
|
5
|
+
`;
|
|
6
|
+
//# sourceMappingURL=report-head.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"report-head.js","sourceRoot":"","sources":["../../src/report-head.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,MAAM,CAAC,MAAM,iBAAiB,GAAG;;;CAGhC,CAAC"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import type { ReportData } from "./types.js";
|
|
2
2
|
export declare const GH_CONTRIB_SCRIPT = "\n (function () {\n var box = document.querySelector(\".gh-contrib\");\n if (!box) return;\n var tip = box.querySelector(\"[data-gh-tip]\");\n var text = box.querySelector(\"[data-gh-tip-text]\");\n if (!tip || !text) return;\n var cells = box.querySelectorAll(\".gh-cal-cell[data-date]\");\n function place(clientX, clientY) {\n var r = box.getBoundingClientRect();\n var x = clientX - r.left;\n var y = clientY - r.top - 10;\n tip.style.left = Math.max(8, Math.min(x, r.width - 8)) + \"px\";\n tip.style.top = Math.max(8, y) + \"px\";\n }\n function show(cell, clientX, clientY) {\n var label = cell.getAttribute(\"data-label\");\n if (!label) return;\n text.textContent = label;\n tip.removeAttribute(\"hidden\");\n box.classList.add(\"gh-tip-on\");\n place(clientX, clientY);\n }\n function hide() {\n box.classList.remove(\"gh-tip-on\");\n tip.setAttribute(\"hidden\", \"\");\n }\n cells.forEach(function (cell) {\n cell.addEventListener(\"mouseenter\", function (ev) {\n show(cell, ev.clientX, ev.clientY);\n });\n cell.addEventListener(\"mousemove\", function (ev) {\n if (box.classList.contains(\"gh-tip-on\")) place(ev.clientX, ev.clientY);\n });\n cell.addEventListener(\"mouseleave\", hide);\n cell.addEventListener(\"focus\", function () {\n var r = cell.getBoundingClientRect();\n show(cell, r.left + r.width / 2, r.top);\n });\n cell.addEventListener(\"blur\", hide);\n });\n })();\n";
|
|
3
|
-
export declare const STORY_CSS = "\n #s-wrapped, #s-personas, #s-chapters, #s-calendar { scroll-margin-top: 76px; }\n .story-headline {\n margin: 0 0 14px;\n font-size: clamp(17px, 2.5vw, 21px);\n line-height: 1.55;\n font-weight: 650;\n color: var(--ink);\n max-width: 48ch;\n }\n .wrapped-section { margin-bottom: 20px; }\n .wrapped-section h2 { margin: 0 0 6px; font-size: 20px; font-weight: 800; letter-spacing: -0.02em; }\n .wrapped-lede { margin: 0 0 14px; font-size: 13px; color: var(--muted); line-height: 1.5; }\n .wrapped-deck {\n display: grid;\n gap: 12px;\n grid-template-columns: repeat(auto-fill, minmax(min(100%, 220px), 1fr));\n padding: 0;\n }\n .wrapped-card {\n border-radius: 18px;\n border: 1px solid var(--line);\n padding: 22px 20px;\n min-height: 200px;\n display: flex;\n flex-direction: column;\n justify-content: flex-end;\n background: linear-gradient(155deg, rgba(15, 107, 92, 0.14), rgba(196, 92, 42, 0.08));\n box-shadow: var(--shadow);\n position: relative;\n overflow: hidden;\n }\n .wrapped-card::before {\n content: attr(data-emoji);\n position: absolute;\n top: 12px;\n right: 14px;\n font-size: 2.4rem;\n opacity: 0.35;\n line-height: 1;\n }\n .wrapped-card-kicker {\n font-size: 11px;\n font-weight: 800;\n letter-spacing: 0.06em;\n text-transform: uppercase;\n color: var(--muted);\n margin: 0 0 6px;\n }\n .wrapped-card-stat {\n margin: 0;\n font-size: clamp(32px, 6vw, 44px);\n font-weight: 900;\n letter-spacing: -0.04em;\n line-height: 1.05;\n color: var(--ink);\n word-break: break-word;\n }\n .wrapped-card-sub {\n margin: 10px 0 0;\n font-size: 13px;\n line-height: 1.5;\n color: var(--muted);\n }\n .persona-grid {\n display: grid;\n gap: 10px;\n grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));\n }\n .persona-chip {\n padding: 12px 14px;\n border-radius: 12px;\n border: 1px solid var(--line);\n background: var(--panel);\n }\n .persona-chip strong {\n display: block;\n font-size: 14px;\n color: var(--ink);\n margin-bottom: 4px;\n }\n .persona-chip em {\n display: block;\n font-style: normal;\n font-size: 12px;\n font-weight: 800;\n color: var(--accent);\n margin-bottom: 4px;\n }\n .persona-chip span { font-size: 11px; color: var(--muted); line-height: 1.4; }\n .chapter-list { display: grid; gap: 10px; margin: 0; padding: 0; list-style: none; }\n .chapter-item {\n display: grid;\n grid-template-columns: auto 1fr auto;\n gap: 10px 14px;\n align-items: center;\n padding: 14px 16px;\n border-radius: 12px;\n border: 1px solid var(--line);\n background: var(--panel);\n }\n @media (max-width: 560px) {\n .chapter-item { grid-template-columns: auto 1fr; }\n .chapter-item .chapter-stat { grid-column: 1 / -1; text-align: left; }\n }\n .chapter-badge {\n font-size: 12px;\n font-weight: 900;\n color: var(--accent);\n min-width: 2.5rem;\n }\n .chapter-meta { font-size: 13px; line-height: 1.45; color: var(--ink); }\n .chapter-meta small { display: block; color: var(--muted); font-size: 11px; margin-top: 4px; }\n .chapter-stat { text-align: right; font-size: 13px; font-weight: 750; color: var(--muted); font-variant-numeric: tabular-nums; }\n\n /* GitHub contribution graph (\uC794\uB514) */\n :root {\n --gh-cell-size: 11px;\n --gh-cell-gap: 3px;\n --gh-cell-0: #ebedf0;\n --gh-cell-1: #9be9a8;\n --gh-cell-2: #40c463;\n --gh-cell-3: #30a14e;\n --gh-cell-4: #216e39;\n }\n @media (prefers-color-scheme: dark) {\n :root:not([data-theme=\"light\"]) {\n --gh-cell-0: #161b22;\n --gh-cell-1: #0e4429;\n --gh-cell-2: #006d32;\n --gh-cell-3: #26a641;\n --gh-cell-4: #39d353;\n }\n }\n :root[data-theme=\"dark\"] {\n --gh-cell-0: #161b22;\n --gh-cell-1: #0e4429;\n --gh-cell-2: #006d32;\n --gh-cell-3: #26a641;\n --gh-cell-4: #39d353;\n }\n :root[data-theme=\"light\"] {\n --gh-cell-0: #ebedf0;\n --gh-cell-1: #9be9a8;\n --gh-cell-2: #40c463;\n --gh-cell-3: #30a14e;\n --gh-cell-4: #216e39;\n }\n .gh-contrib {\n position: relative;\n border: 1px solid var(--line);\n border-radius: 12px;\n padding: 16px 18px 14px;\n background: var(--panel);\n }\n .gh-cal-tooltip {\n position: absolute;\n z-index: 20;\n transform: translate(-50%, -100%);\n padding: 6px 10px;\n border-radius: 8px;\n font-size: 12px;\n font-weight: 650;\n line-height: 1.35;\n white-space: nowrap;\n color: #fff;\n background: #24292f;\n box-shadow: 0 6px 18px rgba(0, 0, 0, 0.18);\n pointer-events: none;\n opacity: 0;\n transition: opacity 0.12s ease;\n }\n .gh-contrib.gh-tip-on .gh-cal-tooltip { opacity: 1; }\n :root[data-theme=\"dark\"] .gh-cal-tooltip {\n background: #f0f6fc;\n color: #0d1117;\n }\n @media (prefers-color-scheme: dark) {\n :root:not([data-theme=\"light\"]) .gh-cal-tooltip {\n background: #f0f6fc;\n color: #0d1117;\n }\n }\n .gh-contrib-summary {\n margin: 0 0 12px;\n font-size: 14px;\n line-height: 1.4;\n color: var(--muted);\n }\n .gh-contrib-summary strong {\n font-weight: 600;\n color: var(--ink);\n font-variant-numeric: tabular-nums;\n }\n .gh-contrib-span {\n display: block;\n margin-top: 4px;\n font-size: 11px;\n color: var(--muted);\n }\n .gh-cal-scroll {\n overflow-x: auto;\n overflow-y: hidden;\n max-width: 100%;\n -webkit-overflow-scrolling: touch;\n padding-bottom: 2px;\n }\n .gh-cal-graph {\n display: grid;\n grid-template-areas:\n \". months\"\n \"days weeks\";\n grid-template-columns: max-content max-content;\n column-gap: 8px;\n row-gap: 4px;\n width: max-content;\n min-width: min(100%, max-content);\n }\n .gh-cal-days {\n grid-area: days;\n display: grid;\n grid-template-rows: repeat(7, var(--gh-cell-size));\n gap: var(--gh-cell-gap);\n align-items: center;\n font-family: ui-sans-serif, system-ui, -apple-system, \"Segoe UI\", Helvetica, Arial, sans-serif;\n font-size: 9px;\n line-height: 1;\n color: var(--muted);\n padding-right: 2px;\n }\n .gh-cal-days span {\n height: var(--gh-cell-size);\n display: flex;\n align-items: center;\n }\n .gh-cal-days span:empty { visibility: hidden; }\n .gh-cal-months {\n grid-area: months;\n display: grid;\n grid-template-columns: repeat(var(--gh-weeks), var(--gh-cell-size));\n gap: var(--gh-cell-gap);\n height: 14px;\n align-items: end;\n font-family: ui-sans-serif, system-ui, -apple-system, \"Segoe UI\", Helvetica, Arial, sans-serif;\n font-size: 9px;\n line-height: 1;\n color: var(--muted);\n }\n .gh-cal-month {\n grid-column: span 1;\n white-space: nowrap;\n overflow: visible;\n }\n .gh-cal-weeks {\n grid-area: weeks;\n display: grid;\n grid-template-columns: repeat(var(--gh-weeks), var(--gh-cell-size));\n grid-template-rows: repeat(7, var(--gh-cell-size));\n gap: var(--gh-cell-gap);\n grid-auto-flow: column;\n }\n .gh-cal-cell {\n width: var(--gh-cell-size);\n height: var(--gh-cell-size);\n border-radius: 2px;\n background: var(--gh-cell-0);\n display: block;\n padding: 0;\n margin: 0;\n appearance: none;\n font: inherit;\n cursor: default;\n transition: transform 0.1s ease, box-shadow 0.1s ease, outline 0.1s ease;\n }\n .gh-cal-cell[data-date] {\n cursor: pointer;\n }\n .gh-cal-cell[data-date]:hover,\n .gh-cal-cell[data-date]:focus-visible {\n transform: scale(1.45);\n z-index: 5;\n position: relative;\n outline: 2px solid var(--accent);\n outline-offset: 1px;\n box-shadow: 0 0 0 1px color-mix(in srgb, var(--panel) 80%, transparent);\n }\n .gh-cal-cell[data-level=\"1\"] { background: var(--gh-cell-1); }\n .gh-cal-cell[data-level=\"2\"] { background: var(--gh-cell-2); }\n .gh-cal-cell[data-level=\"3\"] { background: var(--gh-cell-3); }\n .gh-cal-cell[data-level=\"4\"] { background: var(--gh-cell-4); }\n .gh-cal-cell[data-level=\"0\"] { background: var(--gh-cell-0); border: 1px solid color-mix(in srgb, var(--line) 70%, transparent); }\n .gh-cal-cell--pad {\n pointer-events: none;\n border: none;\n }\n .gh-cal-legend {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: 4px;\n margin-top: 12px;\n font-family: ui-sans-serif, system-ui, -apple-system, \"Segoe UI\", Helvetica, Arial, sans-serif;\n font-size: 11px;\n color: var(--muted);\n }\n .gh-cal-legend-scale {\n display: inline-flex;\n gap: var(--gh-cell-gap);\n align-items: center;\n margin: 0 2px;\n }\n .gh-cal-legend-scale i {\n width: var(--gh-cell-size);\n height: var(--gh-cell-size);\n border-radius: 2px;\n display: block;\n font-style: normal;\n background: var(--gh-cell-0);\n }\n .gh-cal-legend-scale i[data-level=\"1\"] { background: var(--gh-cell-1); }\n .gh-cal-legend-scale i[data-level=\"2\"] { background: var(--gh-cell-2); }\n .gh-cal-legend-scale i[data-level=\"3\"] { background: var(--gh-cell-3); }\n .gh-cal-legend-scale i[data-level=\"4\"] { background: var(--gh-cell-4); }\n\n";
|
|
4
3
|
export declare function renderStorySections(data: ReportData): string;
|
|
5
4
|
export declare function storyNavLinks(data: ReportData): string;
|
|
6
5
|
export declare function renderStoryHeadline(data: ReportData): string;
|
package/dist/src/report-story.js
CHANGED
|
@@ -43,331 +43,7 @@ export const GH_CONTRIB_SCRIPT = `
|
|
|
43
43
|
})();
|
|
44
44
|
`;
|
|
45
45
|
const CHAPTER_GAP_DAYS = 7;
|
|
46
|
-
|
|
47
|
-
#s-wrapped, #s-personas, #s-chapters, #s-calendar { scroll-margin-top: 76px; }
|
|
48
|
-
.story-headline {
|
|
49
|
-
margin: 0 0 14px;
|
|
50
|
-
font-size: clamp(17px, 2.5vw, 21px);
|
|
51
|
-
line-height: 1.55;
|
|
52
|
-
font-weight: 650;
|
|
53
|
-
color: var(--ink);
|
|
54
|
-
max-width: 48ch;
|
|
55
|
-
}
|
|
56
|
-
.wrapped-section { margin-bottom: 20px; }
|
|
57
|
-
.wrapped-section h2 { margin: 0 0 6px; font-size: 20px; font-weight: 800; letter-spacing: -0.02em; }
|
|
58
|
-
.wrapped-lede { margin: 0 0 14px; font-size: 13px; color: var(--muted); line-height: 1.5; }
|
|
59
|
-
.wrapped-deck {
|
|
60
|
-
display: grid;
|
|
61
|
-
gap: 12px;
|
|
62
|
-
grid-template-columns: repeat(auto-fill, minmax(min(100%, 220px), 1fr));
|
|
63
|
-
padding: 0;
|
|
64
|
-
}
|
|
65
|
-
.wrapped-card {
|
|
66
|
-
border-radius: 18px;
|
|
67
|
-
border: 1px solid var(--line);
|
|
68
|
-
padding: 22px 20px;
|
|
69
|
-
min-height: 200px;
|
|
70
|
-
display: flex;
|
|
71
|
-
flex-direction: column;
|
|
72
|
-
justify-content: flex-end;
|
|
73
|
-
background: linear-gradient(155deg, rgba(15, 107, 92, 0.14), rgba(196, 92, 42, 0.08));
|
|
74
|
-
box-shadow: var(--shadow);
|
|
75
|
-
position: relative;
|
|
76
|
-
overflow: hidden;
|
|
77
|
-
}
|
|
78
|
-
.wrapped-card::before {
|
|
79
|
-
content: attr(data-emoji);
|
|
80
|
-
position: absolute;
|
|
81
|
-
top: 12px;
|
|
82
|
-
right: 14px;
|
|
83
|
-
font-size: 2.4rem;
|
|
84
|
-
opacity: 0.35;
|
|
85
|
-
line-height: 1;
|
|
86
|
-
}
|
|
87
|
-
.wrapped-card-kicker {
|
|
88
|
-
font-size: 11px;
|
|
89
|
-
font-weight: 800;
|
|
90
|
-
letter-spacing: 0.06em;
|
|
91
|
-
text-transform: uppercase;
|
|
92
|
-
color: var(--muted);
|
|
93
|
-
margin: 0 0 6px;
|
|
94
|
-
}
|
|
95
|
-
.wrapped-card-stat {
|
|
96
|
-
margin: 0;
|
|
97
|
-
font-size: clamp(32px, 6vw, 44px);
|
|
98
|
-
font-weight: 900;
|
|
99
|
-
letter-spacing: -0.04em;
|
|
100
|
-
line-height: 1.05;
|
|
101
|
-
color: var(--ink);
|
|
102
|
-
word-break: break-word;
|
|
103
|
-
}
|
|
104
|
-
.wrapped-card-sub {
|
|
105
|
-
margin: 10px 0 0;
|
|
106
|
-
font-size: 13px;
|
|
107
|
-
line-height: 1.5;
|
|
108
|
-
color: var(--muted);
|
|
109
|
-
}
|
|
110
|
-
.persona-grid {
|
|
111
|
-
display: grid;
|
|
112
|
-
gap: 10px;
|
|
113
|
-
grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
|
|
114
|
-
}
|
|
115
|
-
.persona-chip {
|
|
116
|
-
padding: 12px 14px;
|
|
117
|
-
border-radius: 12px;
|
|
118
|
-
border: 1px solid var(--line);
|
|
119
|
-
background: var(--panel);
|
|
120
|
-
}
|
|
121
|
-
.persona-chip strong {
|
|
122
|
-
display: block;
|
|
123
|
-
font-size: 14px;
|
|
124
|
-
color: var(--ink);
|
|
125
|
-
margin-bottom: 4px;
|
|
126
|
-
}
|
|
127
|
-
.persona-chip em {
|
|
128
|
-
display: block;
|
|
129
|
-
font-style: normal;
|
|
130
|
-
font-size: 12px;
|
|
131
|
-
font-weight: 800;
|
|
132
|
-
color: var(--accent);
|
|
133
|
-
margin-bottom: 4px;
|
|
134
|
-
}
|
|
135
|
-
.persona-chip span { font-size: 11px; color: var(--muted); line-height: 1.4; }
|
|
136
|
-
.chapter-list { display: grid; gap: 10px; margin: 0; padding: 0; list-style: none; }
|
|
137
|
-
.chapter-item {
|
|
138
|
-
display: grid;
|
|
139
|
-
grid-template-columns: auto 1fr auto;
|
|
140
|
-
gap: 10px 14px;
|
|
141
|
-
align-items: center;
|
|
142
|
-
padding: 14px 16px;
|
|
143
|
-
border-radius: 12px;
|
|
144
|
-
border: 1px solid var(--line);
|
|
145
|
-
background: var(--panel);
|
|
146
|
-
}
|
|
147
|
-
@media (max-width: 560px) {
|
|
148
|
-
.chapter-item { grid-template-columns: auto 1fr; }
|
|
149
|
-
.chapter-item .chapter-stat { grid-column: 1 / -1; text-align: left; }
|
|
150
|
-
}
|
|
151
|
-
.chapter-badge {
|
|
152
|
-
font-size: 12px;
|
|
153
|
-
font-weight: 900;
|
|
154
|
-
color: var(--accent);
|
|
155
|
-
min-width: 2.5rem;
|
|
156
|
-
}
|
|
157
|
-
.chapter-meta { font-size: 13px; line-height: 1.45; color: var(--ink); }
|
|
158
|
-
.chapter-meta small { display: block; color: var(--muted); font-size: 11px; margin-top: 4px; }
|
|
159
|
-
.chapter-stat { text-align: right; font-size: 13px; font-weight: 750; color: var(--muted); font-variant-numeric: tabular-nums; }
|
|
160
|
-
|
|
161
|
-
/* GitHub contribution graph (잔디) */
|
|
162
|
-
:root {
|
|
163
|
-
--gh-cell-size: 11px;
|
|
164
|
-
--gh-cell-gap: 3px;
|
|
165
|
-
--gh-cell-0: #ebedf0;
|
|
166
|
-
--gh-cell-1: #9be9a8;
|
|
167
|
-
--gh-cell-2: #40c463;
|
|
168
|
-
--gh-cell-3: #30a14e;
|
|
169
|
-
--gh-cell-4: #216e39;
|
|
170
|
-
}
|
|
171
|
-
@media (prefers-color-scheme: dark) {
|
|
172
|
-
:root:not([data-theme="light"]) {
|
|
173
|
-
--gh-cell-0: #161b22;
|
|
174
|
-
--gh-cell-1: #0e4429;
|
|
175
|
-
--gh-cell-2: #006d32;
|
|
176
|
-
--gh-cell-3: #26a641;
|
|
177
|
-
--gh-cell-4: #39d353;
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
:root[data-theme="dark"] {
|
|
181
|
-
--gh-cell-0: #161b22;
|
|
182
|
-
--gh-cell-1: #0e4429;
|
|
183
|
-
--gh-cell-2: #006d32;
|
|
184
|
-
--gh-cell-3: #26a641;
|
|
185
|
-
--gh-cell-4: #39d353;
|
|
186
|
-
}
|
|
187
|
-
:root[data-theme="light"] {
|
|
188
|
-
--gh-cell-0: #ebedf0;
|
|
189
|
-
--gh-cell-1: #9be9a8;
|
|
190
|
-
--gh-cell-2: #40c463;
|
|
191
|
-
--gh-cell-3: #30a14e;
|
|
192
|
-
--gh-cell-4: #216e39;
|
|
193
|
-
}
|
|
194
|
-
.gh-contrib {
|
|
195
|
-
position: relative;
|
|
196
|
-
border: 1px solid var(--line);
|
|
197
|
-
border-radius: 12px;
|
|
198
|
-
padding: 16px 18px 14px;
|
|
199
|
-
background: var(--panel);
|
|
200
|
-
}
|
|
201
|
-
.gh-cal-tooltip {
|
|
202
|
-
position: absolute;
|
|
203
|
-
z-index: 20;
|
|
204
|
-
transform: translate(-50%, -100%);
|
|
205
|
-
padding: 6px 10px;
|
|
206
|
-
border-radius: 8px;
|
|
207
|
-
font-size: 12px;
|
|
208
|
-
font-weight: 650;
|
|
209
|
-
line-height: 1.35;
|
|
210
|
-
white-space: nowrap;
|
|
211
|
-
color: #fff;
|
|
212
|
-
background: #24292f;
|
|
213
|
-
box-shadow: 0 6px 18px rgba(0, 0, 0, 0.18);
|
|
214
|
-
pointer-events: none;
|
|
215
|
-
opacity: 0;
|
|
216
|
-
transition: opacity 0.12s ease;
|
|
217
|
-
}
|
|
218
|
-
.gh-contrib.gh-tip-on .gh-cal-tooltip { opacity: 1; }
|
|
219
|
-
:root[data-theme="dark"] .gh-cal-tooltip {
|
|
220
|
-
background: #f0f6fc;
|
|
221
|
-
color: #0d1117;
|
|
222
|
-
}
|
|
223
|
-
@media (prefers-color-scheme: dark) {
|
|
224
|
-
:root:not([data-theme="light"]) .gh-cal-tooltip {
|
|
225
|
-
background: #f0f6fc;
|
|
226
|
-
color: #0d1117;
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
.gh-contrib-summary {
|
|
230
|
-
margin: 0 0 12px;
|
|
231
|
-
font-size: 14px;
|
|
232
|
-
line-height: 1.4;
|
|
233
|
-
color: var(--muted);
|
|
234
|
-
}
|
|
235
|
-
.gh-contrib-summary strong {
|
|
236
|
-
font-weight: 600;
|
|
237
|
-
color: var(--ink);
|
|
238
|
-
font-variant-numeric: tabular-nums;
|
|
239
|
-
}
|
|
240
|
-
.gh-contrib-span {
|
|
241
|
-
display: block;
|
|
242
|
-
margin-top: 4px;
|
|
243
|
-
font-size: 11px;
|
|
244
|
-
color: var(--muted);
|
|
245
|
-
}
|
|
246
|
-
.gh-cal-scroll {
|
|
247
|
-
overflow-x: auto;
|
|
248
|
-
overflow-y: hidden;
|
|
249
|
-
max-width: 100%;
|
|
250
|
-
-webkit-overflow-scrolling: touch;
|
|
251
|
-
padding-bottom: 2px;
|
|
252
|
-
}
|
|
253
|
-
.gh-cal-graph {
|
|
254
|
-
display: grid;
|
|
255
|
-
grid-template-areas:
|
|
256
|
-
". months"
|
|
257
|
-
"days weeks";
|
|
258
|
-
grid-template-columns: max-content max-content;
|
|
259
|
-
column-gap: 8px;
|
|
260
|
-
row-gap: 4px;
|
|
261
|
-
width: max-content;
|
|
262
|
-
min-width: min(100%, max-content);
|
|
263
|
-
}
|
|
264
|
-
.gh-cal-days {
|
|
265
|
-
grid-area: days;
|
|
266
|
-
display: grid;
|
|
267
|
-
grid-template-rows: repeat(7, var(--gh-cell-size));
|
|
268
|
-
gap: var(--gh-cell-gap);
|
|
269
|
-
align-items: center;
|
|
270
|
-
font-family: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Helvetica, Arial, sans-serif;
|
|
271
|
-
font-size: 9px;
|
|
272
|
-
line-height: 1;
|
|
273
|
-
color: var(--muted);
|
|
274
|
-
padding-right: 2px;
|
|
275
|
-
}
|
|
276
|
-
.gh-cal-days span {
|
|
277
|
-
height: var(--gh-cell-size);
|
|
278
|
-
display: flex;
|
|
279
|
-
align-items: center;
|
|
280
|
-
}
|
|
281
|
-
.gh-cal-days span:empty { visibility: hidden; }
|
|
282
|
-
.gh-cal-months {
|
|
283
|
-
grid-area: months;
|
|
284
|
-
display: grid;
|
|
285
|
-
grid-template-columns: repeat(var(--gh-weeks), var(--gh-cell-size));
|
|
286
|
-
gap: var(--gh-cell-gap);
|
|
287
|
-
height: 14px;
|
|
288
|
-
align-items: end;
|
|
289
|
-
font-family: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Helvetica, Arial, sans-serif;
|
|
290
|
-
font-size: 9px;
|
|
291
|
-
line-height: 1;
|
|
292
|
-
color: var(--muted);
|
|
293
|
-
}
|
|
294
|
-
.gh-cal-month {
|
|
295
|
-
grid-column: span 1;
|
|
296
|
-
white-space: nowrap;
|
|
297
|
-
overflow: visible;
|
|
298
|
-
}
|
|
299
|
-
.gh-cal-weeks {
|
|
300
|
-
grid-area: weeks;
|
|
301
|
-
display: grid;
|
|
302
|
-
grid-template-columns: repeat(var(--gh-weeks), var(--gh-cell-size));
|
|
303
|
-
grid-template-rows: repeat(7, var(--gh-cell-size));
|
|
304
|
-
gap: var(--gh-cell-gap);
|
|
305
|
-
grid-auto-flow: column;
|
|
306
|
-
}
|
|
307
|
-
.gh-cal-cell {
|
|
308
|
-
width: var(--gh-cell-size);
|
|
309
|
-
height: var(--gh-cell-size);
|
|
310
|
-
border-radius: 2px;
|
|
311
|
-
background: var(--gh-cell-0);
|
|
312
|
-
display: block;
|
|
313
|
-
padding: 0;
|
|
314
|
-
margin: 0;
|
|
315
|
-
appearance: none;
|
|
316
|
-
font: inherit;
|
|
317
|
-
cursor: default;
|
|
318
|
-
transition: transform 0.1s ease, box-shadow 0.1s ease, outline 0.1s ease;
|
|
319
|
-
}
|
|
320
|
-
.gh-cal-cell[data-date] {
|
|
321
|
-
cursor: pointer;
|
|
322
|
-
}
|
|
323
|
-
.gh-cal-cell[data-date]:hover,
|
|
324
|
-
.gh-cal-cell[data-date]:focus-visible {
|
|
325
|
-
transform: scale(1.45);
|
|
326
|
-
z-index: 5;
|
|
327
|
-
position: relative;
|
|
328
|
-
outline: 2px solid var(--accent);
|
|
329
|
-
outline-offset: 1px;
|
|
330
|
-
box-shadow: 0 0 0 1px color-mix(in srgb, var(--panel) 80%, transparent);
|
|
331
|
-
}
|
|
332
|
-
.gh-cal-cell[data-level="1"] { background: var(--gh-cell-1); }
|
|
333
|
-
.gh-cal-cell[data-level="2"] { background: var(--gh-cell-2); }
|
|
334
|
-
.gh-cal-cell[data-level="3"] { background: var(--gh-cell-3); }
|
|
335
|
-
.gh-cal-cell[data-level="4"] { background: var(--gh-cell-4); }
|
|
336
|
-
.gh-cal-cell[data-level="0"] { background: var(--gh-cell-0); border: 1px solid color-mix(in srgb, var(--line) 70%, transparent); }
|
|
337
|
-
.gh-cal-cell--pad {
|
|
338
|
-
pointer-events: none;
|
|
339
|
-
border: none;
|
|
340
|
-
}
|
|
341
|
-
.gh-cal-legend {
|
|
342
|
-
display: flex;
|
|
343
|
-
align-items: center;
|
|
344
|
-
justify-content: flex-end;
|
|
345
|
-
gap: 4px;
|
|
346
|
-
margin-top: 12px;
|
|
347
|
-
font-family: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Helvetica, Arial, sans-serif;
|
|
348
|
-
font-size: 11px;
|
|
349
|
-
color: var(--muted);
|
|
350
|
-
}
|
|
351
|
-
.gh-cal-legend-scale {
|
|
352
|
-
display: inline-flex;
|
|
353
|
-
gap: var(--gh-cell-gap);
|
|
354
|
-
align-items: center;
|
|
355
|
-
margin: 0 2px;
|
|
356
|
-
}
|
|
357
|
-
.gh-cal-legend-scale i {
|
|
358
|
-
width: var(--gh-cell-size);
|
|
359
|
-
height: var(--gh-cell-size);
|
|
360
|
-
border-radius: 2px;
|
|
361
|
-
display: block;
|
|
362
|
-
font-style: normal;
|
|
363
|
-
background: var(--gh-cell-0);
|
|
364
|
-
}
|
|
365
|
-
.gh-cal-legend-scale i[data-level="1"] { background: var(--gh-cell-1); }
|
|
366
|
-
.gh-cal-legend-scale i[data-level="2"] { background: var(--gh-cell-2); }
|
|
367
|
-
.gh-cal-legend-scale i[data-level="3"] { background: var(--gh-cell-3); }
|
|
368
|
-
.gh-cal-legend-scale i[data-level="4"] { background: var(--gh-cell-4); }
|
|
369
|
-
|
|
370
|
-
`;
|
|
46
|
+
/** @deprecated styles live in src/report/css — bundled via report-styles.ts */
|
|
371
47
|
function renderGitHubCalendar(data) {
|
|
372
48
|
const s = data.story;
|
|
373
49
|
const weekCount = s.calendarWeeks.length;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"report-story.js","sourceRoot":"","sources":["../../src/report-story.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEjF,MAAM,CAAC,MAAM,iBAAiB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0ChC,CAAC;AAEF,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAE3B
|
|
1
|
+
{"version":3,"file":"report-story.js","sourceRoot":"","sources":["../../src/report-story.ts"],"names":[],"mappings":"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"}
|