@xingwangzhe/stalux 1.43.1 → 1.45.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/README.md +5 -3
- package/package.json +4 -2
- package/public/background/pattern-1.min.webp +0 -0
- package/public/background/pattern-10.min.webp +0 -0
- package/public/background/pattern-11.min.webp +0 -0
- package/public/background/pattern-12.min.webp +0 -0
- package/public/background/pattern-13.min.webp +0 -0
- package/public/background/pattern-14.min.webp +0 -0
- package/public/background/pattern-15.min.webp +0 -0
- package/public/background/pattern-16.min.webp +0 -0
- package/public/background/pattern-17.min.webp +0 -0
- package/public/background/pattern-18.min.webp +0 -0
- package/public/background/pattern-19.min.webp +0 -0
- package/public/background/pattern-2.min.webp +0 -0
- package/public/background/pattern-20.min.webp +0 -0
- package/public/background/pattern-21.min.webp +0 -0
- package/public/background/pattern-22.min.webp +0 -0
- package/public/background/pattern-23.min.webp +0 -0
- package/public/background/pattern-24.min.webp +0 -0
- package/public/background/pattern-25.min.webp +0 -0
- package/public/background/pattern-26.min.webp +0 -0
- package/public/background/pattern-27.min.webp +0 -0
- package/public/background/pattern-28.min.webp +0 -0
- package/public/background/pattern-29.min.webp +0 -0
- package/public/background/pattern-3.min.webp +0 -0
- package/public/background/pattern-30.min.webp +0 -0
- package/public/background/pattern-31.min.webp +0 -0
- package/public/background/pattern-32.min.webp +0 -0
- package/public/background/pattern-33.min.webp +0 -0
- package/public/background/pattern-34.min.webp +0 -0
- package/public/background/pattern-35.min.webp +0 -0
- package/public/background/pattern-36.min.webp +0 -0
- package/public/background/pattern-37.min.webp +0 -0
- package/public/background/pattern-38.min.webp +0 -0
- package/public/background/pattern-39.min.webp +0 -0
- package/public/background/pattern-4.min.webp +0 -0
- package/public/background/pattern-40.min.webp +0 -0
- package/public/background/pattern-41.min.webp +0 -0
- package/public/background/pattern-42.min.webp +0 -0
- package/public/background/pattern-5.min.webp +0 -0
- package/public/background/pattern-6.min.webp +0 -0
- package/public/background/pattern-7.min.webp +0 -0
- package/public/background/pattern-8.min.webp +0 -0
- package/public/background/pattern-9.min.webp +0 -0
- package/src/components/stalux/archives/archivesList.astro +8 -2
- package/src/components/stalux/archives/toArchive.astro +1 -1
- package/src/components/stalux/categories/categoriesCard.astro +1 -1
- package/src/components/stalux/common/author.astro +1 -1
- package/src/components/stalux/footer/FooterBadges.astro +5 -1
- package/src/components/stalux/layout/PageHeading.astro +2 -2
- package/src/components/stalux/layout/footer.astro +5 -1
- package/src/components/stalux/links/linkCard.astro +7 -1
- package/src/components/stalux/links/socialMedia.astro +1 -0
- package/src/components/stalux/posts/ArticleSummary.astro +6 -1
- package/src/components/stalux/posts/PostTaxonomy.astro +2 -1
- package/src/components/stalux/posts/WalineComment.astro +1 -0
- package/src/components/stalux/posts/postCC.astro +1 -1
- package/src/components/stalux/posts/postCard.astro +4 -1
- package/src/components/stalux/posts/postContent.astro +1 -1
- package/src/components/stalux/posts/postLeft.astro +2 -2
- package/src/components/stalux/posts/postNavigation.astro +5 -1
- package/src/components/stalux/posts/postRight.astro +5 -1
- package/src/components/stalux/posts/postToc.astro +2 -2
- package/src/components/stalux/tags/tagHeader.astro +1 -1
- package/src/components/stalux/tags/tagsCloud.astro +3 -1
- package/src/components/stalux/words/wordCard.astro +5 -1
- package/src/internal/public-assets.ts +3 -3
- package/src/internal/style-names.generated.ts +20 -22
- package/src/layouts/PostLayout.astro +8 -0
- package/src/layouts/Stalux.astro +3 -1
- package/src/pages/404.astro +2 -1
- package/src/pages/index.astro +5 -1
- package/src/scripts/background.ts +54 -113
- package/src/scripts/list-reveal.ts +81 -0
- package/src/scripts/module-motion.ts +73 -0
- package/src/scripts/random-posts.ts +85 -47
- package/src/scripts/route-motion.ts +44 -24
- package/src/scripts/route-out.ts +11 -4
- package/src/scripts/smooth-scroll.ts +87 -0
- package/src/scripts/swup-router.ts +23 -15
- package/src/scripts/tags-cloud.ts +8 -3
- package/src/styles/base.css +2 -2
- package/src/styles/generated-article.css +1 -1
- package/src/styles/generated-links.css +1 -1
- package/src/styles/generated-waline.css +1 -1
- package/src/styles/generated-words.css +1 -1
- package/src/styles/generated.css +1 -1
- package/src/styles/integrations.css +1 -17
- package/src/styles/module-motion.css +174 -0
- package/src/styles/motion.css +2 -26
- package/src/utils/route-motion-policy.ts +5 -1
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
/* Module cues share a short, non-spring response. No hidden pre-animation state. */
|
|
2
|
+
:root {
|
|
3
|
+
--stalux-motion-fast: 140ms;
|
|
4
|
+
--stalux-motion-ease: cubic-bezier(0.2, 0.7, 0.2, 1);
|
|
5
|
+
}
|
|
6
|
+
[data-stalux-control] {
|
|
7
|
+
transition:
|
|
8
|
+
color var(--stalux-motion-fast) ease,
|
|
9
|
+
background-color var(--stalux-motion-fast) ease,
|
|
10
|
+
border-color var(--stalux-motion-fast) ease,
|
|
11
|
+
transform var(--stalux-motion-fast) var(--stalux-motion-ease);
|
|
12
|
+
}
|
|
13
|
+
[data-stalux-control]:focus-visible,
|
|
14
|
+
[data-stalux-control]:has(:focus-visible) {
|
|
15
|
+
outline: 2px solid var(--stalux-accent-color);
|
|
16
|
+
outline-offset: 4px;
|
|
17
|
+
}
|
|
18
|
+
[data-stalux-control="button"] {
|
|
19
|
+
display: inline-flex;
|
|
20
|
+
align-items: center;
|
|
21
|
+
justify-content: center;
|
|
22
|
+
min-height: 44px;
|
|
23
|
+
}
|
|
24
|
+
[data-stalux-control="avatar"] img {
|
|
25
|
+
transition: transform 180ms var(--stalux-motion-ease);
|
|
26
|
+
}
|
|
27
|
+
[data-stalux-control="social"] {
|
|
28
|
+
transition:
|
|
29
|
+
color 140ms ease,
|
|
30
|
+
transform 140ms var(--stalux-motion-ease);
|
|
31
|
+
}
|
|
32
|
+
[data-stalux-control="link-card"] img {
|
|
33
|
+
animation: none;
|
|
34
|
+
transition:
|
|
35
|
+
transform 180ms var(--stalux-motion-ease),
|
|
36
|
+
border-color 140ms ease;
|
|
37
|
+
}
|
|
38
|
+
[data-stalux-module="footer"] a,
|
|
39
|
+
[data-stalux-back-to-top] {
|
|
40
|
+
transition:
|
|
41
|
+
color 140ms ease,
|
|
42
|
+
background-color 140ms ease,
|
|
43
|
+
opacity 140ms ease;
|
|
44
|
+
}
|
|
45
|
+
[data-stalux-module="badge-group"][open] > div {
|
|
46
|
+
animation: stalux-module-fade 140ms ease-out;
|
|
47
|
+
}
|
|
48
|
+
pagefind-modal#search dialog[open] {
|
|
49
|
+
animation: stalux-module-arrive 160ms var(--stalux-motion-ease) !important;
|
|
50
|
+
}
|
|
51
|
+
pagefind-modal dialog::backdrop {
|
|
52
|
+
background: rgb(0 0 0 / 0.65) !important;
|
|
53
|
+
animation: stalux-module-backdrop 140ms ease-out !important;
|
|
54
|
+
}
|
|
55
|
+
@keyframes stalux-module-arrive {
|
|
56
|
+
from {
|
|
57
|
+
opacity: 0.88;
|
|
58
|
+
transform: translateY(4px);
|
|
59
|
+
}
|
|
60
|
+
to {
|
|
61
|
+
opacity: 1;
|
|
62
|
+
transform: translateY(0);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
@keyframes stalux-module-fade {
|
|
66
|
+
from {
|
|
67
|
+
opacity: 0.88;
|
|
68
|
+
}
|
|
69
|
+
to {
|
|
70
|
+
opacity: 1;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
@keyframes stalux-module-backdrop {
|
|
74
|
+
from {
|
|
75
|
+
opacity: 0;
|
|
76
|
+
}
|
|
77
|
+
to {
|
|
78
|
+
opacity: 1;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
@media (hover: hover) and (pointer: fine) {
|
|
82
|
+
[data-stalux-control="button"]:hover,
|
|
83
|
+
[data-stalux-control="social"]:hover,
|
|
84
|
+
[data-stalux-control="tag-card"]:hover {
|
|
85
|
+
transform: translateY(-2px);
|
|
86
|
+
}
|
|
87
|
+
[data-stalux-control="avatar"]:hover img,
|
|
88
|
+
[data-stalux-control="link-card"]:hover img {
|
|
89
|
+
animation: none;
|
|
90
|
+
transform: rotate(3deg);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
[data-stalux-control]:active {
|
|
94
|
+
transform: translateY(0);
|
|
95
|
+
}
|
|
96
|
+
@media (prefers-reduced-motion: reduce) {
|
|
97
|
+
[data-stalux-control],
|
|
98
|
+
[data-stalux-control] *,
|
|
99
|
+
[data-stalux-module],
|
|
100
|
+
[data-stalux-module] *,
|
|
101
|
+
[data-ref="stalux-nav-list"],
|
|
102
|
+
[data-ref="stalux-nav-overlay"],
|
|
103
|
+
pagefind-modal#search dialog[open],
|
|
104
|
+
pagefind-modal#search dialog::backdrop {
|
|
105
|
+
animation: none !important;
|
|
106
|
+
transition: none !important;
|
|
107
|
+
scroll-behavior: auto !important;
|
|
108
|
+
}
|
|
109
|
+
[data-stalux-control]:is(:hover, :active),
|
|
110
|
+
[data-stalux-control]:hover img {
|
|
111
|
+
transform: none !important;
|
|
112
|
+
}
|
|
113
|
+
[data-stalux-tag-cards] {
|
|
114
|
+
display: block;
|
|
115
|
+
}
|
|
116
|
+
[data-stalux-tag-canvas] {
|
|
117
|
+
display: none;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
@media print {
|
|
121
|
+
[data-stalux-module],
|
|
122
|
+
[data-stalux-control],
|
|
123
|
+
pagefind-modal dialog {
|
|
124
|
+
animation: none !important;
|
|
125
|
+
transform: none !important;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/* A location marker fades over the surface without repainting text shadows. */
|
|
130
|
+
[data-stalux-module="word"]::after {
|
|
131
|
+
content: "";
|
|
132
|
+
position: absolute;
|
|
133
|
+
inset: 0;
|
|
134
|
+
border-radius: inherit;
|
|
135
|
+
background: var(--accent-20p);
|
|
136
|
+
opacity: 0;
|
|
137
|
+
pointer-events: none;
|
|
138
|
+
}
|
|
139
|
+
[data-stalux-module="word"]:is(:target, [data-glow])::after {
|
|
140
|
+
animation: stalux-module-locate 1200ms ease-out;
|
|
141
|
+
}
|
|
142
|
+
@keyframes stalux-module-locate {
|
|
143
|
+
from {
|
|
144
|
+
opacity: 0.4;
|
|
145
|
+
}
|
|
146
|
+
to {
|
|
147
|
+
opacity: 0;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
@media (prefers-reduced-motion: reduce) {
|
|
151
|
+
[data-stalux-module="word"]::after {
|
|
152
|
+
animation: none !important;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
@media (max-width: 640px) and (prefers-reduced-motion: no-preference) {
|
|
157
|
+
pagefind-modal#search dialog[open] {
|
|
158
|
+
animation: stalux-module-fade 120ms ease-out !important;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
[data-stalux-weather][data-weather-state="ready"] [data-weather-output] {
|
|
162
|
+
animation: stalux-module-fade 140ms ease-out;
|
|
163
|
+
}
|
|
164
|
+
@media (prefers-reduced-motion: reduce) {
|
|
165
|
+
[data-stalux-weather] [data-weather-output] {
|
|
166
|
+
animation: none !important;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
@media print {
|
|
171
|
+
[data-stalux-module="word"]::after {
|
|
172
|
+
animation: none !important;
|
|
173
|
+
}
|
|
174
|
+
}
|
package/src/styles/motion.css
CHANGED
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
}
|
|
8
8
|
}
|
|
9
9
|
|
|
10
|
-
/* Swup
|
|
11
|
-
|
|
10
|
+
/* Swup animates one bounded introductory region through route-motion.ts.
|
|
11
|
+
Long documents stay visible; the shell is never part of an outgoing layer. */
|
|
12
12
|
[data-stalux-home-content] {
|
|
13
13
|
display: flex;
|
|
14
14
|
flex-direction: column;
|
|
@@ -195,27 +195,3 @@
|
|
|
195
195
|
}
|
|
196
196
|
}
|
|
197
197
|
}
|
|
198
|
-
|
|
199
|
-
@layer components {
|
|
200
|
-
@keyframes stalux-word-word-glow {
|
|
201
|
-
0% {
|
|
202
|
-
box-shadow:
|
|
203
|
-
0 0 30px var(--accent-50p),
|
|
204
|
-
0 0 80px var(--accent-30p),
|
|
205
|
-
var(--shadow-lg);
|
|
206
|
-
transform: scale(1.02);
|
|
207
|
-
}
|
|
208
|
-
100% {
|
|
209
|
-
box-shadow:
|
|
210
|
-
0 0 20px var(--accent-40p),
|
|
211
|
-
0 0 60px var(--accent-20p),
|
|
212
|
-
var(--shadow-lg);
|
|
213
|
-
transform: scale(1);
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
|
|
218
|
-
/* Hide only the new content between DOM replacement and its first motion frame. */
|
|
219
|
-
html[data-stalux-motion-pending] main[data-stalux-route] {
|
|
220
|
-
opacity: 0;
|
|
221
|
-
}
|
|
@@ -55,7 +55,11 @@ export function getRouteMotionPreset(context: MotionContext): RouteMotionPreset
|
|
|
55
55
|
}
|
|
56
56
|
if (target === "article") return "enter";
|
|
57
57
|
if (target === "about" || target === "links" || target === "words") return "panel";
|
|
58
|
-
if (target === "tags-detail" || target === "categories-detail")
|
|
58
|
+
if (target === "tags-detail" || target === "categories-detail") {
|
|
59
|
+
if (source === target) return "taxonomy";
|
|
60
|
+
if (source === "tags-detail" || source === "categories-detail") return "glide";
|
|
61
|
+
return "enter";
|
|
62
|
+
}
|
|
59
63
|
if (
|
|
60
64
|
(source === "article" &&
|
|
61
65
|
(target === "archive" || target === "tags-index" || target === "categories-index")) ||
|