@surdeddd/bottom-sheet 0.6.0 → 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 +31 -27
- package/dist/element.iife.global.js +2 -2
- package/dist/element.js +31 -27
- package/dist/index.cjs +30 -26
- package/dist/index.js +30 -26
- package/dist/qwik.cjs +30 -26
- package/dist/qwik.js +30 -26
- package/dist/react.cjs +30 -26
- package/dist/react.js +30 -26
- package/dist/solid.cjs +33 -27
- package/dist/solid.d.cts +2 -0
- package/dist/solid.d.ts +2 -0
- package/dist/solid.js +33 -27
- package/dist/solid.source.jsx +33 -27
- package/dist/styles.css +4 -4
- package/dist/svelte-core.cjs +30 -26
- package/dist/svelte-core.js +30 -26
- package/dist/svelte.cjs +30 -26
- package/dist/svelte.d.cts +3 -0
- package/dist/svelte.d.ts +3 -0
- package/dist/svelte.js +30 -26
- package/dist/vue.cjs +30 -26
- package/dist/vue.d.cts +3 -0
- package/dist/vue.d.ts +3 -0
- package/dist/vue.js +30 -26
- 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
|
@@ -2862,7 +2862,9 @@ var init_BottomSheetEngine = __esm({
|
|
|
2862
2862
|
const previousSize = this.size;
|
|
2863
2863
|
this.scrollCache.cache(previousId, previousSize, target.size);
|
|
2864
2864
|
this.activeId = id;
|
|
2865
|
-
|
|
2865
|
+
const rawTargetSize = this.snapPointsRaw.find((p) => p.id === id)?.size;
|
|
2866
|
+
const opensToRest = id === "closed" || rawTargetSize === 0;
|
|
2867
|
+
if (wasClosed && !opensToRest) {
|
|
2866
2868
|
this.opening = true;
|
|
2867
2869
|
sheetStack.promote(this.id);
|
|
2868
2870
|
}
|
|
@@ -2887,8 +2889,8 @@ var init_BottomSheetEngine = __esm({
|
|
|
2887
2889
|
this.updateAriaSlider();
|
|
2888
2890
|
this.emit("snap", {
|
|
2889
2891
|
id,
|
|
2890
|
-
size:
|
|
2891
|
-
progress: this.computeProgress(
|
|
2892
|
+
size: this.size,
|
|
2893
|
+
progress: this.computeProgress(this.size)
|
|
2892
2894
|
});
|
|
2893
2895
|
if (wasClosed && target.size > 0) {
|
|
2894
2896
|
this.emit("open", { id });
|
|
@@ -2967,12 +2969,12 @@ var init_BottomSheetEngine = __esm({
|
|
|
2967
2969
|
const value = typeof h === "number" ? `${h}px` : h;
|
|
2968
2970
|
const axis = layoutAxis(this.mode);
|
|
2969
2971
|
this.element.style.setProperty(
|
|
2970
|
-
axis === "height" ? "
|
|
2972
|
+
axis === "height" ? "max-height" : "max-width",
|
|
2971
2973
|
value
|
|
2972
2974
|
);
|
|
2973
2975
|
if (typeof h === "number") {
|
|
2974
2976
|
this.maxHeightCap = h;
|
|
2975
|
-
this.
|
|
2977
|
+
this.recompute();
|
|
2976
2978
|
} else if (typeof window !== "undefined") {
|
|
2977
2979
|
const probe2 = document.createElement("div");
|
|
2978
2980
|
probe2.style.cssText = `position:absolute;visibility:hidden;pointer-events:none;${axis === "height" ? "height" : "width"}:${value};`;
|
|
@@ -2980,7 +2982,7 @@ var init_BottomSheetEngine = __esm({
|
|
|
2980
2982
|
const measured = axis === "height" ? probe2.offsetHeight : probe2.offsetWidth;
|
|
2981
2983
|
probe2.remove();
|
|
2982
2984
|
this.maxHeightCap = measured > 0 ? measured : void 0;
|
|
2983
|
-
this.
|
|
2985
|
+
this.recompute();
|
|
2984
2986
|
}
|
|
2985
2987
|
}
|
|
2986
2988
|
clampToMaxHeight() {
|
|
@@ -2988,9 +2990,6 @@ var init_BottomSheetEngine = __esm({
|
|
|
2988
2990
|
if (this.snaps.getMaxAxisSize() > this.maxHeightCap) {
|
|
2989
2991
|
this.snaps.setMaxAxisSize(this.maxHeightCap);
|
|
2990
2992
|
}
|
|
2991
|
-
if (this.size > this.maxHeightCap && !this.gesture?.isDragging) {
|
|
2992
|
-
this.applySize(this.maxHeightCap);
|
|
2993
|
-
}
|
|
2994
2993
|
}
|
|
2995
2994
|
setAllowed(ids, snap) {
|
|
2996
2995
|
if (this.destroyed) return;
|
|
@@ -3128,6 +3127,7 @@ var init_BottomSheetEngine = __esm({
|
|
|
3128
3127
|
recompute() {
|
|
3129
3128
|
if (this.destroyed) return;
|
|
3130
3129
|
this.snaps.recompute();
|
|
3130
|
+
this.clampToMaxHeight();
|
|
3131
3131
|
this.scrim.invalidateOpacityCache();
|
|
3132
3132
|
if (this.gesture?.isDragging) return;
|
|
3133
3133
|
const current = this.snaps.findById(this.activeId);
|
|
@@ -3185,9 +3185,10 @@ var init_BottomSheetEngine = __esm({
|
|
|
3185
3185
|
const handleSize = vertical ? this.handle.offsetHeight : this.handle.offsetWidth;
|
|
3186
3186
|
const content = this.scrollContainer;
|
|
3187
3187
|
const natural = content ? handleSize + this.measureContentExtent(vertical) : handleSize;
|
|
3188
|
-
|
|
3188
|
+
const capped = this.maxHeightCap !== void 0 ? Math.min(natural, this.maxHeightCap) : natural;
|
|
3189
|
+
if (typeof window === "undefined") return capped;
|
|
3189
3190
|
const viewport = vertical ? window.innerHeight : window.innerWidth;
|
|
3190
|
-
return viewport > 0 ? Math.min(
|
|
3191
|
+
return viewport > 0 ? Math.min(capped, viewport) : capped;
|
|
3191
3192
|
}
|
|
3192
3193
|
installFitObserver() {
|
|
3193
3194
|
if (typeof ResizeObserver === "undefined") return;
|
|
@@ -3558,8 +3559,8 @@ var init_BottomSheetEngine = __esm({
|
|
|
3558
3559
|
this.updateAriaSlider();
|
|
3559
3560
|
this.emit("snap", {
|
|
3560
3561
|
id: target.id,
|
|
3561
|
-
size:
|
|
3562
|
-
progress: this.computeProgress(
|
|
3562
|
+
size: this.size,
|
|
3563
|
+
progress: this.computeProgress(this.size)
|
|
3563
3564
|
});
|
|
3564
3565
|
this.haptic();
|
|
3565
3566
|
if (previousSnapSize === 0 && target.size > 0) {
|
|
@@ -3584,23 +3585,25 @@ var init_BottomSheetEngine = __esm({
|
|
|
3584
3585
|
}
|
|
3585
3586
|
}
|
|
3586
3587
|
applySize(size) {
|
|
3587
|
-
|
|
3588
|
-
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;
|
|
3589
3592
|
const style = this.element.style;
|
|
3590
3593
|
style.transform = this.transformTemplate(offset);
|
|
3591
|
-
if (this.sizeWriteSentinel.shouldWrite(
|
|
3592
|
-
style.setProperty("--bs-size", `${
|
|
3594
|
+
if (this.sizeWriteSentinel.shouldWrite(clamped, SIZE_WRITE_EPSILON)) {
|
|
3595
|
+
style.setProperty("--bs-size", `${clamped}px`);
|
|
3593
3596
|
if (this.scrimParent) {
|
|
3594
|
-
this.scrimParent.style.setProperty("--bs-size", `${
|
|
3597
|
+
this.scrimParent.style.setProperty("--bs-size", `${clamped}px`);
|
|
3595
3598
|
}
|
|
3596
3599
|
if (this.anchorHost && this.anchorHost !== this.scrimParent) {
|
|
3597
|
-
this.anchorHost.style.setProperty("--bs-size", `${
|
|
3600
|
+
this.anchorHost.style.setProperty("--bs-size", `${clamped}px`);
|
|
3598
3601
|
}
|
|
3599
3602
|
if (this.rootEl && this.rootEl !== this.scrimParent && this.rootEl !== this.anchorHost) {
|
|
3600
|
-
this.rootEl.style.setProperty("--bs-size", `${
|
|
3603
|
+
this.rootEl.style.setProperty("--bs-size", `${clamped}px`);
|
|
3601
3604
|
}
|
|
3602
3605
|
}
|
|
3603
|
-
const progress = this.computeProgress(
|
|
3606
|
+
const progress = this.computeProgress(clamped);
|
|
3604
3607
|
const progressChanged = this.progressWriteSentinel.shouldWrite(
|
|
3605
3608
|
progress,
|
|
3606
3609
|
OPACITY_WRITE_EPSILON
|
|
@@ -3617,14 +3620,15 @@ var init_BottomSheetEngine = __esm({
|
|
|
3617
3620
|
this.scrim.applyOpacity(progress, progressChanged);
|
|
3618
3621
|
if (progressChanged && this.bus.listenerCount("progress") > 0) {
|
|
3619
3622
|
this.progressPayload.value = progress;
|
|
3620
|
-
this.progressPayload.size =
|
|
3623
|
+
this.progressPayload.size = clamped;
|
|
3621
3624
|
this.emit("progress", this.progressPayload);
|
|
3622
3625
|
}
|
|
3623
3626
|
}
|
|
3624
3627
|
computeProgress(size) {
|
|
3625
3628
|
const { min, max } = this.getAllowedRange();
|
|
3626
|
-
|
|
3627
|
-
|
|
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);
|
|
3628
3632
|
}
|
|
3629
3633
|
handleOpen() {
|
|
3630
3634
|
sheetStack.promote(this.id);
|
|
@@ -3648,8 +3652,8 @@ var init_BottomSheetEngine = __esm({
|
|
|
3648
3652
|
this.updateAriaSlider();
|
|
3649
3653
|
this.emit("snap", {
|
|
3650
3654
|
id: target.id,
|
|
3651
|
-
size:
|
|
3652
|
-
progress: this.computeProgress(
|
|
3655
|
+
size: this.size,
|
|
3656
|
+
progress: this.computeProgress(this.size)
|
|
3653
3657
|
});
|
|
3654
3658
|
if (target.size > 0 && !this.lifecycle.isInstalled) {
|
|
3655
3659
|
this.emit("open", { id: target.id });
|
|
@@ -3675,7 +3679,7 @@ var init_BottomSheetEngine = __esm({
|
|
|
3675
3679
|
var baseStyles;
|
|
3676
3680
|
var init_baseStyles = __esm({
|
|
3677
3681
|
"src/web-component/baseStyles.ts"() {
|
|
3678
|
-
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}}`;
|
|
3679
3683
|
}
|
|
3680
3684
|
});
|
|
3681
3685
|
|