@vanduo-oss/framework 1.5.0 → 1.5.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/CHANGELOG.md +11 -0
- package/README.md +8 -4
- package/css/components/expanding-cards.css +94 -25
- package/dist/build-info.json +3 -3
- package/dist/vanduo-core.css +80 -25
- package/dist/vanduo-core.css.map +1 -1
- package/dist/vanduo-core.min.css +2 -2
- package/dist/vanduo-core.min.css.map +1 -1
- package/dist/vanduo.cjs.js +9 -5
- package/dist/vanduo.cjs.js.map +2 -2
- package/dist/vanduo.cjs.min.js +3 -3
- package/dist/vanduo.cjs.min.js.map +2 -2
- package/dist/vanduo.css +80 -25
- package/dist/vanduo.css.map +1 -1
- package/dist/vanduo.esm.js +9 -5
- package/dist/vanduo.esm.js.map +2 -2
- package/dist/vanduo.esm.min.js +3 -3
- package/dist/vanduo.esm.min.js.map +2 -2
- package/dist/vanduo.js +9 -5
- package/dist/vanduo.js.map +2 -2
- package/dist/vanduo.min.css +2 -2
- package/dist/vanduo.min.css.map +1 -1
- package/dist/vanduo.min.js +3 -3
- package/dist/vanduo.min.js.map +2 -2
- package/js/components/expanding-cards.js +15 -3
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -8,6 +8,17 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
8
8
|
Full release notes — covering the framework, the documentation site, and
|
|
9
9
|
ecosystem packages side by side — live at <https://vanduo.dev/#changelog>.
|
|
10
10
|
|
|
11
|
+
## [1.5.1] - 2026-06-20
|
|
12
|
+
|
|
13
|
+
### Changed
|
|
14
|
+
- Opened `dev-v151` development branch for the v1.5.1 patch cycle.
|
|
15
|
+
|
|
16
|
+
### Enhanced
|
|
17
|
+
- **Expanding Cards — mobile** — Below `768px`, panels stack vertically and expand in place using the same flex-grow redistribution as the desktop strip (replacing progressive hide and non-animatable `order` reorder). Inactive rows render as compact stripes with icon + title; labels and subtitles transition smoothly. `ArrowUp`/`ArrowDown` keyboard navigation added alongside left/right.
|
|
18
|
+
|
|
19
|
+
### Fixed
|
|
20
|
+
- **Expanding Cards — photo backgrounds** — Active panels use `background-size: cover` and `background-repeat: no-repeat` so wide expanded cards no longer show tiled repeats on the sides.
|
|
21
|
+
|
|
11
22
|
## [1.5.0] - 2026-06-18
|
|
12
23
|
|
|
13
24
|
### Added
|
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Vanduo Framework v1.5.
|
|
1
|
+
# Vanduo Framework v1.5.1
|
|
2
2
|
|
|
3
3
|
<p align="center">
|
|
4
4
|
<img src="vanduo-banner.svg" alt="Vanduo Framework Banner" width="100%">
|
|
@@ -25,7 +25,11 @@ Vanduo is a zero-dependency UI framework built with HTML, CSS, and vanilla JavaS
|
|
|
25
25
|
- Theme Switcher menu variant for icon-only light/dark/system selection in navbars
|
|
26
26
|
- Playwright-based browser coverage across Chromium, Firefox, and WebKit
|
|
27
27
|
|
|
28
|
-
## What's New in 1.5.
|
|
28
|
+
## What's New in 1.5.1
|
|
29
|
+
|
|
30
|
+
- Development branch opened for the v1.5.1 patch cycle (`dev-v151`).
|
|
31
|
+
|
|
32
|
+
## Previous: 1.5.0
|
|
29
33
|
|
|
30
34
|
- **Layout primitives** — new CSS-only layout containers — `.vd-box`, `.vd-stack`, `.vd-inline`, `.vd-center`, `.vd-frame` (golden-ratio aspect box), `.vd-cover`, and `.vd-switcher` (container-query-free responsive row→column) — with a `data-*` API (`data-pad`, `data-gap`, `data-align`, `data-justify`, `data-round`, `data-ratio`…) that consumes the existing Fibonacci spacing/radius and semantic tokens. They are the composition layer between utilities and components — *utilities style an element; primitives arrange elements*. Zero JS, zero new public tokens.
|
|
31
35
|
- **Hex grid is now a standalone package** — `VdHexGrid` was never part of the bundle; its source has moved out of the framework tree. Install [`@vanduo-oss/hex-grid`](https://www.npmjs.com/package/@vanduo-oss/hex-grid) directly.
|
|
@@ -52,8 +56,8 @@ Vanduo is a zero-dependency UI framework built with HTML, CSS, and vanilla JavaS
|
|
|
52
56
|
### CDN
|
|
53
57
|
|
|
54
58
|
```html
|
|
55
|
-
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/vanduo-oss/framework@v1.5.
|
|
56
|
-
<script src="https://cdn.jsdelivr.net/gh/vanduo-oss/framework@v1.5.
|
|
59
|
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/vanduo-oss/framework@v1.5.1/dist/vanduo.min.css">
|
|
60
|
+
<script src="https://cdn.jsdelivr.net/gh/vanduo-oss/framework@v1.5.1/dist/vanduo.min.js"></script>
|
|
57
61
|
<script>
|
|
58
62
|
Vanduo.init();
|
|
59
63
|
</script>
|
|
@@ -33,7 +33,8 @@
|
|
|
33
33
|
border-radius: 30px;
|
|
34
34
|
cursor: pointer;
|
|
35
35
|
background: var(--vd-expanding-card-bg, var(--vd-expanding-card-bg-default, #e6e9ed));
|
|
36
|
-
background-
|
|
36
|
+
background-repeat: no-repeat;
|
|
37
|
+
background-size: cover;
|
|
37
38
|
background-position: center;
|
|
38
39
|
transition: 0.5s cubic-bezier(0.05, 0.61, 0.41, 0.95);
|
|
39
40
|
}
|
|
@@ -68,7 +69,6 @@
|
|
|
68
69
|
max-width: 600px;
|
|
69
70
|
margin: 0;
|
|
70
71
|
border-radius: 40px;
|
|
71
|
-
background-size: auto 100%;
|
|
72
72
|
}
|
|
73
73
|
|
|
74
74
|
.vd-expanding-card.is-active .vd-expanding-card-shadow {
|
|
@@ -164,44 +164,113 @@
|
|
|
164
164
|
transition-delay: 0.1s;
|
|
165
165
|
}
|
|
166
166
|
|
|
167
|
-
/*
|
|
168
|
-
@media screen and (max-width:
|
|
167
|
+
/* Mobile: vertical stack, expand in place (mirrors desktop flex-grow model) */
|
|
168
|
+
@media screen and (max-width: 767.98px) {
|
|
169
169
|
.vd-expanding-cards {
|
|
170
|
-
|
|
170
|
+
--vd-expanding-card-mobile-stripe: 56px;
|
|
171
|
+
--vd-expanding-card-mobile-active: clamp(200px, 55vw, 280px);
|
|
172
|
+
--vd-expanding-card-mobile-gap: 8px;
|
|
173
|
+
|
|
174
|
+
flex-direction: column;
|
|
175
|
+
align-items: stretch;
|
|
176
|
+
overflow: hidden;
|
|
177
|
+
min-width: 0;
|
|
178
|
+
max-width: 100%;
|
|
179
|
+
width: 100%;
|
|
180
|
+
height: min(
|
|
181
|
+
72vh,
|
|
182
|
+
calc(
|
|
183
|
+
var(--vd-expanding-card-mobile-active) +
|
|
184
|
+
5 * (var(--vd-expanding-card-mobile-stripe) + var(--vd-expanding-card-mobile-gap))
|
|
185
|
+
)
|
|
186
|
+
);
|
|
187
|
+
gap: var(--vd-expanding-card-mobile-gap);
|
|
171
188
|
}
|
|
172
189
|
|
|
173
|
-
.vd-expanding-card
|
|
174
|
-
|
|
190
|
+
.vd-expanding-card {
|
|
191
|
+
min-width: 0;
|
|
192
|
+
width: 100%;
|
|
193
|
+
margin: 0;
|
|
194
|
+
flex: 1 1 var(--vd-expanding-card-mobile-stripe);
|
|
195
|
+
min-height: var(--vd-expanding-card-mobile-stripe);
|
|
196
|
+
transition:
|
|
197
|
+
flex 0.5s cubic-bezier(0.05, 0.61, 0.41, 0.95),
|
|
198
|
+
min-height 0.5s cubic-bezier(0.05, 0.61, 0.41, 0.95),
|
|
199
|
+
border-radius 0.5s cubic-bezier(0.05, 0.61, 0.41, 0.95),
|
|
200
|
+
margin 0.5s cubic-bezier(0.05, 0.61, 0.41, 0.95);
|
|
175
201
|
}
|
|
176
|
-
}
|
|
177
202
|
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
min-
|
|
203
|
+
.vd-expanding-card.is-active {
|
|
204
|
+
flex: 10000 1 var(--vd-expanding-card-mobile-active);
|
|
205
|
+
min-height: var(--vd-expanding-card-mobile-active);
|
|
206
|
+
max-width: none;
|
|
207
|
+
border-radius: 32px;
|
|
181
208
|
}
|
|
182
209
|
|
|
183
|
-
.vd-expanding-card:
|
|
184
|
-
|
|
210
|
+
.vd-expanding-card:not(.is-active) {
|
|
211
|
+
flex: 1 1 var(--vd-expanding-card-mobile-stripe);
|
|
212
|
+
min-height: var(--vd-expanding-card-mobile-stripe);
|
|
213
|
+
border-radius: 28px;
|
|
185
214
|
}
|
|
186
|
-
}
|
|
187
215
|
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
216
|
+
.vd-expanding-card.is-active .vd-expanding-card-shadow {
|
|
217
|
+
box-shadow:
|
|
218
|
+
inset 0 -120px 120px -120px black,
|
|
219
|
+
inset 0 -120px 120px -100px black;
|
|
191
220
|
}
|
|
192
221
|
|
|
193
|
-
.vd-expanding-card:
|
|
194
|
-
|
|
222
|
+
.vd-expanding-card:not(.is-active) .vd-expanding-card-shadow {
|
|
223
|
+
bottom: 0;
|
|
224
|
+
height: 100%;
|
|
225
|
+
box-shadow: inset 0 0 80px 0 rgb(0 0 0 / 35%);
|
|
195
226
|
}
|
|
196
|
-
}
|
|
197
227
|
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
228
|
+
.vd-expanding-card.is-active .vd-expanding-card-label {
|
|
229
|
+
bottom: 20px;
|
|
230
|
+
left: 20px;
|
|
231
|
+
top: auto;
|
|
232
|
+
transform: none;
|
|
233
|
+
align-items: flex-end;
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
.vd-expanding-card:not(.is-active) .vd-expanding-card-label {
|
|
237
|
+
bottom: 8px;
|
|
238
|
+
left: 12px;
|
|
239
|
+
top: auto;
|
|
240
|
+
right: auto;
|
|
241
|
+
height: 40px;
|
|
242
|
+
transform: none;
|
|
243
|
+
align-items: center;
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
.vd-expanding-card:not(.is-active) .vd-expanding-card-info {
|
|
247
|
+
min-width: 0;
|
|
248
|
+
flex: 1;
|
|
249
|
+
white-space: nowrap;
|
|
250
|
+
overflow: hidden;
|
|
251
|
+
text-overflow: ellipsis;
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
.vd-expanding-card:not(.is-active) .vd-expanding-card-info > div {
|
|
255
|
+
left: 0;
|
|
256
|
+
opacity: 1;
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
.vd-expanding-card:not(.is-active) .vd-expanding-card-subtitle {
|
|
260
|
+
opacity: 0;
|
|
261
|
+
max-height: 0;
|
|
262
|
+
overflow: hidden;
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
.vd-expanding-card.is-active .vd-expanding-card-subtitle {
|
|
266
|
+
opacity: 1;
|
|
267
|
+
max-height: 2em;
|
|
201
268
|
}
|
|
202
269
|
|
|
203
|
-
.vd-expanding-card:
|
|
204
|
-
|
|
270
|
+
.vd-expanding-card:not(.is-active) .vd-expanding-card-title {
|
|
271
|
+
font-size: 1rem;
|
|
272
|
+
overflow: hidden;
|
|
273
|
+
text-overflow: ellipsis;
|
|
205
274
|
}
|
|
206
275
|
}
|
|
207
276
|
|
package/dist/build-info.json
CHANGED
package/dist/vanduo-core.css
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! Vanduo v1.5.
|
|
1
|
+
/*! Vanduo v1.5.1 | Built: 2026-06-20T15:00:18.257Z | git:baf8178 | development */
|
|
2
2
|
*, :before, :after {
|
|
3
3
|
box-sizing: border-box;
|
|
4
4
|
}
|
|
@@ -9874,7 +9874,8 @@ a.vd-card:active {
|
|
|
9874
9874
|
cursor: pointer;
|
|
9875
9875
|
background: var(--vd-expanding-card-bg, var(--vd-expanding-card-bg-default, #e6e9ed));
|
|
9876
9876
|
background-position: center;
|
|
9877
|
-
background-
|
|
9877
|
+
background-repeat: no-repeat;
|
|
9878
|
+
background-size: cover;
|
|
9878
9879
|
border-radius: 30px;
|
|
9879
9880
|
flex-grow: 1;
|
|
9880
9881
|
min-width: 60px;
|
|
@@ -9909,7 +9910,6 @@ a.vd-card:active {
|
|
|
9909
9910
|
}
|
|
9910
9911
|
|
|
9911
9912
|
.vd-expanding-card.is-active {
|
|
9912
|
-
background-size: auto 100%;
|
|
9913
9913
|
border-radius: 40px;
|
|
9914
9914
|
flex-grow: 10000;
|
|
9915
9915
|
max-width: 600px;
|
|
@@ -10004,43 +10004,98 @@ a.vd-card:active {
|
|
|
10004
10004
|
transition-delay: .1s;
|
|
10005
10005
|
}
|
|
10006
10006
|
|
|
10007
|
-
@media screen and (width <=
|
|
10007
|
+
@media screen and (width <= 767.98px) {
|
|
10008
10008
|
.vd-expanding-cards {
|
|
10009
|
-
|
|
10009
|
+
--vd-expanding-card-mobile-stripe: 56px;
|
|
10010
|
+
--vd-expanding-card-mobile-active: clamp(200px, 55vw, 280px);
|
|
10011
|
+
--vd-expanding-card-mobile-gap: 8px;
|
|
10012
|
+
width: 100%;
|
|
10013
|
+
min-width: 0;
|
|
10014
|
+
max-width: 100%;
|
|
10015
|
+
height: min(72vh,
|
|
10016
|
+
calc(var(--vd-expanding-card-mobile-active) +
|
|
10017
|
+
5 * (var(--vd-expanding-card-mobile-stripe) + var(--vd-expanding-card-mobile-gap))));
|
|
10018
|
+
align-items: stretch;
|
|
10019
|
+
gap: var(--vd-expanding-card-mobile-gap);
|
|
10020
|
+
flex-direction: column;
|
|
10021
|
+
overflow: hidden;
|
|
10010
10022
|
}
|
|
10011
10023
|
|
|
10012
|
-
.vd-expanding-card
|
|
10013
|
-
|
|
10024
|
+
.vd-expanding-card {
|
|
10025
|
+
flex: 1 1 var(--vd-expanding-card-mobile-stripe);
|
|
10026
|
+
width: 100%;
|
|
10027
|
+
min-width: 0;
|
|
10028
|
+
min-height: var(--vd-expanding-card-mobile-stripe);
|
|
10029
|
+
margin: 0;
|
|
10030
|
+
transition: flex .5s cubic-bezier(.05, .61, .41, .95), min-height .5s cubic-bezier(.05, .61, .41, .95), border-radius .5s cubic-bezier(.05, .61, .41, .95), margin .5s cubic-bezier(.05, .61, .41, .95);
|
|
10014
10031
|
}
|
|
10015
|
-
}
|
|
10016
10032
|
|
|
10017
|
-
|
|
10018
|
-
|
|
10019
|
-
min-
|
|
10033
|
+
.vd-expanding-card.is-active {
|
|
10034
|
+
flex: 10000 1 var(--vd-expanding-card-mobile-active);
|
|
10035
|
+
min-height: var(--vd-expanding-card-mobile-active);
|
|
10036
|
+
border-radius: 32px;
|
|
10037
|
+
max-width: none;
|
|
10020
10038
|
}
|
|
10021
10039
|
|
|
10022
|
-
.vd-expanding-card:
|
|
10023
|
-
|
|
10040
|
+
.vd-expanding-card:not(.is-active) {
|
|
10041
|
+
flex: 1 1 var(--vd-expanding-card-mobile-stripe);
|
|
10042
|
+
min-height: var(--vd-expanding-card-mobile-stripe);
|
|
10043
|
+
border-radius: 28px;
|
|
10024
10044
|
}
|
|
10025
|
-
}
|
|
10026
10045
|
|
|
10027
|
-
|
|
10028
|
-
|
|
10029
|
-
min-width: 360px;
|
|
10046
|
+
.vd-expanding-card.is-active .vd-expanding-card-shadow {
|
|
10047
|
+
box-shadow: inset 0 -120px 120px -120px #000, inset 0 -120px 120px -100px #000;
|
|
10030
10048
|
}
|
|
10031
10049
|
|
|
10032
|
-
.vd-expanding-card:
|
|
10033
|
-
|
|
10050
|
+
.vd-expanding-card:not(.is-active) .vd-expanding-card-shadow {
|
|
10051
|
+
height: 100%;
|
|
10052
|
+
bottom: 0;
|
|
10053
|
+
box-shadow: inset 0 0 80px #00000059;
|
|
10034
10054
|
}
|
|
10035
|
-
}
|
|
10036
10055
|
|
|
10037
|
-
|
|
10038
|
-
|
|
10039
|
-
|
|
10056
|
+
.vd-expanding-card.is-active .vd-expanding-card-label {
|
|
10057
|
+
align-items: flex-end;
|
|
10058
|
+
top: auto;
|
|
10059
|
+
bottom: 20px;
|
|
10060
|
+
left: 20px;
|
|
10061
|
+
transform: none;
|
|
10040
10062
|
}
|
|
10041
10063
|
|
|
10042
|
-
.vd-expanding-card:
|
|
10043
|
-
|
|
10064
|
+
.vd-expanding-card:not(.is-active) .vd-expanding-card-label {
|
|
10065
|
+
align-items: center;
|
|
10066
|
+
height: 40px;
|
|
10067
|
+
inset: auto auto 8px 12px;
|
|
10068
|
+
transform: none;
|
|
10069
|
+
}
|
|
10070
|
+
|
|
10071
|
+
.vd-expanding-card:not(.is-active) .vd-expanding-card-info {
|
|
10072
|
+
white-space: nowrap;
|
|
10073
|
+
text-overflow: ellipsis;
|
|
10074
|
+
flex: 1;
|
|
10075
|
+
min-width: 0;
|
|
10076
|
+
overflow: hidden;
|
|
10077
|
+
}
|
|
10078
|
+
|
|
10079
|
+
.vd-expanding-card:not(.is-active) .vd-expanding-card-info > div {
|
|
10080
|
+
opacity: 1;
|
|
10081
|
+
left: 0;
|
|
10082
|
+
}
|
|
10083
|
+
|
|
10084
|
+
.vd-expanding-card:not(.is-active) .vd-expanding-card-subtitle {
|
|
10085
|
+
opacity: 0;
|
|
10086
|
+
max-height: 0;
|
|
10087
|
+
overflow: hidden;
|
|
10088
|
+
}
|
|
10089
|
+
|
|
10090
|
+
.vd-expanding-card.is-active .vd-expanding-card-subtitle {
|
|
10091
|
+
opacity: 1;
|
|
10092
|
+
max-height: 2em;
|
|
10093
|
+
}
|
|
10094
|
+
|
|
10095
|
+
.vd-expanding-card:not(.is-active) .vd-expanding-card-title {
|
|
10096
|
+
text-overflow: ellipsis;
|
|
10097
|
+
font-size: 1rem;
|
|
10098
|
+
overflow: hidden;
|
|
10044
10099
|
}
|
|
10045
10100
|
}
|
|
10046
10101
|
|