@hagicode/hagilight-starlight 0.1.0-dev.148.1.e0c630e
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/AIDisclosureNotice.astro +12 -0
- package/ArticlePromotion.astro +630 -0
- package/ArticlePromotionPicker.astro +9 -0
- package/ContentLayoutToggle.astro +31 -0
- package/Footer.astro +201 -0
- package/Header.astro +131 -0
- package/LanguageChooser.astro +386 -0
- package/MarkdownContent.astro +45 -0
- package/NotFoundHero.astro +44 -0
- package/PageTitle.astro +7 -0
- package/PromotoFooter.astro +7 -0
- package/README.md +178 -0
- package/SEOHead.astro +67 -0
- package/ThemeSelect.astro +176 -0
- package/assets/showcase/hero-avatar.webp +0 -0
- package/assets/showcase/heroes.webp +0 -0
- package/assets/showcase/manifest.json +333 -0
- package/assets/showcase/pillar-efficient.svg +1 -0
- package/assets/showcase/pillar-fun.svg +1 -0
- package/assets/showcase/pillar-smart.svg +1 -0
- package/assets/showcase/proposal-workflow.webp +0 -0
- package/assets/showcase/workbench.webp +0 -0
- package/content-width.css +81 -0
- package/dist/ai-disclosures.d.ts +31 -0
- package/dist/ai-disclosures.js +105 -0
- package/dist/article-promotion-copy/de-DE.d.ts +34 -0
- package/dist/article-promotion-copy/de-DE.js +43 -0
- package/dist/article-promotion-copy/en-US.d.ts +34 -0
- package/dist/article-promotion-copy/en-US.js +43 -0
- package/dist/article-promotion-copy/es-ES.d.ts +34 -0
- package/dist/article-promotion-copy/es-ES.js +43 -0
- package/dist/article-promotion-copy/fr-FR.d.ts +34 -0
- package/dist/article-promotion-copy/fr-FR.js +43 -0
- package/dist/article-promotion-copy/index.d.ts +32 -0
- package/dist/article-promotion-copy/index.js +50 -0
- package/dist/article-promotion-copy/ja-JP.d.ts +34 -0
- package/dist/article-promotion-copy/ja-JP.js +43 -0
- package/dist/article-promotion-copy/ko-KR.d.ts +34 -0
- package/dist/article-promotion-copy/ko-KR.js +43 -0
- package/dist/article-promotion-copy/pt-BR.d.ts +34 -0
- package/dist/article-promotion-copy/pt-BR.js +43 -0
- package/dist/article-promotion-copy/ru-RU.d.ts +34 -0
- package/dist/article-promotion-copy/ru-RU.js +43 -0
- package/dist/article-promotion-copy/zh-CN.d.ts +34 -0
- package/dist/article-promotion-copy/zh-CN.js +43 -0
- package/dist/article-promotion-copy/zh-Hant.d.ts +34 -0
- package/dist/article-promotion-copy/zh-Hant.js +43 -0
- package/dist/article-promotion.d.ts +40 -0
- package/dist/article-promotion.js +14 -0
- package/dist/content-width-i18n.d.ts +6 -0
- package/dist/content-width-i18n.js +15 -0
- package/dist/content-width.d.ts +5 -0
- package/dist/content-width.js +42 -0
- package/dist/index.d.ts +105 -0
- package/dist/index.js +583 -0
- package/dist/language-routing.d.ts +18 -0
- package/dist/language-routing.js +95 -0
- package/dist/locales.d.ts +48 -0
- package/dist/locales.js +13 -0
- package/dist/not-found.d.ts +9 -0
- package/dist/not-found.js +28 -0
- package/dist/rss-renderer.d.ts +14 -0
- package/dist/rss-renderer.js +30 -0
- package/dist/rss-utils.d.ts +27 -0
- package/dist/rss-utils.js +65 -0
- package/dist/schema.d.ts +32 -0
- package/dist/schema.js +25 -0
- package/dist/seo-utils.d.ts +74 -0
- package/dist/seo-utils.js +219 -0
- package/dist/showcase.d.ts +6 -0
- package/dist/showcase.js +5 -0
- package/dist/site-metadata.d.ts +38 -0
- package/dist/site-metadata.js +109 -0
- package/dist/themes.d.ts +43 -0
- package/dist/themes.js +156 -0
- package/dist/windows-download.d.ts +4 -0
- package/dist/windows-download.js +22 -0
- package/package.json +88 -0
- package/rss.[language].xml.ts +20 -0
- package/rss.xml.ts +15 -0
- package/themes.css +160 -0
|
@@ -0,0 +1,333 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"budgets": {
|
|
4
|
+
"totalKiB": 768,
|
|
5
|
+
"rasterKiB": 200,
|
|
6
|
+
"svgKiB": 8
|
|
7
|
+
},
|
|
8
|
+
"assets": [
|
|
9
|
+
{
|
|
10
|
+
"id": "workbench",
|
|
11
|
+
"kind": "sourced",
|
|
12
|
+
"file": "workbench.webp",
|
|
13
|
+
"width": 1600,
|
|
14
|
+
"height": 845,
|
|
15
|
+
"bytes": 57630,
|
|
16
|
+
"source": {
|
|
17
|
+
"repo": "docs",
|
|
18
|
+
"path": "src/content/docs/img/screenshots/shared/kanban-view/original.png"
|
|
19
|
+
},
|
|
20
|
+
"transforms": [
|
|
21
|
+
"crop 2015x1064+0+0 of the 3839x2159 original (top-left: header, session rail, Pending/In Progress/Archived columns)",
|
|
22
|
+
"resize to 1600 px wide",
|
|
23
|
+
"webp quality 90"
|
|
24
|
+
],
|
|
25
|
+
"audit": {
|
|
26
|
+
"verdict": "pass-after-crop",
|
|
27
|
+
"checkedOn": "2026-10-08",
|
|
28
|
+
"notes": "Current HagiCode brand, English UI with Chinese session titles. The crop removes the bottom status bar (Steam wishlist strip) and the Pending card whose title mentions Steam. No paths, credentials, or personal data in the kept region. The full original fails the audit (retired Steam channel)."
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"id": "proposal-workflow",
|
|
33
|
+
"kind": "sourced",
|
|
34
|
+
"file": "proposal-workflow.webp",
|
|
35
|
+
"width": 1600,
|
|
36
|
+
"height": 340,
|
|
37
|
+
"bytes": 21666,
|
|
38
|
+
"source": {
|
|
39
|
+
"repo": "docs",
|
|
40
|
+
"path": "src/content/docs/img/screenshots/shared/classic-proposal-view/original.png"
|
|
41
|
+
},
|
|
42
|
+
"transforms": [
|
|
43
|
+
"crop 3128x665+670+215 of the 3839x2159 original (proposal stage stepper and the Execution Completed card)",
|
|
44
|
+
"resize to 1600 px wide",
|
|
45
|
+
"webp quality 90"
|
|
46
|
+
],
|
|
47
|
+
"audit": {
|
|
48
|
+
"verdict": "pass-after-crop",
|
|
49
|
+
"checkedOn": "2026-10-08",
|
|
50
|
+
"notes": "English UI. The crop drops the session sidebar (Steam in a session title), the status bar (Steam wishlist strip), and the idea folder row, which shows a local user path. The kept region shows only the proposal stage stepper and the Archive Plan action."
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"id": "heroes",
|
|
55
|
+
"kind": "sourced",
|
|
56
|
+
"file": "heroes.webp",
|
|
57
|
+
"width": 1200,
|
|
58
|
+
"height": 1111,
|
|
59
|
+
"bytes": 101748,
|
|
60
|
+
"source": {
|
|
61
|
+
"repo": "docs",
|
|
62
|
+
"path": "src/content/docs/img/screenshots/shared/kanban-view/original.png"
|
|
63
|
+
},
|
|
64
|
+
"transforms": [
|
|
65
|
+
"crop 1302x1205+2035+260 of the 3839x2159 original (Ember Keep hero panel, three hero cards)",
|
|
66
|
+
"resize to 1200 px wide",
|
|
67
|
+
"webp quality 88"
|
|
68
|
+
],
|
|
69
|
+
"audit": {
|
|
70
|
+
"verdict": "pass-after-crop",
|
|
71
|
+
"checkedOn": "2026-10-08",
|
|
72
|
+
"notes": "Current HagiCode UI, English panel text with two Chinese hero names. Hero portraits are the product's own art; no third-party brand, no private data, no Steam content in the kept region."
|
|
73
|
+
}
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
"id": "hero-avatar",
|
|
77
|
+
"kind": "sourced",
|
|
78
|
+
"file": "hero-avatar.webp",
|
|
79
|
+
"width": 1200,
|
|
80
|
+
"height": 1200,
|
|
81
|
+
"bytes": 89944,
|
|
82
|
+
"source": {
|
|
83
|
+
"repo": "img-gen",
|
|
84
|
+
"album": "hero-avatars",
|
|
85
|
+
"objectKey": "hero-avatars/ember-01.avif",
|
|
86
|
+
"width": 1024,
|
|
87
|
+
"height": 1024,
|
|
88
|
+
"bytes": 36086
|
|
89
|
+
},
|
|
90
|
+
"transforms": [
|
|
91
|
+
"upscale 1024x1024 to 1200x1200 (lanczos3); the R2 source is 1024 px and the showcase minimum is 1200 px",
|
|
92
|
+
"webp quality 88"
|
|
93
|
+
],
|
|
94
|
+
"audit": {
|
|
95
|
+
"verdict": "pass",
|
|
96
|
+
"checkedOn": "2026-10-21",
|
|
97
|
+
"notes": "Crowned eagle illustration, text-free, from the hero-avatars album. Captioned and labeled as an illustration, not a product screenshot. No retired channel, personal data or brand currency seen. The random pool shares the footer pool, excludes both defaults, and is the 46 sampled entries of the lead audit, each at or under 40 KiB."
|
|
98
|
+
},
|
|
99
|
+
"pool": {
|
|
100
|
+
"album": "hero-avatars",
|
|
101
|
+
"maxBytes": 204800,
|
|
102
|
+
"entries": [
|
|
103
|
+
{
|
|
104
|
+
"key": "arctic-expedition-06",
|
|
105
|
+
"bytes": 40478
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
"key": "aurora-12",
|
|
109
|
+
"bytes": 33595
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
"key": "cat-abstract-08",
|
|
113
|
+
"bytes": 17354
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
"key": "cat-cyber-05",
|
|
117
|
+
"bytes": 27601
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
"key": "cat-line-01",
|
|
121
|
+
"bytes": 32825
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
"key": "cat-line-11",
|
|
125
|
+
"bytes": 26030
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
"key": "cat-oil-08",
|
|
129
|
+
"bytes": 39849
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
"key": "cat-paper-07",
|
|
133
|
+
"bytes": 35870
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
"key": "cat-sticker-03",
|
|
137
|
+
"bytes": 31789
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
"key": "cat-sticker-11",
|
|
141
|
+
"bytes": 38976
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
"key": "cat-storybook-07",
|
|
145
|
+
"bytes": 31257
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
"key": "civic-advocates-02",
|
|
149
|
+
"bytes": 17846
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
"key": "civic-advocates-10",
|
|
153
|
+
"bytes": 20630
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
"key": "culinary-brigade-06",
|
|
157
|
+
"bytes": 24718
|
|
158
|
+
},
|
|
159
|
+
{
|
|
160
|
+
"key": "desert-caravan-02",
|
|
161
|
+
"bytes": 37153
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
"key": "desert-caravan-11",
|
|
165
|
+
"bytes": 34462
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
"key": "dream-post-office-01",
|
|
169
|
+
"bytes": 30637
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
"key": "dream-post-office-09",
|
|
173
|
+
"bytes": 35062
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
"key": "goblin-market-01",
|
|
177
|
+
"bytes": 34100
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
"key": "goblin-market-10",
|
|
181
|
+
"bytes": 33729
|
|
182
|
+
},
|
|
183
|
+
{
|
|
184
|
+
"key": "haunted-manor-07",
|
|
185
|
+
"bytes": 31559
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
"key": "kite-festival-09",
|
|
189
|
+
"bytes": 39547
|
|
190
|
+
},
|
|
191
|
+
{
|
|
192
|
+
"key": "mecha-academy-06",
|
|
193
|
+
"bytes": 34814
|
|
194
|
+
},
|
|
195
|
+
{
|
|
196
|
+
"key": "metro-conductors-02",
|
|
197
|
+
"bytes": 31703
|
|
198
|
+
},
|
|
199
|
+
{
|
|
200
|
+
"key": "metro-conductors-10",
|
|
201
|
+
"bytes": 21782
|
|
202
|
+
},
|
|
203
|
+
{
|
|
204
|
+
"key": "mountain-monastery-11",
|
|
205
|
+
"bytes": 32466
|
|
206
|
+
},
|
|
207
|
+
{
|
|
208
|
+
"key": "nebula-11",
|
|
209
|
+
"bytes": 38449
|
|
210
|
+
},
|
|
211
|
+
{
|
|
212
|
+
"key": "noir-detective-04",
|
|
213
|
+
"bytes": 21068
|
|
214
|
+
},
|
|
215
|
+
{
|
|
216
|
+
"key": "olympian-pantheon-01",
|
|
217
|
+
"bytes": 26515
|
|
218
|
+
},
|
|
219
|
+
{
|
|
220
|
+
"key": "olympian-pantheon-09",
|
|
221
|
+
"bytes": 32541
|
|
222
|
+
},
|
|
223
|
+
{
|
|
224
|
+
"key": "orbital-station-10",
|
|
225
|
+
"bytes": 38227
|
|
226
|
+
},
|
|
227
|
+
{
|
|
228
|
+
"key": "orchestral-guild-08",
|
|
229
|
+
"bytes": 30142
|
|
230
|
+
},
|
|
231
|
+
{
|
|
232
|
+
"key": "porcelain-tea-salon-04",
|
|
233
|
+
"bytes": 31435
|
|
234
|
+
},
|
|
235
|
+
{
|
|
236
|
+
"key": "puppet-theater-02",
|
|
237
|
+
"bytes": 28303
|
|
238
|
+
},
|
|
239
|
+
{
|
|
240
|
+
"key": "puppet-theater-11",
|
|
241
|
+
"bytes": 36914
|
|
242
|
+
},
|
|
243
|
+
{
|
|
244
|
+
"key": "robot-foundry-07",
|
|
245
|
+
"bytes": 30926
|
|
246
|
+
},
|
|
247
|
+
{
|
|
248
|
+
"key": "royal-03",
|
|
249
|
+
"bytes": 26449
|
|
250
|
+
},
|
|
251
|
+
{
|
|
252
|
+
"key": "royal-11",
|
|
253
|
+
"bytes": 31173
|
|
254
|
+
},
|
|
255
|
+
{
|
|
256
|
+
"key": "silent-film-studio-07",
|
|
257
|
+
"bytes": 23298
|
|
258
|
+
},
|
|
259
|
+
{
|
|
260
|
+
"key": "storm-01",
|
|
261
|
+
"bytes": 26413
|
|
262
|
+
},
|
|
263
|
+
{
|
|
264
|
+
"key": "storm-09",
|
|
265
|
+
"bytes": 33785
|
|
266
|
+
},
|
|
267
|
+
{
|
|
268
|
+
"key": "storm-observatory-05",
|
|
269
|
+
"bytes": 40593
|
|
270
|
+
},
|
|
271
|
+
{
|
|
272
|
+
"key": "sugar-kingdom-06",
|
|
273
|
+
"bytes": 28629
|
|
274
|
+
},
|
|
275
|
+
{
|
|
276
|
+
"key": "tide-07",
|
|
277
|
+
"bytes": 37237
|
|
278
|
+
},
|
|
279
|
+
{
|
|
280
|
+
"key": "vampire-court-09",
|
|
281
|
+
"bytes": 39294
|
|
282
|
+
},
|
|
283
|
+
{
|
|
284
|
+
"key": "volcanic-rescue-08",
|
|
285
|
+
"bytes": 31660
|
|
286
|
+
}
|
|
287
|
+
]
|
|
288
|
+
}
|
|
289
|
+
},
|
|
290
|
+
{
|
|
291
|
+
"id": "pillar-smart",
|
|
292
|
+
"kind": "svg",
|
|
293
|
+
"file": "pillar-smart.svg",
|
|
294
|
+
"width": 48,
|
|
295
|
+
"height": 48,
|
|
296
|
+
"bytes": 271,
|
|
297
|
+
"transforms": [],
|
|
298
|
+
"audit": {
|
|
299
|
+
"verdict": "pass",
|
|
300
|
+
"checkedOn": "2026-10-08",
|
|
301
|
+
"notes": "Hand-authored light bulb outline for the Smart card. No text, no logo, no third-party brand. Used as a CSS mask so the Starlight accent color applies."
|
|
302
|
+
}
|
|
303
|
+
},
|
|
304
|
+
{
|
|
305
|
+
"id": "pillar-efficient",
|
|
306
|
+
"kind": "svg",
|
|
307
|
+
"file": "pillar-efficient.svg",
|
|
308
|
+
"width": 48,
|
|
309
|
+
"height": 48,
|
|
310
|
+
"bytes": 281,
|
|
311
|
+
"transforms": [],
|
|
312
|
+
"audit": {
|
|
313
|
+
"verdict": "pass",
|
|
314
|
+
"checkedOn": "2026-10-08",
|
|
315
|
+
"notes": "Hand-authored three parallel arrows for the Efficient card. No text, no logo, no third-party brand. Used as a CSS mask so the Starlight accent color applies."
|
|
316
|
+
}
|
|
317
|
+
},
|
|
318
|
+
{
|
|
319
|
+
"id": "pillar-fun",
|
|
320
|
+
"kind": "svg",
|
|
321
|
+
"file": "pillar-fun.svg",
|
|
322
|
+
"width": 48,
|
|
323
|
+
"height": 48,
|
|
324
|
+
"bytes": 269,
|
|
325
|
+
"transforms": [],
|
|
326
|
+
"audit": {
|
|
327
|
+
"verdict": "pass",
|
|
328
|
+
"checkedOn": "2026-10-08",
|
|
329
|
+
"notes": "Hand-authored star outline for the Fun card. No text, no logo, no third-party brand. Used as a CSS mask so the Starlight accent color applies."
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
]
|
|
333
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" width="48" height="48" fill="none" stroke="#000" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><path d="M6 14h30M30 8l6 6-6 6"/><path d="M6 24h36M36 18l6 6-6 6"/><path d="M6 34h24M24 28l6 6-6 6"/></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" width="48" height="48" fill="none" stroke="#000" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><path d="M24 6l5.5 12 13 1.5-9.7 8.8 2.7 12.9L24 34l-11.5 7.2 2.7-12.9-9.7-8.8 13-1.5z"/></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" width="48" height="48" fill="none" stroke="#000" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><path d="M17 33c0-3-5-5-5-12a12 12 0 0 1 24 0c0 7-5 9-5 12z"/><path d="M18 39h12M20 44h8"/></svg>
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
@media (min-width: 50em) {
|
|
2
|
+
:root[data-hagilight-content-width='wide'] {
|
|
3
|
+
--sl-content-width: min(67.5rem, calc(100vw - 2rem));
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
.hagilight-content-width-toggle {
|
|
7
|
+
display: inline-flex;
|
|
8
|
+
gap: 0.25rem;
|
|
9
|
+
padding: 0.25rem;
|
|
10
|
+
border: 1px solid var(--sl-color-hairline);
|
|
11
|
+
border-radius: 0.5rem;
|
|
12
|
+
background: var(--sl-color-bg-sidebar);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.hagilight-content-width-toggle button {
|
|
16
|
+
border: 0;
|
|
17
|
+
border-radius: 0.25rem;
|
|
18
|
+
padding: 0.35rem 0.75rem;
|
|
19
|
+
color: var(--sl-color-text);
|
|
20
|
+
background: transparent;
|
|
21
|
+
cursor: pointer;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
.hagilight-content-width-toggle button[aria-pressed='true'] {
|
|
25
|
+
color: var(--sl-color-text-invert);
|
|
26
|
+
background: var(--sl-color-bg-accent);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
.hagilight-content-width-toggle button:focus-visible {
|
|
30
|
+
outline: 2px solid var(--sl-color-accent);
|
|
31
|
+
outline-offset: 2px;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
@media (max-width: 49.999em) {
|
|
36
|
+
.hagilight-content-width-toggle {
|
|
37
|
+
display: none;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
.hagilight-ai-disclosure {
|
|
42
|
+
border-inline-start: 0.25rem solid var(--sl-color-accent);
|
|
43
|
+
padding: 0.75rem 1rem;
|
|
44
|
+
color: var(--sl-color-text);
|
|
45
|
+
background: var(--sl-color-bg-sidebar);
|
|
46
|
+
font-size: var(--sl-text-sm);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.hagilight-ai-disclosure a {
|
|
50
|
+
margin-inline-start: 0.5rem;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/*
|
|
54
|
+
* Promoto card placement. The fixed card is centered in the content column, not in
|
|
55
|
+
* the viewport, so it never covers the sidebar or the table of contents. The
|
|
56
|
+
* geometry mirrors Starlight's own layout: a left sidebar from 50em, and from 72em
|
|
57
|
+
* a main pane of min(F - sidebar, content + (F - content - sidebar) / 2) for
|
|
58
|
+
* F = 100% - sidebar, with the content flush to its right edge inside the panel
|
|
59
|
+
* padding when a table of contents is shown.
|
|
60
|
+
*/
|
|
61
|
+
@media (min-width: 50em) {
|
|
62
|
+
[data-has-sidebar] {
|
|
63
|
+
--hagilight-promoto-inset-start: var(--sl-sidebar-width);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
@media (min-width: 72em) {
|
|
68
|
+
[data-has-sidebar][data-has-toc] {
|
|
69
|
+
--hagilight-promoto-main-width: min(
|
|
70
|
+
100% - 2 * var(--sl-sidebar-width),
|
|
71
|
+
var(--sl-content-width) + (100% - var(--sl-content-width) - 2 * var(--sl-sidebar-width)) / 2
|
|
72
|
+
);
|
|
73
|
+
--hagilight-promoto-inset-start: calc(
|
|
74
|
+
var(--sl-sidebar-width) +
|
|
75
|
+
max(var(--sl-content-pad-x), var(--hagilight-promoto-main-width) - var(--sl-content-pad-x) - var(--sl-content-width))
|
|
76
|
+
);
|
|
77
|
+
--hagilight-promoto-inset-end: calc(
|
|
78
|
+
100% - var(--sl-sidebar-width) - var(--hagilight-promoto-main-width) + var(--sl-content-pad-x)
|
|
79
|
+
);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export interface AIDisclosureCopy {
|
|
2
|
+
author: string;
|
|
3
|
+
translation: string;
|
|
4
|
+
source: string;
|
|
5
|
+
}
|
|
6
|
+
export interface AIDisclosureFlags {
|
|
7
|
+
isAITranslation: boolean;
|
|
8
|
+
isAIAuthor: boolean;
|
|
9
|
+
}
|
|
10
|
+
export interface AIDisclosureDefaults extends AIDisclosureFlags {
|
|
11
|
+
/** Locale route key of the original-language content, `root` by default. */
|
|
12
|
+
sourceLocale: string;
|
|
13
|
+
}
|
|
14
|
+
export declare const COPY: Readonly<Record<string, AIDisclosureCopy>>;
|
|
15
|
+
export declare function resolveAIDisclosureFlags(frontmatter: Partial<Record<keyof AIDisclosureFlags, unknown>>, defaults: AIDisclosureFlags): AIDisclosureFlags;
|
|
16
|
+
export declare function getAIDisclosureCopy(lang: string | undefined): AIDisclosureCopy;
|
|
17
|
+
export declare function getSourceEntryId(routeId: string, currentLocale: string | undefined, sourceLocale: string): string;
|
|
18
|
+
export declare function normalizeDocsEntryId(id: string): string;
|
|
19
|
+
export interface SourcePathOptions {
|
|
20
|
+
docs: readonly {
|
|
21
|
+
id: string;
|
|
22
|
+
}[];
|
|
23
|
+
routeId: string;
|
|
24
|
+
currentLocale: string | undefined;
|
|
25
|
+
sourceLocale: string;
|
|
26
|
+
pathname: string;
|
|
27
|
+
baseUrl: string;
|
|
28
|
+
}
|
|
29
|
+
export declare function getSourcePath({ docs, routeId, currentLocale, sourceLocale, pathname, baseUrl, }: SourcePathOptions): string | undefined;
|
|
30
|
+
export declare function isTranslationLocale(locale: string | undefined, sourceLocale: string): boolean;
|
|
31
|
+
export declare function buildSourcePathname(pathname: string, baseUrl: string, currentLocale: string | undefined, sourceLocale: string): string;
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
export const COPY = {
|
|
2
|
+
'de-DE': {
|
|
3
|
+
author: 'Dieser Inhalt wurde mit KI-Unterstützung erstellt. Bitte prüfen Sie wichtige Angaben.',
|
|
4
|
+
translation: 'Dieser Beitrag wurde mit KI übersetzt.',
|
|
5
|
+
source: 'Original ansehen',
|
|
6
|
+
},
|
|
7
|
+
'en-US': {
|
|
8
|
+
author: 'This content was created with AI assistance. Please verify important details.',
|
|
9
|
+
translation: 'This post was translated with AI.',
|
|
10
|
+
source: 'View source',
|
|
11
|
+
},
|
|
12
|
+
'es-ES': {
|
|
13
|
+
author: 'Este contenido se creó con ayuda de IA. Verifica los detalles importantes.',
|
|
14
|
+
translation: 'Esta publicación se tradujo con IA.',
|
|
15
|
+
source: 'Ver original',
|
|
16
|
+
},
|
|
17
|
+
'fr-FR': {
|
|
18
|
+
author: 'Ce contenu a été créé avec l’aide de l’IA. Vérifiez les informations importantes.',
|
|
19
|
+
translation: 'Cet article a été traduit avec l’IA.',
|
|
20
|
+
source: 'Voir la source',
|
|
21
|
+
},
|
|
22
|
+
'ja-JP': {
|
|
23
|
+
author: 'この記事は AI の支援を受けて作成されました。重要な情報はご確認ください。',
|
|
24
|
+
translation: 'この記事は AI によって翻訳されました。',
|
|
25
|
+
source: '原文を見る',
|
|
26
|
+
},
|
|
27
|
+
'ko-KR': {
|
|
28
|
+
author: '이 콘텐츠는 AI의 도움을 받아 작성되었습니다. 중요한 세부 정보는 확인해 주세요.',
|
|
29
|
+
translation: '이 게시물은 AI로 번역되었습니다.',
|
|
30
|
+
source: '원문 보기',
|
|
31
|
+
},
|
|
32
|
+
'pt-BR': {
|
|
33
|
+
author: 'Este conteúdo foi criado com auxílio de IA. Confira os detalhes importantes.',
|
|
34
|
+
translation: 'Esta publicação foi traduzida com IA.',
|
|
35
|
+
source: 'Ver original',
|
|
36
|
+
},
|
|
37
|
+
'ru-RU': {
|
|
38
|
+
author: 'Этот материал создан с помощью ИИ. Проверьте важные сведения.',
|
|
39
|
+
translation: 'Эта публикация переведена с помощью ИИ.',
|
|
40
|
+
source: 'Открыть оригинал',
|
|
41
|
+
},
|
|
42
|
+
'zh-CN': {
|
|
43
|
+
author: '本文内容由 AI 辅助创作。请核实重要信息。',
|
|
44
|
+
translation: '本文由 AI 翻译。',
|
|
45
|
+
source: '查看原文',
|
|
46
|
+
},
|
|
47
|
+
'zh-Hant': {
|
|
48
|
+
author: '本文內容由 AI 輔助創作。請核實重要資訊。',
|
|
49
|
+
translation: '本文由 AI 翻譯。',
|
|
50
|
+
source: '查看原文',
|
|
51
|
+
},
|
|
52
|
+
};
|
|
53
|
+
export function resolveAIDisclosureFlags(frontmatter, defaults) {
|
|
54
|
+
for (const key of ['isAITranslation', 'isAIAuthor']) {
|
|
55
|
+
if (frontmatter[key] !== undefined && typeof frontmatter[key] !== 'boolean') {
|
|
56
|
+
throw new TypeError(`Hagilight frontmatter ${key} must be a boolean.`);
|
|
57
|
+
}
|
|
58
|
+
if (typeof defaults[key] !== 'boolean') {
|
|
59
|
+
throw new TypeError(`Hagilight aiDisclosures ${key} default must be a boolean.`);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return {
|
|
63
|
+
isAITranslation: frontmatter.isAITranslation ?? defaults.isAITranslation,
|
|
64
|
+
isAIAuthor: frontmatter.isAIAuthor ?? defaults.isAIAuthor,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
export function getAIDisclosureCopy(lang) {
|
|
68
|
+
const exact = lang === undefined ? undefined : COPY[lang];
|
|
69
|
+
if (exact)
|
|
70
|
+
return exact;
|
|
71
|
+
const language = lang?.split('-')[0];
|
|
72
|
+
return (language === undefined ? undefined : COPY[language]) ?? COPY['en-US'];
|
|
73
|
+
}
|
|
74
|
+
export function getSourceEntryId(routeId, currentLocale, sourceLocale) {
|
|
75
|
+
const prefix = currentLocale && currentLocale !== 'root' ? `${currentLocale}/` : '';
|
|
76
|
+
const routeSlug = prefix && routeId.startsWith(prefix) ? routeId.slice(prefix.length) : routeId;
|
|
77
|
+
if (sourceLocale === 'root')
|
|
78
|
+
return routeSlug === 'index' ? '' : routeSlug;
|
|
79
|
+
return `${sourceLocale}/${routeSlug || 'index'}`;
|
|
80
|
+
}
|
|
81
|
+
export function normalizeDocsEntryId(id) {
|
|
82
|
+
return id === 'index' ? '' : id;
|
|
83
|
+
}
|
|
84
|
+
export function getSourcePath({ docs, routeId, currentLocale, sourceLocale, pathname, baseUrl, }) {
|
|
85
|
+
const sourceId = getSourceEntryId(routeId, currentLocale, sourceLocale);
|
|
86
|
+
if (!docs.some((entry) => normalizeDocsEntryId(entry.id) === sourceId))
|
|
87
|
+
return undefined;
|
|
88
|
+
return buildSourcePathname(pathname, baseUrl, currentLocale, sourceLocale);
|
|
89
|
+
}
|
|
90
|
+
export function isTranslationLocale(locale, sourceLocale) {
|
|
91
|
+
return (locale ?? 'root') !== sourceLocale;
|
|
92
|
+
}
|
|
93
|
+
export function buildSourcePathname(pathname, baseUrl, currentLocale, sourceLocale) {
|
|
94
|
+
const basePath = new URL(baseUrl, 'https://hagilight.invalid').pathname;
|
|
95
|
+
const normalizedBase = basePath.endsWith('/') ? basePath : `${basePath}/`;
|
|
96
|
+
const relativePath = pathname.startsWith(normalizedBase)
|
|
97
|
+
? pathname.slice(normalizedBase.length)
|
|
98
|
+
: pathname.startsWith('/') ? pathname.slice(1) : pathname;
|
|
99
|
+
const segments = relativePath.split('/');
|
|
100
|
+
if (currentLocale && currentLocale !== 'root' && segments[0] === currentLocale)
|
|
101
|
+
segments.shift();
|
|
102
|
+
if (sourceLocale !== 'root')
|
|
103
|
+
segments.unshift(sourceLocale);
|
|
104
|
+
return `${normalizedBase}${segments.join('/')}`;
|
|
105
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
declare const _default: {
|
|
2
|
+
title: string;
|
|
3
|
+
lead: string;
|
|
4
|
+
subheadline: string;
|
|
5
|
+
imageAlt: string;
|
|
6
|
+
features: ({
|
|
7
|
+
id: "smart";
|
|
8
|
+
label: string;
|
|
9
|
+
description: string;
|
|
10
|
+
} | {
|
|
11
|
+
id: "efficient";
|
|
12
|
+
label: string;
|
|
13
|
+
description: string;
|
|
14
|
+
} | {
|
|
15
|
+
id: "fun";
|
|
16
|
+
label: string;
|
|
17
|
+
description: string;
|
|
18
|
+
})[];
|
|
19
|
+
visitLabel: string;
|
|
20
|
+
docsLabel: string;
|
|
21
|
+
galleryHeading: string;
|
|
22
|
+
gallery: {
|
|
23
|
+
id: string;
|
|
24
|
+
caption: string;
|
|
25
|
+
alt: string;
|
|
26
|
+
}[];
|
|
27
|
+
windowsLabel: string;
|
|
28
|
+
windowsStoreLabel: string;
|
|
29
|
+
windowsStoreAriaLabel: string;
|
|
30
|
+
allDownloadsLabel: string;
|
|
31
|
+
shareLabel: string;
|
|
32
|
+
shareText: string;
|
|
33
|
+
};
|
|
34
|
+
export default _default;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
const workbenchAlt = 'HagiCode-Werkbank mit einem Kanban-Board der Sitzungen in den Spalten Ausstehend, In Bearbeitung und Archiviert.';
|
|
2
|
+
export default {
|
|
3
|
+
title: 'HagiCode',
|
|
4
|
+
lead: 'HagiCode ist ein agentischer Coding-Arbeitsplatz. Vielseitige, komfortable Interaktionen in der Benutzeroberfläche machen Planung, Agent-Ausführung und Projektarbeit zugänglich und leicht nachvollziehbar – für ein ansprechendes Entwicklungserlebnis.',
|
|
5
|
+
subheadline: 'Entdecken Sie ein ansprechendes Entwicklungserlebnis mit vielseitigen, komfortablen Interaktionen in der Benutzeroberfläche.',
|
|
6
|
+
imageAlt: workbenchAlt,
|
|
7
|
+
features: [
|
|
8
|
+
{ id: 'smart', label: 'Intelligent', description: 'OpenSpec-Workflows machen aus einer Absicht einen umsetzbaren Weg vom Vorschlag über Design und Aufgaben bis zur Auslieferung.' },
|
|
9
|
+
{ id: 'efficient', label: 'Effizient', description: 'Multi-Agent-Ausführung führt Recherche, Umsetzung und Prüfung parallel aus, über mehrere Repositories und die Agent CLIs, die Sie bereits nutzen.' },
|
|
10
|
+
{ id: 'fun', label: 'Interessant', description: 'Vielseitige, komfortable Interaktionen in der Benutzeroberfläche machen Planung, Agent-Ausführung und Projektarbeit zugänglich und leicht nachvollziehbar.' },
|
|
11
|
+
],
|
|
12
|
+
visitLabel: 'HagiCode besuchen',
|
|
13
|
+
docsLabel: 'Dokumentation lesen',
|
|
14
|
+
galleryHeading: 'HagiCode auf einen Blick',
|
|
15
|
+
gallery: [
|
|
16
|
+
{
|
|
17
|
+
id: 'workbench',
|
|
18
|
+
caption: 'Die Werkbank: alle Sitzungen auf einem Kanban-Board.',
|
|
19
|
+
alt: workbenchAlt,
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
id: 'proposal-workflow',
|
|
23
|
+
caption: 'Ein Vorschlag wandert von Erstellt über Entwurf und Prüfung bis zu Ausführung und Archiv.',
|
|
24
|
+
alt: 'Stufenleiste eines HagiCode-Vorschlags von Erstellt bis Archiviert; die Stufe Ausführung abgeschlossen ist hervorgehoben, dazu die Schaltfläche Plan archivieren.',
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
id: 'heroes',
|
|
28
|
+
caption: 'Hero Scenario: Helden erledigen die Arbeit, Sie behalten Fortschritt, Level und Geschichte im Blick.',
|
|
29
|
+
alt: 'Bereich Hero Scenario von HagiCode namens Ember Keep mit drei laufenden Helden samt Level, Fortschritt und Geschichtstext.',
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
id: 'hero-avatar',
|
|
33
|
+
caption: 'Illustration: ein HagiCode-Heldenavatar aus einem Satz, der bei jedem Besuch wechselt.',
|
|
34
|
+
alt: 'Stilisierte Illustration eines HagiCode-Heldenavatars: ein Charakterporträt.',
|
|
35
|
+
},
|
|
36
|
+
],
|
|
37
|
+
windowsLabel: 'Für Windows herunterladen',
|
|
38
|
+
windowsStoreLabel: 'Im Microsoft Store erhalten',
|
|
39
|
+
windowsStoreAriaLabel: 'HagiCode im Microsoft Store öffnen',
|
|
40
|
+
allDownloadsLabel: 'Alle Downloads',
|
|
41
|
+
shareLabel: 'HagiCode teilen',
|
|
42
|
+
shareText: 'HagiCode macht Planung, Agent-Ausführung und Projektarbeit durch vielseitige, komfortable Interaktionen in der Benutzeroberfläche zugänglich: https://www.hagicode.com/',
|
|
43
|
+
};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
declare const _default: {
|
|
2
|
+
title: string;
|
|
3
|
+
lead: string;
|
|
4
|
+
subheadline: string;
|
|
5
|
+
imageAlt: string;
|
|
6
|
+
features: ({
|
|
7
|
+
id: "smart";
|
|
8
|
+
label: string;
|
|
9
|
+
description: string;
|
|
10
|
+
} | {
|
|
11
|
+
id: "efficient";
|
|
12
|
+
label: string;
|
|
13
|
+
description: string;
|
|
14
|
+
} | {
|
|
15
|
+
id: "fun";
|
|
16
|
+
label: string;
|
|
17
|
+
description: string;
|
|
18
|
+
})[];
|
|
19
|
+
visitLabel: string;
|
|
20
|
+
docsLabel: string;
|
|
21
|
+
galleryHeading: string;
|
|
22
|
+
gallery: {
|
|
23
|
+
id: string;
|
|
24
|
+
caption: string;
|
|
25
|
+
alt: string;
|
|
26
|
+
}[];
|
|
27
|
+
windowsLabel: string;
|
|
28
|
+
windowsStoreLabel: string;
|
|
29
|
+
windowsStoreAriaLabel: string;
|
|
30
|
+
allDownloadsLabel: string;
|
|
31
|
+
shareLabel: string;
|
|
32
|
+
shareText: string;
|
|
33
|
+
};
|
|
34
|
+
export default _default;
|