@rhinestone/deposit-modal 0.0.0-dev-20260710200610 → 0.0.0-dev-20260714145510

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 (2) hide show
  1. package/dist/styles.css +98 -0
  2. package/package.json +1 -1
package/dist/styles.css CHANGED
@@ -5565,3 +5565,101 @@
5565
5565
  border-color: #fafafa;
5566
5566
  color: #18181b;
5567
5567
  }
5568
+
5569
+ /* =============================================================================
5570
+ Mobile bottom sheet (<= 639px)
5571
+ =============================================================================
5572
+ Below the 640px breakpoint the modal docks to the bottom of the viewport and
5573
+ slides up as a full-width sheet — matching the 1auth dialog (bottom sheet on
5574
+ mobile, centered card on desktop). Everything here is scoped under
5575
+ `.rs-modal-overlay` so inline mode (`.rs-modal-content--inline`, which has no
5576
+ overlay ancestor) is untouched, and desktop (>= 640px) keeps the centered
5577
+ card verbatim. */
5578
+ @media (max-width: 639px) {
5579
+ .rs-modal-overlay {
5580
+ /* Dock the sheet to the bottom edge (desktop centers it). */
5581
+ align-items: flex-end;
5582
+ /* Fade the scrim in as the sheet rises. Animating background-color rather
5583
+ than opacity keeps the sheet itself fully opaque while it slides — the
5584
+ overlay is both scrim and flex parent, so an opacity fade would dim the
5585
+ sheet too. */
5586
+ animation: rs-backdrop-fade-in 0.2s ease-out;
5587
+ }
5588
+
5589
+ .rs-modal-overlay .rs-modal-content {
5590
+ width: 100%;
5591
+ max-width: none;
5592
+ margin: 0;
5593
+ /* Top corners only; the bottom sits flush against the viewport edge. */
5594
+ border-radius: 16px 16px 0 0;
5595
+ /* Cap below full height so a strip of scrim shows above the sheet (the
5596
+ bottom-sheet "peek"); taller content scrolls inside .rs-modal-body. */
5597
+ max-height: min(92dvh, calc(100dvh - 24px));
5598
+ /* Slide up from below the fold — iOS-sheet easing, matching 1auth's
5599
+ dialog-slide-up. When it ends the content rests at its --open transform
5600
+ (scale(1) == identity), so the settled position is unchanged. */
5601
+ animation: rs-sheet-slide-up 0.3s cubic-bezier(0.32, 0.72, 0, 1);
5602
+ }
5603
+
5604
+ /* Swapped/fiat/exchange flows pre-reserve a tall desktop iframe height
5605
+ (min-height 585-699px) plus a 445px max-width. On a phone that would force
5606
+ the sheet taller than the screen and push its top chrome out of reach, so
5607
+ cap it to the sheet height and let the body scroll. Specificity (0,4,0)
5608
+ matches the tallest :has() sizing rule and, appended last, wins the tie. */
5609
+ .rs-modal-overlay .rs-modal-content:has(.rs-modal-body[data-flow-mode="fiat-onramp"]),
5610
+ .rs-modal-overlay .rs-modal-content:has(.rs-modal-body[data-flow-mode="exchange-connect"]) {
5611
+ max-width: none;
5612
+ min-height: 0;
5613
+ max-height: min(92dvh, calc(100dvh - 24px));
5614
+ }
5615
+
5616
+ /* The history panel is a long, scrollable list overlaid position:absolute, so
5617
+ it can't grow the sheet itself — left alone the sheet stays as short as the
5618
+ screen behind it and crams the list into a sliver at the bottom. When the
5619
+ panel is mounted, give the sheet a tall min-height so the list uses most of
5620
+ the phone screen. Placed after the fiat/exchange reset above so it wins when
5621
+ history is opened over one of those flows. */
5622
+ .rs-modal-overlay .rs-modal-content:has(.rs-history-panel) {
5623
+ min-height: min(85dvh, calc(100dvh - 24px));
5624
+ }
5625
+
5626
+ /* Clear the iOS home indicator. Excludes the immersive Swapped iframe, which
5627
+ is intentionally full-bleed to the sheet edges. */
5628
+ .rs-modal-overlay .rs-modal:not(.rs-modal--swapped-iframe) {
5629
+ padding-bottom: calc(16px + env(safe-area-inset-bottom));
5630
+ }
5631
+
5632
+ /* iOS Safari zooms the page in when a focused input's font is < 16px. Bump
5633
+ the small text inputs (the deposit amount input is 64px, so it is
5634
+ unaffected) to kill the zoom-on-focus jump. */
5635
+ .rs-modal-overlay .rs-modal .rs-input,
5636
+ .rs-modal-overlay .rs-modal .rs-withdraw-input {
5637
+ font-size: 16px;
5638
+ }
5639
+ }
5640
+
5641
+ @keyframes rs-sheet-slide-up {
5642
+ from {
5643
+ transform: translate3d(0, 100%, 0);
5644
+ }
5645
+ to {
5646
+ transform: translate3d(0, 0, 0);
5647
+ }
5648
+ }
5649
+
5650
+ @keyframes rs-backdrop-fade-in {
5651
+ from {
5652
+ background-color: rgba(0, 0, 0, 0);
5653
+ }
5654
+ to {
5655
+ background-color: rgba(0, 0, 0, 0.5);
5656
+ }
5657
+ }
5658
+
5659
+ /* Honour "Reduce motion": snap the sheet + scrim to their settled state. */
5660
+ @media (prefers-reduced-motion: reduce) {
5661
+ .rs-modal-overlay,
5662
+ .rs-modal-overlay .rs-modal-content {
5663
+ animation: none !important;
5664
+ }
5665
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rhinestone/deposit-modal",
3
- "version": "0.0.0-dev-20260710200610",
3
+ "version": "0.0.0-dev-20260714145510",
4
4
  "description": "React modal component for Rhinestone cross-chain deposits",
5
5
  "author": "Rhinestone <dev@rhinestone.wtf>",
6
6
  "bugs": {