kuinetic 0.2.2 → 0.2.3

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.
Files changed (52) hide show
  1. package/README.md +2 -2
  2. package/dist/esm/{chunk-K2M7O6W5.mjs → chunk-FASAEQDR.mjs} +32 -1
  3. package/dist/esm/{chunk-XDDJVANU.mjs → chunk-FYMZW5N2.mjs} +2301 -528
  4. package/dist/esm/{chunk-BBQ22D7A.mjs → chunk-MZQG2VMG.mjs} +202 -2
  5. package/dist/esm/core/index.mjs +21 -3
  6. package/dist/esm/effects/index.mjs +2 -2
  7. package/dist/esm/index.mjs +35 -4
  8. package/dist/esm/notes/index.mjs +1075 -0
  9. package/dist/kuinetic.all.js +2502 -501
  10. package/dist/kuinetic.all.min.js +2 -2
  11. package/dist/kuinetic.css +238 -65
  12. package/dist/kuinetic.js +2501 -500
  13. package/dist/kuinetic.min.css +1 -1
  14. package/dist/kuinetic.min.js +1 -1
  15. package/dist/kuinetic.notes.js +1 -0
  16. package/dist/types/3d/flattening.d.ts +8 -7
  17. package/dist/types/core/deck-viewer.d.ts +87 -0
  18. package/dist/types/core/describe.d.ts +174 -0
  19. package/dist/types/core/gesture.d.ts +10 -0
  20. package/dist/types/core/index.d.ts +6 -2
  21. package/dist/types/core/target.d.ts +28 -0
  22. package/dist/types/core/timing-contract.d.ts +61 -0
  23. package/dist/types/core/types.d.ts +59 -0
  24. package/dist/types/effects/auto-motion.d.ts +169 -0
  25. package/dist/types/effects/carousel/deck.d.ts +170 -0
  26. package/dist/types/effects/carousel/drag.d.ts +6 -0
  27. package/dist/types/effects/carousel/fit.d.ts +130 -0
  28. package/dist/types/effects/carousel/index.d.ts +6 -23
  29. package/dist/types/effects/carousel/stack.d.ts +77 -0
  30. package/dist/types/effects/catalog/interaction-reveal.d.ts +69 -9
  31. package/dist/types/effects/forms/primitives.d.ts +1 -2
  32. package/dist/types/effects/gestures/index.d.ts +3 -4
  33. package/dist/types/effects/shared.d.ts +3 -30
  34. package/dist/types/effects/step-index.d.ts +48 -10
  35. package/dist/types/effects/swipe-event.d.ts +75 -0
  36. package/dist/types/index.d.ts +26 -0
  37. package/dist/types/notes/catalog-core.d.ts +3 -0
  38. package/dist/types/notes/catalog.d.ts +3 -0
  39. package/dist/types/notes/index.d.ts +13 -0
  40. package/dist/types/notes/interaction-reveal.d.ts +3 -0
  41. package/dist/types/notes/interaction.d.ts +6 -0
  42. package/dist/types/notes/keys.d.ts +7 -0
  43. package/dist/types/notes/mechanics.d.ts +7 -0
  44. package/dist/types/notes/scroll-nav-forms.d.ts +6 -0
  45. package/dist/types/notes/shared.d.ts +6 -0
  46. package/dist/types/notes/showcase.d.ts +7 -0
  47. package/dist/types/notes/text.d.ts +3 -0
  48. package/dist/types/showcase/compare.d.ts +9 -0
  49. package/dist/types/showcase/index.d.ts +3 -0
  50. package/dist/types/showcase/lightbox.d.ts +23 -1
  51. package/dist/types/showcase/modal-shell.d.ts +11 -0
  52. package/package.json +7 -3
package/dist/kuinetic.css CHANGED
@@ -209,16 +209,19 @@
209
209
  --kui-anchored-preview-ease: ease-out;
210
210
  }
211
211
  [data-kui-fx~=anchored-preview-bottom] {
212
+ --kui-anchored-preview-place: bottom;
212
213
  --kui-anchored-preview-duration: 220ms;
213
214
  --kui-anchored-preview-delay: 0ms;
214
215
  --kui-anchored-preview-ease: ease-out;
215
216
  }
216
217
  [data-kui-fx~=anchored-preview-left] {
218
+ --kui-anchored-preview-place: left;
217
219
  --kui-anchored-preview-duration: 220ms;
218
220
  --kui-anchored-preview-delay: 0ms;
219
221
  --kui-anchored-preview-ease: ease-out;
220
222
  }
221
223
  [data-kui-fx~=anchored-preview-right] {
224
+ --kui-anchored-preview-place: right;
222
225
  --kui-anchored-preview-duration: 220ms;
223
226
  --kui-anchored-preview-delay: 0ms;
224
227
  --kui-anchored-preview-ease: ease-out;
@@ -366,6 +369,18 @@
366
369
  --kui-spatial-ring-delay: 0ms;
367
370
  --kui-spatial-ring-ease: cubic-bezier(0.22, 1, 0.36, 1);
368
371
  }
372
+ [data-kui-fx~=carousel-orbit] {
373
+ --kui-ring-plane: screen;
374
+ --kui-facing: camera;
375
+ --kui-spatial-ring-duration: 620ms;
376
+ --kui-spatial-ring-delay: 0ms;
377
+ --kui-spatial-ring-ease: cubic-bezier(0.22, 1, 0.36, 1);
378
+ }
379
+ [data-kui-fx~=carousel-stack] {
380
+ --kui-spatial-stack-duration: 620ms;
381
+ --kui-spatial-stack-delay: 0ms;
382
+ --kui-spatial-stack-ease: cubic-bezier(0.22, 1, 0.36, 1);
383
+ }
369
384
  [data-kui-fx~=chart-area-fill] {
370
385
  --kui-shape-fill-duration: 900ms;
371
386
  --kui-shape-fill-delay: 0ms;
@@ -1372,6 +1387,9 @@
1372
1387
  [data-kui-fx~=swipe-x] {
1373
1388
  --kui-axis: x;
1374
1389
  }
1390
+ [data-kui-fx~=swipe-y] {
1391
+ --kui-axis: y;
1392
+ }
1375
1393
  [data-kui-fx~=tab-indicator-slide] {
1376
1394
  --kui-flip-indicator-duration: 300ms;
1377
1395
  --kui-flip-indicator-delay: 0ms;
@@ -2197,64 +2215,124 @@
2197
2215
  [data-kui-fx~=carousel-3d],
2198
2216
  [data-kui-fx~=carousel-3d-high],
2199
2217
  [data-kui-fx~=carousel-3d-low],
2200
- [data-kui-fx~=carousel-3d-inside] {
2218
+ [data-kui-fx~=carousel-3d-inside],
2219
+ [data-kui-fx~=carousel-orbit] {
2201
2220
  display: grid;
2202
2221
  place-items: center;
2203
2222
  perspective: var(--kui-perspective, 1600px);
2204
2223
  transform-style: preserve-3d;
2205
2224
  --kui-ring-tilt: clamp(-80deg, calc(-1 * var(--kui-tilt, 0deg)), 80deg);
2206
2225
  --kui-ring-drift: calc(var(--kui-step-position, 0) - var(--kui-step, 0));
2226
+ --kui-ring-fit: initial;
2207
2227
  }
2208
2228
  [data-kui-fx~=carousel-3d] [data-kui-step-offset],
2209
2229
  [data-kui-fx~=carousel-3d-high] [data-kui-step-offset],
2210
2230
  [data-kui-fx~=carousel-3d-low] [data-kui-step-offset],
2211
- [data-kui-fx~=carousel-3d-inside] [data-kui-step-offset] {
2231
+ [data-kui-fx~=carousel-3d-inside] [data-kui-step-offset],
2232
+ [data-kui-fx~=carousel-orbit] [data-kui-step-offset] {
2212
2233
  grid-area: 1 / 1;
2213
2234
  backface-visibility: hidden;
2214
2235
  --kui-ring-spacing: calc(var(--kui-arc, 360deg) / max(1, var(--kui-item-count, 1)));
2215
2236
  --kui-ring-angle: calc((var(--kui-offset, 0) - var(--kui-ring-drift)) * var(--kui-ring-spacing));
2216
- --kui-ring-radius: var( --kui-radius, calc( (var(--kui-item-width, 260px) + var(--kui-gap, 24px)) / (2 * tan(clamp(0.5deg, var(--kui-ring-spacing) / 2, 60deg))) ) );
2237
+ --kui-ring-wanted: var( --kui-radius, calc( (var(--kui-item-width, 260px) + var(--kui-gap, 24px)) / (2 * tan(clamp(0.5deg, var(--kui-ring-spacing) / 2, 60deg))) ) );
2238
+ --kui-ring-radius: min(var(--kui-ring-wanted), var(--kui-ring-fit, var(--kui-ring-wanted)));
2217
2239
  transform: rotateX(var(--kui-ring-tilt)) rotateY(var(--kui-ring-angle)) translateZ(var(--kui-ring-radius));
2218
2240
  transition: transform var(--kui-spatial-ring-duration, 620ms) var(--kui-spatial-ring-ease, cubic-bezier(0.22, 1, 0.36, 1)) var(--kui-spatial-ring-delay, 0ms);
2219
2241
  }
2220
- [data-kui-ring-dragging=true] [data-kui-step-offset] {
2221
- transition: none;
2222
- }
2223
2242
  [data-kui-ring-face=back] {
2224
2243
  pointer-events: none;
2225
2244
  }
2226
2245
  [data-kui-fx~=carousel-3d-inside] [data-kui-ring-face=back] {
2227
2246
  visibility: hidden;
2228
2247
  }
2229
- [data-kui-fx~=carousel-3d][data-kui-ring-facing=camera] [data-kui-step-offset],
2230
- [data-kui-fx~=carousel-3d-high][data-kui-ring-facing=camera] [data-kui-step-offset],
2231
- [data-kui-fx~=carousel-3d-low][data-kui-ring-facing=camera] [data-kui-step-offset],
2232
- [data-kui-fx~=carousel-3d-inside][data-kui-ring-facing=camera] [data-kui-step-offset] {
2248
+ [data-kui-fx~=carousel-3d][data-kui-ring-facing=camera]:not([data-kui-ring-plane=screen]) [data-kui-step-offset],
2249
+ [data-kui-fx~=carousel-3d-high][data-kui-ring-facing=camera]:not([data-kui-ring-plane=screen]) [data-kui-step-offset],
2250
+ [data-kui-fx~=carousel-3d-low][data-kui-ring-facing=camera]:not([data-kui-ring-plane=screen]) [data-kui-step-offset],
2251
+ [data-kui-fx~=carousel-3d-inside][data-kui-ring-facing=camera]:not([data-kui-ring-plane=screen]) [data-kui-step-offset],
2252
+ [data-kui-fx~=carousel-orbit][data-kui-ring-facing=camera]:not([data-kui-ring-plane=screen]) [data-kui-step-offset] {
2233
2253
  transform-style: preserve-3d;
2234
2254
  }
2235
- [data-kui-fx~=carousel-3d][data-kui-ring-facing=camera] [data-kui-step-offset] > *,
2236
- [data-kui-fx~=carousel-3d-high][data-kui-ring-facing=camera] [data-kui-step-offset] > *,
2237
- [data-kui-fx~=carousel-3d-low][data-kui-ring-facing=camera] [data-kui-step-offset] > *,
2238
- [data-kui-fx~=carousel-3d-inside][data-kui-ring-facing=camera] [data-kui-step-offset] > * {
2255
+ [data-kui-fx~=carousel-3d][data-kui-ring-facing=camera]:not([data-kui-ring-plane=screen]) [data-kui-step-offset] > *,
2256
+ [data-kui-fx~=carousel-3d-high][data-kui-ring-facing=camera]:not([data-kui-ring-plane=screen]) [data-kui-step-offset] > *,
2257
+ [data-kui-fx~=carousel-3d-low][data-kui-ring-facing=camera]:not([data-kui-ring-plane=screen]) [data-kui-step-offset] > *,
2258
+ [data-kui-fx~=carousel-3d-inside][data-kui-ring-facing=camera]:not([data-kui-ring-plane=screen]) [data-kui-step-offset] > *,
2259
+ [data-kui-fx~=carousel-orbit][data-kui-ring-facing=camera]:not([data-kui-ring-plane=screen]) [data-kui-step-offset] > * {
2239
2260
  transform: rotateY(calc(-1 * var(--kui-ring-angle))) rotateX(calc(-1 * var(--kui-ring-tilt)));
2240
2261
  transform-style: preserve-3d;
2241
2262
  }
2242
2263
  [data-kui-fx~=carousel-3d-inside] [data-kui-step-offset] {
2243
2264
  transform: rotateX(var(--kui-ring-tilt)) rotateY(var(--kui-ring-angle)) translateZ(calc(-1 * var(--kui-ring-radius)));
2244
2265
  }
2266
+ [data-kui-ring-plane=screen] {
2267
+ container-type: inline-size;
2268
+ aspect-ratio: 1;
2269
+ margin-inline: auto;
2270
+ --kui-orbit-extent: max(var(--kui-item-width, 260px), var(--kui-item-height, 0px));
2271
+ --kui-orbit-radius: var( --kui-radius, calc( (var(--kui-item-width, 260px) + var(--kui-gap, 24px)) / (2 * sin(clamp(0.5deg, var(--kui-arc, 360deg) / max(1, var(--kui-item-count, 1)) / 2, 90deg))) ) );
2272
+ max-inline-size: calc(2 * var(--kui-orbit-radius) + var(--kui-orbit-extent));
2273
+ }
2274
+ [data-kui-ring-plane=screen] [data-kui-step-offset] {
2275
+ --kui-ring-radius: max( 0px, min(var(--kui-orbit-radius), calc(50cqi - var(--kui-orbit-extent) / 2)) );
2276
+ transform: rotate(var(--kui-ring-angle)) translateY(calc(-1 * var(--kui-ring-radius)));
2277
+ }
2278
+ [data-kui-ring-plane=screen][data-kui-ring-facing=camera] [data-kui-step-offset] {
2279
+ transform: rotate(var(--kui-ring-angle)) translateY(calc(-1 * var(--kui-ring-radius))) rotate(calc(-1 * var(--kui-ring-angle)));
2280
+ }
2281
+ [data-kui-fx~=carousel-stack] {
2282
+ display: grid;
2283
+ place-items: center;
2284
+ --kui-ring-drift: calc(var(--kui-step-position, 0) - var(--kui-step, 0));
2285
+ --kui-stack-reach-x: calc(var(--kui-stack-depth, 3) * var(--kui-stack-shift, 48px));
2286
+ --kui-stack-reach-y: calc(var(--kui-stack-depth, 3) * var(--kui-stack-rise, 36px));
2287
+ padding-top: max(0px, var(--kui-stack-reach-y));
2288
+ padding-bottom: max(0px, -1 * var(--kui-stack-reach-y));
2289
+ padding-right: max(0px, var(--kui-stack-reach-x));
2290
+ padding-left: max(0px, -1 * var(--kui-stack-reach-x));
2291
+ }
2292
+ [data-kui-fx~=carousel-stack] [data-kui-step-offset] {
2293
+ grid-area: 1 / 1;
2294
+ --kui-stack-place: calc( mod(var(--kui-offset, 0) + 1, max(1, var(--kui-item-count, 1))) - 1 - var(--kui-ring-drift) );
2295
+ --kui-stack-behind: max(0, var(--kui-stack-place));
2296
+ --kui-stack-gone: max(0, -1 * var(--kui-stack-place));
2297
+ transform: translate(calc(var(--kui-stack-place) * var(--kui-stack-shift, 48px)), calc(-1 * var(--kui-stack-place) * var(--kui-stack-rise, 36px))) scale(max(0.05, 1 - var(--kui-stack-place) * var(--kui-stack-shrink, 0.08)));
2298
+ filter: blur(calc(var(--kui-stack-behind) * var(--kui-stack-blur, 2px)));
2299
+ opacity: clamp(0, min(1 - var(--kui-stack-behind) * var(--kui-stack-fade, 0.2), var(--kui-stack-depth, 3) + 1 - var(--kui-stack-place), 1 - 2 * var(--kui-stack-gone)), 1);
2300
+ z-index: calc(100 - var(--kui-stack-place) * 10);
2301
+ transition-property:
2302
+ transform,
2303
+ opacity,
2304
+ filter,
2305
+ z-index,
2306
+ visibility;
2307
+ transition-duration: var(--kui-spatial-stack-duration, 620ms);
2308
+ transition-timing-function: var(--kui-spatial-stack-ease, cubic-bezier(0.22, 1, 0.36, 1));
2309
+ transition-delay: var(--kui-spatial-stack-delay, 0ms);
2310
+ }
2311
+ [data-kui-fx~=carousel-stack] [data-kui-ring-face=back] {
2312
+ visibility: hidden;
2313
+ }
2245
2314
  [data-kui~=carousel-3d],
2246
2315
  [data-kui~=carousel-3d-high],
2247
2316
  [data-kui~=carousel-3d-low],
2248
- [data-kui~=carousel-3d-inside] {
2317
+ [data-kui~=carousel-3d-inside],
2318
+ [data-kui~=carousel-orbit],
2319
+ [data-kui~=carousel-stack] {
2249
2320
  display: grid;
2250
2321
  place-items: center;
2251
2322
  }
2252
2323
  [data-kui~=carousel-3d] > *,
2253
2324
  [data-kui~=carousel-3d-high] > *,
2254
2325
  [data-kui~=carousel-3d-low] > *,
2255
- [data-kui~=carousel-3d-inside] > * {
2326
+ [data-kui~=carousel-3d-inside] > *,
2327
+ [data-kui~=carousel-orbit] > *,
2328
+ [data-kui~=carousel-stack] > * {
2256
2329
  grid-area: 1 / 1;
2257
2330
  }
2331
+ [data-kui-ring-dragging=true] [data-kui-step-offset],
2332
+ [data-kui-ring-spinning=true] [data-kui-step-offset],
2333
+ [data-kui-step-offset][data-kui-ring-wrap=true] {
2334
+ transition: none;
2335
+ }
2258
2336
  }
2259
2337
 
2260
2338
  /* src/css/media.css */
@@ -4130,6 +4208,19 @@
4130
4208
  position: relative;
4131
4209
  --kui-hover-intent-shown: 0;
4132
4210
  --kui-hover-intent-lag: 0ms;
4211
+ --kui-hover-intent-top: auto;
4212
+ --kui-hover-intent-bottom: 100%;
4213
+ --kui-hover-intent-dir: 1;
4214
+ --kui-hover-intent-shift: 0px;
4215
+ }
4216
+ [data-kui-fx][data-kui-hint-tease] {
4217
+ --kui-hover-intent-shown: 1;
4218
+ --kui-hover-intent-lag: 0ms;
4219
+ }
4220
+ [data-kui-fx][data-kui-hint-place=bottom] {
4221
+ --kui-hover-intent-top: 100%;
4222
+ --kui-hover-intent-bottom: auto;
4223
+ --kui-hover-intent-dir: -1;
4133
4224
  }
4134
4225
  [data-kui-fx~=hover-intent]:focus-visible,
4135
4226
  [data-kui-fx~=hover-intent]:has(:focus-visible) {
@@ -4138,11 +4229,19 @@
4138
4229
  }
4139
4230
  [data-kui-hint] {
4140
4231
  position: absolute;
4141
- bottom: 100%;
4232
+ top: var(--kui-hover-intent-top, auto);
4233
+ bottom: var(--kui-hover-intent-bottom, 100%);
4142
4234
  left: 50%;
4143
- margin-bottom: var(--kui-hover-intent-gap, 8px);
4235
+ z-index: 1;
4236
+ inline-size: max-content;
4237
+ max-inline-size: min(16rem, 70vw);
4238
+ margin-block: var(--kui-hover-intent-gap, 8px);
4239
+ padding: 0.5em 0.75em;
4240
+ border-radius: var(--kui-hover-intent-radius, 12px);
4241
+ background-color: var(--kui-hover-intent-bg-color, #111111);
4242
+ color: var(--kui-hover-intent-color, #f4f4f0);
4144
4243
  opacity: var(--kui-hover-intent-shown, 0);
4145
- translate: -50% calc(var(--kui-hover-intent-distance, 4px) * (1 - var(--kui-hover-intent-shown, 0)));
4244
+ translate: calc(-50% + var(--kui-hover-intent-shift, 0px)) calc(var(--kui-hover-intent-distance, 4px) * var(--kui-hover-intent-dir, 1) * (1 - var(--kui-hover-intent-shown, 0)));
4146
4245
  pointer-events: none;
4147
4246
  transition: opacity var(--kui-hover-intent-duration, 160ms) var(--kui-hover-intent-ease, ease-out) var(--kui-hover-intent-lag, 0ms), translate var(--kui-hover-intent-duration, 160ms) var(--kui-hover-intent-ease, ease-out) var(--kui-hover-intent-lag, 0ms);
4148
4247
  }
@@ -4303,22 +4402,27 @@
4303
4402
  position: relative;
4304
4403
  --kui-anchored-preview-shown: 0;
4305
4404
  --kui-anchored-preview-lag: 0ms;
4405
+ --kui-anchored-preview-shift: 0px;
4306
4406
  }
4307
- [data-kui-fx~=anchored-preview] {
4407
+ [data-kui-fx~=anchored-preview],
4408
+ [data-kui-fx][data-kui-preview-place=top] {
4308
4409
  --kui-anchored-preview-inset: auto auto calc(100% + var(--kui-anchored-preview-gap, 10px)) 50%;
4309
- --kui-anchored-preview-travel: -50% calc(var(--kui-anchored-preview-distance, 10px) * (1 - var(--kui-anchored-preview-shown, 0)));
4410
+ --kui-anchored-preview-travel: calc(-50% + var(--kui-anchored-preview-shift, 0px)) calc(var(--kui-anchored-preview-distance, 10px) * (1 - var(--kui-anchored-preview-shown, 0)));
4310
4411
  }
4311
- [data-kui-fx~=anchored-preview-bottom] {
4412
+ [data-kui-fx~=anchored-preview-bottom],
4413
+ [data-kui-fx][data-kui-preview-place=bottom] {
4312
4414
  --kui-anchored-preview-inset: calc(100% + var(--kui-anchored-preview-gap, 10px)) auto auto 50%;
4313
- --kui-anchored-preview-travel: -50% calc(-1 * var(--kui-anchored-preview-distance, 10px) * (1 - var(--kui-anchored-preview-shown, 0)));
4415
+ --kui-anchored-preview-travel: calc(-50% + var(--kui-anchored-preview-shift, 0px)) calc(-1 * var(--kui-anchored-preview-distance, 10px) * (1 - var(--kui-anchored-preview-shown, 0)));
4314
4416
  }
4315
- [data-kui-fx~=anchored-preview-left] {
4417
+ [data-kui-fx~=anchored-preview-left],
4418
+ [data-kui-fx][data-kui-preview-place=left] {
4316
4419
  --kui-anchored-preview-inset: 50% calc(100% + var(--kui-anchored-preview-gap, 10px)) auto auto;
4317
- --kui-anchored-preview-travel: calc( var(--kui-anchored-preview-distance, 10px) * (1 - var(--kui-anchored-preview-shown, 0)) ) -50%;
4420
+ --kui-anchored-preview-travel: calc( var(--kui-anchored-preview-distance, 10px) * (1 - var(--kui-anchored-preview-shown, 0)) ) calc(-50% + var(--kui-anchored-preview-shift, 0px));
4318
4421
  }
4319
- [data-kui-fx~=anchored-preview-right] {
4422
+ [data-kui-fx~=anchored-preview-right],
4423
+ [data-kui-fx][data-kui-preview-place=right] {
4320
4424
  --kui-anchored-preview-inset: 50% auto auto calc(100% + var(--kui-anchored-preview-gap, 10px));
4321
- --kui-anchored-preview-travel: calc( -1 * var(--kui-anchored-preview-distance, 10px) * (1 - var(--kui-anchored-preview-shown, 0)) ) -50%;
4425
+ --kui-anchored-preview-travel: calc( -1 * var(--kui-anchored-preview-distance, 10px) * (1 - var(--kui-anchored-preview-shown, 0)) ) calc(-50% + var(--kui-anchored-preview-shift, 0px));
4322
4426
  }
4323
4427
  [data-kui-fx~=anchored-preview]:focus-visible,
4324
4428
  [data-kui-fx~=anchored-preview]:has(:focus-visible),
@@ -4331,9 +4435,16 @@
4331
4435
  --kui-anchored-preview-shown: 1;
4332
4436
  --kui-anchored-preview-lag: var(--kui-anchored-preview-delay, 0ms);
4333
4437
  }
4438
+ [data-kui-fx][data-kui-preview-tease] {
4439
+ --kui-anchored-preview-shown: 1;
4440
+ --kui-anchored-preview-lag: 0ms;
4441
+ }
4334
4442
  [data-kui-preview] {
4335
4443
  position: absolute;
4336
4444
  inset: var(--kui-anchored-preview-inset, auto);
4445
+ border-radius: var(--kui-anchored-preview-radius, 0px);
4446
+ background-color: var(--kui-anchored-preview-bg-color, transparent);
4447
+ color: var(--kui-anchored-preview-color, currentcolor);
4337
4448
  translate: var(--kui-anchored-preview-travel, 0 0);
4338
4449
  opacity: var(--kui-anchored-preview-shown, 0);
4339
4450
  scale: calc(var(--kui-anchored-preview-scale, 0.85) + (1 - var(--kui-anchored-preview-scale, 0.85)) * var(--kui-anchored-preview-shown, 0));
@@ -5531,6 +5642,9 @@
5531
5642
  --kui-slideshow-duration: 500ms;
5532
5643
  --kui-slideshow-ease: ease;
5533
5644
  }
5645
+ [data-kui-fx~=compare] {
5646
+ --kui-compare-duration: 3s;
5647
+ }
5534
5648
  [data-kui-fx~=lightbox] {
5535
5649
  --kui-lightbox-media: image;
5536
5650
  --kui-lightbox-duration: 280ms;
@@ -5545,6 +5659,7 @@
5545
5659
  }
5546
5660
  [data-kui-fx~=video-lightbox] {
5547
5661
  --kui-lightbox-media: video;
5662
+ --kui-lightbox-caption: none;
5548
5663
  --kui-lightbox-duration: 280ms;
5549
5664
  --kui-lightbox-ease: cubic-bezier(0.22, 1, 0.36, 1);
5550
5665
  }
@@ -5570,25 +5685,42 @@
5570
5685
  outline-offset: 2px;
5571
5686
  }
5572
5687
  [data-kui-device] {
5688
+ --kui-device-outer-top: var(--kui-device-radius, 18px);
5689
+ --kui-device-outer-bottom: var(--kui-device-outer-top);
5690
+ --kui-device-pad-top: 14px;
5691
+ --kui-device-pad-bottom: 14px;
5692
+ --kui-device-pad-side: 14px;
5693
+ --kui-device-screen-floor: min(var(--kui-device-outer-top), 8px);
5573
5694
  position: relative;
5574
5695
  display: inline-block;
5575
5696
  box-sizing: border-box;
5576
5697
  overflow: hidden;
5577
5698
  border: 1px solid color-mix(in srgb, var(--kui-device-color, #111) 55%, transparent);
5578
- border-radius: var(--kui-device-radius, 18px);
5579
- padding: 14px;
5699
+ border-radius: var(--kui-device-outer-top) var(--kui-device-outer-top) var(--kui-device-outer-bottom) var(--kui-device-outer-bottom);
5700
+ padding: var(--kui-device-pad-top) var(--kui-device-pad-side) var(--kui-device-pad-bottom);
5580
5701
  background: var(--kui-device-color, #111);
5581
5702
  }
5582
- [data-kui-device] > img,
5583
- [data-kui-device] > video {
5703
+ [data-kui-device] > * {
5704
+ box-sizing: border-box;
5705
+ inline-size: 100%;
5706
+ block-size: 100%;
5707
+ overflow: hidden;
5708
+ border-radius: var( --kui-device-screen-radius, max( var(--kui-device-screen-floor), var(--kui-device-outer-top) - min(var(--kui-device-pad-side), var(--kui-device-pad-top)) - 1px ) max( var(--kui-device-screen-floor), var(--kui-device-outer-top) - min(var(--kui-device-pad-side), var(--kui-device-pad-top)) - 1px ) max( var(--kui-device-screen-floor), var(--kui-device-outer-bottom) - min(var(--kui-device-pad-side), var(--kui-device-pad-bottom)) - 1px ) max( var(--kui-device-screen-floor), var(--kui-device-outer-bottom) - min(var(--kui-device-pad-side), var(--kui-device-pad-bottom)) - 1px ) );
5709
+ }
5710
+ [data-kui-device] > :is(img, video, iframe, picture) {
5711
+ display: block;
5712
+ border: 0;
5713
+ object-fit: cover;
5714
+ }
5715
+ [data-kui-device] > picture > img {
5584
5716
  display: block;
5585
5717
  inline-size: 100%;
5586
5718
  block-size: 100%;
5587
5719
  object-fit: cover;
5588
5720
  }
5589
5721
  [data-kui-device=browser] {
5590
- padding: 30px 14px 14px;
5591
- border-radius: var(--kui-device-radius, 10px);
5722
+ --kui-device-outer-top: var(--kui-device-radius, 10px);
5723
+ --kui-device-pad-top: 30px;
5592
5724
  }
5593
5725
  [data-kui-device=browser]::before {
5594
5726
  content: "";
@@ -5618,8 +5750,10 @@
5618
5750
  background-repeat: no-repeat;
5619
5751
  }
5620
5752
  [data-kui-device=phone] {
5621
- padding: 16px 8px;
5622
- border-radius: var(--kui-device-radius, 36px);
5753
+ --kui-device-outer-top: var(--kui-device-radius, 36px);
5754
+ --kui-device-pad-top: 16px;
5755
+ --kui-device-pad-bottom: 16px;
5756
+ --kui-device-pad-side: 8px;
5623
5757
  aspect-ratio: 9 / 19.5;
5624
5758
  max-inline-size: 20rem;
5625
5759
  margin-inline: auto;
@@ -5637,15 +5771,20 @@
5637
5771
  border-radius: 0 0 12px 12px;
5638
5772
  }
5639
5773
  [data-kui-device=tablet] {
5640
- padding: 18px;
5641
- border-radius: var(--kui-device-radius, 22px);
5774
+ --kui-device-outer-top: var(--kui-device-radius, 22px);
5775
+ --kui-device-pad-top: 18px;
5776
+ --kui-device-pad-bottom: 18px;
5777
+ --kui-device-pad-side: 18px;
5642
5778
  aspect-ratio: 3 / 4;
5643
5779
  max-inline-size: 28rem;
5644
5780
  margin-inline: auto;
5645
5781
  }
5646
5782
  [data-kui-device=laptop] {
5647
- padding: 10px 10px 34px;
5648
- border-radius: var(--kui-device-radius, 12px) var(--kui-device-radius, 12px) 4px 4px;
5783
+ --kui-device-outer-top: var(--kui-device-radius, 12px);
5784
+ --kui-device-outer-bottom: 4px;
5785
+ --kui-device-pad-top: 10px;
5786
+ --kui-device-pad-bottom: 34px;
5787
+ --kui-device-pad-side: 10px;
5649
5788
  aspect-ratio: 16 / 10;
5650
5789
  }
5651
5790
  [data-kui-device=laptop]::after {
@@ -5757,6 +5896,20 @@
5757
5896
  outline: 2px solid Highlight;
5758
5897
  outline-offset: 2px;
5759
5898
  }
5899
+ [data-kui-fx~=compare][data-kui-compare-dividers] > .kui-compare-range {
5900
+ pointer-events: none;
5901
+ }
5902
+ [data-kui-fx~=compare] > .kui-compare-surface {
5903
+ grid-area: 1 / 1;
5904
+ position: relative;
5905
+ z-index: 3;
5906
+ cursor: ew-resize;
5907
+ touch-action: pan-y;
5908
+ }
5909
+ [data-kui-fx~=compare][data-kui-compare-axis=y] > .kui-compare-surface {
5910
+ cursor: ns-resize;
5911
+ touch-action: pan-x;
5912
+ }
5760
5913
  [data-kui-fx~=hotspots] {
5761
5914
  position: relative;
5762
5915
  display: inline-block;
@@ -6095,8 +6248,7 @@
6095
6248
  .kui-lightbox-slot {
6096
6249
  display: contents;
6097
6250
  }
6098
- .kui-lightbox-gallery,
6099
- .kui-lightbox-frame {
6251
+ .kui-lightbox-gallery {
6100
6252
  opacity: 0;
6101
6253
  scale: var(--kui-from-scale, 0.965);
6102
6254
  translate: 0 8px;
@@ -6105,23 +6257,37 @@
6105
6257
  scale var(--kui-lightbox-duration, 280ms) var(--kui-lightbox-ease, ease),
6106
6258
  translate var(--kui-lightbox-duration, 280ms) var(--kui-lightbox-ease, ease);
6107
6259
  }
6108
- .kui-lightbox.is-open .kui-lightbox-gallery,
6109
- .kui-lightbox.is-open .kui-lightbox-frame {
6260
+ .kui-lightbox.is-open .kui-lightbox-gallery {
6110
6261
  opacity: 1;
6111
6262
  scale: none;
6112
6263
  translate: none;
6113
6264
  }
6114
6265
  .kui-lightbox-gallery {
6115
6266
  display: grid;
6116
- place-items: center;
6267
+ grid-template-columns: minmax(0, 1fr);
6268
+ grid-template-rows: minmax(0, auto);
6269
+ align-content: center;
6270
+ justify-items: center;
6117
6271
  gap: 0.75rem;
6272
+ align-self: stretch;
6273
+ justify-self: stretch;
6274
+ min-block-size: 0;
6275
+ }
6276
+ .kui-lightbox-gallery:has(> figure > img.is-tall) {
6277
+ align-self: safe center;
6278
+ }
6279
+ .kui-lightbox-gallery.is-swipeable {
6280
+ touch-action: pan-y pinch-zoom;
6118
6281
  }
6119
6282
  .kui-lightbox-gallery figure {
6120
6283
  margin: 0;
6121
- display: flex;
6122
- flex-direction: column;
6123
- align-items: center;
6284
+ display: grid;
6285
+ grid-template-columns: minmax(0, 1fr);
6286
+ grid-template-rows: minmax(0, auto);
6287
+ justify-items: center;
6124
6288
  gap: 0.75rem;
6289
+ justify-self: stretch;
6290
+ min-block-size: 0;
6125
6291
  }
6126
6292
  .kui-lightbox-gallery img {
6127
6293
  display: block;
@@ -6131,7 +6297,7 @@
6131
6297
  }
6132
6298
  .kui-lightbox-gallery img.is-fit {
6133
6299
  max-inline-size: min(100%, 1400px);
6134
- max-block-size: 86dvh;
6300
+ max-block-size: 100%;
6135
6301
  inline-size: auto;
6136
6302
  block-size: auto;
6137
6303
  }
@@ -6187,36 +6353,42 @@
6187
6353
  outline-offset: 2px;
6188
6354
  }
6189
6355
  .kui-lightbox-frame {
6190
- inline-size: min(92vw, 1100px);
6191
- aspect-ratio: 16 / 9;
6192
- border-radius: 12px;
6193
- overflow: clip;
6194
- box-shadow: 0 30px 80px rgb(0 0 0 / 0.45);
6195
- background: #000;
6356
+ --kui-frame-w: 16;
6357
+ --kui-frame-h: 9;
6358
+ container-type: size;
6359
+ display: grid;
6360
+ place-items: center;
6361
+ inline-size: min(100%, 1100px);
6362
+ aspect-ratio: var(--kui-frame-w) / var(--kui-frame-h);
6363
+ max-block-size: 100%;
6196
6364
  }
6197
6365
  .kui-lightbox-frame--tall {
6198
- inline-size: min(80vw, 420px);
6199
- aspect-ratio: 9 / 16;
6366
+ --kui-frame-w: 9;
6367
+ --kui-frame-h: 16;
6368
+ inline-size: min(100%, 420px);
6200
6369
  }
6201
6370
  .kui-lightbox-frame--square {
6202
- inline-size: min(80vw, 720px);
6203
- aspect-ratio: 1;
6371
+ --kui-frame-w: 1;
6372
+ --kui-frame-h: 1;
6373
+ inline-size: min(100%, 720px);
6204
6374
  }
6205
6375
  .kui-lightbox-frame iframe,
6206
6376
  .kui-lightbox-frame video {
6207
6377
  display: block;
6208
- inline-size: 100%;
6209
- block-size: 100%;
6378
+ inline-size: min(100cqi, 100cqb * var(--kui-frame-w) / var(--kui-frame-h));
6379
+ aspect-ratio: var(--kui-frame-w) / var(--kui-frame-h);
6380
+ block-size: auto;
6210
6381
  border: 0;
6382
+ border-radius: 12px;
6383
+ box-shadow: 0 30px 80px rgb(0 0 0 / 0.45);
6384
+ background: #000;
6211
6385
  }
6212
6386
  @media (prefers-reduced-motion: reduce) {
6213
6387
  dialog.kui-lightbox,
6214
- .kui-lightbox-gallery,
6215
- .kui-lightbox-frame {
6388
+ .kui-lightbox-gallery {
6216
6389
  transition-duration: 1ms;
6217
6390
  }
6218
- .kui-lightbox-gallery,
6219
- .kui-lightbox-frame {
6391
+ .kui-lightbox-gallery {
6220
6392
  scale: none;
6221
6393
  translate: none;
6222
6394
  }
@@ -6242,7 +6414,8 @@
6242
6414
  color: CanvasText;
6243
6415
  background: Canvas;
6244
6416
  }
6245
- .kui-lightbox-frame {
6417
+ .kui-lightbox-frame iframe,
6418
+ .kui-lightbox-frame video {
6246
6419
  border: 1px solid CanvasText;
6247
6420
  }
6248
6421
  [data-kui-fx~=scroll-story] > :first-child,