@surdeddd/bottom-sheet 0.6.1 → 0.7.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 +31 -3
- package/dist/element.cjs +28 -26
- package/dist/element.iife.global.js +2 -2
- package/dist/element.js +28 -26
- package/dist/index.cjs +27 -25
- package/dist/index.js +27 -25
- package/dist/qwik.cjs +27 -25
- package/dist/qwik.js +27 -25
- package/dist/react.cjs +27 -25
- package/dist/react.js +27 -25
- package/dist/solid.cjs +30 -26
- package/dist/solid.d.cts +2 -0
- package/dist/solid.d.ts +2 -0
- package/dist/solid.js +30 -26
- package/dist/solid.source.jsx +30 -26
- package/dist/styles.css +4 -4
- package/dist/svelte-core.cjs +27 -25
- package/dist/svelte-core.js +27 -25
- package/dist/svelte.cjs +27 -25
- package/dist/svelte.js +27 -25
- package/dist/vue.cjs +27 -25
- package/dist/vue.js +27 -25
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
> Universal, headless bottom-sheet engine. **One core, eight adapters, GPU-accelerated, fully tested.**
|
|
4
4
|
|
|
5
5
|

|
|
6
|
-

|
|
7
7
|

|
|
8
8
|

|
|
9
9
|
|
|
@@ -47,7 +47,7 @@ stacking — and the exact same engine behind every adapter.
|
|
|
47
47
|
| WCAG 2.1 AA keyboard slider | partial | — | **✓** |
|
|
48
48
|
| Multi-sheet stacking | — | — | **✓** |
|
|
49
49
|
| Sheet-manager registry (typed) | — | — | **✓** |
|
|
50
|
-
| Tests (unit + e2e) | partial | partial | **
|
|
50
|
+
| Tests (unit + e2e) | partial | partial | **452 + 164** |
|
|
51
51
|
|
|
52
52
|
## Install
|
|
53
53
|
|
|
@@ -379,6 +379,34 @@ element — drive any CSS animation from drag without touching JS:
|
|
|
379
379
|
}
|
|
380
380
|
```
|
|
381
381
|
|
|
382
|
+
### Padding & layout
|
|
383
|
+
|
|
384
|
+
Every region's padding is a token — override or zero it to go edge-to-edge.
|
|
385
|
+
Defaults match the built-in look. Set the variable on the host / `.bs-root` /
|
|
386
|
+
`:root`; custom properties inherit through the Web Component's shadow boundary,
|
|
387
|
+
so the same override works for every adapter:
|
|
388
|
+
|
|
389
|
+
| Token | Default | Region |
|
|
390
|
+
| ---------------------- | ---------------------- | ------------------- |
|
|
391
|
+
| `--bs-content-padding` | `0 16px 16px` | scrollable body |
|
|
392
|
+
| `--bs-handle-padding` | `8px 16px 4px` | grabber strip (top) |
|
|
393
|
+
| `--bs-header-padding` | `0 16px 8px` | header slot |
|
|
394
|
+
| `--bs-footer-padding` | `12px 16px (+ inset)` | footer slot |
|
|
395
|
+
|
|
396
|
+
(The footer default is `12px 16px calc(12px + env(safe-area-inset-bottom))` — it
|
|
397
|
+
keeps action buttons clear of the home indicator.)
|
|
398
|
+
|
|
399
|
+
```css
|
|
400
|
+
.bs-root { --bs-content-padding: 0; } /* full-bleed content */
|
|
401
|
+
.bs-root { --bs-content-padding: 0 24px 24px; } /* custom insets */
|
|
402
|
+
bottom-sheet { --bs-handle-padding: 0; } /* Web Component, from the host */
|
|
403
|
+
```
|
|
404
|
+
|
|
405
|
+
A `maxHeight` (prop, or `max-height` attribute on the element) caps the sheet:
|
|
406
|
+
a `'content'` / `'fit'` snap taller than the cap settles flush against the edge
|
|
407
|
+
and the body scrolls internally — the sheet never lifts off its anchor and
|
|
408
|
+
`--bs-size` always equals the rendered height.
|
|
409
|
+
|
|
382
410
|
## Demo
|
|
383
411
|
|
|
384
412
|
```bash
|
|
@@ -393,7 +421,7 @@ snap, progress, velocity, FPS). EN/RU and light/dark toggles in the corner.
|
|
|
393
421
|
## Testing
|
|
394
422
|
|
|
395
423
|
```bash
|
|
396
|
-
npm test #
|
|
424
|
+
npm test # 452 unit tests via vitest + happy-dom (~6s)
|
|
397
425
|
npx playwright test # 32 e2e via Playwright on mobile-Chrome (~25s)
|
|
398
426
|
npm run typecheck # TypeScript --noEmit
|
|
399
427
|
```
|
package/dist/element.cjs
CHANGED
|
@@ -2889,8 +2889,8 @@ var init_BottomSheetEngine = __esm({
|
|
|
2889
2889
|
this.updateAriaSlider();
|
|
2890
2890
|
this.emit("snap", {
|
|
2891
2891
|
id,
|
|
2892
|
-
size:
|
|
2893
|
-
progress: this.computeProgress(
|
|
2892
|
+
size: this.size,
|
|
2893
|
+
progress: this.computeProgress(this.size)
|
|
2894
2894
|
});
|
|
2895
2895
|
if (wasClosed && target.size > 0) {
|
|
2896
2896
|
this.emit("open", { id });
|
|
@@ -2969,12 +2969,12 @@ var init_BottomSheetEngine = __esm({
|
|
|
2969
2969
|
const value = typeof h === "number" ? `${h}px` : h;
|
|
2970
2970
|
const axis = layoutAxis(this.mode);
|
|
2971
2971
|
this.element.style.setProperty(
|
|
2972
|
-
axis === "height" ? "
|
|
2972
|
+
axis === "height" ? "max-height" : "max-width",
|
|
2973
2973
|
value
|
|
2974
2974
|
);
|
|
2975
2975
|
if (typeof h === "number") {
|
|
2976
2976
|
this.maxHeightCap = h;
|
|
2977
|
-
this.
|
|
2977
|
+
this.recompute();
|
|
2978
2978
|
} else if (typeof window !== "undefined") {
|
|
2979
2979
|
const probe2 = document.createElement("div");
|
|
2980
2980
|
probe2.style.cssText = `position:absolute;visibility:hidden;pointer-events:none;${axis === "height" ? "height" : "width"}:${value};`;
|
|
@@ -2982,7 +2982,7 @@ var init_BottomSheetEngine = __esm({
|
|
|
2982
2982
|
const measured = axis === "height" ? probe2.offsetHeight : probe2.offsetWidth;
|
|
2983
2983
|
probe2.remove();
|
|
2984
2984
|
this.maxHeightCap = measured > 0 ? measured : void 0;
|
|
2985
|
-
this.
|
|
2985
|
+
this.recompute();
|
|
2986
2986
|
}
|
|
2987
2987
|
}
|
|
2988
2988
|
clampToMaxHeight() {
|
|
@@ -2990,9 +2990,6 @@ var init_BottomSheetEngine = __esm({
|
|
|
2990
2990
|
if (this.snaps.getMaxAxisSize() > this.maxHeightCap) {
|
|
2991
2991
|
this.snaps.setMaxAxisSize(this.maxHeightCap);
|
|
2992
2992
|
}
|
|
2993
|
-
if (this.size > this.maxHeightCap && !this.gesture?.isDragging) {
|
|
2994
|
-
this.applySize(this.maxHeightCap);
|
|
2995
|
-
}
|
|
2996
2993
|
}
|
|
2997
2994
|
setAllowed(ids, snap) {
|
|
2998
2995
|
if (this.destroyed) return;
|
|
@@ -3130,6 +3127,7 @@ var init_BottomSheetEngine = __esm({
|
|
|
3130
3127
|
recompute() {
|
|
3131
3128
|
if (this.destroyed) return;
|
|
3132
3129
|
this.snaps.recompute();
|
|
3130
|
+
this.clampToMaxHeight();
|
|
3133
3131
|
this.scrim.invalidateOpacityCache();
|
|
3134
3132
|
if (this.gesture?.isDragging) return;
|
|
3135
3133
|
const current = this.snaps.findById(this.activeId);
|
|
@@ -3187,9 +3185,10 @@ var init_BottomSheetEngine = __esm({
|
|
|
3187
3185
|
const handleSize = vertical ? this.handle.offsetHeight : this.handle.offsetWidth;
|
|
3188
3186
|
const content = this.scrollContainer;
|
|
3189
3187
|
const natural = content ? handleSize + this.measureContentExtent(vertical) : handleSize;
|
|
3190
|
-
|
|
3188
|
+
const capped = this.maxHeightCap !== void 0 ? Math.min(natural, this.maxHeightCap) : natural;
|
|
3189
|
+
if (typeof window === "undefined") return capped;
|
|
3191
3190
|
const viewport = vertical ? window.innerHeight : window.innerWidth;
|
|
3192
|
-
return viewport > 0 ? Math.min(
|
|
3191
|
+
return viewport > 0 ? Math.min(capped, viewport) : capped;
|
|
3193
3192
|
}
|
|
3194
3193
|
installFitObserver() {
|
|
3195
3194
|
if (typeof ResizeObserver === "undefined") return;
|
|
@@ -3560,8 +3559,8 @@ var init_BottomSheetEngine = __esm({
|
|
|
3560
3559
|
this.updateAriaSlider();
|
|
3561
3560
|
this.emit("snap", {
|
|
3562
3561
|
id: target.id,
|
|
3563
|
-
size:
|
|
3564
|
-
progress: this.computeProgress(
|
|
3562
|
+
size: this.size,
|
|
3563
|
+
progress: this.computeProgress(this.size)
|
|
3565
3564
|
});
|
|
3566
3565
|
this.haptic();
|
|
3567
3566
|
if (previousSnapSize === 0 && target.size > 0) {
|
|
@@ -3586,23 +3585,25 @@ var init_BottomSheetEngine = __esm({
|
|
|
3586
3585
|
}
|
|
3587
3586
|
}
|
|
3588
3587
|
applySize(size) {
|
|
3589
|
-
|
|
3590
|
-
const
|
|
3588
|
+
const cap = this.snaps.getMaxAxisSize();
|
|
3589
|
+
const clamped = cap > 0 && size > cap && !this.gesture?.isDragging ? cap : size;
|
|
3590
|
+
this.size = clamped;
|
|
3591
|
+
const offset = cap - clamped;
|
|
3591
3592
|
const style = this.element.style;
|
|
3592
3593
|
style.transform = this.transformTemplate(offset);
|
|
3593
|
-
if (this.sizeWriteSentinel.shouldWrite(
|
|
3594
|
-
style.setProperty("--bs-size", `${
|
|
3594
|
+
if (this.sizeWriteSentinel.shouldWrite(clamped, SIZE_WRITE_EPSILON)) {
|
|
3595
|
+
style.setProperty("--bs-size", `${clamped}px`);
|
|
3595
3596
|
if (this.scrimParent) {
|
|
3596
|
-
this.scrimParent.style.setProperty("--bs-size", `${
|
|
3597
|
+
this.scrimParent.style.setProperty("--bs-size", `${clamped}px`);
|
|
3597
3598
|
}
|
|
3598
3599
|
if (this.anchorHost && this.anchorHost !== this.scrimParent) {
|
|
3599
|
-
this.anchorHost.style.setProperty("--bs-size", `${
|
|
3600
|
+
this.anchorHost.style.setProperty("--bs-size", `${clamped}px`);
|
|
3600
3601
|
}
|
|
3601
3602
|
if (this.rootEl && this.rootEl !== this.scrimParent && this.rootEl !== this.anchorHost) {
|
|
3602
|
-
this.rootEl.style.setProperty("--bs-size", `${
|
|
3603
|
+
this.rootEl.style.setProperty("--bs-size", `${clamped}px`);
|
|
3603
3604
|
}
|
|
3604
3605
|
}
|
|
3605
|
-
const progress = this.computeProgress(
|
|
3606
|
+
const progress = this.computeProgress(clamped);
|
|
3606
3607
|
const progressChanged = this.progressWriteSentinel.shouldWrite(
|
|
3607
3608
|
progress,
|
|
3608
3609
|
OPACITY_WRITE_EPSILON
|
|
@@ -3619,14 +3620,15 @@ var init_BottomSheetEngine = __esm({
|
|
|
3619
3620
|
this.scrim.applyOpacity(progress, progressChanged);
|
|
3620
3621
|
if (progressChanged && this.bus.listenerCount("progress") > 0) {
|
|
3621
3622
|
this.progressPayload.value = progress;
|
|
3622
|
-
this.progressPayload.size =
|
|
3623
|
+
this.progressPayload.size = clamped;
|
|
3623
3624
|
this.emit("progress", this.progressPayload);
|
|
3624
3625
|
}
|
|
3625
3626
|
}
|
|
3626
3627
|
computeProgress(size) {
|
|
3627
3628
|
const { min, max } = this.getAllowedRange();
|
|
3628
|
-
|
|
3629
|
-
|
|
3629
|
+
const reachableMax = Math.min(max, this.snaps.getMaxAxisSize());
|
|
3630
|
+
if (reachableMax <= min) return 0;
|
|
3631
|
+
return Math.min(Math.max((size - min) / (reachableMax - min), 0), 1);
|
|
3630
3632
|
}
|
|
3631
3633
|
handleOpen() {
|
|
3632
3634
|
sheetStack.promote(this.id);
|
|
@@ -3650,8 +3652,8 @@ var init_BottomSheetEngine = __esm({
|
|
|
3650
3652
|
this.updateAriaSlider();
|
|
3651
3653
|
this.emit("snap", {
|
|
3652
3654
|
id: target.id,
|
|
3653
|
-
size:
|
|
3654
|
-
progress: this.computeProgress(
|
|
3655
|
+
size: this.size,
|
|
3656
|
+
progress: this.computeProgress(this.size)
|
|
3655
3657
|
});
|
|
3656
3658
|
if (target.size > 0 && !this.lifecycle.isInstalled) {
|
|
3657
3659
|
this.emit("open", { id: target.id });
|
|
@@ -3677,7 +3679,7 @@ var init_BottomSheetEngine = __esm({
|
|
|
3677
3679
|
var baseStyles;
|
|
3678
3680
|
var init_baseStyles = __esm({
|
|
3679
3681
|
"src/web-component/baseStyles.ts"() {
|
|
3680
|
-
baseStyles = `:where(.bs-root){--bs-surface-d:#ffffff;--bs-surface-border-d:rgba(225,227,237,1);--bs-radius-d:20px;--bs-handle-color-d:rgba(26,22,20,0.3);--bs-handle-width:40px;--bs-handle-height:5px;--bs-z-backdrop:90;--bs-z-sheet:100;--bs-header-min-height:80px;--bs-backdrop-color-d:rgba(0,0,0,0.5);--bs-scrim-color-d:transparent;--bs-scrim-blur:0px;--bs-z-scrim:calc(var(--bs-z-sheet) - 1);--bs-size:0px;--bs-progress:0}.bs-backdrop{position:fixed;inset:0;background:var(--bs-backdrop-color,var(--bs-backdrop-color-d));opacity:0;pointer-events:none;z-index:var(--bs-z-backdrop);transition:opacity 0.24s cubic-bezier(0.22,1,0.36,1);will-change:opacity}.bs-root[data-dragging="true"] .bs-backdrop,.bs-root[data-animating="true"] .bs-backdrop{transition:none}.bs-sheet{position:fixed;background:var(--bs-surface,var(--bs-surface-d));box-shadow:var(--bs-shadow,var(--bs-shadow-auto,none));z-index:var(--bs-z-sheet);pointer-events:auto;overflow:hidden;display:flex;flex-direction:column;-webkit-tap-highlight-color:transparent;user-select:none;overscroll-behavior:contain}.bs-sheet[data-mode="bottom"]{left:0;right:0;bottom:0;width:100%;border-top-left-radius:var(--bs-radius,var(--bs-radius-d));border-top-right-radius:var(--bs-radius,var(--bs-radius-d));border-top:1px solid var(--bs-surface-border,var(--bs-surface-border-d));padding-bottom:env(safe-area-inset-bottom);--bs-shadow-auto:0 calc(var(--bs-progress,0) * -2px - 3px) calc(var(--bs-progress,0) * 18px + 12px) rgba(0,0,0,calc(var(--bs-progress,0) * 0.15 + 0.12))}.bs-sheet[data-mode="top"]{left:0;right:0;top:0;width:100%;border-bottom-left-radius:var(--bs-radius,var(--bs-radius-d));border-bottom-right-radius:var(--bs-radius,var(--bs-radius-d));border-bottom:1px solid var(--bs-surface-border,var(--bs-surface-border-d));flex-direction:column-reverse;--bs-shadow-auto:0 3px 12px rgba(0,0,0,0.12);padding-top:env(safe-area-inset-top)}.bs-sheet[data-mode="left"]{top:0;bottom:0;left:0;height:100%;border-top-right-radius:var(--bs-radius,var(--bs-radius-d));border-bottom-right-radius:var(--bs-radius,var(--bs-radius-d));border-right:1px solid var(--bs-surface-border,var(--bs-surface-border-d));--bs-shadow-auto:3px 0 12px rgba(0,0,0,0.12)}.bs-sheet[data-mode="right"]{top:0;bottom:0;right:0;height:100%;border-top-left-radius:var(--bs-radius,var(--bs-radius-d));border-bottom-left-radius:var(--bs-radius,var(--bs-radius-d));border-left:1px solid var(--bs-surface-border,var(--bs-surface-border-d));--bs-shadow-auto:-3px 0 12px rgba(0,0,0,0.12)}.bs-sheet[data-mode="left"] .bs-content{padding-right:36px}.bs-sheet[data-mode="right"] .bs-content{padding-left:36px}.bs-handle{flex-shrink:0;min-height:44px;display:flex;flex-direction:column;justify-content:center;padding:8px 16px 4px;cursor:grab;touch-action:none;user-select:none;background:var(--bs-surface,var(--bs-surface-d));-webkit-tap-highlight-color:transparent;outline:none;position:relative}.bs-handle:active{cursor:grabbing}.bs-handle:focus-visible{outline:2px solid currentColor;outline-offset:-2px;border-radius:var(--bs-radius,var(--bs-radius-d))}.bs-handle::before{content:"";display:block;width:var(--bs-handle-width);height:var(--bs-handle-height);background:var(--bs-handle-color,var(--bs-handle-color-d));border-radius:calc(var(--bs-handle-height) / 2);margin:0 auto 8px;transition:width 0.15s ease,background 0.15s ease,transform 0.15s ease;pointer-events:none}.bs-sheet[data-mode="left"] .bs-handle,.bs-sheet[data-mode="right"] .bs-handle{position:absolute;top:0;bottom:0;width:28px;min-width:0;min-height:0;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:0;background:var(--bs-surface,var(--bs-surface-d));z-index:1;overflow:hidden}.bs-sheet[data-mode="left"] .bs-handle>*,.bs-sheet[data-mode="right"] .bs-handle>*{display:none}.bs-sheet[data-mode="left"] .bs-handle{right:0;border-left:1px solid var(--bs-surface-border,var(--bs-surface-border-d))}.bs-sheet[data-mode="right"] .bs-handle{left:0;border-right:1px solid var(--bs-surface-border,var(--bs-surface-border-d))}.bs-sheet[data-mode="left"] .bs-handle::before,.bs-sheet[data-mode="right"] .bs-handle::before{width:var(--bs-handle-height);height:var(--bs-handle-width);margin:0}.bs-sheet:hover .bs-handle::before{background:color-mix(in oklab,var(--bs-handle-color,var(--bs-handle-color-d)),#000 15%)}.bs-handle:active::before{background:color-mix(in oklab,var(--bs-handle-color,var(--bs-handle-color-d)),#000 35%);transform:scaleX(1.15)}.bs-handle.bs-handle--ticks::after{content:"";display:block;position:absolute;left:50%;bottom:6px;transform:translateX(-50%);width:calc(var(--bs-handle-width) * 2);height:3px;background-image:radial-gradient( circle,var(--bs-handle-color,var(--bs-handle-color-d)) 0 1.5px,transparent 1.6px );background-size:8px 3px;background-repeat:repeat-x;background-position:center;opacity:0;transition:opacity 0.18s ease-out;pointer-events:none}.bs-root[data-dragging="true"] .bs-handle.bs-handle--ticks::after{opacity:0.4}.bs-sheet[data-mode="top"] .bs-handle.bs-handle--ticks::after{bottom:auto;top:6px}.bs-sheet[data-mode="left"] .bs-handle.bs-handle--ticks::after,.bs-sheet[data-mode="right"] .bs-handle.bs-handle--ticks::after{left:50%;top:50%;bottom:auto;transform:translate(-50%,-50%);width:3px;height:calc(var(--bs-handle-width) * 2);background-size:3px 8px;background-repeat:repeat-y;margin-left:calc(var(--bs-handle-height) + 6px)}.bs-sheet[data-mode="right"] .bs-handle.bs-handle--ticks::after{margin-left:calc(-1 * (var(--bs-handle-height) + 6px))}.bs-header{flex:0 0 auto;padding:0 16px 8px;background:var(--bs-surface,var(--bs-surface-d))}.bs-content{flex:1;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;user-select:text;padding:0 16px 16px}.bs-footer{flex:0 0 auto;padding:12px 16px calc(12px + env(safe-area-inset-bottom));border-top:1px solid var(--bs-surface-border,var(--bs-surface-border-d));background:var(--bs-surface,var(--bs-surface-d))}.bs-sheet[data-mode="bottom"]:has(.bs-footer:not([hidden]):has(*)){padding-bottom:0}.bs-header:not(:has(*)),.bs-footer:not(:has(*)),.bs-header[hidden],.bs-footer[hidden]{display:none}.bs-screen{position:absolute;inset:0;pointer-events:none;z-index:var(--bs-z-scrim);background:var(--bs-scrim-color,var(--bs-scrim-color-d));transition:opacity 0.24s cubic-bezier(0.22,1,0.36,1);will-change:opacity}.bs-root[data-dragging="true"] .bs-screen,.bs-root[data-animating="true"] .bs-screen{transition:none}.bs-scrim-overlay{z-index:calc(var(--bs-z-sheet) + 1);pointer-events:none}.bs-button-slot{position:fixed;z-index:calc(var(--bs-z-sheet) + 1);pointer-events:auto}.bs-button-slot[data-side="left"]{left:16px;bottom:calc(var(--bs-size,0px) + 12px)}.bs-button-slot[data-side="right"]{right:16px;bottom:calc(var(--bs-size,0px) + 12px)}.bs-button-slot[data-mode="top"]{bottom:auto;top:calc(var(--bs-size,0px) + 12px)}.bs-button-slot[data-mode="left"]{left:calc(var(--bs-size,0px) + 12px);right:auto;bottom:auto;top:16px}.bs-button-slot[data-mode="right"]{right:calc(var(--bs-size,0px) + 12px);left:auto;bottom:auto;top:16px}@media (prefers-reduced-motion:reduce){.bs-backdrop,.bs-handle::before,.bs-button-slot[data-side="left"],.bs-button-slot[data-side="right"]{transition:none !important}}@media (prefers-color-scheme:dark){:where(.bs-root){--bs-surface-d:#1a1a1d;--bs-surface-border-d:rgba(255,255,255,0.08);--bs-handle-color-d:rgba(255,255,255,0.45);--bs-shadow-auto:0 -3px 16px rgba(0,0,0,0.5)}}.bs-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}:where(.ovl-root){--ovl-surface:var(--bs-surface,var(--bs-surface-d,#ffffff));--ovl-surface-border:var(--bs-surface-border,var(--bs-surface-border-d,rgba(0,0,0,0.08)));--ovl-shadow:0 -8px 40px rgba(0,0,0,0.35);--ovl-radius:var(--bs-radius,var(--bs-radius-d,20px));--ovl-backdrop-color:rgba(0,0,0,0.5);--ovl-z-backdrop:200;--ovl-z-panel:201}.ovl-backdrop{position:fixed;inset:0;background:var(--ovl-backdrop-color);opacity:0;pointer-events:none;z-index:var(--ovl-z-backdrop)}.ovl-panel{position:fixed;background:var(--ovl-surface);box-shadow:var(--ovl-shadow);z-index:var(--ovl-z-panel);-webkit-tap-highlight-color:transparent;outline:none;transition:transform 0.32s cubic-bezier(0.29,1.24,0.84,0.99),opacity 0.32s ease-out}.ovl-panel[data-state="open"]{transform:translate3d(0,0,0);opacity:1}@starting-style{.ovl-panel[data-edge="bottom"][data-state="open"]{transform:translate3d(0,100%,0);opacity:0}.ovl-panel[data-edge="top"][data-state="open"]{transform:translate3d(0,-100%,0);opacity:0}.ovl-panel[data-edge="left"][data-state="open"]{transform:translate3d(-100%,0,0);opacity:0}.ovl-panel[data-edge="right"][data-state="open"]{transform:translate3d(100%,0,0);opacity:0}}.ovl-panel[data-edge="bottom"]{left:0;right:0;bottom:0;width:100%;border-top-left-radius:var(--ovl-radius);border-top-right-radius:var(--ovl-radius);border-top:1px solid var(--ovl-surface-border);padding-bottom:env(safe-area-inset-bottom)}.ovl-panel[data-edge="top"]{left:0;right:0;top:0;width:100%;border-bottom-left-radius:var(--ovl-radius);border-bottom-right-radius:var(--ovl-radius);border-bottom:1px solid var(--ovl-surface-border);padding-top:env(safe-area-inset-top)}.ovl-panel[data-edge="left"]{top:0;bottom:0;left:0;height:100%;border-top-right-radius:var(--ovl-radius);border-bottom-right-radius:var(--ovl-radius);border-right:1px solid var(--ovl-surface-border)}.ovl-panel[data-edge="right"]{top:0;bottom:0;right:0;height:100%;border-top-left-radius:var(--ovl-radius);border-bottom-left-radius:var(--ovl-radius);border-left:1px solid var(--ovl-surface-border)}@media (prefers-reduced-motion:reduce){.ovl-panel,.ovl-backdrop{transition:none !important}}`;
|
|
3682
|
+
baseStyles = `:where(.bs-root){--bs-surface-d:#ffffff;--bs-surface-border-d:rgba(225,227,237,1);--bs-radius-d:20px;--bs-handle-color-d:rgba(26,22,20,0.3);--bs-handle-width:40px;--bs-handle-height:5px;--bs-z-backdrop:90;--bs-z-sheet:100;--bs-header-min-height:80px;--bs-backdrop-color-d:rgba(0,0,0,0.5);--bs-scrim-color-d:transparent;--bs-scrim-blur:0px;--bs-z-scrim:calc(var(--bs-z-sheet) - 1);--bs-size:0px;--bs-progress:0}.bs-backdrop{position:fixed;inset:0;background:var(--bs-backdrop-color,var(--bs-backdrop-color-d));opacity:0;pointer-events:none;z-index:var(--bs-z-backdrop);transition:opacity 0.24s cubic-bezier(0.22,1,0.36,1);will-change:opacity}.bs-root[data-dragging="true"] .bs-backdrop,.bs-root[data-animating="true"] .bs-backdrop{transition:none}.bs-sheet{position:fixed;background:var(--bs-surface,var(--bs-surface-d));box-shadow:var(--bs-shadow,var(--bs-shadow-auto,none));z-index:var(--bs-z-sheet);pointer-events:auto;overflow:hidden;display:flex;flex-direction:column;-webkit-tap-highlight-color:transparent;user-select:none;overscroll-behavior:contain}.bs-sheet[data-mode="bottom"]{left:0;right:0;bottom:0;width:100%;border-top-left-radius:var(--bs-radius,var(--bs-radius-d));border-top-right-radius:var(--bs-radius,var(--bs-radius-d));border-top:1px solid var(--bs-surface-border,var(--bs-surface-border-d));padding-bottom:env(safe-area-inset-bottom);--bs-shadow-auto:0 calc(var(--bs-progress,0) * -2px - 3px) calc(var(--bs-progress,0) * 18px + 12px) rgba(0,0,0,calc(var(--bs-progress,0) * 0.15 + 0.12))}.bs-sheet[data-mode="top"]{left:0;right:0;top:0;width:100%;border-bottom-left-radius:var(--bs-radius,var(--bs-radius-d));border-bottom-right-radius:var(--bs-radius,var(--bs-radius-d));border-bottom:1px solid var(--bs-surface-border,var(--bs-surface-border-d));flex-direction:column-reverse;--bs-shadow-auto:0 3px 12px rgba(0,0,0,0.12);padding-top:env(safe-area-inset-top)}.bs-sheet[data-mode="left"]{top:0;bottom:0;left:0;height:100%;border-top-right-radius:var(--bs-radius,var(--bs-radius-d));border-bottom-right-radius:var(--bs-radius,var(--bs-radius-d));border-right:1px solid var(--bs-surface-border,var(--bs-surface-border-d));--bs-shadow-auto:3px 0 12px rgba(0,0,0,0.12)}.bs-sheet[data-mode="right"]{top:0;bottom:0;right:0;height:100%;border-top-left-radius:var(--bs-radius,var(--bs-radius-d));border-bottom-left-radius:var(--bs-radius,var(--bs-radius-d));border-left:1px solid var(--bs-surface-border,var(--bs-surface-border-d));--bs-shadow-auto:-3px 0 12px rgba(0,0,0,0.12)}.bs-sheet[data-mode="left"] .bs-content{padding-right:36px}.bs-sheet[data-mode="right"] .bs-content{padding-left:36px}.bs-handle{flex-shrink:0;min-height:44px;display:flex;flex-direction:column;justify-content:center;padding:var(--bs-handle-padding,8px 16px 4px);cursor:grab;touch-action:none;user-select:none;background:var(--bs-surface,var(--bs-surface-d));-webkit-tap-highlight-color:transparent;outline:none;position:relative}.bs-handle:active{cursor:grabbing}.bs-handle:focus-visible{outline:2px solid currentColor;outline-offset:-2px;border-radius:var(--bs-radius,var(--bs-radius-d))}.bs-handle::before{content:"";display:block;width:var(--bs-handle-width);height:var(--bs-handle-height);background:var(--bs-handle-color,var(--bs-handle-color-d));border-radius:calc(var(--bs-handle-height) / 2);margin:0 auto 8px;transition:width 0.15s ease,background 0.15s ease,transform 0.15s ease;pointer-events:none}.bs-sheet[data-mode="left"] .bs-handle,.bs-sheet[data-mode="right"] .bs-handle{position:absolute;top:0;bottom:0;width:28px;min-width:0;min-height:0;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:0;background:var(--bs-surface,var(--bs-surface-d));z-index:1;overflow:hidden}.bs-sheet[data-mode="left"] .bs-handle>*,.bs-sheet[data-mode="right"] .bs-handle>*{display:none}.bs-sheet[data-mode="left"] .bs-handle{right:0;border-left:1px solid var(--bs-surface-border,var(--bs-surface-border-d))}.bs-sheet[data-mode="right"] .bs-handle{left:0;border-right:1px solid var(--bs-surface-border,var(--bs-surface-border-d))}.bs-sheet[data-mode="left"] .bs-handle::before,.bs-sheet[data-mode="right"] .bs-handle::before{width:var(--bs-handle-height);height:var(--bs-handle-width);margin:0}.bs-sheet:hover .bs-handle::before{background:color-mix(in oklab,var(--bs-handle-color,var(--bs-handle-color-d)),#000 15%)}.bs-handle:active::before{background:color-mix(in oklab,var(--bs-handle-color,var(--bs-handle-color-d)),#000 35%);transform:scaleX(1.15)}.bs-handle.bs-handle--ticks::after{content:"";display:block;position:absolute;left:50%;bottom:6px;transform:translateX(-50%);width:calc(var(--bs-handle-width) * 2);height:3px;background-image:radial-gradient( circle,var(--bs-handle-color,var(--bs-handle-color-d)) 0 1.5px,transparent 1.6px );background-size:8px 3px;background-repeat:repeat-x;background-position:center;opacity:0;transition:opacity 0.18s ease-out;pointer-events:none}.bs-root[data-dragging="true"] .bs-handle.bs-handle--ticks::after{opacity:0.4}.bs-sheet[data-mode="top"] .bs-handle.bs-handle--ticks::after{bottom:auto;top:6px}.bs-sheet[data-mode="left"] .bs-handle.bs-handle--ticks::after,.bs-sheet[data-mode="right"] .bs-handle.bs-handle--ticks::after{left:50%;top:50%;bottom:auto;transform:translate(-50%,-50%);width:3px;height:calc(var(--bs-handle-width) * 2);background-size:3px 8px;background-repeat:repeat-y;margin-left:calc(var(--bs-handle-height) + 6px)}.bs-sheet[data-mode="right"] .bs-handle.bs-handle--ticks::after{margin-left:calc(-1 * (var(--bs-handle-height) + 6px))}.bs-header{flex:0 0 auto;padding:var(--bs-header-padding,0 16px 8px);background:var(--bs-surface,var(--bs-surface-d))}.bs-content{flex:1;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;user-select:text;padding:var(--bs-content-padding,0 16px 16px)}.bs-footer{flex:0 0 auto;padding:var(--bs-footer-padding,12px 16px calc(12px + env(safe-area-inset-bottom)));border-top:1px solid var(--bs-surface-border,var(--bs-surface-border-d));background:var(--bs-surface,var(--bs-surface-d))}.bs-sheet[data-mode="bottom"]:has(.bs-footer:not([hidden]):has(*)){padding-bottom:0}.bs-header:not(:has(*)),.bs-footer:not(:has(*)),.bs-header[hidden],.bs-footer[hidden]{display:none}.bs-screen{position:absolute;inset:0;pointer-events:none;z-index:var(--bs-z-scrim);background:var(--bs-scrim-color,var(--bs-scrim-color-d));transition:opacity 0.24s cubic-bezier(0.22,1,0.36,1);will-change:opacity}.bs-root[data-dragging="true"] .bs-screen,.bs-root[data-animating="true"] .bs-screen{transition:none}.bs-scrim-overlay{z-index:calc(var(--bs-z-sheet) + 1);pointer-events:none}.bs-button-slot{position:fixed;z-index:calc(var(--bs-z-sheet) + 1);pointer-events:auto}.bs-button-slot[data-side="left"]{left:16px;bottom:calc(var(--bs-size,0px) + 12px)}.bs-button-slot[data-side="right"]{right:16px;bottom:calc(var(--bs-size,0px) + 12px)}.bs-button-slot[data-mode="top"]{bottom:auto;top:calc(var(--bs-size,0px) + 12px)}.bs-button-slot[data-mode="left"]{left:calc(var(--bs-size,0px) + 12px);right:auto;bottom:auto;top:16px}.bs-button-slot[data-mode="right"]{right:calc(var(--bs-size,0px) + 12px);left:auto;bottom:auto;top:16px}@media (prefers-reduced-motion:reduce){.bs-backdrop,.bs-handle::before,.bs-button-slot[data-side="left"],.bs-button-slot[data-side="right"]{transition:none !important}}@media (prefers-color-scheme:dark){:where(.bs-root){--bs-surface-d:#1a1a1d;--bs-surface-border-d:rgba(255,255,255,0.08);--bs-handle-color-d:rgba(255,255,255,0.45);--bs-shadow-auto:0 -3px 16px rgba(0,0,0,0.5)}}.bs-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}:where(.ovl-root){--ovl-surface:var(--bs-surface,var(--bs-surface-d,#ffffff));--ovl-surface-border:var(--bs-surface-border,var(--bs-surface-border-d,rgba(0,0,0,0.08)));--ovl-shadow:0 -8px 40px rgba(0,0,0,0.35);--ovl-radius:var(--bs-radius,var(--bs-radius-d,20px));--ovl-backdrop-color:rgba(0,0,0,0.5);--ovl-z-backdrop:200;--ovl-z-panel:201}.ovl-backdrop{position:fixed;inset:0;background:var(--ovl-backdrop-color);opacity:0;pointer-events:none;z-index:var(--ovl-z-backdrop)}.ovl-panel{position:fixed;background:var(--ovl-surface);box-shadow:var(--ovl-shadow);z-index:var(--ovl-z-panel);-webkit-tap-highlight-color:transparent;outline:none;transition:transform 0.32s cubic-bezier(0.29,1.24,0.84,0.99),opacity 0.32s ease-out}.ovl-panel[data-state="open"]{transform:translate3d(0,0,0);opacity:1}@starting-style{.ovl-panel[data-edge="bottom"][data-state="open"]{transform:translate3d(0,100%,0);opacity:0}.ovl-panel[data-edge="top"][data-state="open"]{transform:translate3d(0,-100%,0);opacity:0}.ovl-panel[data-edge="left"][data-state="open"]{transform:translate3d(-100%,0,0);opacity:0}.ovl-panel[data-edge="right"][data-state="open"]{transform:translate3d(100%,0,0);opacity:0}}.ovl-panel[data-edge="bottom"]{left:0;right:0;bottom:0;width:100%;border-top-left-radius:var(--ovl-radius);border-top-right-radius:var(--ovl-radius);border-top:1px solid var(--ovl-surface-border);padding-bottom:env(safe-area-inset-bottom)}.ovl-panel[data-edge="top"]{left:0;right:0;top:0;width:100%;border-bottom-left-radius:var(--ovl-radius);border-bottom-right-radius:var(--ovl-radius);border-bottom:1px solid var(--ovl-surface-border);padding-top:env(safe-area-inset-top)}.ovl-panel[data-edge="left"]{top:0;bottom:0;left:0;height:100%;border-top-right-radius:var(--ovl-radius);border-bottom-right-radius:var(--ovl-radius);border-right:1px solid var(--ovl-surface-border)}.ovl-panel[data-edge="right"]{top:0;bottom:0;right:0;height:100%;border-top-left-radius:var(--ovl-radius);border-bottom-left-radius:var(--ovl-radius);border-left:1px solid var(--ovl-surface-border)}@media (prefers-reduced-motion:reduce){.ovl-panel,.ovl-backdrop{transition:none !important}}`;
|
|
3681
3683
|
}
|
|
3682
3684
|
});
|
|
3683
3685
|
|