@sigmela/router 0.7.2 → 0.9.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.
@@ -6,7 +6,7 @@ export interface NavigationHistorySnapshot {
6
6
  historyCommit?: string;
7
7
  presentation: string;
8
8
  splitNavigation?: {
9
- operation: 'selection' | 'push' | 'replace';
9
+ operation: 'selection' | 'push' | 'replace' | 'pop';
10
10
  };
11
11
  route: {
12
12
  id: string;
@@ -1 +1 @@
1
- {"version":3,"file":"navigationHistory.d.ts","sourceRoot":"","sources":["../src/navigationHistory.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE;QAChB,SAAS,EAAE,WAAW,GAAG,MAAM,GAAG,SAAS,CAAC;KAC7C,CAAC;IACF,KAAK,EAAE;QACL,EAAE,EAAE,MAAM,CAAC;KACZ,CAAC;CACH;AA4BD,wBAAgB,qBAAqB,CAAC,SAAS,SAAS,yBAAyB,EAC/E,OAAO,EAAE,SAAS,EAAE,EACpB,QAAQ,EAAE,SAAS,GAClB,SAAS,EAAE,CA2Cb;AAED,wBAAgB,2BAA2B,CAAC,SAAS,SAAS,yBAAyB,EACrF,OAAO,EAAE,SAAS,EAAE,EACpB,QAAQ,EAAE,SAAS,GAAG,SAAS,GAC9B,SAAS,GAAG,SAAS,CAQvB"}
1
+ {"version":3,"file":"navigationHistory.d.ts","sourceRoot":"","sources":["../src/navigationHistory.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE;QAChB,SAAS,EAAE,WAAW,GAAG,MAAM,GAAG,SAAS,GAAG,KAAK,CAAC;KACrD,CAAC;IACF,KAAK,EAAE;QACL,EAAE,EAAE,MAAM,CAAC;KACZ,CAAC;CACH;AA4BD,wBAAgB,qBAAqB,CAAC,SAAS,SAAS,yBAAyB,EAC/E,OAAO,EAAE,SAAS,EAAE,EACpB,QAAQ,EAAE,SAAS,GAClB,SAAS,EAAE,CA2Cb;AAED,wBAAgB,2BAA2B,CAAC,SAAS,SAAS,yBAAyB,EACrF,OAAO,EAAE,SAAS,EAAE,EACpB,QAAQ,EAAE,SAAS,GAAG,SAAS,GAC9B,SAAS,GAAG,SAAS,CAQvB"}
package/dist/router.css CHANGED
@@ -191,6 +191,10 @@
191
191
  transform: translateX(0);
192
192
  }
193
193
 
194
+ .screen-stack-item.push.pop-enter.transition-preEnter {
195
+ transform: translateX(-25%);
196
+ }
197
+
194
198
  .screen-stack-item.none {
195
199
  transform: translate3d(0, 0, 0) !important;
196
200
  transition: none !important;
@@ -219,7 +223,14 @@
219
223
  isolation: isolate;
220
224
  }
221
225
 
226
+ /* Positioned here as well as by SheetSurface's utility classes, so the scrim
227
+ still covers the shell in apps without Tailwind. */
222
228
  .router-modal-backdrop {
229
+ pointer-events: auto;
230
+ position: absolute;
231
+ inset: 0;
232
+ padding: 0;
233
+ border: 0;
223
234
  background: var(--router-scrim);
224
235
  z-index: 0;
225
236
  }
@@ -238,7 +249,8 @@
238
249
  display: flex;
239
250
  flex-direction: column;
240
251
  width: 100%;
241
- height: calc(100dvh - env(safe-area-inset-top, 0px));
252
+ height: var(--router-modal-height, calc(100dvh - env(safe-area-inset-top, 0px)));
253
+ max-height: calc(100dvh - env(safe-area-inset-top, 0px));
242
254
  overflow: hidden;
243
255
  border-radius: 33px 33px 0 0;
244
256
  background: var(--router-bg);
@@ -469,23 +481,50 @@ html[data-router-shell='desktop-fullscreen'] #root {
469
481
  }
470
482
 
471
483
  .router-overlay-shell[data-router-shell='desktop-fullscreen'] .router-modal-surface {
472
- width: 600px;
484
+ width: min(var(--router-modal-width, 600px), calc(100vw - 48px));
473
485
  max-width: calc(100vw - 48px);
474
- height: 75dvh;
486
+ height: min(var(--router-modal-height, 75dvh), calc(100dvh - 48px));
475
487
  max-height: calc(100dvh - 48px);
476
488
  border-radius: 38px;
477
489
  }
478
490
 
479
491
  .router-overlay-shell[data-router-shell='desktop-fullscreen']
480
492
  .router-modal-surface.router-modal-surface--wide {
481
- width: 860px;
482
- height: 86dvh;
493
+ width: min(var(--router-modal-width, 860px), calc(100vw - 48px));
494
+ height: min(var(--router-modal-height, 86dvh), calc(100dvh - 48px));
483
495
  }
484
496
 
485
497
  .router-overlay-shell[data-router-shell='desktop-fullscreen']
486
498
  .router-modal-surface--content-sized {
487
499
  height: auto;
488
500
  }
501
+
502
+ /* A right panel anchors to the viewport edge in either shell mode, so it
503
+ escapes the contained column. Modal.tsx only adds these classes at this
504
+ width; below it the surface is the regular fullscreen modal. */
505
+ .router-overlay-shell.router-modal-shell.router-modal-shell--right {
506
+ inset: 0;
507
+ width: auto;
508
+ max-width: none;
509
+ margin-inline: 0;
510
+ align-items: stretch;
511
+ justify-content: flex-end;
512
+ }
513
+
514
+ .router-modal-shell--right > .router-modal-backdrop {
515
+ background: var(--router-scrim);
516
+ }
517
+
518
+ .router-overlay-shell.router-modal-shell--right
519
+ .router-modal-surface.router-modal-surface--right {
520
+ flex: 0 0 auto;
521
+ width: min(var(--router-modal-width, 393px), calc(100vw - 36px));
522
+ max-width: calc(100vw - 36px);
523
+ height: calc(100dvh - 36px);
524
+ max-height: calc(100dvh - 36px);
525
+ margin: 18px;
526
+ border-radius: 16px;
527
+ }
489
528
  }
490
529
 
491
530
  /* ==================== SPLIT VIEW ==================== */
@@ -583,8 +622,10 @@ html[data-router-shell='desktop-fullscreen'] #root {
583
622
  --sigmela-drawer-item-active-bg: var(--router-drawer-active-bg);
584
623
  --sigmela-drawer-label: var(--router-drawer-text);
585
624
  --sigmela-drawer-overlay: var(--router-drawer-overlay-color);
586
- --sigmela-drawer-transition: 300ms cubic-bezier(0.22, 0.61, 0.36, 1);
625
+ --sigmela-drawer-duration: 300ms;
626
+ --sigmela-drawer-transition: var(--sigmela-drawer-duration) cubic-bezier(0.22, 0.61, 0.36, 1);
587
627
  --sigmela-drawer-width: 280px;
628
+ --sigmela-drawer-rail-width: 56px;
588
629
 
589
630
  position: relative;
590
631
  display: flex;
@@ -812,7 +853,10 @@ html[data-router-shell='desktop-fullscreen'] #root {
812
853
  left: 0;
813
854
  z-index: 101;
814
855
  transform: translateX(calc(-1 * var(--sigmela-drawer-width)));
815
- transition: transform var(--sigmela-drawer-transition);
856
+ visibility: hidden;
857
+ transition:
858
+ transform var(--sigmela-drawer-transition),
859
+ visibility 0s linear var(--sigmela-drawer-duration);
816
860
  }
817
861
 
818
862
  .sigmela-drawer__main {
@@ -835,6 +879,10 @@ html[data-router-shell='desktop-fullscreen'] #root {
835
879
 
836
880
  .sigmela-drawer[data-drawer-open='true'] .sigmela-drawer__sidebar {
837
881
  transform: translateX(0);
882
+ visibility: visible;
883
+ transition:
884
+ transform var(--sigmela-drawer-transition),
885
+ visibility 0s;
838
886
  }
839
887
 
840
888
  .sigmela-drawer[data-drawer-open='true'] .sigmela-drawer__main {
@@ -863,16 +911,54 @@ html[data-router-shell='desktop-fullscreen'] #root {
863
911
  @media (min-width: 641px) {
864
912
  .sigmela-drawer__sidebar {
865
913
  border-right: 1px solid var(--router-divider);
866
- transition: margin-left var(--sigmela-drawer-transition);
914
+ transition:
915
+ margin-left var(--sigmela-drawer-transition),
916
+ width var(--sigmela-drawer-transition),
917
+ flex-basis var(--sigmela-drawer-transition),
918
+ visibility var(--sigmela-drawer-transition);
867
919
  }
868
920
 
869
- .sigmela-drawer[data-drawer-open='true'] .sigmela-drawer__sidebar {
921
+ .sigmela-drawer[data-drawer-collapsed="true"]:not(
922
+ [data-drawer-desktop="icon"]
923
+ )
924
+ > .sigmela-drawer__sidebar {
870
925
  margin-left: calc(-1 * var(--sigmela-drawer-width));
871
926
  border-right: none;
927
+ visibility: hidden;
928
+ }
929
+
930
+ .sigmela-drawer[data-drawer-collapsed="true"][data-drawer-desktop="icon"]
931
+ > .sigmela-drawer__sidebar {
932
+ width: var(--sigmela-drawer-rail-width);
933
+ flex-basis: var(--sigmela-drawer-rail-width);
934
+ }
935
+
936
+ .sigmela-drawer[data-drawer-collapsed="true"][data-drawer-desktop="icon"]
937
+ .sigmela-drawer__item {
938
+ padding-inline: 0;
939
+ justify-content: center;
940
+ }
941
+
942
+ .sigmela-drawer[data-drawer-collapsed="true"][data-drawer-desktop="icon"]
943
+ :is(
944
+ .sigmela-drawer__item-label,
945
+ .sigmela-drawer__item-badge,
946
+ .sigmela-drawer__section-label,
947
+ .sigmela-drawer__group-chevron,
948
+ .sigmela-drawer__group-items,
949
+ .sigmela-drawer__footer
950
+ ) {
951
+ display: none;
872
952
  }
873
953
  }
874
954
 
875
955
  @media (prefers-reduced-motion: reduce) {
956
+ .sigmela-drawer > .sigmela-drawer__sidebar,
957
+ .sigmela-drawer > .sigmela-drawer__main,
958
+ .sigmela-drawer > .sigmela-drawer__overlay {
959
+ transition: none;
960
+ }
961
+
876
962
  .screen-stack > .screen-stack-item {
877
963
  transform: translate3d(0, 0, 0) !important;
878
964
  transition: none !important;
@@ -0,0 +1,5 @@
1
+ export declare function useMediaQuery(query: string): boolean;
2
+ export declare function useMinWidth(minWidth: number): boolean;
3
+ /** Read once, at the moment an animation starts. */
4
+ export declare function prefersReducedMotion(): boolean;
5
+ //# sourceMappingURL=useMediaQuery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMediaQuery.d.ts","sourceRoot":"","sources":["../../src/utils/useMediaQuery.ts"],"names":[],"mappings":"AAEA,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CA+BpD;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAErD;AAED,oDAAoD;AACpD,wBAAgB,oBAAoB,IAAI,OAAO,CAM9C"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sigmela/router",
3
- "version": "0.7.2",
3
+ "version": "0.9.0",
4
4
  "description": "Native-feeling router for React web apps: screen stacks with gesture-driven back, modals, sheets, tab bars, drawers and split views.",
5
5
  "license": "MIT",
6
6
  "author": "Sigmela",