tangled
alpha
login
or
join now
vielle.dev
/
site-archive
0
fork
atom
[Archived] Archived WIP of vielle.dev
0
fork
atom
overview
issues
pulls
pipelines
Format guff
vielle.dev
9 months ago
eb1e0ce6
fb446336
+145
-21
10 changed files
expand all
collapse all
unified
split
.simple-git-hooks.json
package.json
pnpm-lock.yaml
src
components
blog
Background.astro
Balloon.astro
Post.astro
background
Cloud.astro
Stars.astro
generic
NavEntry.astro
config.ts
+3
.simple-git-hooks.json
···
1
1
+
{
2
2
+
"pre-commit": "pnpm pretty-quick --staged"
3
3
+
}
+3
-1
package.json
···
22
22
},
23
23
"devDependencies": {
24
24
"prettier": "3.5.3",
25
25
-
"prettier-plugin-astro": "0.14.1"
25
25
+
"prettier-plugin-astro": "0.14.1",
26
26
+
"pretty-quick": "^4.1.1",
27
27
+
"simple-git-hooks": "^2.13.0"
26
28
}
27
29
}
+117
pnpm-lock.yaml
···
38
38
prettier-plugin-astro:
39
39
specifier: 0.14.1
40
40
version: 0.14.1
41
41
+
pretty-quick:
42
42
+
specifier: ^4.1.1
43
43
+
version: 4.1.1(prettier@3.5.3)
44
44
+
simple-git-hooks:
45
45
+
specifier: ^2.13.0
46
46
+
version: 2.13.0
41
47
42
48
packages:
43
49
"@astrojs/check@0.9.4":
···
1588
1594
}
1589
1595
engines: { node: ">=8" }
1590
1596
1597
1597
+
find-up@5.0.0:
1598
1598
+
resolution:
1599
1599
+
{
1600
1600
+
integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==,
1601
1601
+
}
1602
1602
+
engines: { node: ">=10" }
1603
1603
+
1591
1604
flattie@1.1.1:
1592
1605
resolution:
1593
1606
{
···
1738
1751
integrity: sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==,
1739
1752
}
1740
1753
1754
1754
+
ignore@7.0.5:
1755
1755
+
resolution:
1756
1756
+
{
1757
1757
+
integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==,
1758
1758
+
}
1759
1759
+
engines: { node: ">= 4" }
1760
1760
+
1741
1761
import-meta-resolve@4.1.0:
1742
1762
resolution:
1743
1763
{
···
1888
1908
{
1889
1909
integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==,
1890
1910
}
1911
1911
+
1912
1912
+
locate-path@6.0.0:
1913
1913
+
resolution:
1914
1914
+
{
1915
1915
+
integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==,
1916
1916
+
}
1917
1917
+
engines: { node: ">=10" }
1891
1918
1892
1919
lodash@4.17.21:
1893
1920
resolution:
···
2283
2310
}
2284
2311
engines: { node: ">=8.6" }
2285
2312
2313
2313
+
mri@1.2.0:
2314
2314
+
resolution:
2315
2315
+
{
2316
2316
+
integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==,
2317
2317
+
}
2318
2318
+
engines: { node: ">=4" }
2319
2319
+
2286
2320
mrmime@2.0.1:
2287
2321
resolution:
2288
2322
{
···
2378
2412
integrity: sha512-rPiZhzC3wXwE59YQMRDodUwwT9FZ9nNBwQQfsd1wfdtlKEyCdRV0avrTcSZ5xlIvGRVPd/cx6ZN45ECmS39xvg==,
2379
2413
}
2380
2414
2415
2415
+
p-limit@3.1.0:
2416
2416
+
resolution:
2417
2417
+
{
2418
2418
+
integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==,
2419
2419
+
}
2420
2420
+
engines: { node: ">=10" }
2421
2421
+
2381
2422
p-limit@6.2.0:
2382
2423
resolution:
2383
2424
{
···
2385
2426
}
2386
2427
engines: { node: ">=18" }
2387
2428
2429
2429
+
p-locate@5.0.0:
2430
2430
+
resolution:
2431
2431
+
{
2432
2432
+
integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==,
2433
2433
+
}
2434
2434
+
engines: { node: ">=10" }
2435
2435
+
2388
2436
p-queue@8.1.0:
2389
2437
resolution:
2390
2438
{
···
2435
2483
integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==,
2436
2484
}
2437
2485
2486
2486
+
path-exists@4.0.0:
2487
2487
+
resolution:
2488
2488
+
{
2489
2489
+
integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==,
2490
2490
+
}
2491
2491
+
engines: { node: ">=8" }
2492
2492
+
2438
2493
picocolors@1.1.1:
2439
2494
resolution:
2440
2495
{
···
2485
2540
engines: { node: ">=14" }
2486
2541
hasBin: true
2487
2542
2543
2543
+
pretty-quick@4.1.1:
2544
2544
+
resolution:
2545
2545
+
{
2546
2546
+
integrity: sha512-9Ud0l/CspNTmyIdYac9X7Inb3o8fuUsw+1zJFvCGn+at0t1UwUcUdo2RSZ41gcmfLv1fxgWQxWEfItR7CBwugg==,
2547
2547
+
}
2548
2548
+
engines: { node: ">=14" }
2549
2549
+
hasBin: true
2550
2550
+
peerDependencies:
2551
2551
+
prettier: ^3.0.0
2552
2552
+
2488
2553
prismjs@1.30.0:
2489
2554
resolution:
2490
2555
{
···
2761
2826
{
2762
2827
integrity: sha512-wuxzZzQG8kvZndD7nustrNFIKYJ1jJoWIPaBpVe2+KHSvtzMi4SBjOxrigs8qeqce/l3U0cwiC+VAkLKSunHQQ==,
2763
2828
}
2829
2829
+
2830
2830
+
simple-git-hooks@2.13.0:
2831
2831
+
resolution:
2832
2832
+
{
2833
2833
+
integrity: sha512-N+goiLxlkHJlyaYEglFypzVNMaNplPAk5syu0+OPp/Bk6dwVoXF6FfOw2vO0Dp+JHsBaI+w6cm8TnFl2Hw6tDA==,
2834
2834
+
}
2835
2835
+
hasBin: true
2764
2836
2765
2837
simple-swizzle@0.2.2:
2766
2838
resolution:
···
3475
3547
}
3476
3548
engines: { node: ">=12" }
3477
3549
3550
3550
+
yocto-queue@0.1.0:
3551
3551
+
resolution:
3552
3552
+
{
3553
3553
+
integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==,
3554
3554
+
}
3555
3555
+
engines: { node: ">=10" }
3556
3556
+
3478
3557
yocto-queue@1.2.1:
3479
3558
resolution:
3480
3559
{
···
4499
4578
dependencies:
4500
4579
to-regex-range: 5.0.1
4501
4580
4581
4581
+
find-up@5.0.0:
4582
4582
+
dependencies:
4583
4583
+
locate-path: 6.0.0
4584
4584
+
path-exists: 4.0.0
4585
4585
+
4502
4586
flattie@1.1.1: {}
4503
4587
4504
4588
fontace@0.3.0:
···
4677
4761
4678
4762
http-cache-semantics@4.2.0: {}
4679
4763
4764
4764
+
ignore@7.0.5: {}
4765
4765
+
4680
4766
import-meta-resolve@4.1.0: {}
4681
4767
4682
4768
inline-style-parser@0.2.4: {}
···
4737
4823
dependencies:
4738
4824
uc.micro: 2.1.0
4739
4825
4826
4826
+
locate-path@6.0.0:
4827
4827
+
dependencies:
4828
4828
+
p-locate: 5.0.0
4829
4829
+
4740
4830
lodash@4.17.21: {}
4741
4831
4742
4832
longest-streak@3.1.0: {}
···
5212
5302
braces: 3.0.3
5213
5303
picomatch: 2.3.1
5214
5304
5305
5305
+
mri@1.2.0: {}
5306
5306
+
5215
5307
mrmime@2.0.1: {}
5216
5308
5217
5309
ms@2.1.3: {}
···
5252
5344
regex: 6.0.1
5253
5345
regex-recursion: 6.0.2
5254
5346
5347
5347
+
p-limit@3.1.0:
5348
5348
+
dependencies:
5349
5349
+
yocto-queue: 0.1.0
5350
5350
+
5255
5351
p-limit@6.2.0:
5256
5352
dependencies:
5257
5353
yocto-queue: 1.2.1
5258
5354
5355
5355
+
p-locate@5.0.0:
5356
5356
+
dependencies:
5357
5357
+
p-limit: 3.1.0
5358
5358
+
5259
5359
p-queue@8.1.0:
5260
5360
dependencies:
5261
5361
eventemitter3: 5.0.1
···
5292
5392
5293
5393
path-browserify@1.0.1: {}
5294
5394
5395
5395
+
path-exists@4.0.0: {}
5396
5396
+
5295
5397
picocolors@1.1.1: {}
5296
5398
5297
5399
picomatch@2.3.1: {}
···
5315
5417
5316
5418
prettier@3.5.3: {}
5317
5419
5420
5420
+
pretty-quick@4.1.1(prettier@3.5.3):
5421
5421
+
dependencies:
5422
5422
+
find-up: 5.0.0
5423
5423
+
ignore: 7.0.5
5424
5424
+
mri: 1.2.0
5425
5425
+
picocolors: 1.1.1
5426
5426
+
picomatch: 4.0.2
5427
5427
+
prettier: 3.5.3
5428
5428
+
tinyexec: 0.3.2
5429
5429
+
tslib: 2.8.1
5430
5430
+
5318
5431
prismjs@1.30.0: {}
5319
5432
5320
5433
prompts@2.4.2:
···
5569
5682
"@shikijs/types": 3.4.2
5570
5683
"@shikijs/vscode-textmate": 10.0.2
5571
5684
"@types/hast": 3.0.4
5685
5685
+
5686
5686
+
simple-git-hooks@2.13.0: {}
5572
5687
5573
5688
simple-swizzle@0.2.2:
5574
5689
dependencies:
···
5963
6078
string-width: 4.2.3
5964
6079
y18n: 5.0.8
5965
6080
yargs-parser: 21.1.1
6081
6081
+
6082
6082
+
yocto-queue@0.1.0: {}
5966
6083
5967
6084
yocto-queue@1.2.1: {}
5968
6085
+1
-1
src/components/blog/Background.astro
···
12
12
Astro.cookies.get("timezone")?.value ??
13
13
Astro.request.headers.get("Date") ??
14
14
Astro.request.headers.get("date") ?? // idk if it cares about capitals so Both
15
15
-
Date.now()
15
15
+
Date.now(),
16
16
);
17
17
18
18
const accurateHours =
+6
-6
src/components/blog/Balloon.astro
···
63
63
{
64
64
duration: 100,
65
65
fill: "forwards",
66
66
-
}
66
66
+
},
67
67
).finished,
68
68
69
69
cableParent.animate(
···
77
77
{
78
78
duration: 500,
79
79
fill: "forwards",
80
80
-
}
80
80
+
},
81
81
),
82
82
83
83
postParent.animate(
···
90
90
{
91
91
duration: 1000,
92
92
easing: "ease-in-out",
93
93
-
}
93
93
+
},
94
94
).finished,
95
95
]).then(() => {
96
96
const duration = (mintime + Math.random() * (maxtime - mintime)) * 1000;
···
105
105
duration,
106
106
fill: "forwards",
107
107
// easing: "ease-in",
108
108
-
}
108
108
+
},
109
109
);
110
110
111
111
cableParent.animate(
···
122
122
{
123
123
duration,
124
124
fill: "forwards",
125
125
-
}
125
125
+
},
126
126
);
127
127
128
128
postParent.animate(
···
136
136
duration,
137
137
fill: "forwards",
138
138
easing: "ease-in",
139
139
-
}
139
139
+
},
140
140
);
141
141
});
142
142
});
+2
-2
src/components/blog/Post.astro
···
18
18
const img = data.image.match(/.*(?=\.png)/gm);
19
19
if (img === null) return;
20
20
return await import(`../../content/posts/assets/${img[0]}.png`).then(
21
21
-
(x) => x.default
21
21
+
(x) => x.default,
22
22
);
23
23
})();
24
24
···
62
62
.map(
63
63
(x, i) =>
64
64
`--x-offset-${i}: calc((100svw - ${blog.post.width + 2 * blog.post.xPadding}rem) * ${positions[0] + x[0]} + ${blog.post.xPadding}rem);
65
65
-
--y-offset-${i}: ${blog.post.yLeeway * 2 * (positions[1] + x[1]) - blog.post.yLeeway}rem;`
65
65
+
--y-offset-${i}: ${blog.post.yLeeway * 2 * (positions[1] + x[1]) - blog.post.yLeeway}rem;`,
66
66
)
67
67
.join("\n")}
68
68
+6
-4
src/components/blog/background/Cloud.astro
···
36
36
37
37
const vectorOffset = (
38
38
v: [number, number],
39
39
-
o: [number, number]
39
39
+
o: [number, number],
40
40
): [number, number] => {
41
41
return [o[0] - v[0], o[1] - v[1]];
42
42
};
···
89
89
];
90
90
const newDistance = Math.sqrt(
91
91
(newCenter[0] - p.origin[0]) ** 2 +
92
92
-
(newCenter[1] - p.origin[1]) ** 2
92
92
+
(newCenter[1] - p.origin[1]) ** 2,
93
93
);
94
94
return {
95
95
origin: vectorOffset(vector(ang, c), p.origin),
···
120
120
prev: 0,
121
121
output: [] as any[],
122
122
complete: false,
123
123
-
}
123
123
+
},
124
124
).output
125
125
}
126
126
<circle cx={r} cy={r} r={r}></circle>
···
140
140
<stop
141
141
offset={`${blog.background.clouds.gradientStops[1]}%`}
142
142
stop-color={`rgb(from ${blog.palette.clouds} r g b / 0)`}></stop>
143
143
-
<stop offset="100%" stop-color={`rgb(from ${blog.palette.clouds} r g b / 0)`}></stop>
143
143
+
<stop
144
144
+
offset="100%"
145
145
+
stop-color={`rgb(from ${blog.palette.clouds} r g b / 0)`}></stop>
144
146
</linearGradient>
145
147
</defs>
146
148
+1
-1
src/components/blog/background/Stars.astro
···
39
39
const prongs = Math.round(
40
40
blog.background.stars.prongs[0] +
41
41
Math.random() *
42
42
-
(blog.background.stars.prongs[1] - blog.background.stars.prongs[0])
42
42
+
(blog.background.stars.prongs[1] - blog.background.stars.prongs[0]),
43
43
);
44
44
45
45
return (
+4
-4
src/components/generic/NavEntry.astro
···
29
29
}
30
30
31
31
a:link {
32
32
-
color: #62A0EA;
32
32
+
color: #62a0ea;
33
33
}
34
34
35
35
a:visited {
36
36
-
color: #DC8ADD;
36
36
+
color: #dc8add;
37
37
}
38
38
39
39
a:focus,
···
47
47
}
48
48
49
49
a:focus {
50
50
-
outline: 0.2rem solid #62A0EA;
50
50
+
outline: 0.2rem solid #62a0ea;
51
51
outline-offset: 0;
52
52
border-radius: 0.4rem;
53
53
54
54
&:visited {
55
55
-
outline-color: #DC8ADD;
55
55
+
outline-color: #dc8add;
56
56
}
57
57
}
58
58
+2
-2
src/config.ts
···
56
56
// blue
57
57
day: "#1E90FF",
58
58
// black
59
59
-
night: "#39375B"
59
59
+
night: "#39375B",
60
60
},
61
61
// yellow
62
62
sun: "#FFEC51",
···
64
64
moon: "#E5D4ED",
65
65
clouds: "#E5D4ED",
66
66
stars: "#ffffff",
67
67
-
}
67
67
+
},
68
68
} as const;
69
69
70
70
export const utils = {